Modbus TCP 西门子PLC与 多个设备进行通讯 使用Modbus Slave模拟多个设备ID

时间:2024-11-13 08:48:47

目录

1前言

2相同地址不同ID

1创建连接数据

2创建连接程序

3模块参数设置

4Modbus Slave设置

5成果展示

3结语


1前言

本篇文章讲了PLC如何与同一地址的多个ID设备进行通讯,如果看不懂这篇文章就去看一下这篇博客学一下基础。

Modbus TCP 西门子PLC指令以太口地址配置以及 Poll Slave调试软件地址配置_西门子modbus tcp-****博客

关于Poll Slave的设置和PLC的通讯指令还有数据这边就不多讲解了详细可以看我刚刚的这篇博客。       

2相同地址不同ID

1创建连接数据

首先要先创建两个TCON_IP_v4的数据

通讯地址IP都为192.168.0.100我电脑主机的地址也就是Modbus Slave的地址

这边的连接ID的意思应该是我连接不同设备,PLC自己的一个排序作为区分,只要不重复就行。

这边建议改成和设备的ID相同。

2创建连接程序

如图是一个TCP轮询指令,

而TCP指令并一定不需要使用轮询指令!!!

只要REQ一直得电就行。

这里主要是复习一下前面的RTU的轮询方式。

西门子PLC中Modbus通讯DATA_ADDR通讯起始地址设置以及RTU轮询程序设计。_西门子modbus地址-****博客

想要与两个不同的ID通讯,那么CLIENT指令的背景数据块和CONNECT连接数据都要不同。

3模块参数设置

下面这个是最重要的一步!!!

在PLC中找到"系统块"→"程序资源"中的找到CLIENT指令对应的背景数据块,更改MD_Unit_ID的值,如果这个值不更改是默认的话是无法与多个ID连接的会冲突。

MD_Unit_ID的值就对应着Slave的ID。

如图我选择设备ID为2,21两个

4Modbus Slave设置

打开Modbus Slave软件

打开"Connection"→"Connect"中设置通讯模式和地址

这边如图选择 192.168.0.100是我电脑的地址,大概意思是192.168.0.100设置为被通讯的设备IP

下面两个不勾选。

然后"NEW" 新建一个窗口,在"Setup"中找到

新建一个窗口,选中窗口后点击"Setup"→"Slave Defintion"

修改ID编号和PLC中MD_Unit_ID值相同。

到这边就设置完成了

5成果展示

这边因为我前面设置的是"CLIENT_DB"中的"MD_Unit_ID"为2

"CLIENT_DB_1"中的"MD_Unit_ID"为21

而Slave 设置的是 21

所以"CLIENT_DB_1""MD_Unit_ID"地址为21的收不到来自Modbus Slave ID为1的值

"CLIENT_DB""MD_Unit_ID"为2就能收到来自Modbus Slave ID为2的值

所以ID一定要对应!!!

将Slave中的ID改为21PLC就能和Slave通讯了

这边的5号接收不到是因为我PLC只接收0-4号数据

3结语

以上就是关于西门子TCP通讯多个设备的配置

因为条件有限没有测试Slave与不同的IP地址的通讯,但肯定大差不差的。

然后 Advanced 仿真的PLC是无法与Modbus Slave进行通讯的!!!

如果有人知道的话麻烦请教一下。

本篇文章为个人学习总结,如有不足请及时指出,多多包涵QwQ。

觉得有用的话就点个赞吧ღ( ´・ᴗ・` )。