西门子手动报警按钮复位方法 (西门子安全功能指令)

在切割/冲压等机械加工领域,有时候需要操作人员手动上料。手动上料过程中设备应处于停止状态,当上料完毕并确认安全后,才能再次启动。如果操作人员违反操作规程(比如一只手上料的同时另一只手去启动按钮),可能造成伤害的发生。为了避免这种伤害,人们发明了双手操作按钮。双手操作按钮必须两只手同时按下按钮才能激活输出(启动设备),下面这张图是西门子3SB38双手操作按钮盒:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

双手操作按钮盒需要配合专用控制器(双手同步控制器)才能工作。如果使用故障安全型PLC,可以通过双手操作指令来完成类似的功能。今天这篇文章,我们就来介绍下博途环境下基于故障安全的双手操作指令——TWO_H_EN。本文包括两个主题:

①指令介绍;

②应用举例;

西门子故障诊断的一般方法,西门子通讯状态诊断指令

1、指令介绍

打开博途开发环境,新建项目。在左侧项目树双击“添加新设备”,在弹出的对话框中单击“控制器”,任意选择一款故障安全型CPU(比如:CPU 1515F-2PN)。

在新添加的PLC项目树中选择“程序块”→“添加新块”,在弹出的对话框中选择“函数块”,命名为“Test”,并勾选“Create F-block(创建安全块)”,如下图所示:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

打开Test函数块,在右侧的指令列表中,“基本指令”→“安全指令(Safety functions)”中,可以看到“TWO_H_EN”指令(带有使能信号的双手操作指令),如下图所示:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

将该指令拖放到Test函数块中,会自动提示生成背景数据块,完成后如下图所示:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

该指令有四个输入参数和两个输出参数,其中:

输入参数:

①IN1:布尔型,按钮1的输入信号;

②IN2:布尔型,按钮2的输入信号;

③ENABLE:布尔型:使能信号;

④DISCTIME:TIME型,差异时间(由于两个按钮不可能绝对同步,因此允许它们之间的动作在短时间内存在差异),取值范围1~500ms,超出这个范围诊断字节会报错;

输出参数:

①Q:布尔型,输出信号;

②DIAG:字节型,诊断信息。诊断字节的每个位表示相应的含义,具体见下面的表格;

位编号

含义(当值=1时)

位0(bit0)

差异时间错误(小于0或大于500)

位1(bit1)

按钮不同步

位2(bit2)

保留

位3(bit3)

保留

位4(bit4)

一个按钮未释放

位5(bit5)

未使能(ENABLE=0)

位6(bit6)

保留

位7(bit7)

Q的输出状态

该指令的工作原理如下:

  • 当按钮1的输入信号IN1和按钮2的输入信号IN2在差异时间内从0变为1并保持时,并且使能信号ENABLE的值为1时,Q输出为1;
  • 当IN1或者IN2或者ENABLE中任何一个信号为0时,Q输出为0;
  • 当按钮输入信号IN1或者IN2未在差异时间内激活时(比如仅按下了其中一个按钮),必须先将按钮松开,然后再次同步按下两个按钮才能再次激活Q的输出;

2、应用举例

下面我们创建一个功能安全函数块Test来测试TWO_H_EN指令。为了进行仿真,我们创建F-DB,名称为simulation,在其中新建变量如下图所示:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

为了模拟双手按钮的按下动作,编写testFC,使按钮1和按钮2的触发由有200ms的差异,如下图所示:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

安全函数块Test中的代码如下图所示:

西门子故障诊断的一般方法,西门子通讯状态诊断指令

好了,关于双手操作指令就先介绍到这里。如果你想获取本文示例代码,可以到我的博客网站(https://www.founderchip.com)。

我的书《西门子S7-1200/1500 PLC SCL语言编程 ——从入门到精通》从硬件到软件,比较详细的介绍了SCL语言的编程,感兴趣的话可以点击下面的链接查看:

西门子S7-1200/1500 PLC SCL语言编程从入门到精通

¥69

购买