关于S7 200自由口通讯CRC校验的问题?

做一个项目通过S7 200的串口与仪表进行自有口通讯,遇到CRC校验的问题比较发愁,不知道该怎么做,有没有这方面的资料?

最佳答案

200或者200samrt modbus通讯校验CRC编程思想:
1) 设置CRC存储器为16#FFFF
2) 把第一个参与校验低8位数与CRC的低8位进行异或运算结果仍存于CRC
3) 把CRC右移一位,最高位补0,检查最低位b0位(SM1.1)
4) 若b0=0,CRC不变,若b0=1,CRC与16#A001进行异或运算,结果仍存于CRC
5) 重复3、4两步,直到右移8次,这样第一个8位数就进行处理结果仍存于CRC
6) 重复2~5步,处理第二个8位数
按上诉6点思想编辑CRC校验:
LD     SM0.0
MOVW   16#FFFF, AC0
MOVW   0, #temp1
MOVW   0, #temp2
LD     SM0.0
FOR    #temp2, 1, #count
LD     SM0.0
XORB   *#point, AC0
LD     SM0.0
FOR    #temp1, 1, 8
LD     SM0.0
SRW    AC0, 1
A      SM1.1
XORW   16#A001, AC0
NEXT
LD     SM0.0
+D     1, #point
NEXT
LD     SM0.0
MOVW   AC0, #CRC_OUT
AENO
SWAP   #CRC_OUT

提问者对于答案的评价:
挺好,谢谢。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc369284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午3:34
下一篇 2021年7月5日 下午3:34

相关推荐

发表回复

登录后才能评论