项目内基于S7通信的2台S7-1214C PLC之间通信方法

目的

测试基于西门子S7通信实现西门子PLC之间的异步通信,掌柜相关通信技术关键点和应用方法。本应用为贴近应用需求,将PLC1定义为主站(项目中主站配置高,程序处理功能要求低)。

软硬件

⑴硬件

①西门子1214C PLC:1214CPU DC/DC/DC/,6ES7 214-1AG40-0XB0,数量2台;②交换机:1台;③博途编程调试笔记本。

⑵软件

博途V19编程软件:TIA Portal V19。

组态设置

创建博途PLC组态,如下图创建2台1214CPU PLC,点击"连接"选择"S7连接",右键PLC_1(客户端)选择"添加新连接(N)":

在弹出界面如下图,点击PLC_2,本地接口选择PLC_1,勾选"建立主动连接","本地ID(十六进制)100",点击"添加"(仅点击1次即可),点击"关闭":

将2台PLC属性下"常规-防护与安全-连接机制"勾选"允许来自远程对象的PUT/GET通信访问"如下图:

右键PLC_1属性,在"常规-以太网地址-接口连接到"点击"添加新子网",如下图生成"子网:PN/IE_1":

右键PLC_2属性,在"常规-以太网地址-接口连接到"在"子网"中选择"PN/IE_1":

此时在组态界面打开"地址显示"如下图点击"S7_连接_1",此时S7通信的主从站构建完成:

创建数据块分配

在PLC_1(客户端)侧创建发送(Send)和接受(Receive)数据块,在PLC_2(服务器)侧创建发送(Send)和接受(Receive)数据块如下图(程序块-添加新块-数据块DB):

将4个数据块(Send和Receive)右键"属性",类同下图,取消勾选"优化的块访问":

为保证数据收发一致,在PLC数据区充足下,将两侧PLC数据配置一致,同时,点击选择各数据块,点击"编译"(此时数据区显示偏移量值);其中以PLC_1发送(Send)为例,创建数据区间如下其中"Send_1 Array of Int[0...20]包含21个Int型42个字节(Byte)","Send_2 Array[22...53]包含32个Bool型4个字节",也即Send_1和Send_2共计包含46(42+4)个字节:

此时2个PLC对应的数据关系如下图所示:

双击PLC_1(客户端)设备组态,双击PLC_1在"常规-脉冲发生器(PTO/PWM)-系统和时钟存储器",如下图勾选"启用时钟存储器字节",将时钟存储器字节的地址(MBx)设置1000(错开地址,避免与程序地址冲突,PLC_2设置100(设置1000时无心跳信号)):

点击"设备和网络-网络视图-连接",查看到两个PLC间S7通信组态:

编程

编程在客户端进行,应用程序块主要包括PUT块(向远端PLC写入数据)和GET块(从远端PLC读取数据),这两个模块位于博途右侧"通信-S7通信"下。

此外使用PUT/GET时,需要确保参数ADDR与SD/RD定义的数据区域在数量、长度和数据类型方面都需要保持一致并匹配。

PUT/GET指令的最大可传送数据长度为212/222字节,通信数据区域数量的增加并不能增加通信数据的长度,反之增大通信的数据区域量,通信最大的数据长度会减少。

|--------|-------|-------|-------|-------|
| 指令 | 所使用的ADDR、SD和RD数据区域的数量 ||||
| 指令 | 1 | 2 | 3 | 4 |
| PUT | 212 | 196 | 180 | 164 |
| GET | 222 | 218 | 214 | 210 |

⑴PUT块介绍

参数介绍如下:

⑵GET块介绍

参数介绍如下:

⑵编程

①客户端发送指令(PUT)编程

如下图点击在"伙伴"栏下选择"PLC_2[CPU 1214C DC/DC/DC]":

控制程序如下:

端口定义如下:

REQ:控制参数request,选择%M1000.0"Clock_10Hz";

ADDR_1:向远程PLC写入数据的数据指针,对对方接收(Receive)位置(PLC2的Receive[DB2])为P#DB2.DBX0.0 BYTE 46(也即从数据的偏移量DBX0.0开始,共计46个字节(Byte));

SD_1:本地PLC写入数据的指针,即本地发送(Send)位置(PLC1的Send[DB1])为P#DB1.DBX0.0 BYTE 46;

DONE:状态参数,M0.0,DONE=0表示作业未启动或仍在执行中,DONE=1表示作业已执行且没有任何错误;

ERROR:状态参数,M0.1与STATUS联合使用;

STATUS:状态值,MW10,与ERROR联合使用,注意当ERROR=1,MW10=1时,与PLC2通信故障;

②客户端接收指令(GET)编程

如下图点击在"伙伴"栏下选择"PLC_2[CPU 1214C DC/DC/DC]":

控制程序如下:

端口定义如下:

REQ:控制参数request,选择%M1000.0"Clock_10Hz";

ADDR_1:向远程PLC读取数据的数据指针,对对方发送(Receive)位置(PLC2的Send[DB1])为P#DB1.DBX0.0 BYTE 46(也即从数据的偏移量DBX0.0开始,共计46个字节(Byte));

RD_1:本地PLC读取数据的指针,即本地发送(Send)位置(PLC1的Receive[DB2])为P#DB2.DBX0.0 BYTE 46;

NDR:状态参数,M0.2,NDR=0表示作业未开始或仍在运行,NDR=1表示作业作业已成功完成;

ERROR:状态参数,M0.3与STATUS联合使用;

STATUS:状态值,MW12,与ERROR联合使用,注意当ERROR=1,MW12=1时,与PLC2通信故障;

⑶通信监测

根据客户端(PLC1)ERROR和STATUS状态值可在PLC1侧监测与PLC2的通信监测。同时服务器端创建对客户端的心跳监测,实现服务器端(PLC2)与PLC1的通信监测。

①PLC1(客户端)侧实现程序如下:

②PLC2(服务器)侧实现程序如下:

仿真

启动仿真如下图:

在2个PLC状态监测表中建立如下变量,其中PLC1和PLC2的写入和发送相关联对应,测试数据如下,仿真正确。

相关推荐
nhc0885 小时前
贵阳纳海川科技・棋牌室行业数字化解决方案
科技·微信小程序·小程序·软件开发·小程序开发
科技前瞻观察5 小时前
中国智能制造科技企业有哪些
科技·制造
科研实践课堂(小绿书)5 小时前
【ScienceAdvances】突破“频率-Q值”诅咒:二维材料室温GHz振动首次实现,将如何重塑传感与量子科技?
科技
marteker5 小时前
凯撒医疗集团和戴尔科技如何通过数据分析改善客户体验
大数据·科技
焦耳加热5 小时前
苏州大学/南方科技大学《ACS Nano》:3500小时!用2秒焦耳热给铝箔“镀层膜”,水系锌电池寿命大增
人工智能·科技·能源·制造·材料工程
千流出海5 小时前
天禄科技投建TAC光学膜产线,接棒韩国偏光片转移后的上游空白
科技·千流出海
Deepoch6 小时前
Deepoc具身模型开发板:巡检机器人的“全天候工业视觉”中枢
人工智能·科技·机器人·开发板·巡检机器人·具身模型·deepoc
星幻元宇VR6 小时前
VR生产安全学习机|将安全教育带入沉浸式实训新时代
科技·学习·安全·vr·虚拟现实
MicroTech20257 小时前
微算法科技(NASDAQ: MLGO)探索量子隐形传态区块链隐私保护签名技术,增强Web 3.0元宇宙环境的效率、安全性和真实性
科技·区块链