TIA Portal中S7-1200F CPU和S7-1500F CPU实现安全相关控制器与控制器通讯的配置例程

在TIA安全系统中S7-1500F和S7-1200F 的PROFINET接口之间可以借助 PN/PN Coupler 模块进行控制器与控制器之间的安全相关的通信。通信通过两个安全应用程序块进行,即SENDDP块用于发送数据,而RCVDP块用于接收数据。这些块由用户在F-CPU相应的安全程序中调用,可用于固定数量的BOOL和INT类型的数据进行安全传送。

在本例程中,将CPU1511F-1PN作为一个PROFINET 控制器,CPU1215FC作为另一个PROFINET 控制器,通过PN/PN Coupler实现两个CPU的安全相关的通信。

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

1 示例所使用的软硬件环境

通过PN/PN Coupler 实现控制器和控制器的F-CPU之间的安全相关通信,使用F应用程序块SENDDP进行发送,用RCVDP进行接收。使用以安全方式一次传送16个BOOL型数据和2个INT型数据,如图1-1。注意:必须在安全程序开始时调用RCVDP,必须在安全程序结束时调用SENDDP。

CPU1511F

传输类型

CPU1215FC

16 Bool

2 INT

16 Bool

2 INT

图1-1  数据交换数量和类型

2 硬件配置   

  1.   打开TIA软件,点击“新建项目”输入项目名称,设置项目文件存储路径;点击“确定”,完成项目创建,如图2-1。

图 2-1 创建项目     

  1. 添加新设备,选择的订货号和版本,将设备名称命名为:CPU1500F,如图2-2。

图 2-2 插入1500F站

  1. 在设备组态界面创建新的以太网子网,设置IP地址,如图2-3。

图2-3 分配网络和设置IP地址

  1. 在“网络视图”中,组态PN/PN Coupler X1,如图2-4。

图2-4 组态PN/PN Coupler

  1. 将PN/PN Coupler X1分配给IO控制器,并进入设备试图分配参数,如图2-5,2-6。

图2-5 分配PN Coupler控制器

图2-6 设置IP地址和设备名称

  1. PN/PN Coupler 模块的介绍,如图2-8。

图2-7 PN/PN Coupler模块面板图

注意:

PN/PN Coupler V1.0 需要MMC卡存储 Device name,只需要一张。(V1.0以后的产品不需要 MMC 卡)。

PROFINET IO 网络1使用:PN/PN Coupler x1组态;

PROFINET IO 网络2使用:PN/PN Coupler x2组态。

两个网络的通信数据区输入/输出方式必须相互对应。

更多详细信息,请阅读 PN/PN Coupler 手册,链接地址如下: https://support.industry.siemens.com/cs/cn/en/view/35837658

  1. 分配IO通讯区域,通过PN/PN Coupler 安全通讯的数据地址区定义规则为,发送方:12 字节输出 / 6 字节输入;接收方:12 字节输入 / 6 字节输出。建立了两条传输,先发送,再接收,图2-8。

图2-8 组态IO区域

  1. 按照上述的方法,组态S7-1215FC的CPU,同时将PN/PN Coupler X2挂成IO设备,分配设备名称,最终的组态结果,如图2-9。

    注意:通讯双方的传输条目要匹配,发送对接收,接收对发送。

图2-9 双方的IO组态数据

  1. 将两个安全CPU都编译下载后,还需要在线分配PN Coupler设备名称后PROFINET通信才能正常。以S7-1500F侧操作为例,如图2-10 - 2-13。
  2. 图2-10 进入分配设备名称界面

    图2-11 更新列表

    图2-12 分配名称

    图2-13 分配设备完成

  3. 同样在S7-1200F侧对PN Coupler X2接口在线分配设备名称,完成后网络视图在线后状态显示通信正常,如图2-14。

图2-14 硬件组态在线状态

3 软件编程  

安全相关的通信除了要进行硬件组态外,还要使用专门的安全通信程序块完成数据的发送和接收。

  1. 在项目树中打开 S7-1200F,安全运行组在添加安全CPU硬件时系统已经自动生成,默认在OB123中调用安全主程序“Main_Safety_RTG1”FB1,如图3-1所示。

