反复探究Modbus TCP通信协议的简单内涵
Modbus总线支持三种通信协议:Modbus RTU、Modbus ASCII以及Modbus TCP。这些协议在工业自动化领域发挥着重要作用。尽管它们基于不同类型的物理层,然而它们共享相同的数据结构,即“应用数据单元”(Application Data Unit, ADU)。ADU由一个称为“协议数据单元”(Protocol Data Unit, PDU)的部分组成,后者包括功能码和数据。
PDU有三个类型:请求型、应答型和异常应答型。在所有情况下,它都遵循相同的格式,但根据所使用的物理网络,其表示方式可能会有所差异。例如,RTU和ASCII通常涉及串行通信,而TCP则主要用于以太网环境。
每个PDU都包含一个1字节长的功能码,该码指示要执行的操作。此外,它还包含0到252字节长的数据部分,这取决于特定操作所需读取或写入多少信息。对于某些功能码而言,如读取线圈或寄存器值,需要4个字节来指定地址或数量。
为了理解如何将PDU映射到不同的网络上,我们必须了解ADU。这是通过添加一个称为MBAP头(ModBus Application Protocol Header)的7字节结构来实现这一点。这使得TCP版本与其他两种版本区分开来,因为它包括传输标识符、协议标识符、长度字段以及单元标识符。
最后,由于IP地址和端口号属于更低层次的网络协议,而不是应用层协议,因此不包括在MBAP头中。这是因为TCP/IP是一个栈式体系结构,其中每一层提供不同的服务。当发送时,从高级别向下传递,并在接收时从底部向上回溯,以便最终达到正确的地方。