组态王延时启动程序_程序没写好手被机器压,你的程序安全吗?

本文探讨了如何设计一个安全的双手启动程序,通过S7-1215DCDCDC PLC和TIA V16软件,创建一个“双手启动安全继电器”FB块,利用输入按钮状态和时间差判断,确保操作过程的安全性。文章通过实例演示了程序逻辑,并提出了安全考虑,以防止设备在单手操作时引发事故。
摘要由CSDN通过智能技术生成

一.你们一想到双手启动程序会怎么做?

1.用一个输入点,然后两个按钮串联?

2.两个输入点,然后输入点串联?

3.两个输入点,输入点串联,再延时?

那么这样写程序真的安全吗?

二.今天我给大家推荐另外一个思路

硬件环境:S7-1215DCDCDC

软件环境:TIA V16

1.我们首先新建一个FB块,我这里命名为 “双手启动安全继电器” ,然后创建相应的接口变量:

4个Input接口为:

输入1:bool 获取外部按钮1

输入2:bool 获取外部按钮2

有效检测时间: Time 用来设置有效检测时间,并给默认值500ms

允许误差:Time 用来设置允许按下时间的误差值,并给默认值100ms

1个Output接口为

安全输出:bool 将运算结果传给外部

1c910813ff3feb916d270794f171bd93.png

接口及静态变量

2.我们用梯形图写程序如图效果

cf510e666fa2467c1a509caaf50aac58.png

程序解读:

第一行程序:检测 输入1的状态 ,如果接通我们延时,进行有效检测

第二行程序: 检测输入2的状态,如果接通我们延时,进行有效检测

第三行程序:检测两个按钮有没有同时按下?如果有,取上升沿,检测按下瞬间他们的时序差了多少?也就是两个值相减,但是结果有可能为负值,那么我们取其绝对值,获得时序正差值。

第四行程序:当两个按钮都检测有效,按键时序差绝对值是否小于我们允许的误差值,并且有效检测时间大于允许误差,进行非法数据验证,如果都满足我们输出安全。

3.我们添加测试变量,并调用这个FB块。

a65518ddfa0ab2b18fafd43706da9ec4.png

输入1 M0.0:用来模拟第一个按钮

输入2 M0.1:用来模拟第二个按钮

安全 M1.0:用来模拟运算结果

模拟同时输入字节 MB0 :用来模拟同时按下

2ac2e614c37117693d60c70fff4dbd20.png

调用FB块

由于我这里的时间已经有默认值,在不需要改时间的情况下就不用改了。

4.我们下载程序,并转到在线调试

8a4af018481c13b4a575b0e7ad2bf35f.png

下载程序

5.我们添加监控表用来调试:

d2549f04f169af863b63316c09872f5c.png
77187030172f0d893811d4f478bce868.png

6.测试,为了直观有效,我用动画模拟:

163ba781a62bf8551616fd64bd97dabd.gif

分析一下,我首先模拟按钮1输入,再模拟按钮2输入,由于我一个一个操作肯定有时间差。

可以看到,由于实际时间差值的绝对值大于允许的误差值,所以没有输出安全信号。

当我给MB0赋值16#03的时候,也就是2#11,由于实际时间差值的绝对值是0,小于允许的误差,安全信号就输出了。

攻城狮们,老铁们,如果有更好的想法可以优化,并且封装为库,重复调用还是很香的。

其实,这个原理,是借鉴于安全继电器检测按键过程的原理,关注的是时序上是否真正同时按下,我们平时写程序更多的关注结果,没有关注过程。不知道有没有朋友想过?有些对安全稍微高点的场景又没使用安全继电器。当有人把另外一个传感器短接,屏蔽,或者按钮机械故障卡住,没有弹开。作业人员单手操作设备,万一夹到手那是我们不愿看到的,比如注塑机冲压机的双按钮启动,如果没有很好的防护,模具容易夹到手,造成人员伤亡。

#电气自动化# #PLC# #电工# #安全# #安全继电器#

end

专注.NET上位机C#(winform、wpf)、主流PLC、电气、机器视觉、物联网、STM32、自动化 选型开发、终身学习欢迎交流

如果对您有帮助,欢迎关注转发点赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值