三菱 FX5U 系列 MODBUS/TCP 通信帧格式(上)
MODBUS/TCP 协议是工业中常用的开放式协议,其覆盖了使用
TCP/IP 协议的“Intranet”和“Internet”环境。FX5U 支持 PLC 作
为服务器或者客户端,当 PLC 作为客户端时,使用 Socket 通信功能
和 服 务 器 通 信 。 当 PLC 作 为 服 务 器 时 , 上 位 机 通 过 发 送 符 合
MODBUS/TCP 协议的报文来读取 PLC 的信息,我们本次着重讲解如何
通过 MODBUS/TCP 协议读写 PLC 的 X,Y,M,D 位寄存器和字寄存器等状
态。
FX5U 中将 PLC 设置为服务器主要需要设置本机的 IP 地址和设
定 MODBUS/TCP 通信的端口号。
设置 PLC 的 IP 地址
设置 MODBUS/TCP 通信的端口号
将参数设置好后点击应用,然后将工程下载进 PLC,重新上电
后 PLC 在 MODBUS/TCP 通信中作为服务器使用。
将 PLC 在 MODBUS/TCP 通信中作为服务器使用设定完成后,PLC
底层会自动的将 X,Y,M,D 位寄存器和字寄存器和 MODBUS/TCP 通信中
的 MODBUS 软元件号进行关联,这个关联我们也可以自己去做调整。
对于表中软元件 Y 和 X 的 MODBUS 软元件号都是从 0-1024,很多
朋友会感到疑惑,这个是重复了么,其实这两个是不同的区间,一个
是线圈,一个是输入,从下表的 MODBUS 标准功能一览表也可以看出:
从该表中可以看出,使用 01H 功能码读取 Y 点的值,0FH 功能
码置位 Y 点。通过 02H 功能码读取 X 点的值。
知道 X,Y,M,D 位寄存器和字寄存器在 MODBUS/TCP 通信中的 MODBUS
软元件号后我们来看下 MODBUS/TCP 协议的格式
MODBUS/TCP 协议的帧格式如下图
MODBUS 协议数据部根据不同的功能码会有不同。
使用 01H 功能码读取 Y 点时:
请求报文格式(客户端→服务器):
正常返回报文格式(服务器→客户端):
使用 02H 功能码读取 X 点时:
请求报文格式(客户端→服务器):
正常返回报文格式(服务器→客户端):
使用 03H 功能码读取 D 寄存器时:
请求报文格式(客户端→服务器):
正常返回报文格式(服务器→客户端):
使用 0FH 功能码置位 Y 点时:
请求报文格式(客户端→服务器):
正常返回报文格式(服务器→客户端):
使用 10H 功能码赋值 D 寄存器时:
请求报文格式(客户端→服务器):
正常返回报文格式(服务器→客户端):
由于篇幅有限,本次先和大家探讨 MODBUS/TCP 协议帧的格式问
题,下一篇我们来实际应用一下,使用网络调试助手来模拟客户端和
作为服务器的 FX5U 走 MODBUS/TCP 通信。