在西门子博途(TIA Portal)硬件组态中添加故障安全输入/输出(F-I/O)模块后,编程开发环境会自动为其生成一个安全I/O数据块(F-I/O DB)。通过设置该安全数据块的参数,可以让整个故障安全输入/输出模块钝化、使其某个通道钝化或者模块钝化后使其重新集成。今天这篇文章,我们来聊聊这个安全数据块。
下面这张图是某项目的硬件组态,在西门子S7-1200 故障安全CPU——CPU 1214FC的右侧添加一个故障安全输入模块F-DI 8/16x24VDC和一个故障安全输出模块F-DQ 4x24VDC:
添加完成后,在项目树的“程序块” →“系统块”→“STEP 7 Safety”→“F-I/O data blocks”会自动添加两个安全I/O数据块(F-I/O DB),如下图所示:
安全I/O数据块的名称以“F”开头,后面的数字表示模块的起始地址,其后是模块在硬件组态中的名称。比如:“F00008_F-DI8/16x24VDC_1”,“F”表示是故障安全,“8”表示模块的起始地址为“8”,后面的字母是模块的名称,与硬件组态中相同。
双击打开该数据块,如下图所示:
它由输入和输出两部分参数组成。输入参数可对模块进行控制,输出参数可用来评估模块的状态。其中:
输入参数:
PASS_ON:布尔型,1=使能模块的钝化;在安全程序中将该值设置为1将钝化整个故障安全输入/输出模块;
ACK_NEC:布尔型,当安全模块故障消除后,重新集成是否需要确认(1=需要确认;0=不需要确认,自动重新集成;默认为1);
ACK_REI:布尔型,确认重新集成的输入信号(上升沿);
IPAR_EN:布尔型,PROFIsafe协议中“iPar_EN_C”参数;
DISABLE:布尔型,1=禁用安全I/O数据块;
输出参数:
PASS_OUT:布尔型,模块的钝化状态(1=模块已经钝化);
QBAD:布尔型,1=输出故障安全值;
ACK_REQ:布尔型,故障消除后,请求重新集成;
IPAR_OK:布尔型,PROFIsafe协议中“iPar_EN_S”参数;;
DIAG:字节型,诊断信息;
DISABLED:布尔型,1=故障安全信号模块已经禁用;
可以看出,安全I/O数据块中的参数主要是和模块的钝化及重新集成有关。所谓“钝化(Passivation)”是指安全输入/输出(F-I/O)模块检测到故障时,使用故障安全值替代正常的输出值进行输出的状态;所谓“重新集成”,是指当模块故障消除后,重新恢复成正常工作状态。详见我之前写过一篇文章《什么是故障安全模块的钝化和重新集成?》。
在安全程序中,可以通过读取安全I/O数据块的参数值来获取相关的信息。
比如下面的代码读取安全模块的钝化信息并存放到安全数据块DB900中:
下面的代码读取模块的请求重新集成的信息并存放到全局数据块中:
对于单个安全模块的重新集成,可以通过给其安全数据块的“ACK_REI”参数赋值来完成,比如:
不过在实际项目中,通常有多个安全输入/输出模块,逐一进行复位显得比较繁琐。我们可以使用安全指令“ACK_GL”对安全运行组中的所有安全模块进行重新集成,比如下面的代码:
需要说明的是:只有当“ACK_REQ”的值为1的情况下才能完成模块的重新集成(也就是所有故障已经消除)。
好了,关于西门子故障安全模块的安全I/O数据块就先介绍到这里。
下面是西门子故障安全文章的归档链接:
我的微信视频号以视频的方式分享工控小知识,欢迎扫描下面的二维码观看:
发表评论