北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章465 浏览4821207

理解西门子故障安全输入/输出(F-I/O)模块的数据块

在西门子博途(TIA Portal)硬件组态中添加故障安全输入/输出(F-I/O)模块后,编程开发环境会自动为其生成一个安全I/O数据块(F-I/O DB)。通过设置该安全数据块的参数,可以让整个故障安全输入/输出模块钝化、使其某个通道钝化或者模块钝化后使其重新集成。今天这篇文章,我们来聊聊这个安全数据块。

cover.png

下面这张图是某项目的硬件组态,在西门子S7-1200 故障安全CPU——CPU 1214FC的右侧添加一个故障安全输入模块F-DI 8/16x24VDC和一个故障安全输出模块F-DQ 4x24VDC:

硬件组态.png

添加完成后,在项目树的“程序块” →“系统块”→“STEP 7 Safety”→“F-I/O data blocks”会自动添加两个安全I/O数据块(F-I/O DB),如下图所示:

F-IO DB.png

安全I/O数据块的名称以“F”开头,后面的数字表示模块的起始地址,其后是模块在硬件组态中的名称。比如:“F00008_F-DI8/16x24VDC_1”,“F”表示是故障安全,“8”表示模块的起始地址为“8”,后面的字母是模块的名称,与硬件组态中相同。

双击打开该数据块,如下图所示:

F-IO DB2.png

它由输入和输出两部分参数组成。输入参数可对模块进行控制,输出参数可用来评估模块的状态。其中:

输入参数:

  • 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中:

获取状态信息.PNG

下面的代码读取模块的请求重新集成的信息并存放到全局数据块中:

请求重新集成.PNG

对于单个安全模块的重新集成,可以通过给其安全数据块的“ACK_REI”参数赋值来完成,比如:

单个模块重新集成.png

不过在实际项目中,通常有多个安全输入/输出模块,逐一进行复位显得比较繁琐。我们可以使用安全指令“ACK_GL”对安全运行组中的所有安全模块进行重新集成,比如下面的代码:

全局重新集成.PNG

需要说明的是:只有当“ACK_REQ”的值为1的情况下才能完成模块的重新集成(也就是所有故障已经消除)。

好了,关于西门子故障安全模块的安全I/O数据块就先介绍到这里。

我的微信视频号以视频的方式分享工控小知识,欢迎扫描下面的二维码观看:

founderchip.png

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论

牛年到,祝福到!

祝愿大家在新的一年里,身体健康,工作顺利,财运滚滚,牛年大吉!

×