图3-1 系统自动创建的安全运行组

  1. 添加F-DB,用于RCVDP和SENDDP指令输出变量接口连接,如图3-2。

图3-2 发送/接收F-DB建立变量

  1. 打开“程序块”下面的“Main_Safety_RTG1”(FB1),调用RCVDP数据接收功能指令。

    注意:F通讯程序,必须先接收,再发送,即网络1为接收功能指令,如图3-3所示。

图 3-3 插入接收功能指令RCVDP

  1. 接收功能指令RCVDP管脚定义,图3-4所示。

图3-4 接收指令参数管脚

输入参数

ACK_REI:

1=发生通信错误后,对发送数据的重新集成确认

SUBBO_00 -SUBBO_15

用于接收BOOL数据的安全值

SUBI_00 — SUBI_01

用于接收INT数据的安全值

DP_DP_ID

唯一的SENDDP和RCVDP之间的关联值,确认发送和接收的对应关系,示例中是1,与S7-1500F侧SENDDP的ID一致

TIMEOUT

安全相关的通讯的监视时间

LADDR

IO传输区域的硬件标识符,示例中是277(DEC),如下图3-5

输出参数

ERROR:

1=通信出错

SUBS_ON

1=使用替代值

ACK_REQ:

1=需要对发送数据的重新集成进行确 认

SENDMODE

1= 具有F_SENDDP的F-CPU处于取消激活的安全模式中

RD_BO_00-RD_BO_15

接收的BOOL数据

RD_I_00 — RD_I_01

接收的INT数据

RET_DPRD/ RET_DPWR

DPRD_DAT/DPWR_DAT的错误代码

DIAG

诊断信息

表1 RCVDP功能指令参数说明

注意:输出变量中,除“RET_DPRD”,“RET_DPWR”和“DIAG”三个变量以外其它的变量都需要用故障安全的数据。
  1. 在指令中,LADDR参数需要到系统常量中找到之前配置的传输地址区的硬件标识符。

图3-5 RCVDP中LADDR管脚的填写

  1. 在网络2中,调用SENDDP数据发送功能块,注意参数DP_DP_ID和LADDR参数的填写,图3-6,3-7。

图3-6 SENDDP指令程序

输入参数

SD_BO_00—SD_BO_15

用于发送BOOL数据

SD_I_00 — SD_I_01

用于发送INT数据

DP_DP_ID

唯一的F_SENDDP和F_RCVDP之间的关联值,确认发送和接收的对应关系,示例中是2,与S7-1500F侧RCVDP的ID一致

TIMEOUT

安全相关的通讯的监视时间

LADDR

接IO传输区域的硬件标识符,示例中是278(DEC),如下图3-7

输出参数

ERROR:

1=通信出错

SUBS_ON

1=接收方输出故障安全值

RET_DPRD/ RET_DPWR

DPRD_DAT/DPWR_DAT的错误代码

DIAG

诊断信息

表2 SENDDP功能指令说明

注意:输出变量中,除“RET_DPRD”,“RET_DPWR”和“DIAG”三个变量以外其它的变量都需要用故障安全的数据连接。

图3-7 SENDDP中LADDR管脚

  1. 在S7-1500F侧,同样在“Main_Safety_RTG1”(FB1)中,新建F-DB,编写接收和发送程序,如图3-8。

图3-8 1500F侧发送/接收F-DB

  1. 参照S7-1200F侧在“Main_Safety_RTG1”(FB1)中调用接收和发送程序,填写LADDR参数,同时注意两个PLC的发送和接收程序的DP_DP_ID参数之间的匹配关系。

图3-9 1500F侧RCVDP指令程序

图3-10 1500侧SENDDP指令调用

  1. 将两个PLC的程序进行编译,然后分别下载到PLC。

  2. 使用监控表监控测试结果,S7-1200F通过SENDDP指令将M100.0,M101.1 和MW102、MW104发送,S7-1500F通过SENDDP指令将M200.0,M200.1和MW202、MW204发送如图3-11。

    图3-11 监控结果