西门子PLC S7
我们项目中,涉及到西门子两台及以上的PLC之间数据交互的问题,如何解决呢?
这期重点分享S7协议,由于交互的数据实时性要求不高,又是两台S7-1500,所以选择S7协议,简单高效!
通信方案一般来说,西门子PLC支持的基本的通信方式有以下几种,我们总结分享如下:
通信方式
通信方式
适用PLC系列
实时性
配置复杂度
典型应用场景
PPI
S7-200/SMART
低(主从轮询)
低
小型PLC组网、HMI连接
PROFIBUS-DP
S7-200/300/400/1500
高(确定性周期)
中
分布式IO控制、多PLC主从通信
S7单/双边通信
S7-1200/1500
中
低
数据读写(无需伙伴站编程)
PROFINET IO RT/IRT
S7-1200/1500
极高
高
运动控制、实时数据同步
OUC(TCP/UDP)
S7-300/400/1200/1500
中低
中高
跨平台通信、大数据传输
选型原则实时控制(如伺服同步):首选 PROFINET IRT(S7-1500)。多品牌兼容:选 OUC(TCP/ISO-on-TCP) 或 Modbus TCP。旧系统改造:S7-200系列用 PPI 或 PROFIBUS-DP(需EM277)。大数据量非实时传输:S7单边通信(编程简单)或 TCP(可靠流传输)。根据这些原则及我们项目所有的方式,可以采用TCP开放式通信方式、Modbus TCP 、S7通信。我们这里以S7单边通信为实际应用,把详细的配置和步骤记录下来,也分享给有需要的朋友!
具体步骤
我们首先明确两台PLC的具体身份和地址,这里以本地PLC A和伙伴PLC B为例说明。
本地PLC A IP地址:192.168.0.101
伙伴PLC B IP地址:192.168.0.110
项目配置主要步骤如下所示:
Step1 配置本地PLC A的S7通信连接
新建TIA项目,配置下【设备和网络】-【网络视图】-【连接】-【S7连接】,如下图所示:
选择S7连接后,右键CPU,在下拉菜单选择:
选择【添加新连接】,弹出的对话框如下图所示:
选择当前连接的网络,本例如上图所示,选中后直接点击添加即可。添加完成后,再配置下伙伴PLC B的IP地址:
例如,我们伙伴PLC B的IP地址:
属性里面的本地ID,我们这里用默认的100:
属性里面的地址详细信息,这里选03:
Step2 创建本地PLC A项目中的全局DB
一个用来接收伙伴数据的DB21 :
一个用来发给伙伴数据的DB22 :
当然上述DB的ID根据实际项目而定义,这里自动创建生成的,需要根据实际创建而定。
这里面的DB数量均为10个INT数据。
Step3 创建伙伴PLC B项目中的全局DB
再新建一个项目,添加伙伴PLC B,在程序单元里面直接新建两个数据一样的DB,当然,具体的名称可以不同,传的数据类型和数量一致。我们这里就按照完全相同的去创建:
一个发送给PLC A的数据DB41块:
一个接收PLC A的数据DB42块:
创建完成后,注意伙伴PLC B的属性里面,【常规】-【连接机制】:
要勾选上允许来自远程对象的PUT/GET通信访问,如上图所示。
图片程序指令
再回到PLC A所在的项目里面,添加指令程序:
具体接口含义:
程序添加完成后,两个项目分别下载到不同的PLC中去,启动运行即可!
当然,单边通信有点不好的就是伙伴PLC B不好获取S7协议的是否通信成功,万一通信中断,对实际设备运行会造成影响,目前我这里是通过DB42里面创建一个HeartCount的INT心跳值来判断是否通信正常。
如果大家有更好的方法,还请留言告知哦!