n
1概述
与在标准系统中一样,在S7 分布式安全系统中具有PROFINET接口的安全CPU之间可以通过IO控制器与智能设备方式进行安全相关的通信。通信通过两个安全应用程序块进行,即F_SENDDP块用于发送数据,而F_RCVDP块用于接收数据。这些块由用户在F-CPU相应的安全程序中调用,可用于固定数量的BOOL和INT类型的数据进行安全传送。
使用智能设备功能,需要使用STEP7 V5.5 和支持智能设备功能的硬件设备。对于支持智能设备功能的硬件,请参考如下链接: 44383954
2 安全相关的IO控制器与智能设备通信
在本例程中,将CPU317F-2PN/DP作为IO控制器,IM151-8F PN/DP CPU作为智能设备。通过两个CPU的集成PN口进行安全相关的通信。n
2.1 示例所使用的软硬件环境
• STEP7 V5.5 SP2
• STEP7 Distributed Safety V5.4 SP5
• CPU317F-2PN/DP V3.2 订货号6ES7 317-2FK14-0AB0
• IM151-8F PN/DP CPU V3.2 订货号6ES7 151-8FB01-0AB0n
2.2 硬件配置n
2.2.1 智能设备配置
1、在STEP7中对智能设备进行硬件配置。新建一个项目,项目名称Safety PN,先插入一个S7-300站,将名称修改IM151-8F,如图1所示。n
图1n
双击硬件打开配置界面,在右侧产品列表PROFINET IO→I/O→ET200S中找到IM151-8F PN/DP CPU拖入到项目中,如图2。n
图2n
在弹出的对话框中设置IP地址和新建一个以太网网络,如图3。n
图3n
2、设置CPU的保护等级和激活包含安全程序选项,之后打开F参数属性页,根据提示设置安全全程序密码,如图4和图5。n
图4n
图5n
3、双击X1 PN-IO槽,找到智能设备属性页,激活智能模式选项,如图6。n
图6n
点击“New”按钮,创建 IO 控制器和智能设备之间安全相关的通信地址区,见图7。n
图7n
安全相关的发送功能块F_SENDDP一次发送16个BOOL数据和2个INT数据需要6个字节的输出地址,由于同时还要发送6个字节的安全相关信息,所以一个发送需要12个字节的输出地址,同时为了接收对方发回的安全确认信息还要有6个字节的输入地址。同样接收功能块F_RCVDP除了要12字节的输入地址外,由于要回复给发送方安全确认信息,还需要有6个字节的输出地址。
定义地址区的规则:要发送的数据的输出数据地址区必须以与关联的输入数据地址区相同的起始地址开始。输出数据地址区共需要12个字节,而与其关联的输入数据地址区需要6个字节。要接收的数据的输入数据地址区必须以与关联的输出数据地址区相同的起始地址开始。输入数据地址区共需要12个字节,而与其关联的输出数据地址区需要6个字节。例程中配置一个发送数据区和一个接收数据区,根据这个规则,最后的通信地址区配置如图8。n
图8n
4、按照图9、图10所示步骤生成GSD文件然后进行安装,这样,在HW Config的硬件列表里就会出现之前配置的IM151-8F CPU。这样,智能设备的硬件配置就完成了,最后将整个硬件保存并编译下载到CPU中。n
图9n
图10n
2.2.2 IO控制器配置
IO控制器的配置前两项和之前的智能设备的配置是类似的,也是插入300站,设置IP地址和网络,激活安全相关参数。
1、添加智能设备,HW Config界面右侧列表中找到之前导入的智能设备,拖到PROFINET IO总线上。n
图11n
2、添加完智能设备后,双击修改智能设备的设备名要与之前做配置时候一致,图12。n
图12n
修改完成后系统会提示设备名有重名,点击Yes确认就可以。图13n
图13n
3、修改地址区起始地址,安全相关的通信定义地址区的规则在之前已经提到,系统自动分配的地址区可能不符合要求,按照规则修改智能设备在IO控制器中的地址,如图14。之后,将硬件配置保存并编译后下载到CPU317F-2PN/DP中。n
图14n
2.2.3 地址区的对应关系
之前对于IO控制器和智能设备的硬件配置,设置了两个安全相关通信的地址区。分别是智能设备使用地址为256的通信地址区发送16个BOOL型数据和2个INT型数据给IO控制器,IO控制器使用地址为128通信地址区接收。同样IO控制器使用地址为140的通信地址区发送16个BOOL型数据和2个INT型数据,智能设备使用地址为268的通信地址区接收。地址对应关系如图15所示。n
图15n
2.3 通信编程
对于IO控制器和智能设备的F-CPU之间的安全相关的通讯,使用F应用程序块FB223“F_SENDDP”进行发送,用FB224“F_RCVDP”进行接收。使用它们以安全方式一次传送16个BOOL型数据和2个INT型数据。要注意的是必须在安全程序开始时调用 F_RCVDP,F_SENDDP必须在安全程序结束时调用。n
2.3.1 IO控制器编程
1、在IO控制器安全程序开始调用FB224“F_RCVDP”功能块,图16。
功能块参数说明:
ACK_REI:1=发生通信错误后,对发送数据的重新集成确认。
SUBBO_00 — SUBBO_15:用于接收BOOL数据的安全值。
SUBI_00 — SUBI_01:用于接收INT数据的安全值。
DP_DP_ID:唯一的F_SENDDP和F_RCVDP之间的关联值,确认发送和接收的对应关系。
TIMEOUT:安全相关的通讯的监视时间。
LADDR:接收地址区的起始地址,示例中是128。
ERROR:1=通信出错。
SUBS_ON:1=输出故障安全值。
图16
ACK_REQ:1=需要对发送数据的重新集成进行确认。
SENDMODE:1= 具有F_SENDDP的F-CPU处于取消激活的安全模式中。
RD_BO_00 — RD_BO_15:接收的BOOL数据。
RD_I_00 — RD_I_01:接收的INT数据。
RETVAL14/ RETVAL15: SFC14/15的错误代码。
DIAG:诊断信息。
2、在IO控制器安全程序结尾调用FB223“F_SENDP”功能块,图17。
功能块参数说明:有几个参数和“F_RCVDP”功能块不同
SD_BO_00 —SD_BO_15:发送的BOOL数据。
SD_I_00 — SD_I_01:发送的INT数据。
SUBS_ON:1=接收方输出故障安全值。
LADDR:发送区的起始地址,示例中是140。
图17
2.3.2智能设备编程
同样在智能设备的安全程序开始调用F_RCVDP功能块,结尾调用F_SENDP功能块,填写相应参数。注意,F_SENDDP功能块的DP_DP_ID参数与IO控制器的F_RCVDP功能块相同,F_RCVDP功能块的DP_DP_ID参数与IO控制器的F_SENDDP相同。
2.3.3功能块和地址对应关系
图18
2.4通信结果测试
将硬件和安全程序编译后下载到CPU中,使用变量表测试通信状态,如图19。IO控制器CPU317F-2PN/DP将M110.0到M111.7的16个BOOL数据以及MW112和MW114这2个INT数据发送到智能设备IM151-8F PN/DP的对应地址中。与此同时智能设备发送M100.0到M101.7的16个BOOL数据以及MW102和MW104 这2个INT数据到IO控制器的M100.0到M101.7及MW102和MW104。数据传输正确,说明安全通信正常。
图19
更多的S7分布式安全系统中安全相关通讯的信息请参考文档《SIMATIC工业软件S7 Distributed Safety — 组态和编程》,下载链接:22099875
关键词
分布式安全、PROFINET、IO 控制器、智能设备
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc327736.html