在一个项目程序中,报警程序的编写是不可或缺的,但是如何给相同或类似的报警汇总出一个功能块来,还没有定论,当然有各种各样可以实现的方法,以下是我在平常的程序编写中已经习惯性用的FB报警功能块,感觉有利于程序的简化和统一,分享一下!
以下我的编程环境使用倍福的TwinCAT,如图1所示,它的编程语言符合plc标准化语言IEC61131-3,人性化的编程界面简单易学。
图1.Twincat属性
第一个功能块Alarm1,功能块实现的是执行器得到输出信号后,但是到位信号在规定时间内未反馈回来,则给出执行器未到位报警,此类报警的应用情况很多,例如拿一个气缸来说:
图2.变量表
VAR_INPUT(输入变量):
_CONTROL:指PLC发出的给气缸的伸出信号;
_SIGNAL:指气缸的伸出到位信号;
_RESET:指报警复位按钮信号;
_TIME0:指设定规定时间的设定值;
VAR_OUTPUT(输出变量):
_ALARM:指气缸异常的报警输出;
VAR(中间变量):
_TON1:定时时间继电器;
_TQ:定时器输出;
如图2中所示的逻辑程序部分:气缸的初始状态为收回状态,伸出到位检测信号为0,当PLC输出给气缸的伸出信号置1后,气缸动作即变为伸出状态,此时正常情况下在规定时间(例如_TIME0=3秒时),气缸的伸出到位检测信号_SIGNAL变为1,此时报警输出状态不变,为FALSE,不会报警;但是如果规定时间已到,即_TQ有输出,并且气缸的伸出到位信号未变为1,仍为0,则_ALARM信号为TRUE,报警有输出,显示气缸未到位报警。此时如果修复气缸开关,使得气缸的伸出到位信号_SIGNAL变为1,则按下复位按钮,即_RESET=TRUE,_AlARM信号变为FALSE,报警消除。
如果控制信号_CONTROL为0的话,报警信号_ALARM即变为FALSE。
图3.逻辑控制程序
整体的效果如图4所示。
图4.整体外观图
此类报警应用不仅限于气缸,又如你电机、电缸等执行器均适用。
第二个功能块Alarm2,此报警功能块实现的是执行器的两端传感器在规定时间内同时有信号或同时无信号时,则给出执行器检测开关报警,此类报警的应用情况也很多,同样我们拿一个气缸来举例:
变量表如图5所示:
VAR_INPUT(输入变量):
_SIGNAL1:传感器信号1;
_SIGNAL2:传感器信号2;
_RESET:复位信号;
VAR_OUTPUT(输出变量):
_ALARM:指气缸异常的报警输出;
VAR(中间变量):
_IN0:定时器的使能端;
_TON2:定时时间继电器;
图5.变量表
如图6所示的逻辑控制程序,如果一个气缸的两端信号同时为1,即_SIGNAL1和_SIGNAL2同时都有信号,或者两者同时都没有信号,即_SIGNAL1和_SIGNAL2同时为0,则定时器的使能端信号_IN0变为TRUE,定时器_TON2开始计时,此例设定定时器的值为1秒,当计时器的时间到后,_ALARM信号置为TRUE,使能端信号_IN0变为0,当修复气缸两端的检测信号到正常状态时,按动复位按钮后,报警信号会复位,_ALARM信号复位为0,报警消除。
图6.逻辑控制程序
如图7所示完整视图,此报警也不仅局限于气缸的操作,同样适用于电机等其它执行器的报警显示。
图7.整体外观图
实际FC块中调用FB块的实例如图8所示,在FC编辑块中将ALARM引入,对其输入引脚和输出引脚分别对应赋值,实现对相应执行器的报警显示。
图8.FC块中的ALARM块实现
诸如此类的总结在日常工作中还有很很多,只要平时下一点点的功夫,善于总结,勇于与大家交流,将编程的便捷与开扩的思路与众人分享,我们的技术进步指日可待!