PLC作为Modbus TCP客户端

本文介绍如何利用SMART200软件和ModbusSlave实现PLC作为ModbusTCP客户端的配置过程。文中详细解释了ModbusTCPClient库的使用方法及ModbusSlave的配置步骤,并展示了通过更改PLC保持寄存器来控制服务器端状态的实验结果。

目录

1. 所需软件

2. 配置过程

2.1 PLC梯形图

2.2 Modbus Slave配置

3. 试验结果


1. 所需软件

SMART 200软件、Modbus Slave(实现Modbus从站模拟)

2. 配置过程

2.1 PLC梯形图

由于本案例将PLC作为Modbus TCP客户端,即发送查询指令的一方,因此,PLC需要使用Modbus客户端库,电脑使用Modbus Slave作为服务器端(可理解为从站)发送查询指令。

图1  Modbus TCP Client库

图2  Modbus TCP Client 库地址分配

IPAddr1——IPAddr4为服务器IP地址;

IP_Port为服务器端口;

RW为分配请求类型(读取或写入),其中 0 = 读取,1 = 写入;

Addr为Modbus 起始地址:分配要通过 MBUS_CLIENT 进行访问的数据的起始地址;

Count为Modbus 数据长度:此请求中要访问的位或保持寄存器的数量;

DataPtr指向 Modbus 数据寄存器的指针:DataPtr 指向与读取或写入请求关联的数据的 V 存储位置。对于读取请求,此位置是存储从 Modbus 服务器读取的数据的第一个存储位置。对于写入请求,此位置是要写入 Modbus 服务器的数据的第一个存储位置。

2.2 Modbus Slave配置

需按照离散输入寄存器、线圈寄存器、保持寄存器、输入寄存器分别设置寄存器及其地址信息。如图3所示,如果不指定服务器地址,需要勾选Ignore Unit ID。否则,可设置从机号,或者在PLC的符号表中找到Client的mModbusUnitID,更改所需查询的从机号。

图3 Modbus Slave配置页面

3. 试验结果

该案例,通过对PLC保持寄存器的数值进行更改,状态表中对VB20进行监控,可以看到数值已经产生了变化。

图4 试验结果

当RW为1,Addr为1,Count为7时,Slave设置为01,则可以控制服务器端的Q区;

当RW为0,Addr为1,Count为7时,Slave设置为01,则可以读取服务器端的Q区;类似的控制如下图所示。

 

### 配置S7-1200 PLC作为Modbus TCP客户端的步骤 在TIA Portal中配置S7-1200 PLC作为Modbus TCP客户端,需完成硬件组态、创建数据块以及调用通信指令等关键操作。以下为详细说明: #### 硬件组态 首先,在TIA Portal中新建一个项目,并添加S7-1200 CPU设备(例如CPU 1217C)。为以太网接口设置IP地址,如192.168.0.17,确保PLC与目标服务器处于同一子网内[^3]。 #### 创建数据块 接着,需要创建两个DB块:一个用于存储连接参数,另一个用于数据缓冲区。 - **连接参数DB块**:新建一个DB块(例如Client_Connection_Params),在其中定义一个名为“Server_IP”的`TCON_IP_v4`类型变量,并设置其远程IP地址和端口号。例如,远程IP地址设为服务器的IP(如192.168.0.100),端口号通常为502。 - **数据缓冲区DB块**:新建另一个DB块(例如Client_Data_Buffer),定义一个`Array[1..10] of Int`类型的变量“Data_Register”,用于存放从服务器读取或写入的数据[^2]。 #### 调用MB_CLIENT指令 进入OB1或其他合适的组织块中,插入`MB_CLIENT`功能块,并传入相关参数: ```pascal MB_CLIENT( EN := TRUE, IP_ADDR1 := ADR(Client_Connection_Params.Server_IP.IP_ADDR), // 服务器IP地址 PORT := Client_Connection_Params.Server_IP.PORT, // 服务器端口号 UNIT_ID := 1, // 设备ID,默认为1 MB_HOLD_REGISTER := ADR(Client_Data_Buffer.Data_Register), // 数据缓冲区地址 MB_HOLD_REGISTER_SIZE := SIZEOF(Client_Data_Buffer.Data_Register), // 缓冲区大小 DONE => , // 操作完成标志 BUSY => , // 通信进行中标志 ERROR => // 错误标志 ); ``` 上述代码中,`EN`引脚控制指令是否启用;`IP_ADDR1`和`PORT`指定目标服务器的网络地址;`UNIT_ID`为设备标识符,通常设为1;`MB_HOLD_REGISTER`指向数据缓冲区,用于寄存器数据交换;`DONE`、`BUSY`和`ERROR`用于状态监控[^3]。 #### 在线调试与验证 编译并下载程序到PLC后,切换至在线模式,使用Modbus测试工具(如Modbus Poll)模拟服务器行为,验证PLC能否成功发起连接并正确读写数据。若通信失败,应检查IP地址、端口配置及网络连通性[^2]。 通过上述步骤,S7-1200 PLC即可作为Modbus TCP客户端,实现与远程服务器的数据交互。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值