点击慧通工控关注我,设为星标不错过每一篇深度好文
一、痛点直击:S7-200 SMART G2 PLC FB 块的定时器使用限制
做西门子S7-200 SMART系列 PLC 编程的工程师都清楚,虽然从V3.0开始支持 FB 功能块的编程,支持结构化编程与重复调用,但官方限制了核心指令的使用 ——上升沿、下降沿、定时器、计数器等指令无法直接在 FB块内调用。这给需要定时逻辑的场景(如设备状态检测、延时控制)带来极大不便,比如电机运行时的反馈信号超时检测,传统定时器指令无法直接实现。
别急!我们可以通过封装自定义定时器 FB 块的方式突破限制,利用 PLC 的中断功能作为时基,实现与标准定时器基本一致的功能,且支持无限次重复调用。本文就以「电机反馈信号定时检测」为例,手把手教你编写可复用的定时器 FB,并演示完整应用流程。
二、核心思路:自定义定时器 FB 的实现原理
1、标准定时器依赖 PLC 内部时基,而自定义定时器的核心是用中断产生脉冲计时:
通过以上程序我使得到了两个脉冲的上升沿,一个是系统的秒脉冲,另一个是周期为200ms的脉冲。我们的定时器将以200ms做为时基。大家也可以根据自己的实际需要定义基准,我之所以定义100ms的中断时长,是为了将来可能的流量累计算法中断做为共享使用,且本例程中的定时器应用场景不需要那么高的分辨率。
2、自定义的T_ON定时器编写:定义输入输出变量和程序代码
3、封装为 电机控制FB 块后,通过实例化实现多场景复用,避免地址冲突。完美实现了电机反馈信号的定时检测功能。 关键优势:无需依赖系统定时器资源,每个 FB 实例独立计时,解决多次调用时的资源竞争问题。
三、场景落地:电机反馈信号定时检测例程
1. 应用需求:
电机启动后(I0.0 为 ON),根据功能设定需实时检测反馈信号 I0.1:
若 3 秒内 I0.1 未 ON(电机未正常启动),触发超时报警 Q0.0;
若 3 秒内 I0.1为ON(电机正常启动),定时器超过设定值自动停止计时;
报警后需通过复位按钮 I0.2 解除报警。
2. 主程序调用 FB 实例
在 OB1 主程序中实例化 M_CON,并分配UDT接口变量:
四、关键注意事项
1.计时精度调整:本例中断为100ms,因此定时周期为200MS为累加单位,可根据需求修改中断时长改为50MS或其他数值;
2.多实例调用:同一 FB 可多次实例化,如控制多台电机时,新建多个实例(如MotorTimer_Instance1、MotorTimer_Instance2)即可,无需重复编写逻辑;
3.数据监控:ET变量可关联 HMI,实时显示当前计时,方便调试;
五、运行效果展示
1、调用的定时器计时效果
2、内部定时器FB运行监视,超时就不再计时,减少系统不必要的负载。
3、电机控制实例运行
六、拓展应用:定时器 FB 的灵活适配,除了电机反馈检测,该 FB 还可用于:
设备运行超时保护(如泵运行 10 分钟未停机报警);
延时启动 / 停止控制(如皮带机启动后 5 秒启动给料机);
信号防抖处理(如按钮按下后 0.5 秒确认有效)。
可快速适配不同场景,真正实现「一次封装,终身复用」。
写在最后:我们将在后面的文章中继续分享关于上升沿、下降沿、计数器等指令的自定义编程与调用,请记得关注我们。
朋友们想了解和测试哪些ST32的项目呢,欢迎在评论区留言,我们也将尽力在后面的测评文章内给出测试结果与答复。
相关精选文章分享: