Modbus协议数据解析

      最后更新:2022-04-28 03:50:13 手机定位技术交流文章

      通讯摩德布斯议定书

      Modbus是一项合作通信议定书。1979年,Modicon(原Schneider Electric)首次使用可编程逻辑控制器(PLC)通信。摩德布斯事实上已成为工业通信协定的行业标准。它目前是连接工业电子产品的标准方法。
      Modbus是一项合作通信议定书。1979年,Modicon(原Schneider Electric)首次使用可编程逻辑控制器(PLC)通信。摩德布斯事实上已成为工业通信协定的行业标准。它目前是连接工业电子产品的标准方法。以下是莫德布斯比其他通信议定书得到更广泛使用的主要原因:
      1. 没有版权限制,出版向公众开放。
      2、易于部署和维护
      3. 供应商修改当地比特或字节的能力不受限制。

      1、 帧结构

      地址+功能代码+数据+验证=框架结构

      地址码 功能码 数据 CRC校验
      1byte 1byte n byte 2byte

      地址代码是传输的初始字节 。此位表示将从主机收到用户指定的地址代码 。每台机器都有自己的地址密码答复首先从其各自的地址号码开始。主机的地址代码显示要从计算机发送的地址 。机器提供的地址代码 揭示了机器的返回地址地址码为0时,为广播地址,所有从机均能识别,从站不做应答。

      通信传输的第二个字节是功能代码。《ModBus通信法》界定了职能1至127。作为主机请求发送,机器会用功能代码告诉你该怎么做作为从机响应,机器发送的函数代码与主机发送的函数代码相同。它还表明,机器是应东道方的要求采取行动的。如果机器的最大功能代码为1(例如,同时127个最大和最大),,表示没有从计算机中找到答案,或者发送错误。例如,003(03H)是一个函数代码。如果从机正常执行,返回相同的功能代码 。如果病情不正常,返回1,00,003(83H)。

      数据区域的变化取决于功能代码。数据部分可包括实际值、设定点、机器地址的主机或机器地址的主机。例如,函数代码表示机器从注册处读取的值。要阅读登记册,数据区域必须包含起始地址和读数长度。对于不同的从机,地址和数据不是一回事。

      核查:为了保证数据没有错误,添加这一数据,然后计算先前的数据,以核实数据是否一致,如果一致,则表示数据准确,我回答;如果没有准确,数据在传输时不正确,被销毁。

      常用命令码

      命令码 功能
      03H 寄存器读取
      06H 单个寄存器写入
      10H 多个寄存器写入

      2、实例分析

      a、寄存器数据读取

      数据解析如下

      b. 个人登记册中的数据输入

      数据解析如下

      b. 在若干登记册中填报数据

      数据解析如下

      数据解析如下

      3、CRC计算

      Modbus的《儿童权利公约》计算涉及除《儿童权利公约》核查价值以外的所有交付数据,包括地址代码、指令代码和数据。
      C#计算方法:

      C语言CRC计算

      4、大小端问题

      大小端定义:

      大端大英:高字节储存在低记录和档案管理地点,低字节储存在高记录和档案管理地址。
      小英内存地址以低内存地址存储低字节,高内存地址存储高字节。
      网络字节序列:由于TCP/IP层协议将字节序列定义为Big-Endian,它通常被称为网络字节序列。

      Sttm32 IDE 软件IAR
      Stm32F429是芯片。
      以下是共同的价值观和保留地:
      在这里插入图片描述
      变量Addr、年份和月份为 Int16格式数据,高字节数据放在高地址,可以观察到Stm32默认设置为小端格式格式。
      在传输数据时, Modbus 先传送字节, 然后降低字节; 因此, stm32 写入 Modbus 代码, 并确保高低字节被翻译。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/22907.html

          热门文章

          文章分类