crc问题,请教高手

modbus RTU中,需要crc进行校验,要求低字节在前,高字节在后。书上说,如数据帧为0101023803EA3D,crc码为3DEA。(不明白为什么,我算的是16#845A)已知是CRC-16校验,生成多项式即16#8005,逆序16#A001,发现01010238033DEA并不能整除16#8005,想问:S7-200中的CRC码格式究竟是如何定义的?比如,是否逆序,取反?

问题补充:
苦斗老师讲的我都明白,关键我想弄明白S7-200中定义的CRC格式,比如寄存器初始化为$FFFF,意义何在?200如何进行校验检查,等等。

最佳答案

没必要搞清它的数学推导过程!
 按下列顺序处理即可:
 是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效!
 每个8位字符都单独和寄存器内容相异或,结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值(16#A001)异或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相异或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。
 CRC添加到消息中时,低字节先加入,然后高字节。
 下面是我做的一个子程序仅供参考:
 LD     Always_On:SM0.0
 WDR
 MOVW   16#FFFF, LW6
 WDR
 FOR    LW8, +1, #count:LW4
 XORB   *#start_add:*LD0, #crc_Lo:LB7
 INCD   #start_add:LD0
 FOR    LW10, +1, +8
 SRW    LW6, 1
 LD     Overflow_Illegal:SM1.1
 XORW   16#A001, LW6
 NEXT
 NEXT
 电子邮件内信我 给你详细讲解!
 

提问者对于答案的评价:
其实Modbus协议中的CRC校验顺序是逆序的,高低字节互换位置。初始化为16#FFFF是为了使CRC寄存器能判断出以0为起始为的源数据。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日 下午11:13
下一篇 2021年7月4日 下午11:13

相关推荐

  • S7-200的EM277PROFIBUS通讯如何编程

    希望专家指导指导 最佳答案 这个问题很基础,对于EM277来说,可以进行Profibus、MPI通讯,但是在这两种网络当中,PLC200只能作为从站来进行通讯。 关于Pr…

    SIMATIC S7-200 2021年7月5日
  • STEP 7 Micro/WIN V4.0在哪里可以下载

    求官网下载链接 钻石用户推荐最佳答案 官网下载地址,无需申请,点击即可下载:STEP 7 Micro/WIN V4.0 SP9完整版安装包:…

    2021年7月5日
  • 谁有TD400文本组态程序让我学习一下,谢谢!

    谁有TD400文本组态程序让我学习一下,也可以发我邮箱里17902103@qq.com,谢谢! 最佳答案 S7-200PLC>HMI>TD400C向导 来做&…

    SIMATIC S7-200 2018年12月3日
  • s7-200 PLC清除密码

    以前做过的s7-200plc项目,忘记了上载下载密码,请问有没有什么方法可以找回密码?或者清除PLC里的密码? 谢谢! 最佳答案 楼上误导啊。 clearplc…

    SIMATIC S7-200 2021年7月4日
  • s7200与SR93modbus通讯

    我用S7200做主站,自由口PORT0与岛电温控仪SR93modbus通讯,我仪表的地址为1用标准的库调用程序,我要读测量值和设定值400257和400258,提示有"4…

    SIMATIC S7-200 2020年11月5日
  • microwin sp4问题

    为什么有的sp4里面可以看见200的cn版本,但是有的就不行? 另外cn版本的plc编程时是不是只能用中文版的sp4,有什么注意的问题? 问题补充:我下了4.0sp6,但…

    SIMATIC S7-200 2021年7月5日
  • 怎样累计计时

    我想在设备一打开就计时,累计计时,用计时器怎样实现? 最佳答案 用BITIM和CITIM两条指令即可: LD     M…

    SIMATIC S7-200 2021年7月5日
  • s7-200电源问题

    现我手头上有一台S7-200   CPU224,电源板出了故障,输出电压只有正常的一半多一点,其上面有一块8脚双列排列的IC芯片,芯片上标有431A1…

    SIMATIC S7-200 2021年7月5日
  • PLC扫描周期

    请教大家一下:对于S7-200的PLC,编写的程序扫描周期只有5ms,但是由于外围模拟量设备的需求,能不能把S7-200的PLC的扫描周期强制性的设置为10ms?(也就是1秒钟内进…

    SIMATIC S7-200 2018年12月9日
  • S7-200 Modbus主站库指令

    使用modbus主站库指令,调用度写请求模块。如果在使能一个请求模块的过程中,将该模块的使能清除,会怎么样?MBUS_MSG模块会报错?完成位还会置位吗?如果在一个请求使能过程中,…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论