施耐德电气是工业以太网的坚定支持者、推广者与使用者。自 2007 年施耐德加入 ODVA 以来,已实现 Modbus TCP 与 EtherNet/IP 之间的技术融合。目前施耐德电气既支持传统的 Modbus TCP,也支持 EtherNet/IP 协议。
(1) Modbus TCP/IP 的网络模型
Modbus TCP/IP 使用以太网 OSI 模型中的五层,如图 9-25 所示。第一层物理层提供设备物理接口,与市售介质/网络适配器兼容;第二层数据链路层把信号格式化为包含源/目的硬件地址的数据帧;第三层网络层实现带 32 位 IP 地址的 IP 报文;第四层传输层实现可靠连接、传输、查错、重发、端口服务与传输调度;第五层应用层承载 Modbus 协议报文。
图 9-25 Modbus TCP/IP 的五层 OSI 模型

1) Modbus TCP 数据帧
在 TCP/IP 以太网上传输时支持 Ethernet II 和 802.3 两种帧格式。如图 9-26 所示,Modbus TCP 数据帧包含报文头、功能代码和数据三部分。MBAP 报文头(Modbus Application Protocol,Modbus 应用协议)分 4 个域、共 7 个字节,详见表 9-5。
图 9-26 Modbus TCP/IP 的五层 OSI 模型

表 9-5 MBAP 报文头详解

2) Modbus 功能代码
Modbus 功能代码有公共功能代码、用户自定义功能代码和保留功能代码三种类型。公共功能代码为已定义好的功能码,具有唯一性,由 Modbus.org 认可;用户自定义功能代码有两组(65~72 和 100~110),无需认可但不保证唯一性,若要转为公共代码需经 RFC 认可;保留功能代码由某些公司用于传统设备,不能作为公共用途。常用公共功能代码见表 9-6。
表 9-6 常用公共功能代码

按应用深浅,功能代码分三类:类别 0 为客户机/服务器最小的可用子集,包括读多个保持寄存器(FC.3)、写多个保持寄存器(FC.16);类别 1 为实现基本互操作性的常用代码,包括读线圈(FC.1)、读开关量输入(FC.2)、读输入寄存器(FC.4)、写线圈(FC.5)、写单一寄存器(FC.6);类别 2 用于人机界面、监控系统的例行操作与数据传送,包括强制多个线圈(FC.15)、读通用寄存器(FC.20)、写通用寄存器(FC.21)、屏蔽写寄存器(FC.22)、读写寄存器(FC.23)。
3) Quantum PLC 采用 Modbus TCP 添加以太网的连接方法(略)