添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
温柔的小蝌蚪  ·  Java Libreoffice ...·  6 天前    · 
越狱的蚂蚁  ·  Spring Batch - ...·  1 年前    · 
大方的鼠标  ·  在 .NET Core 中结合 ...·  1 年前    · 

一、Modbus RTU数据帧说明

由发送设备将 Modbus 报文构造为带有已知起始和结束标记的帧。这使设备可以在报文的开始接收 新帧,并且知道何时报文结束。不完整的报文必须能够被检测到而错误标志必须作为结果被设置。 RTU 模式,报文帧由时长至少为 3.5 个字符时间的空闲间隔区分。在后续的部分,这个时间区 间被称作 t3.5

整个报文帧必须以连续的字符流发送。 如果两个字符之间的空闲间隔大于 1.5 个字符时间,则报文帧被认为不完整应该被接收节点丢弃。

二、MODBUS指令说明

1、读线圈寄存器01H

1) 描述:

读MODBUS从机线圈寄存器当前状态。

2) 查询:

例如从机地址为0x11,线圈寄存器的起始地址为0x0013,结束地址为0x0037。该次查询总共访问(0x0037-0x0013 + 1)37个线圈寄存器。

线圈0x0013到线圈0x001A的状态为0xCD,二进制值为11001101,该字节的最高字节为线圈0x001A,最低字节为线圈0x0013。线圈0x001A到线圈0x0013的状态分别为ON-ON-OFF-OFF-ON-ON-OFF-ON。

读线圈寄存器-查询

最后一个数据字节中,线圈0x0033到线圈0x0037状态为0x1B(二进制00011011),线圈0x0037是左数第4位,线圈0x0033为该字节的最低字节,线圈0x0037至线圈0x0033的状态分别为ON-ON-OFF-ON-ON,剩余3位使用0填充。

线圈0x0013到0x001A状态
0x001A 0x0019 0x0018 0x0017 0x0016 0x0015 0x0014 0x0013

读离散输入寄存器状态。

2) 查询

从机地址为0x11。离散输入寄存器的起始地址为0x00C4,结束寄存器地址为0x00D9。总共访问(0x00D9-0x00C4+1)22个离散输入寄存器。

线圈0x0033到线圈0x0037状态
0x003A 0x0039 0x0038 0x0037 0x0036 0x0035 0x0034 0x0033

3) 响应

响应各离散输入寄存器状态,分别对应数据区中的每位值,1 代表ON;0 代表OFF。第一个数据字节的LSB(最低字节)为查询的寻址地址,其他输入口按顺序在该字节中由低字节向高字节排列,直到填充满8位。下一个字节中的8个输入位也是从低字节到高字节排列。若返回的输入位数不是8的倍数,则在最后的数据字节中的剩余位至该字节的最高位使用0填充。

读离散输入寄存器——查询

离散输入寄存器0x00D4到0x00D9的状态为0x35 (二进制00110101)。输入寄存器0x00D9为左数第3位,输入寄存器0x00D4为最低位,输入寄存器0x00D9到0x00D4的状态分别为ON-ON-OFF-ON-OFF-ON。0x00DB寄存器和0x00DA寄存器被0填充。

读输入寄存器-响应

3、读保持寄存器 03H

1) 说明
读保持寄存器。可读取单个或多个保持寄存器。
2) 查询
从机地址为0x11。保持寄存器的起始地址为0x006B,结束地址为0x006D。该次查询总共访问(0x006D-0x006B+1)3个保持寄存器。

离散输入寄存器0x00C4到0x00DB状态
0x00CB 0x00CA 0x00C9 0x00C8 0x00C7 0x00C6 0x00C5 0x00C4

4、读输入寄存器 04H


1) 说明
读输入寄存器命令。该命令支持单个寄存器访问也支持多个寄存器访问。
2) 查询
从机地址为0x11。输入寄存器的起始地址为0x0008,寄存器的结束地址为0x0009。本次访问访问2个读入寄存器。

读保持寄存器-查询

5、写单个线圈寄存器 05H

1) 说明
写单个线圈寄存器。0xFF00值请求线圈处于ON状态,0x0000值请求线圈处于OFF状态。0x05指令设置单个线圈的状态,0x15指令可以设置多个线圈的状态,两个指令虽然都设定线圈的ON/OFF状态,但是ON/OFF的表达方式却不同。
2) 查询
从机地址为0x11,线圈寄存器的地址为0x00AC。使0x00AC线圈处于ON状态,即数据内容为0xFF00。

读输入寄存器-查询

6、写单个保持寄存器 06H


1) 说明
写保持寄存器。注意0x06指令只能操作单个保持寄存器,0x16指令可以设置单个或多个保持寄存器。
2) 查询
从机地址为0x11。保持寄存器地址为0x0001。寄存器内容为0x0003。

写单个线圈-查询

7、写多个线圈寄存器 0FH


1) 说明
写多个线圈寄存器。若数据区的某位值为“1”表示被请求的相应线圈状态为ON,若某位值为“0”,则为状态为OFF。
2) 查询
从机地址为0x11,线圈寄存器的起始地址为0x0013,线圈寄存器的结束地址为0x001C。总共访问(0x001C-0x0013+1)10个寄存器。寄存器内容如下表所示。

写单个保持寄存器——查询

传输的第一个字节0xCD对应线圈为0x0013到0x001A,LSB(最低位)对应线圈0x0013,传输第二个字节为 0x01,对应的线圈为0x001B到0x001C,LSB对应线圈0x001C,其余未使用位使用0填充。

线圈寄存器0013H到001CH
0x001A 0x0019 0x0018 0x0017 0x0016 0x0015 0x0014 0x0013

8、写多个保持寄存器10H

1) 说明
写多个保持寄存器。
2) 查询
从机地址为0x11。保持寄存器的起始地址为0x0001,寄存器的结束地址为0x0002。总共访问(0x0002-0x0001+1)2个寄存器。保持寄存器0x0001的内容为0x000A,保持寄存器0x0002的内容为0x0102。

写多个线圈寄存器——查询
写多个保持寄存器——请求