Modbus TCP通讯协议

有一个设备说给我提供的是Modbus TCP通讯协议。我用一个通讯工具读到的格式如下:
00 00 00 00 00 1E 01 03 1C 00 00 14 42 AE 47 81 3F 00 00 8C 42 9A 99 99 3F 00 00 5D 43 08 77 85 42 00 00 00 00

请问大神,标准的Modbus TCP通讯协议发送端的格式是那种?数据存储到那个寄存器?地址偏置从那个开始?
我想发送一串数字:37、1.01 、70 、1.2 、221

1、首先每个MODBUS数据包都由以下5个部分组成。

2、 MODBUS数据包中功能码长度为一个字节,用以通知从站应当执行何种操作,从站响应数据包中应当包含主站所请求操作的相同功能码字节。

3、如果主站发送了一个非法的数据包或者是主站请求一个无效的数据寄存器时,异常的数据响应就会产生。这个异常数据响应由从站地址、功能码、故障码和校验域组成。

4、主机读取仪表测量值UA(A相电压),假设现测量到A相电压为220.0V。UA的地址编码是0x4000(十六进制),因为UA是长整型数据(4字节),占用2个数据寄存器,220.0V电压转换对应的十六进制数据是:0x00000898(2200)。

5、假设将温控表温度值SV修改为150(写入设定值SV),SV的地址编码是0x2000(十六进制),因为SV是整数(2字节),占用1个数据寄存器。将十进制整数150转换为十六进制数为0x0096。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-05-19
上面这段报文是从站返回的响应报文,正文从第七个字节开始
01是从站号
03是功能码,表示这些数据是4区的
1C 是数据长度
后面的都是数据

主站读数据的格式如下:00 00 00 00 00 06 09 03 00 00 00 01
前面6个是报头,正文从第七个字节开始的;09是从站号,03是功能码表示读4区,00 00 是起始地址,00 01是读数据长度

主站写数据的格式如下:00 00 00 00 00 06 09 10 00 00 00 0A 后面接10个字节的数据本回答被网友采纳
第2个回答  2014-08-25
Modbus协议属于应用层(OSI模型第7层)协议,TCP/UDP协议属于传输层(OSI模型第4层)协议,两者层级不是并列关系。
打个比喻,Modbus协议就像公司里的总经理,TCP/UDP协议就像公司里的轿车、商务车。某天总经理要到机场去乘飞机,他可以选择:1)自己开轿车去,2)让司机开商务车送去,3)搭的士/公交车过去。若选择1),那就是总经理-轿车的关系,Modbus TCP协议就形同这种关系。若选择3),就形同另外的Modbus RTU/ASCII协议的关系。
如果一端用的是Modbus TCP协议,而另一端用TCP协议,这样只能说数据包可以到达另一端,但数据包并没有得到处理,所以通信的目标还没有完成。就像总经理虽到了机场,但他没有进行安检、验票、登机流程,乘飞机的目标就无法达成了。
第3个回答  2020-12-17

Modbus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

相似回答