上升沿、下降沿是 PLC 里最常用的技巧。本课用 C 写一个边沿检测,弄清楚「这一拍才变」和「一直是这个状态」的区别。
有些动作只在输入按下的一瞬间做一次,比如计数或者翻转。可输入信号会一直为高,怎么保证只触发一回?答案是边沿检测——盯着信号的上升沿和下降沿。
C 功能块怎么做?记住两块内存就够:HD0 放当前信号,HD1 存上一次的采样。每个扫描周期拿当前跟上一拍比,差出来了,那就是边沿。
上升沿的定义很朴素:本次信号为高、上次却为低。C 里就一句判断——当前为真、且上一拍为假。满足这一下,rise 就置一拍高电平。
下降沿正好相反:本次为低、上次为高。把条件翻个面——当前为假、上一拍为真,fall 就置一拍。一升一降,方向对调,逻辑却是一个模子。
边沿输出只亮一拍,下一拍就归零。妙在不用额外定时——一旦信号稳定,当前跟上一拍相等,脉冲自然消失。梯形图 PLS 也是这个脾气。
一个边沿功能块给三个输出:rise 升沿、fall 降沿、any 任一变。梯形图要画三条支路分别抓,C 里三个赋值一起写完。对照着看,C 是不是更省事?