MODBUS TCP通讯的功能代码与RTU存在部分差异,以下为常用功能代码的详细说明,涵盖读写操作的核心功能:
| 功能代码 | 功能名 | 详细介绍 |
|---|---|---|
| 01H | 线圈读取 | 支持多点线圈读取操作 |
| 02H | 输入读取 | 支持多点输入信号读取 |
| 03H | 保持寄存器读取 | 支持多点保持寄存器读取 |
| 04H | 输入寄存器读取 | 支持多点输入寄存器读取 |
| 05H | 1线圈写入 | 仅支持单点线圈写入操作 |
| 06H | 1寄存器写入 | 仅支持单点寄存器写入操作 |
| 0FH | 多线圈写入 | 支持多点线圈批量写入 |
| 10H | 多寄存器写入 | 支持多点寄存器批量写入 |
| 16H | 保持寄存器掩码写入 | 单点AND/OR掩码写入操作 |
| 17H | 批量寄存器读出/写入 | 支持多点读取与多点写入结合操作 |
MODBUS TCP通讯主要依赖三条核心指令,分别实现连接建立、协议执行和连接切断功能,以下为各指令的格式、参数及功能说明:
用于执行指定连接的打开处理,完成主从站之间的通讯链接建立,支持TCP/IP和UDP/IP两种协议。
(U):固定输入字符串"U0",不可指定标签
(s1):链接编号(站号),取值范围1-8
(s2):控制数据存储起始软元件编号,占用连续数据寄存器,具体分配如下:
(s2)+0:参数选择(0000H=工程工具设置;8000H=(s2)+2至(s2)+6自定义设置)
(s2)+1:结束状态(0000H=正常结束,其他为错误代码)
(s2)+2:通信方式配置(bit8=0→TCP/IP;bit8=1→UDP/IP,含通信协议、开放方式等设置)
(s2)+3:本站端口编号(默认常用502)
(s2)+4~(s2)+5:目标设备IP地址存储位
(s2)+6:目标设备端口编号
(d):指令结束标志位
(d)+0:指令正常结束时,扫描END处理为ON,下一END处理为OFF
(d)+1:指令异常结束时为ON
按照预设的协议配置,对指定连接执行通信协议,支持多站协议连续执行。
(U):固定输入字符串"U0",与SP.SOCOPEN指令一致
(s1):链接编号(站号),与SP.SOCOPEN指令的(s1)对应
(s2):连续执行的协议数(即需要通讯的站数)
(s3):控制数据存储起始软元件编号,协议编号指定分配如下:
| 软元件地址 | 功能描述 | 详细说明 |
|---|---|---|
| (s3)+2 | 执行协议编号指定1 | 指定第1个执行的协议编号 |
| (s3)+3 | 执行协议编号指定2 | 指定第2个执行的协议编号 |
| (s3)+4 | 执行协议编号指定3 | 指定第3个执行的协议编号 |
| (s3)+5 | 执行协议编号指定4 | 指定第4个执行的协议编号 |
| (s3)+6 | 执行协议编号指定5 | 指定第5个执行的协议编号 |
| (s3)+7 | 执行协议编号指定6 | 指定第6个执行的协议编号 |
| (s3)+8 | 执行协议编号指定7 | 指定第7个执行的协议编号 |
| (s3)+9 | 执行协议编号指定8 | 指定第8个执行的协议编号 |
(d):指令执行结果标志位,用于反馈协议执行状态
用于关闭指定的通讯链接,释放通讯资源,完成通讯后的连接终止操作。
(U):固定输入字符串"U0",与前两条指令保持一致
(s1):需要切断的链接编号(站号),对应SP.SOCOPEN指令的(s1)
(s2):限制发布控制参数存储地址,用于配置切断方式
(d):指令结束标志位
(d)+0:链接正常切断时为ON
(d)+1:链接切断异常时为ON
以三菱FX5U PLC为例,在GX Works3软件中完成主站配置,实现与从站的通讯连接,具体步骤如下:
打开GX Works3软件,在"导航窗口"中依次展开[参数]→[模块型号FX5U]→[模块参数]→[以太网端口]→[基本设置]
在基本设置界面,点击"对象设备链接配置设置"后的[...]符号,或双击[详细设置]行,打开详细配置界面
在详细配置界面,展开[以太网设备(通用)],将"Active链接设备"拖放到左侧虚拟通讯线上
通讯手段选择:指定为"通讯协议"(支持MODBUS TCP标准协议)
可编程控制器(主站)设置:
设置IP地址,需与从站IP地址在同一网段(例:主站192.168.3.250,从站192.168.3.200)
设置主站端口号,需与从站502端口区分,取值范围1-5548、5570-65534
从站设备设置:
输入从站IP地址,确保与主站在同一网段
从站端口号默认设置为502(MODBUS TCP标准端口)
完成所有设置后,点击[反映设置并关闭],保存配置信息
以三菱FX5U PLC为例,从站模式下无需编写程序,仅需通过GX Works3完成通讯规格确认、参数配置和软元件分配,即可监听502端口等待主站连接。
支持协议:仅二进制MODBUS TCP协议
最大连接数:8台(同时访问1个CPU模块的外部设备上限)
从站功能数:10
默认端口:502(推荐保持默认,避免通讯异常)
打开GX Works3软件,在"导航窗口"依次展开[参数]→[模块型号FX5U]→[模块参数]→[以太网端口]
双击打开"基本设置"界面,点击"对象设备连接配置设置"后的[...]符号
在设置界面左侧展开[以太网通讯(通用)],将"MODBUS/TCP连接设备"拖入右侧虚拟通讯链
端口号配置:默认显示502,如需修改可选择1024-5548或5570-61439区间
点击[反映设置并关闭]保存配置,返回基本设置界面后,MODBUS/TCP使用状态将变为"使用"
在基本设置界面双击[详细设置],进入MODBUS软元件分配参数配置界面,需按以下规则分配软元件(不可重复分配):
| 分配类型 | 软元件类型 | 起始元件号 | 分配点数 |
|---|---|---|---|
| 输入 | Y(输出继电器) | 0 | 1024 |
| I(输入继电器) | 0 | 1024 | |
| S(状态继电器) | 8192 | 20480 | |
| SM(特殊状态继电器) | 20480 | 2048 | |
| 输入寄存器 | D(数据寄存器) | 0 | 8000 |
| SD(特殊数据寄存器) | 7680 | 10000 | |
| 保持寄存器 | X(输入继电器) | 22528 | 512 |
| SO(步进继电器) | 7680 | 40960 | |
| TH(定时器当前值) | 30720 | 256 |
完成所有设置后,点击软件菜单栏[检查]→[参数检查],确认无配置错误后下载参数至PLC,从站即可自动监听配置的端口,等待主站发起连接和读写指令。
以下示例为"主站主动连接从站→执行读写协议→切断连接"的完整流程(以2号从站、3个连续协议为例),从站无需编程,仅需完成上述配置即可响应主站指令:
说明:链接编号(从站号)为2,控制数据起始地址D10(D10~D16配置从站IP、端口等参数),结束标志位起始地址D20。
说明:链接编号2,连续执行3个协议(如03H读取保持寄存器、06H写入单个寄存器),控制数据起始地址D100,结果标志位起始地址D30。
说明:通讯完成后切断2号从站链接,限制发布控制参数存储于D200,结束标志位起始地址D40。
协议兼容性:主从站需统一使用二进制MODBUS TCP协议,避免协议不匹配导致通讯失败
端口配置:从站默认502端口,主站端口需与之区分,且均需避开已占用端口
地址网段:主从站IP地址必须在同一网段,否则无法建立TCP连接
软元件分配:从站不可重复分配软元件,且需确保"起始编号+点数"不超出有效范围
错误排查:主站通讯超时可检查从站参数配置、IP/端口正确性,或通过PLC诊断功能查看错误代码
连接限制:从站最多支持8台设备同时连接,需控制主站访问数量避免超出上限