基于西门子1500仿真软件PLCSIM Advanced 7.0的本机Modbus TCP通信实例之Modbus TCP Sever建立(一)
Modbus TCP通信是施耐德公司于1996年推出的基于以太网TCP/IP的Modbus协议,即Modbus TCP。Modbus TCP是简单的、中立厂商的用于管理和控制自动化设备的Modbus系列通讯协议的派生产品,Modbus TCP通信结合了以太网物理网络和TCP/IP网络标准,采用包含有Modbus应用协议数据的报文传输方式。Modbus设备间数据交换是通过功能码实现的,有些功能码是对位操作,有些功能码是对字操作。Modbus TCP/IP为CS架构,Client不断的向Server发出请求,Server端被动响应提供数据或者被写入。Modbus TCP通信协议是开放协议,很多设备都集成此协议,比如PLC、机器人、智能工业相机和其他智能设备等。
西门子S7-1500集成的以太网口支持Modbus TCP通信,可以作为Modbus TCP客户端或者服务端。Modbus TCP使用TCP通信作为通信路径,其通信时将占用S7-1500的开放式用户通信连接资源,使用时通过调用Modbus TCP客户端(MB_CLIENT)指令和服务端(MB_SERVER)指令进行数据交换。
一、PLCSIM Advanced仿真软件的安装与网络设置
1、安装
如果出现PLCSIM Advanced软件双击无反应,最好的办法是换一个版本安装,并激活。
安装完成后,桌面会出现软件图标。

系统网络设置中会出现一张虚拟网卡。

2、网络设置
将本地网卡、虚拟网卡的IP地址获取设置为自动获取,原来的跟新增的都要设置。

3、设置PG/PC接口
WIN11进入控制面板:打开WIN+R:输入control命令,或直接在搜索栏搜索控制面板
用大图标查看,找到【设置PG/PC接口】

按下图修改,选择虚拟网卡 Auto.1项,这个应该跟前面自动获取IP是对应的。

二、PLCSIM Advanced仿真软件的设置
新建一个仿真实例,输入名称,IP:192.168.0.2,点击Start

三、博图建立PLC工程项目
一定要选1500PLCcpu,PLCSIM-Advanced只支持1500PLC,CPU版本选固件4.0及以上的,低的可能不行,不太确定。

1、权限配置
1、不设置密码:因为博图用的是V20,建立项目默认设置密码,选择不设置密码。

2、CPU访问控制:禁用

3、设置与仿真相同的IP
:92.168.0.2

4、设置系统和时钟存储器

5、项目属性设置
在项目名称上找到属性,选择保护,选择,

这样系统能自动生成一些变量
设置完这几项,应该就可以了。
四、Modbus TCP服务器编程配置
1、新建包含控制数据与通信数据的数据块

添加通信控制变量CONNECT结构体,变量类型为TCON_IP_v4,这个类型不能选择,可以粘贴进去。
各参数意义如下。

InterfaceID硬件标识符从CPU的属性、系统常数中查看,为64。

ID应该为Modbus中的设备号,此处设置为2。
RemoteAddress为客户端的IP,设置为0表示,不限制客户端IP。
LocalPort改为502,Modbus默认。
其他默认,设置完如下。

2、添加寄存器通信数据变量
在DB块中添加包含5个WORD的数组,ArrayofWORD,因为Modbus一个寄存器是16位的,用来实现数据传输。

3、添加线圈,触点、输入数据寄存器通信变量
在PLC变量中,新加变量表,并添加各种类型的数据。

4、在MAIN(OB1)中添加MB_SERVER通信块
将控制通信数据库中定义的两个变量添加到参数引脚。

5、其他数据模拟
线圈数据,以0.5HZ变化

触点输入,以0.5HZ变化

输入数值寄存器,将周期变化值传进去。

五、编译、下载程序
下载时,PG/PC接口选择仿真软件的虚拟网卡。

下载完后,转至在线,启动CPU。至此,ModbusTCPServer建立完成。
六、PLC变量与Modbus数据对应关系
1. PLC的Q区对应Modbus的线圈,Q0.0对应00001,对应地址:
- 00001 - 09999:数字量输出( 线圈)
2. PLC的I区对应Modbus的离散输入,I0.0对应10001。对应地址:
- 10001 - 19999:数字量输入(触点)
3、Modbus的输入寄存器从地址I0.0开始,一般输入寄存器对应模拟量输入,但在此次进行的模拟情况下,高低字节是反的。
- 30001 - 39999:输入数据寄存器(通常为模拟量输入)
4、保持寄存器也无特殊要求,在本例中为DB块中定义的。
参考链接:
基于PLCSIM-Advanced搭建ModbusTCP通信仿真环境 - 知乎
基于PLCSIM Advanced的西门子PLC Modbus TCP通信 - 哔哩哔哩
西门子 PLC与Modbus TCP 数据地址对应关系 - 左转右转 - 博客园
