目录
一、C语言与Modbus/TCP协议
1.1 Modbus/TCP协议解析
基本结构: Modbus/TCP协议是在原有的Modbus协议基础上,结合TCP/IP网络通信技术形成的一种工业网络通信标准。它采用了标准的TCP/IP分层模型,将Modbus应用层数据封装在TCP报文中进行传输。Modbus/TCP报文的基本结构包括以下几个部分:
-
TCP头部:包含源端口号、目的端口号、序列号、确认号、头部长度、保留位、标志位(如URG、ACK、PSH、RST、SYN、FIN)、窗口大小、校验和、紧急指针等字段,用于TCP连接的建立、维护和数据传输过程。
-
Modbus/TCP报文:
- 事务标识符(Transaction Identifier, TID):由两字节组成,由主设备(客户端)生成并随请求发送,从设备(服务器)在响应中复用此标识符,以便主设备能匹配对应的响应报文。
- 协议标识符(Protocol Identifier, PID):固定值为0x0000,标识该报文使用Modbus协议。
- 长度(Length):表示后续Modbus应用数据单元(Application Data Unit, ADU)的字节数。
- Modbus应用数据单元(ADU):包含Modbus报文头(例如功能码)和数据区,具体结构取决于所使用的Modbus功能(如读取/写入寄存器、读取/写入线圈等)。
工作原理: Modbus/TCP采用主从式通信模式,即一个主设备(如PLC、SCADA系统)向多个从设备(如传感器、执行器、其他控制器)发起请求,从设备根据收到的请求执行相应操作,并返回响应给主设备。工作流程如下:
-
连接建立:主设备通过TCP三次握手建立与从设备的连接,通常使用预设的Modbus/TCP端口502。
-
请求发送:主设备构造一个Modbus/TCP报文,包含TID、PID、Length和相应的Modbus ADU,通过已建立的TCP连接发送至从设备。
-
响应接收:从设备接收到请求后