恭喜,你发布的帖子
发布于 2024-04-16 21:10:16
14楼
这个上升沿这样写,出自哪个文档介绍。想详细了解,这个SCL编程。还有下降沿的写法。能否指导一下。我一般上升沿都是自己编写的FC块来实现上升沿和下降沿。这样可以省去DB块,西门子自带沿指令需要DB块存储。
每个(上升/下降)沿的检测,都得需要各自独立的存储器。
因为,必须保存上一周期的状态。这是无法省略的。
SCL编程,根本用不到什么IF THEN 条件判断;因为它本身就是布尔运算。
写法就是:
edgeSta := sinInput AND NOT edgeStaLast ;
edgeStaLast := edgeSta ; // 当sinInput 出现上升沿时,edgeSta 本周期为真=1;
edgeSta 即可在本周期,运算之后直接使用。
此外,当需要检测的信号组成字节、字或双字时,同样的上述语句,一次就可完成8个或16个、32个信号的上升沿检测。
edgeStaWord := sinInWord AND ( edgeStaLastWord XOR trueWord ) ; // trueWord =全为1的常数
edgeStaLastWord := edgeStaWord ; //<- 有指令分解成位数组
(字符串逻辑运算有NOT就用NOT;没有就用 XOR,一样的。)
请填写推广理由:
分享
只看
楼主