能码先容_百度文库

  • A+
所属分类:功能
Tag:  功能功能码介绍 功能码 03H(读多个变量) 查询: 查询:下行 报文格式:设备地址+功能码+变量起始地址+变量数量+CRC16 校验 例子:从 3 号从机读 1 个采集到的基本数据 U1, U1 的地址为 00
能码先容_百度文库

能码先容_百度文库

  

能码先容_百度文库

  

能码先容_百度文库

  

能码先容_百度文库

  

能码先容_百度文库

  功能码介绍 功能码 03H(读多个变量) 查询: 查询:下行 报文格式:设备地址+功能码+变量起始地址+变量数量+CRC16 校验 例子:从 3 号从机读 1 个采集到的基本数据 U1, U1 的地址为 0000H 设备地址 功能码 变量起始地址 变量起始地址 变量数量 变量数量 低字节 高字节 高字节 低字节 03H 03H 00H 00H 00H 01H CRC16校验 CRC16校验 CRC16校验 CRC16校验 高字节 高字节 85H E8H 响应: 响应:上行 报文格式:设备地址+功能码+数据字节长度+变量数据+CRC16 校验。 例子:读取 U1 (U1=03E8H)的响应。 设备地址 功能码 03H 03H 数据长度 字节数 02H 变量1 变量 高字节 E8H 变量1 变量 低字节 03H CRC校验 CRC校验 高字节 01H CRC校验 CRC校验 高字节 87H 功能码 05H(写 DO 变量) 查询: 查询:下行 报文格式:设备地址+功能码+变量地址+变量数据+CRC16 校验 例子:写变量地址为 0000H 的变量,写入值为 AAAAH。 设备地址 03H CRC校验 功能码 变量地址 变量地址 变量数据 变量数据 CRC校验 低字节 高字节 低字节 高字节 高字节 05H 00H 00H AAH AAH 88H CRC校验 CRC校验 高字节 2EH 响应: 响应:上行 报文格式:设备地址+功能码+变量地址+变量数据+CRC16 校验 例子:写变量地址为 0000H 的变量,写入值为 AAAAH 命令的响应。 设备地址 03H CRC校验 功能码 变量地址 变量地址 变量数据 变量数据 CRC校验 低字节 高字节 低字节 高字节 高字节 05H 00H 00H AAH AAH 88H CRC校验 CRC校验 高字节 2EH 功能码 06H(写单个变量) 查询: 查询:下行 报文格式:设备地址+功能码+变量地址+变量数据+CRC16 校验 例子:写变量地址为 0010H 的变量,写入值为 0004H。 设备地址 03H CRC校验 功能码 变量地址 变量地址 变量数据 变量数据 CRC校验 低字节 高字节 低字节 高字节 高字节 06H 00H 10H 00H 04H 88H CRC校验 CRC校验 高字节 2EH 响应: 响应:上行 报文格式:设备地址+功能码+变量地址+变量数据+CRC16 校验 例子:写变量地址为 0010H 的变量,写入值为 0004H 命令的响应。 设备地址 03H CRC校验 功能码 变量地址 变量地址 变量数据 变量数据 CRC校验 高字节 低字节 高字节 低字节 高字节 06H 00H 10H 00H 04H 88H CRC校验 CRC校验 高字节 2EH 功能码 10H(写多个变量) 查询: 查询:下行 报文格式: 设备地址+功能码+变量起始地址+变量结束地址+写入字节长度+变量数据+CRC16 校验 功能码 10H 允许用户改变多个寄存器的内容, 设备地址 03H 功能码 10H 起始地址 高字节 00H 起始地址 低字节 2CH 结束地址 高字节 00H 结束地址 低字节 02H 字节长度 04H 变量数据 高字节 60H 变量数据 低字节 60H 变量数据 高字节 60H 变量数据 低字节 60H CRC校验 CRC校验 高字节 CCH CRC校验 CRC校验 高字节 6CH 响应: 响应:上行 报文格式: 设备地址+功能码+变量起始地址+变量结束地址+写入字节长度+变量数据+CRC16 校验 写入指令的响应 设备地址 03H 功能码 10H CRC校验 起始地址 起始地址 结束地址 结束地址 CRC校验 低字节 高字节 高字节 低字节 高字节 00H 2CH 00H 02H 81H CRC校验 CRC校验 高字节 E3H 错误检测 循环冗余校验(CRC)域占用两个字节,包含了一个 16 位的二进制值。CRC 值由传 送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算 CRC 值,然后与 接收到的 CRC 域中的值进行比较,如果这两个值不相等,就发生了错误。 CRC 运算时,首先将一个 16 位的寄存器预置为全 1,然后连续把数据帧中的 8 位字节 与该寄存器的当前值进行运算,仅仅每个字节的 8 个数据位参与生成 CRC,起始位和终止位 以及可能使用的奇偶位都不影响 CRC。 在生成 CRC 时,每个 8 位字节与寄存器中的内容进行异或,然后将结果向低位移位, 高位则用“0”补充,最低位(LSB)移出并检测,如果是 1,该寄存器就与一个预设的固定 值进行一次异或运算,如果最低位为 0,不作任何处理。 上述处理重复进行,知道执行完了 8 次移位操作,当最后一位(第 8 位)移完以后,下 一个 8 位字节与寄存器材的当前值进行异或运算, 同样进行上述的另一个 8 次移位异或操作, 当数据帧中的所有字节都作了处理,生成的最终值就是 CRC 值。 生成一个 CRC 的流程为: 1、 预置一个 16 位寄存器为 0FFFFH(全 1) ,称之为 CRC 寄存器。 2、 把数据帧中的第一个 8 位字节与 CRC 寄存器中的低字节进行异或运算,结果存回 CRC 寄存器。 3、 将 CRC 寄存器向右移一位,最高位填以 0,最低位移出并检测。 4、 如果最低位为 0:重复第三步(下一次移位) 。 如果最低位为 1:将 CRC 寄存器与一个预设的固定值(0A001H)进行异或运算。 5、 重复第三步和第四步直到 8 次移位。这样处理完了一个完整的八位。 6、 重复第 2 步到第 5 步来处理下一个八位,直到所有的字节处理结束。 7、 最终 CRC 寄存器得值就是 CRC 的值。

  • 版权声明:本站文章于2019-10-09 12:09,互联网采集,如有侵权请发邮件联系我们,我们在第一时间删除。
  • 转载请注明:能码先容_百度文库