做一个项目通过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