ModbusTcp_server块详解
一台PLC为Modbus TCP Server服务器,从站

块参数
DISCONNECT
-
断开连接控制
-
Flase:允许客户端连接True:
-
强制断开当前 Modbus 客户端
-
常用于异常、复位、切换模式
MB_HOLD_REG
-
保持寄存器缓存区指针(最重要)
-
指向一块数据区(通常是 DB)
-
Modbus 客户端访问的 4xxxx 保持寄存器 就映射在这里
CONNECT
-
连接参数
-
一般连接一个 TCON_IP_v4 结构
-
用来指定:
-
本机 IP
-
端口(默认 502)
-
-
服务器模式下通常上电给一次即可
寄存器区域DB
我们创建一个DB块用于存放Modbus TCP的保持寄存器区域,也就是(Holding Register)

1 个保持寄存器 = 16 bit = 2 字节,也就是说一个word = 一个保持寄存器位。我们创建10个保持存期,为了方便记忆,我将名称改成了40001开头的十个寄存器
鼠标右键DB块,关闭优化块的访问


编译DB块之后会出现每个寄存器的偏移量
TCON_IP_V4参数和详解
我们现在新建一个DB块用于存放IP TCON_IP_V4的参数

InterfaceId = 64
也就是使用 CPU 自带的 PN / IE 网口, 64 是该网口的 硬件 ID
ID = 1(CONN_OUC)
-
含义:连接编号
-
每个通信连接要唯一
ConnectionType
| 十六进制 | 十进制 | 含义 | 是否常用 |
|---|---|---|---|
| 16#11 | 17 | TCP(面向连接) | Modbus TCP 必须用 |
| 16#03 | 3 | UDP | ❌ Modbus 不用 |
| 16#01 | 1 | ISO on TCP(S7 通信) | ❌ 不是 Modbus |
| 16#02 | 2 | ISO Transport | ❌ |
| 16#04 | 4 | TCP / RFC1006 | ❌ |
ActiveEstablished
ActiveEstablished 为false 是被动连接,我们这里用的服务器是让主站主动来连接。所以是被动连接。
RemoteAddress
这里写的的是IP地址,我们为Server 从站,所以这里填0.0.0.0的意识是所有设备都可以连接
RemotePort
服务器模式下不用指定对方端口
LocalPort
含义:PLC 本地监听端口
将参数填入进入块参数

我们这里用P#来直接指向我们的数据
这样就算是配置完毕了
服务器IP是多少呢?
这时候的服务器的IP是我们的PLCip,他会在本地启用了一个端口为502的占用,如果你的PLC地址是192.168.0.1 端口为502,那么就是在本地开启了一个监听器。我们下载程序进去看一下

下载程序看服务端现象

下载进去显示7002,说明服务端配置成功,7002是没有设备连接状态
外部Modbus poll调试
我们用外部的外部Modbus poll调试来看一下是否能成功连接
配置一下参数,选择connect

这里选择Modbus tcp,IP就选择我们组态里面的IP


没显示报错说明连接成功

进入setup配置一下

ID就是我们的服务器ID就是我们刚刚填入的IP,Function的是选择我们的保持寄存器
然后起始地址是0,长度为10。点击OK,然后进去写一下参数比如2026113。
plc成功显示值,说明写入成功。
ModbusTCP_C

我们依旧先进去配置好DB块和我们的TCON
客户端TCON_IP_V4配置
ActiveEstablished 为true 为主动连接
记住,服务为从,客户为主。
然后这里的ip填写服务器的IP和远程的端口,RemotePort为远程端口为服务端的端口。

数据保持和服务端一样,否则数据会有问题

我们启用一下plc自带时钟,用自带的时钟去读取
块参数连接

用Clock_1HZ来触发读取
DISCONNECT
-
断开连接
-
TRUE:主动断开 TCP -
正常通信时保持
FALSE
MB_MODE
| 值 | 功能 |
|---|---|
| 0 | 读保持寄存器(FC03) |
| 1 | 写单个保持寄存器(FC06) |
| 2 | 写多个保持寄存器(FC16) |
| 3 | 读线圈(FC01) |
MB_DATA_ADDR
-
Modbus 起始地址
-
40001→ 第一个保持寄存器
MB_DATA_LEN
-
数据长度
-
单位:寄存器个数
-
10→ 读 10 个保持寄存器
MB_DATA_PTR
-
数据缓存区指针
-
指向 PLC 内存,用来存读到 / 要写的数据
CONNECT
-
连接参数
-
指向
TCON_IP_v4结构
分配PLC1和PLC2的IP

下载程序查看一下状态

现在显示Done成功,说明我们连接上了。
两边写一下值看看能不能联通

客户端显示的值都会到服务器里,通信成功!
下载源程序连接
MODBUS tcp连接 点击下载!
