S7-1500和S7-1200 F-CPU间Flexible F-Link通信

从STEP7 Safety V15.1开始,S7-1200和S7-1500 F-CPU间可以通过Flexible F-Link进行安全数据的交互。这表示安全数据能够以数组的形式通过开放式通信进行交互。

通过Flexible F-Link进行安全数据交换具有以下特点:

  1. 安全数据需要建立在PLC数据类型(UDT)中;
  2. 每个UDT中最大支持100个字节的数据交互,支持故障安全数据类型;
  3. 适用于S7-1200和S7-1500 F-CPU;
  4. 用于通信的DB块由系统自动生成;
  5. 每组通信具有唯一的UUID;

要求

  1. S7-1500 F-CPU的固件不低于V2.0;
  2. S7-1200 F-CPU的固件版本不低于V4.2;
  3. Safety system的版本不低于V2.2。

更多的关于创建和编写、通信的安全程序的信息请参考故障安全系统组态和编程手册

Flexible F-Link通信过程说明

Flexible F-Link安全通信是以开放式用户通信(例如TCP)的方式将一个F-CPU的F-DB数据发送到另一个F-CPU的F-DB中。示意过程如图A所示:

图A. Flexible F-Link 通信示意图

F-CPU间组态Flexible F-Link,通过开放式用户通信(如TCP)进行数据传输,本质上是两个F-CPU间的F-communication DB间的数据交互。

通信过程如下(以PLC1发送安全数据到PLC2为例说明):

  1. PLC1在安全主程序 (Main_Safety_RTG1)中编程,将需要交互的安全数据从全局F-DB中传送至F-communication DB中。数据为UDT类型。
  2. PLC1调用发送指令(如TSEND)将F-communication DB中的数据发送到PLC2,如图A "SEND_ARRAY"。
  3. PLC2调用接受指令(如TRCV)接收数据,数据传送至F-communication DB中,如图A "RCV_ARRAY"。同时将交互的安全数据从F-communication DB中取出传送至全局F-DB中。
  4. PLC2调用发送指令(如TSEND),将安全校验数据发送到PLC1,如图A "ACK_SEND_ARRAY"。
  5. PLC1调用接受指令(如TRCV)接收数据,数据传送至F-communication DB中,如图A "ACK_RCV_ARRAY"。
  6. PLC1验证安全校验数据无误,执行下一次的安全数据的发送。

F-communication DB的说明

F-communication DB在两个F-CPU进行Flexible F-Link设置后分别自动生成,设置过程见下文示例。如图B所示:

图B. F-communication DBs

发送端与接收端的F-communication DB 数据结构不同。如图C所示:

图C.F-communication 发送/接收DB

概括来说,对于发送端,①②位于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中。

测试所用产品:

  1. CPU 1511F-1PN (6ES7 511-1FK01-0AB0 ,V2.5)
  2. CPU 1215FC DC/DC/DC (6ES7 215-1AF40-0XB0 , V4.2)
  3. Safety system version V2.3
  4. TIA Portal Step7 professional V16
  5. 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.设置Flexible F-Link

新建FC块,添加到pre processing和post processing。如图6所示:

Pre processing 指定的程序块在安全运行组之前运行;Post processing 指令的指令块在安全运行组之后运行。

图6.设置Pre/Post processing

添加循环中断组织块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所示:

注意:数组"rcvAckArray"为Byte类型数组,数组长度与"send".ACK_RCV_LENGTH一致。

图9.参数化TRCV_C

pre processing 指令块将接收的安全校验数据传送至F-communication中。执行安全运行组之前,将数据传送至安全通信DB中。如图10所示:

图10.数据传送

post processing 指令块进行安全数据的发送。如图11所示:

图11.发送安全数据

安全主程序中将用户全局DB数据传送至F-communication中。如图12所示:

图12.安全主程序编程

下载项目到CPU中。

S7-1200F侧编程组态

新建符合F的PLC数据类型,新增接收数据类型。如图13所示:

图13.添加PLC数据类型

设置Flexible F-Link。如图14所示:

设置完成后,自动生成F-communication DB,具体结构见前面图C。

图14.设置Flexible F-Link

新建FC块,添加到pre processing和post processing。如图15所示:

图15.设置Pre/Post processing

添加循环中断组织块OB30,设置其循环时间为30ms。在OB30中调用TRCV_C指令用于建立TCP连接和接收数据。如图16所示:

图16.调用TCP接收指令

TRCV_C指令连接组态。如图17所示:

图17.组态连接参数

OB30中TRCV_C指令参数化,接收plc1发送的安全数据到DB4的数组"rcvArray"中。如图18所示:

注意:数组"rcvArray"为Byte类型数组,数组长度与"receive".RCV_LENGTH一致。

图18.参数化TRCV_C

pre processing 指令块将接收的安全数据传送至F-communication中。如图19所示:

图19.传送数据

post processing 指令块进行安全校验数据的发送。如图20所示:

图20.发送安全校验数据

安全主程序中将接收的安全数据从F-communication传送至用户全局DB中。如图21所示:

图21.安全主程序编程

下载项目到CPU中。

通信监控

接收端(plc2)进行去钝。如图22所示:

图22.去钝

数据在线监控,安全数据传送完成。如图23所示:

图23.数据监视