反复探究Modbus TCP协议它是如何与众多通讯协议共存的

  • 科研进展
  • 2025年01月20日
  • 深入解析Modbus TCP通信机制:揭秘其与众多通讯协议共存的奥秘 在工业自动化领域,Modbus总线以其三种主要协议——Modbus RTU、Modbus ASCII和Modbus TCP而闻名。这些协议各自擅长不同的通信方式,RTU和ASCII适用于串行通信,如RS485或RS232,而TCP则专注于以太网传输。由于底层结构差异,每种应用数据单元(Application Data Unit

反复探究Modbus TCP协议它是如何与众多通讯协议共存的

深入解析Modbus TCP通信机制:揭秘其与众多通讯协议共存的奥秘

在工业自动化领域,Modbus总线以其三种主要协议——Modbus RTU、Modbus ASCII和Modbus TCP而闻名。这些协议各自擅长不同的通信方式,RTU和ASCII适用于串行通信,如RS485或RS232,而TCP则专注于以太网传输。由于底层结构差异,每种应用数据单元(Application Data Unit, ADU)都有所不同。

为了实现数据交换,Modbus定义了一个称为“Protocol Data Unit”(PDU)的简单数据结构。这一单元由功能码和数据组成,功能码长度为1字节,表示要执行的操作;数据部分长度可达252字节,以0开始,不同功能码对应不同的数据格式。例如,对于读取线圈的01功能码,其后跟随4个字节,其中前两个字节指明要读取的地址,以及后面两位代表要读取数量;对于05写入线圈的命令,其后也跟随4个字节,但前两个指明写入地址,后两位是待写入值。

PDU分为请求型、应答型及异常应答型三种类型,并且不论是哪一种物理网络支持,它们都使用相同的PDU格式。不过,由于需要映射到物理网络上,这导致ADU结构因底层网络差异而变化。在串行链路下,如RTU和ASCII,在TCP/IP环境中如TCP的情况下,都有各自独特的ADU构造。

对于TCP/IP版本,即使在ADU基础上添加MBAP头部(MBAPHeader),这也是唯一区别之处。每个MBAP头由7个字符构成:

传输标识符,为配对请求与响应提供标识;

协议标识符系统间用以辨认;

长度字段指示接下来要发送信息长度,以字节计;

单元标识符供寻址用途,比如在以太网+串行链路中的远程站点地址。

最后,我们来探讨一下为什么没有IP地址和端口号出现,这是因为它们属于更低级别的传输层/网络层,而不是应用层级别。而我们所说的MODBUS-TCP实际上是在TCP/IP协议栈上的应用程序的一部分,因此它会将自己的消息封装进更低级别协议,然后通过套接口(Sockets)进行编程实现。在PLC编程时,大多数厂家已经将底层逻辑封装成了库函数,只需调用即可。但若从PC进行编程,则需要使用Socket技术来完成这一过程。此外,还有一点不可忽视的是,当你使用MODBUS-TCP进行通信时,你应该确保端口号502不会被其他程序占用。

猜你喜欢