求教关于S7200SMART的自由口通讯校验位值是怎么来的

各位高手,我在学习西门子PLC的自由口通讯,其中的CRC奇偶校验很糊涂,网上资料例程里的一段如下
    一、从01H号站变频器,读取从0004H地址开始的2个数据的值。
发送报文:01H(地址帧),03H(功能码帧),00H(起始地址高位),04H(起始地址低位),00H(数据个数高位),02H(数据个数低位),85H(CRC低位),CAH(CRC高位)
二、例如:将5000(1388H)写到从站地址02H变频器的0004H地址中。
发送报文:02H,06H,00H,04H,13H,88H,C5H,6EH
    不知上一段里CRD的85H、CAH不知是怎么出来的?还有下一段的C5H,6EH,敬请高手指教,谢谢!

最佳答案

CRC校验程序的算法:
1)先给 CRC16 存储器传送初始值 16#FFFF,存储区:CRC16;
2)把报文第一个参与校验的字节的 8 位与 CRC16 的低 8 位进行异或运算,结果存放在 CRC16;
3)把 CRC16 右移一位,最高位补 0,检查被移出的那个位的值;
4)若移出的位 =0,CRC16 不变,若移出的位 =1,CRC16 与 16#A001 进行异或运算,结果存放在 CRC16
5)重复3、4两步,直到右移8次,这样报文的第一个字节就处理完了,结果存放在CRC16
6)重复2~5步,继续处理报文中的所有字节(不含最后两个字节 CRC16 校验码);
7)所有字节都按上述方法处理完了,将得到的 CRC16 校验码高低字节交换,就是报文的 CRC 检验码;把这个交换后的码附在报文的最后面,就是一个完整的数据帧。
我这有一个当时调试英威腾变频器时完整的推导过程,是用 EXCEL 推的,就是你上面第一个请求帧的,推导过程有100 多行,行数较多,截图不方便,发邮箱号发给你。
结合推导过程去理解上面的内容。

图片说明:

求教关于S7200SMART的自由口通讯校验位值是怎么来的  

提问者对于答案的评价:
谢谢指教!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午10:39
下一篇 2020年10月30日 下午10:39

相关推荐