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

相关推荐

  • 指示灯循环指示

    5个灯怎么实现循环指示一秒指示一个,循环亮。需要简单的实现。 问题补充:大神,我没有吧问题描述清楚,5个灯,任意选择任意只数,从左到右循环,比如选中01101,每隔两秒循环位移,1…

    2021年7月5日
  • 怎么计算脉冲数

    采用一个松下的伺服电机,用一个测物电眼来检测物体 一个信号走动一5CM左右  。怎么计算 菜鸟高手麻烦解释详细点 问题补充:还有转动位置&n…

    SIMATIC S7-200 2020年11月1日
  • S7 200的输入输出线路图

    我要输入与输出的线路图 专家建议 您好, 请您参考《S7-200 系统手册》中文版(2007 年 09 月) 附录中的接…

    SIMATIC S7-200 2021年7月5日
  • 两台S7-200用VC编程实现数据输入输出

    我现在有两台S7-200,一台224XP,一台221,两台是用PPI连在一起的,我想用VC编程,可以给两台PLC输入数据并且从PLC中取出一个计数器的值,这样可行吗?编程我准备参考…

    SIMATIC S7-200 2020年10月31日
  • 如何用CPU226与变频器ACS550采用MODBUS通信

    如何用CPU226与变频器ACS550采用modbus通信 最佳答案 200的PLC中modbus需要安装库的,你可以利用modbus库里面的块来控制变频器ACS550 …

    SIMATIC S7-200 2021年7月5日
  • ATH指令ASC码输入格式

    S7-200CN: ASCII码与十六进制数的转换-跟我做 – 84/185 课程编号:V0220 暂无简介 点击这里,打开新窗口观看完整视频 该视频下的所有用户提问列表 问下AS…

    2017年5月28日
  • 200 AI输入与AO输出

    各位,以前没用过西门子200。所以有些问题想求证下。我的CPU是224,不是xp也不是CN。 温度探测是PT100,需要接EM231模块, 但现在不用该模块,而…

    SIMATIC S7-200 2021年7月4日
  • em241上的电位器是做什么用的

    如题,顺便问一下,PC  ACCESS软件必须和200软件同时安装么? 最佳答案 em241上的电位器是做什么用的—————-设置国家代码的…

    SIMATIC S7-200 2021年7月4日
  • EM253能否驱动伺服电机,实现闭环控制?

    EM253能否驱动伺服电机,实现闭环控制? 最佳答案 闭环是软件的问题和硬件无关。硬件只要有反馈的信号进入到plc系统就可以了。只是253没有提供反馈的端口,反馈要接到plc的端子…

    SIMATIC S7-200 2017年6月13日
  • 设置扩展模块

    请问在S7-200中如何设置扩展模块,上传时又如何显示扩展模块。 最佳答案 在S7-200中不需像S7-300那样设置(组态)扩展模块。只有模拟量模块与EM277通讯模块根据应用对…

    SIMATIC S7-200 2020年11月1日

发表回复

登录后才能评论