在TIA 安全系统中具有PROFINET接口的S7-1500F和S7-1200F CPU 之间可以进行安全相关的控制器与智能设备通信。通信通过两个安全应用程序指令进行,即SENDDP指令用于发送数据,而RCVDP指令用于接收数据。这些指令由用户在F-CPU相应的安全程序中调用,可用于固定数量的BOOL和INT(DINT)类型的数据进行安全传送。
在本例程中,将CPU1511F-1PN作为一个PROFINET 控制器,CPU1215FC作为一个PROFINET 智能设备,SENDDP/RCVDP指令实现两个CPU的安全相关的通信。
更多的关于创建和编写、通信的安全程序的信息请参考故障安全系统组态和编程手册。
测试目的:通过F-CPU之间的PROFINET控制器与智能设备的安全通信,使用安全程序指令SENDDP进行发送,用RCVDP进行接收。以安全方式一次传送16个BOOL型数据和2个INT型数据,如图1-1。
注意:必须在安全程序开始时调用RCVDP,必须在安全程序结束时调用SENDDP。
CPU1511F传输类型
CPU1215FC
16 Bool
2 INT16 Bool
2 INT图1-1 数据交换数量和类型
图 2-1 创建项目
图 2-2 插入1500F站
图2-3 分配网络和设置IP地址
重复上面的步骤,在项目中添加S7-1200 F CPU,将以太网接口连接到同一个子网,设置IP地址,如图2-4。
图2-4 设置S7-1200 F CPU的IP地址
图2-5 设置操作模式
如果需要发送的数据多于16Bool和2INT,可以再配置多个同样的传输地址区。S7-1200F CPU如果需要发送数据到S7-1500F CPU也是相同配置方法,只不过箭头方向要向左。
图2-6 组态S7-1200F CPU通信地址区
图2-7 编译项目 图2-8 搜索CPU 图2-9 下载项目到CPU
图2-10 硬件组态在线状态
安全相关的通信除了要进行硬件组态外,还要使用专门的安全通信程序块完成数据的发送和接收。
图3-1 系统自动创建的安全运行组
图3-2 建立接收数据F-DB 图3-3 接收数据F-DB建立变量
图 3-4 插入接收功能指令RCVDP
图3-5 接收指令参数管脚
输入参数
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传输区域的硬件标识符,示例中是272(DEC),如下图3-6
输出参数
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”三个变量以外其它的变量都需要用故障安全的数据。
图3-6 RCVDP中LADDR管脚的填写
图3-7 调用发送指令
输入参数
SD_BO_00—SD_BO_15
用于发送BOOL数据
SD_I_00 — SD_I_01
用于发送INT数据
DP_DP_ID
唯一的SENDDP和RCVDP之间的关联值,确认发送和接收的对应关系,示例中是1,与S7-1200F侧RCVDP的ID一致
TIMEOUT
安全相关的通讯的监视时间
LADDR
接IO传输区域的硬件标识符,示例中是261(DEC),如下图2-18
输出参数
ERROR:
1=通信出错
SUBS_ON
1=接收方输出故障安全值
RET_DPRD/ RET_DPWR
DPRD_DAT/DPWR_DAT的错误代码
DIAG
诊断信息
表2 SENDDP功能指令说明
注意:输出变量中,除“RET_DPRD”,“RET_DPWR”和“DIAG”三个变量以外其它的变量都需要用故障安全的数据。
图3-8 发送LADDR填写 图3-9 发送和接收的DP_DP_ID参数要一致
图3-10 监控结果