从STEP7 Safety V15.1开始,S7-1200和S7-1500F-CPU间可以通过FlexibleF-Link进行安全数据的交互。这表示安全数据能够以数组的形式通过开放式通信进行交互。
通过Flexible F-Link进行安全数据交换具有以下特点:
安全数据需要建立在PLC数据类型(UDT)中;
每个UDT中Zui大支持100个字节的数据交互,支持故障安全数据类型;
适用于S7-1200和S7-1500 F-CPU;
用于通信的DB块由系统自动生成;
每组通信具有唯一的UUID;
要求:
S7-1500 F-CPU的固件不低于V2.0;
S7-1200 F-CPU的固件版本不低于V4.2;
Safety system的版本不低于V2.2。
Flexible F-Link通信过程说明
FlexibleF-Link安全通信是以开放式用户通信(例如TCP)的方式将一个F-CPU的F-DB数据发送到另一个F-CPU的F-DB中。示意过程如图A所示:
图A.FlexibleF-Link 通信示意图
F-CPU间组态FlexibleF-Link,通过开放式用户通信(如TCP)进行数据传输,本质上是两个F-CPU间的F-communicationDB间的数据交互。
通信过程如下(以PLC1发送安全数据到PLC2为例说明):
PLC1在安全主程序(Main_Safety_RTG1)中编程,将需要交互的安全数据从全局F-DB中传送至F-communicationDB中。数据为UDT类型。
PLC1调用发送指令(如TSEND)将F-communicationDB中的数据发送到PLC2,如图A"SEND_ARRAY"。
PLC2调用接受指令(如TRCV)接收数据,数据传送至F-communicationDB中,如图A"RCV_ARRAY"。将交互的安全数据从F-communication DB中取出传送至全局F-DB中。
PLC2调用发送指令(如TSEND),将安全校验数据发送到PLC1,如图A "ACK_SEND_ARRAY"。
PLC1调用接受指令(如TRCV)接收数据,数据传送至F-communicationDB中,如图A"ACK_RCV_ARRAY"。
PLC1验证安全校验数据无误,执行下一次的安全数据的发送。
F-communication DB的说明
F-communicationDB在两个F-CPU进行FlexibleF-Link设置后分别自动生成,设置过程见下文示例。如图B所示:
图B.F-communication DBs
发送端与接收端的F-communication DB 数据结构不同。如图C所示:
图C.F-communication 发送/接收DB
SEND_DATA:需要发送给伙伴的安全数据,由用户自定义生成。安全数据需要用户在安全主程序中编程进行传送。
ACK_RCV_ARRAY: 接收的安全校验数据。
SEND_ARRAY: 需要通过发送指令(如TSEND)发送给伙伴的数组,由安全数据和校验信息组成。
RCV_ARRAY: 接收端PLC通过接收指令(如TRCV)接收的数组,由安全数据和校验信息组成。
RCV_DATA: 接收端接收到的安全数据,即由发送端PLC交互的数据。用户可在安全主程序编程将该数据传送至F-DB中。
ACK_SEND_ARRAY: 需要接收端PLC通过发送指令(如TSEND)发送出去的安全校验信息。
概括来说,对于发送端,①②位于DB块的"Input"接口区,需要由外部传入数据;③位于DB块的"Output"接口区,需要将该数据发送出去。而对于接收端,④位于DB块的"Input"接口区,需要由外部传入数据;⑤⑥位于DB块的"Output"接口区,需要将该数据发送出去。
接收端DB块中的PASS_OUT为TRUE时,将输出故障替代值"PASS_VALUES"。当"ACK_REQ"为TRUE时,表示故障消失需要手动确认,输入信号"ACK_REI"触发上升沿后,数据交互即可正常。
本节内容,将实现将S7-1500F-CPU中的数据通过Flexible F-Link的方式发送到S7-1200F-CPU中。
测试所用产品:
CPU 1511F-1PN (6ES7 511-1FK01-0AB0 ,V2.5)
CPU 1215FC DC/DC/DC (6ES7 215-1AF40-0XB0 , V4.2)
Safety system version V2.3
TIA Portal Step7 professional V16
Step7 safety V16
实现交互的数据区
通过以下步骤,实现将plc1的DB6中的数据发送到plc2的DB3中。如图1所示:
图1.安全数据交互区
S7-1500F侧编程组态
添加S7-1511F和S7-1215FC,分别设置两个CPU的IP地址为192.168.0.15和192.168.0.12,并连接在一个子网中。如图2所示:
图2.添加新F-CPU
添加符合F的PLC数据类型。如图3所示:
图3.添加PLC数据类型
新建的UDT中创建需要交互的数据类型。如图4所示:
图4.新增交互变量
设置Flexible F-Link。如图5所示:
设置完成后,自动生成F-communication DB,具体结构见前面图C。
图5.设置FlexibleF-Link
新建FC块,添加到pre processing和post processing。如图6所示:
Pre processing 指定的程序块在安全运行组之前运行;Postprocessing指令的指令块在安全运行组之后运行。
图6.设置Pre/Postprocessing
添加循环中断组织块OB30,设置其循环时间为30ms。在OB30中调用TRCV_C指令用于建立TCP连接和接收数据。如图7所示:
循环中断OB30的循环时间可以调整。OB30中调用TRCV_C,主要用于在安全运行组执行前多次执行接收保证能接收到新的安全校验数据。
图7.增加TCP接收指令
TRCV_C指令连接组态,用于建立与伙伴的TCP连接。如图8所示:
如果通信双方属于不同的项目,伙伴侧选择“未指定”。
图8.连接参数组态
OB30中TRCV_C指令参数化,接收安全通信过程中符合profisafe规范的安全校验数据。TRCV_C指令将接收到的安全校验数据存放到DB2的数组"rcvAckArray"中。如图9所示: