PLCSIM-Advanced实现西门子PLC开放式TCP通信

大部分初学者在学习C#上位机编程时,当需要实现与西门子PLC通信时,如果手上没有PLC实物,就可以通过仿真的方式来搭建PLC环境。

西门子PLC的仿真有两种方式,第一种方式是使用PLCSIM+NetToPLCsim,第二种方式是使用PLCSIM-Advanced,这两种都有各自的优势和不足之处。

第一种方式使用NetToPLCsim,不仅可以仿真S7-1500,还可以仿真S7-1200/S7-300/S7-400,但是只能仿真S7通信协议,无法仿真其他通信协议。

第二种方式使用PLCSIM-Advanced,不仅可以仿真S7通信协议,还可以仿真开放式TCP/UDP、ModbusTCP、OPCUA等以太网协议,但是仅支持S7-1500和ET200SP,无法仿真其他型号PLC。

这篇文章主要跟大家介绍如何基于PLCSIM-Advanced搭建一个仿真西门子PLC,实现开放式TCP通信。

一、仿真过程

1、首先我们要安装好博图和PLCSIM-Advanced软件,这个安装过程,前面已经有文章介绍过,具体参考:

西门子博图V17及仿真器安装及注意事项

2、PLCSIM-Advanced软件安装完成后,电脑中会额外多出一个虚拟网卡,名称为Siemens PLCSIM Virtual Ethernet Adapter,如图所示:

图片

3、首先我们设置一下这个虚拟网卡的IP,这里尽量不要和电脑自带网卡一致,一般情况下,我们的电脑默认网卡是0段或1段等,为了避免重复,所以我这里使用10这个网段,这里将IP地址设置为192.168.10.200,如图所示:

图片

4、管理员权限运行PLCSIM-Advanced软件,这里注意软件要以管理员权限运行,可以直接每次右击,以管理员权限运行,如果想一劳永逸,可以点击图标,右击【属性】,在【兼容性】选项中,将【以管理员身份运行此程序】的选项勾选:

图片

5、打开PLCSIM-Advanced软件,按照图示步骤进行设置,这里要注意IP地址必须与虚拟网卡同一网段,但是不能相同,比如虚拟网卡设置的是192.168.10.200,这里设置为192.168.10.100,点击Start之后,等待3秒,PLC Instance显示黄色,表示仿真PLC已经就绪,如图所示:

图片

6、仿真PLC就绪之后,使用博图TIA创建一个项目,这里的控制器必须要选择1500系列PLC,PLCSIM-Advanced只支持S7-1500PLC,但是对于我们学习通信来说,是没有影响的,博图项目创建如下所示,我们选择的PLC控制器型号CPU1511-1PN,如图所示:

图片

7、由于是仿真环境,与真实PLC还是有一点区别的,这里我们要提前设置一下,点击项目,右击【属性】,切换到【保护】选项,将其中的【块编译时支持仿真】勾选上,如图所示:

图片

8、修改PLC的IP地址,修改与PLCSIM-Advanced一致,即192.168.10.100,如图所示:

图片

9、下载PLC程序,这里要把PG/PC接口选择成Siemens PLCSIM Virtual Ethernet Adapter,点击【搜索】按钮,确定可以搜索到仿真PLC,选择搜索到的PLC,点击【下载】按钮,如图所示:

图片

10、完成PLC程序下载后,选择【启动模块】,点击【完成】按钮,如图所示:

图片

11、这时候,我们观察PLCSIM-Advanced软件,指示灯由黄色转换成绿色,表示PLC运行正常,至此,一个仿真的S7-1500PLC环境就搭建完成了,接下来可以进行通信程序编写,如图所示:

图片

二、PLC程序编写

西门子PLC实现开放式TCP通信是需要编写PLC程序的,PLC作为TCP服务器,上位机作为TCP客户端,下面对PLC程序编写步骤进行阐述说明:

1、创建一个新的DB块,DB块编号定义为DB100,用于与上位机通信,在DB块中创建变量用于通信测试,读取和写入各创建5个布尔、5个整型和5个浮点数,然后右击DB块,选择【属性】,把【优化的块访问】的勾选去掉,去除优化块访问后,每个变量后面会有一个偏移量,这个对于我们后续解析数据是有用的,如图所示:

图片

2、打开OB1,在右侧通信中,找到指令TSEND_C,然后拖拽至OB1的程序段1中,根据操作提示添加对应的背景数据块,如图所示:

图片

3、选择TSEND_C块,右击属性> 组态 > 连接参数:

(1)伙伴:选择“未指定”

(2)连接类型:选择TCP

(3)连接数据:新建一个连接数据

(4)连接ID:设置为1

(5)设置伙伴主动建立连接

(6)伙伴端口:设置为2000

具体设置参数如图所示:

图片

4、启用系统存储区和时钟存储区字节,选择CPU,右击属性,找到常规,选择系统与时钟存储器,勾选启用系统存储器字节和启用时钟存储器字节,地址MBx使用默认的MB0和MB1即可,如图所示:

图片

5、回到OB1,填写REQ和DATA,REQ采用1秒钟的脉冲,DATA为Read部分和Write部分,一共是64个字节,如图所示:

图片

6、从通信库中找到指令TRCV_C,拖拽至OB1的程序段2中,根据操作提示添加背景数据块,CONNECT引脚使用前面SEND的参数一致,如图所示:

图片

7、选择功能块TRCV_C,右击属性,在连接参数中,连接数据直接选择拉下菜单中PLC_1_Send_DB,相关参数会自动填充,如图所示:

图片

8、回到程序段2中,填写EN_R和DATA程序引脚,EN_R填写true,表示持续接收数据,DATA为Write部分,即P#DB100.DBX32.0 BYTE 32,如图所示:

图片

9、编译PLC程序,下载PLC程序,下载完成后启动模块,如图所示:

图片

10、打开网络调试助手NetAssist,连接上PLC,进行通信测试 ,具体步骤如下:

(1)设置协议类型为TCP Client

(2)远程地址填写PLC的IP:192.168.10.100

(3)端口号填写设置的2000

(4)接收选择Hex显示

(5)点击【连接】

(6)观察返回数据及长度

通信测试最终实现效果如图4-32所示:

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上位机付工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值