项目内基于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 Int0...20包含21个Int型42个字节(Byte)","Send_2 Array22...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_2CPU 1214C DC/DC/DC":

控制程序如下:

端口定义如下:

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

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

SD_1:本地PLC写入数据的指针,即本地发送(Send)位置(PLC1的SendDB1)为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_2CPU 1214C DC/DC/DC":

控制程序如下:

端口定义如下:

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

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

RD_1:本地PLC读取数据的指针,即本地发送(Send)位置(PLC1的ReceiveDB2)为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的写入和发送相关联对应,测试数据如下,仿真正确。

相关推荐
筝筝ba9 小时前
1988 NDX收盘价格复盘
科技·ai
衡石科技12 小时前
Data_Agent记忆机制与经验复用衡石分析智能体会话记忆与长期学习技术解析
人工智能·科技·学习·算法·企业级bi
腾视科技-AIoT15 小时前
超低功耗 性能卓越|腾视科技重磅推出TS-SG-SM9系列AI算力模组,引领边缘智能计算新篇章
人工智能·科技·ai·算力模组·ai算力模组·ai模组·腾视科技
nanoscientific18 小时前
CO₂纳米气泡注入电解液强化液馈CO₂电还原传质——局部富集、微对流与亲水扩散介质协同
科技·微纳米气泡
电子制造自留地20 小时前
AI服务器PCB的超低损耗材料选型逻辑
运维·服务器·人工智能·科技·制造·科普·pcb工艺
蓝速科技21 小时前
会议室门牌触控预约选型与落地实战指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
蓝速科技21 小时前
企业展厅数字人导览效果提升与选型实战指南丨蓝速科技
大数据·运维·数据库·人工智能·科技·microsoft
zlxcnc21 小时前
虾皮与小鱼干色选怎么评估:含水、碎壳和好料带出的记录方法
科技·视觉检测·色选机
筝筝ba21 小时前
1991 NDX收盘价格复盘
科技
蓝速科技1 天前
蓝速科技 F100 双屏翻译机:中小企业跨国会议提效方案
大数据·网络·数据结构·人工智能·科技·运维开发