您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400 PLC的事件驱动的全局数据通信
来源:艾特贸易2017-12-20
简介使用 SFC 60 “ GD_SEND ”和 SFC 61 “ GD_RCV ”, S7 - 400 之间可以用事件驱动的方式发送和接收 GD 包,实现全局数据通信。应在全局数据表中组态用事件驱动方式发送的 GD 包,并将该 GD 包的
使用SFC 60“GD_SEND”和SFC 61“GD_RCV”,S7 - 400之间可以用事件驱动的方式发送和接收GD包,实现全局数据通信。应在全局数据表中组态用事件驱动方式发送的GD包,并将该GD包的扫描速率设置为0。
在SIMATIC管理器中新建一个项目,项目名称为“MPI_GD_B”。首先在SIMATIC管理器中生成两个站,它们的CPU均为CPU 413 -2DP,MPI站地址分别为2和3,将它们连接到MPI网络上。为两个站点生成数据块DB 1、DB 2和组织块OB100、OB35、OB87,在各数据块中生成一个数组。
打开网络组态工具NetPro,用鼠标右键点击MPI网络线,执行弹出的快捷菜单中的“定义全局数据”命令。用出现的GD表(见图9-8)对全局数据通信组态,将双方的ID0发送到对方的QD0。将双方的DB 1中的54B数据发送到对方的DB 2。
为了实现事件驱动的全局数据通信,将全局数据包GD2.1的扫描速率(SR2.1)设置为0。
SFC 60和SFC 61可以在用户程序中的任何一点被调用,全局数据表中设置的扫描速率不受调用SFC 60和SFC 61的影响。
SFC 60和SFC 61可能被更高优先级的块中断。为了保证全局数据交换的连续性,在调用SFC 60之前,调用SFC 41“DIS_AIRT”,来延迟处理更高优先级的中断和异步错误。执行完SFC 60后,调用SFC 42“EN_AIRT”,允许处理高优先级的中断和异步错误。
图9-8 全局数据表
下面是2号站的CPU 413-2DP的081中的程序,调用SFC 60发送数据包GD2.1。
程序段1:延迟处理高中断优先级的中断和异步错误
CALL”DIS_AIRT” //调用SFC 41
RET_VAL :=MW100 //返回的错误信息
程序段2:发送全局数据包GD2.1
A I 0.0
FP M 1.0
JCN _001 //不是I0.0的上升沿则跳转
CALL “GD_SND” //调用SFC 60
CIRCLE_ID:=B#16#2 //组态时设置的GD环编号
BLOCK_ID :=B#16#1 //组态时设置的GD包编号
RET_VAL :=MW102 //返回的错误信息
-001: NOP 0
程序段3:允许处理高中断优先级的中断和异步错误
CALL “EN_AIRT” //调用SFC 42
RET_VAL :=MW104 //返回的错误信息
下面是3号站的081调用SFC 61接收数据包GD2.1的程序:
CALL“GD_RCV” //调用SFC 61
CIRCLE_ID :=B#16#2 //组态时设置的GD环编号
BLOCK_ID :=B#16#1 //组态时设置的GD包编号
RET_VAL :=MW106 //返回的错误信息
各CPU的OB100中,分别将DB 1中的发送区预置为16#4131和16#4132,将DB 2中的数据接收区清零。在OB35中,每100 ms将要发送的第一个字DB1.DBW0加1。
将组态信息和程序分别下载到各CPU,然后用PROFIBUS电缆连接编程用的计算机和两台PLC的MPI接口。将两台CPU切换到RUN模式,CPU之间开始自动地交换全局数据。
图9-9~图9-11是系统运行时复制的各站点的变量表。进入RUN模式后,通信双方开始周期性地将ID0传送给对方的QD0,3号站周期性地将DB 1中的数据传送到2号站的DB 2。
图9-9 2号站的变量表
图9-10 刚开始进入RUN模式的3号站变量表
图9-11 事件触发数据发送后的3号站变量表
3号站的DB 2的前54 B数据被OB100初始化为0。在2号站的I0.0的上升沿调用SFC 60,将2号站的DB 1中的数据传送到3号站的DB 2。
图9-10和图9-11是I0.0第一个上升沿触发数据发送之前和触发发送之后的3号站的变量表。2号站的DB 1的前54B的数据字被OB100初始化为16#4131,OB35将DB1.DBW0不断加1。在每次I0.0的上升沿,2号站的DB 1中的数据被发送给3号站的DB 2,3号站的DB2.DBW0的值才会变化。
(部分原创文章应编辑稿费需求,每篇需要收取2元的稿费,如需查看全文请联系客服索取,谢谢理解!在线客服:)
点击排行
