C# Modbus通信从入门到精通(21)——Modbus TCP协议原理

在这里插入图片描述

Modbus TCP是走网口的,也可以在同一时间内有多个从站访问主站,并且通过Modbus事务处理标识来区分同一时刻的不同Modbus事务,这是区别于Modbus ASCII和Modbus RTU的地方。

1、访问模式:

在这里插入图片描述

Modbus客户端通常输入Modbus服务器的IP地址和端口号来建立TCP连接,然后根据从站地址来确定具体访问哪个从站设备。

2、地址分配规则

Modbus从站地址有255种,但是0用于广播地址,1到247用于从站地址,其余地址保留。
在这里插入图片描述

3、Modbus TCP格式

cn/a84763d58ca4480e998c6e07b5c1dcc5.png)

3.1 MBAP报文头含义

在这里插入图片描述
MBAP报文头是加载Modbus帧开始的报文,总共包含7个字节,分别如下:
1)事务处理标志符
这两个字节用于区分在同一时刻发送的多个Mobus请求,所以可以采用自增的方式,每次发送一个Modbus请求都将该值加1,然后一直到最大值,然后再次将该值变为1,循环往复即可。
2)协议标志符
这两个字节值就是0,0代表的就是Modbus协议
3)长度
这两个字节代表的是单元标志符(从站地址)以及后面的所有数据所占的字节总数
4)单元标志符
也就是从站地址

3.4 功能码

功能码的作用就是指定主站访问从站的具体目的,是读取数据还是写入数据或者其它,功能码分为三种,公共功能码、用于定义功能码、保留功能码,我们在上位机开发过程中遇到的一般都是公共功能码,公共功能码的值的范围如下图:
在这里插入图片描述
关于每个功能码在Modbus TCP中的应用,详细内容如下:
1、C# Modbus通信从入门到精通(22)——Modbus TCP(0x01功能码)
2、C# Modbus通信从入门到精通(23)——Modbus TCP(0x02功能码)
3、C# Modbus通信从入门到精通(24)——Modbus TCP(0x03功能码)
4、C# Modbus通信从入门到精通(25)——Modbus TCP(0x04功能码)
5、C# Modbus通信从入门到精通(26)——Modbus TCP(0x05功能码)
6、C# Modbus通信从入门到精通(27)——Modbus TCP(0x06功能码)
7、C# Modbus通信从入门到精通(28)——Modbus TCP(0x0F功能码)
8、C# Modbus通信从入门到精通(29)——Modbus TCP(0x10功能码)

3.5 数据

数据会根据不同的功能码而发生变化,详细内容如下:
1、C# Modbus通信从入门到精通(22)——Modbus TCP(0x01功能码)
2、C# Modbus通信从入门到精通(23)——Modbus TCP(0x02功能码)
3、C# Modbus通信从入门到精通(24)——Modbus TCP(0x03功能码)
4、C# Modbus通信从入门到精通(25)——Modbus TCP(0x04功能码)
5、C# Modbus通信从入门到精通(26)——Modbus TCP(0x05功能码)
6、C# Modbus通信从入门到精通(27)——Modbus TCP(0x06功能码)
7、C# Modbus通信从入门到精通(28)——Modbus TCP(0x0F功能码)
8、C# Modbus通信从入门到精通(29)——Modbus TCP(0x10功能码)

猜你喜欢

转载自blog.csdn.net/qq_34059233/article/details/131867264
今日推荐