跳到正文
Learn-SCL
SCL 示例库/SCL 指令手册/SCL 边沿指令

SCL 边沿指令

西门子 SCL 边沿检测:R_TRIG 上升沿、F_TRIG 下降沿、手动上周期比较,含完整 FB 示例和常见坑。

SCL 没有 LAD 的 P/N 触点;边沿要用 R_TRIG/F_TRIG 实例,或者自己保存上一周期值。

边沿结果是单周期脉冲:Q 只在一个扫描周期为 1,不能直接当持续使能。

示例统一用 #Trig(CLK := #Signal) 调用,再读 #Trig.Q。

SCL 边沿指令 2

怎么选

需求 写法
上升沿 R_TRIG
下降沿 F_TRIG
不想用实例 保存上一周期值,手动比较

R_TRIG / F_TRIG

SCL
1VAR
2   Trig : R_TRIG;
3END_VAR
4 
5#Trig(CLK := #Signal);
6#Rising := #Trig.Q;

下降沿把 R_TRIG 换成 F_TRIG。每个信号用独立实例,不要共用一个。

手动边沿

SCL
1#Rising  := #Signal AND NOT #Prev;
2#Falling := NOT #Signal AND #Prev;
3#Prev    := #Signal;

必须先比较、再更新 #Prev;顺序反了就永远检测不到边沿。

常见问题

R_TRIG 的 Q 为什么只亮一个周期?

边沿是单周期事件;要持续动作,用 Q 去置位/自锁或进状态机。

多个信号能共用一个 R_TRIG 实例吗?

不能。实例只保存一个上一周期值,共用会互相覆盖。

手动边沿的 Prev 放哪里?

放 FB 的 Static(VAR)并保持;放 VAR_TEMP 每次重建,边沿会失效。

← 返回 SCL 指令手册