在TIA环境下实现S7-300F和S7-1500F之间的安全相关控

概念
安全相关的 pn 控制器和智能设备之间的通信
示例所使用的软硬件环境
硬件配置
通讯编程
概念
与在标准的系统中一样,在 tia 安全系统中具有 profinet 接口的 s7-300f 和 s7- 1500f cpu 之间可以进行安全相关的控制器与智能设备通信。通信通过两个安全应用程序指令进行,即 senddp 指令用于发送数据,而 rcvdp 指令用于接收数据。这些指令由用户在 f-cpu 相应的安全程序中调用,可用于固定数量的 bool 和 int 类型的数据进行安全传送。
安全相关的 pn 控制器和智能设备之间的通信
在本例程中,将 cpu317f-2pn/dp 作为一个 profinet 控制器,cpu1511f-1pn 作为一个 profinet 智能设备,senddp/rcvdp 指令实现两个 cpu 的安全相关的通信。
示例所使用的软硬件环境
step7 professional v14 sp1
step7 safety advanced v14 sp1
cpu1511f-1pn 固件版本 v2.1 订货号 6es7 511-1fk01-0ab0
cpu317f-2pn/dp 固件版本 v3.2 订货号 6es7317-2fk14-0ab0
测试目的:通过 f-cpu 之间的 profinet 控制器与智能设备的安全通信,使用安全程序指令 senddp 进行发送,用 rcvdp 进行接收。以安全方式一次传送 16 个 bool 型数据和 2 个 int 型数据,如图 1-1。
注意:必须在安全程序开始时调用 rcvdp,必须在安全程序结束时调用 senddp。
cpu1511f
传输类型
cpu317f
16 bool
2 int
16 bool
2 int
图 1-1 数据交换数量和类型
硬件配置
1) 打开 tia 软件,点击“新建项目”输入项目名称,设置项目文件存储路径;点击“确定”,完成项目创建,如图 2-1。
图 2-1 新建项目
2) 新建控制器站点,点击添加新设备,选择的订货号和版本,将设备名称命名为:300f io control,如图 2-2。
图 2-2 插入 300f 站
3) 在设备视图界面创建新的以太网子网,设置 ip 地址,如图 2-3。
图 2-3 分配网络和设置 ip 地址
4)重复上面的步骤,在项目中添加 s7-1500 f cpu(智能 io 设备),将以太网接口连接到同一个子网,设置 ip 地址,如图 2-4。
图 2-4 设置 s7-1500 f cpu 以太网参数
5)在“操作模式”中激活 s7-1500f cpu“io 设备”功能,并分配给 s7-300f cpu 控制器,如图 2-5。
图 2-5 设置操作模式
6)在下面的“传输区域”中,组态两个 cpu 之间的通信地址区,在类型中一定要选择 f-cd,箭头向左方向表示 s7-1500f cpu 发送数据到 s7-300f cpu,如图 2-6。如果需要发送的数据多于 16bool 和 2int,可以再配置多个同样的传输地址区。s7-300f cpu 如果需要发送数据到 s7-1500f cpu 也是相同配置方法,只不过箭头方向要向右。
图 2-6 组态 s7-1500f cpu 通信地址区
将两个安全 cpu 都编译保存,然后下载,以 s7-300f 下载为例,如图 2-7。
图 2-7 编译搜索 cpu
图 2-8 下载
s7-300f/1500f 项目都编译保存下载后,网络视图在线后状态,说明两个 cpu 之间通信正常,如图 2-9。
图 2-9 硬件组态在线状态
在项目树中打开 s7-300f,安全运行组在添加安全 cpu 硬件时系统已经自动生成,默认在 ob35 中调用安全主程序“main_safety_rtg1”fb1,如图 2-10。
图 2-10 安全运行组
添加 f-db,用于 rcvdp 指令输出变量接口连接,如图 2-11。
copyright  siemens ag copyright year all rights reserved
图 2-11 建立 接收数据 f-db
打开“程序块”下面的安全主程序“main_safety_rtg1”(fb1),在程序段 1 中调用
rcvdp 数据接收功能指令。注意:f 通讯程序接收指令,必须在主程序的开始调用,如图
2-12。
图 2-12 插入接收功能指令 rcvdp
接收功能指令 rcvdp 管脚定义,如图 2-13。
图 2-13 接收指令参数管脚
输入参数
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
接收数据区的起始地址,示例中是 4116(dec),如下图 2-14
输出参数
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 功能指令参数说明
在指令中,laddr 参数需要填写传输区本侧的起始地址,如 s7-300f 侧,起始地址从4116 开始,如图 2-14。
图 2-14 rcvdp 中 laddr 管脚的填写
同样在 s7-1500f 智能设备侧,新建 f-db,然后在“main_safety_rtg1”(fb1)中, 调用发送程序指令 senddp,如图 2-15,2-16。
图 2-15 1500f 侧新建 f-db
图 2-16 发送指令程序参数管脚
输入参数
sd_bo_00—sd_bo_15
用于发送 bool 数据
sd_i_00 — sd_i_01
用于发送 int 数据
dp_dp_id
**的 senddp 和 rcvdp 之间的关联值,确认发送和接收的对应关系,示例中是 1,与 s7-300f 侧 rcvdp 的 id 一致
timeout
安全相关的通讯的监视时间
laddr
接 io 传输区域的硬件标识符,示例中是 260(dec),如下图 2-17
输出参数
error:
1=通信出错
subs_on
1=接收方输出故障安全值
ret_dprd/ ret_dpwr
dprd_dat/dpwr_dat 的错误代码
diag
诊断信息
表 2 senddp 功能指令说明
注意:输出变量中,除“ret_dprd”,“ret_dpwr”和“diag”三个变量以外其它的变量都需要用故障安全的数据。
在 s7-1500f 系统常量表中找到与 s7-300f cpu 通信数据区的硬件标识符填写在 laadr, 如图 2-17。
图 2-17 发送 laddr 填写
将两个 plc 的程序分别进行编译,然后下载到各自 plc,如图 2-18。
图 2-18 编译保存下载(1500f 为例)
使用监控表监控测试结果,s7-1500f 通过 senddp 指令将 m100.0、m100.1
和 mw102 发送,s7-300f 通过 rcvdp 指令接收数据放置在建立的 db3 中,如图 2-19。
图 2-19 监控结果