[西门子] 如何使用S7-1500冗余PLC 建立Modbus TCP通信

[复制链接]
查看35 | 回复0 | 2025-3-30 14:54:08 | 显示全部楼层 |阅读模式
>

Modbus TCP通讯编程 

CPU做服务器 ,CPU 1517H作为服务器端与ModScan32进行Modbus TCP通讯 .

1  项目中添加CPU1517H 

2  打开设备视图可以看到所组态的CPU1517H 

3  设置PLC IP地址 。 说明:X1接口的系统IP是两个冗余PLC的X1接口的公共设置,当通信时通过系统IP 始终访问的是主PLC。 

示例中: 

PLC1 X1 IP: 192.168.0.11 

PLC2 X1 IP: 192.168.0.12 

X1 系统IP:192.168.0.10 

PLC1 X2 IP: 192.168.1.11 

PLC2 X2 IP: 192.168.1.12 

X2 系统IP:192.168.1.10 

①:PLC的X1接口IP地址 

②:冗余PLC的X1接口系统IP地址 

同样X2接口也可设置独立的PLC接口IP以及冗余PLC的系统IP地址, 

 

注意:设置虚拟 MAC 地址时,需确保以太网广播域中存储的所有 MAC 地址唯一。特别是在包含由 VRRP 组成的第三方设备以及由多个 STEP 7 项目所组态的冗余系统组成的系统中。 

4  冗余PLC MRP设置:冗余PLC的MRP默认设置为:管理员(自动),不需要修改。 

5  打开冗余PLC_1的Program Blocks文件夹,双击Main块,进行TCP编程。对于冗余系统程序只在PLC_1中进行编程,当同步时会将程序自动同步到PLC_2中。 

6  打开右侧指令中通讯的栏,在Others->Modbus TC文件夹中拖出程序块MB_SERVER,到Main 程序。 

7  建立Connect参数DB 

对于InterfaceID的硬件标志符是可以在硬件组态中找到,其中冗余的两个PLC都有HsystemIPRef_1这个是系统IP的硬件标识符,填写任意一个都可以正常通讯。

ID 填写在OUC组态中没有使用过的ID号, ConnectionType使用默认值就是TCP连接,由于通讯作为服务器所以ActiveEstabed为False,同时将本地开放的端口号填入LocalPort的参数,示例中设为502。 

8  建立寄存器区域的DB,分别给服务器和客户端建立100个字的空间 

9  填写服务器块的其它引脚 

DISCONNECT使用默认的参数False。 

然后编译下载到PLC。 

设定ModScan32步骤 

1  在ModScan32中在Connection菜单中,选择Connect设置连接的参数 

2  在Connect中选择Remote TCP/IP Server,IP Address填写冗余PLC的系统IP:192.168.0.10,Service中填写冗余PLC开放的端口号:502,设置完成后点击OK按钮,此时ModScan32会去主动连接冗余PLC。 

3  此时可以看到连接计数已经开始计数了,可以判断Modbus TCP的链接已经建立。 

       同时可以在TIA Portal中的网络视图(图1)中也可看到链接已经建立完成,ID为1的OUC连接的状态已经变成绿色了。 

       下面可以通过ModScan32向寄存器中写入数据进行测试,从图2中可以看到向40001中写入数据55,然后在PLC侧的DB块中可以看到第一个数据变成了55。或者将PLC侧Sever_Data[9]的数值修改成105,同时可以看到ModScan32这侧的40010的数值变成了105。

 

 


 









免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则