西门子PLC是如何做上升沿逻辑判断的?

如果在子程序里也用上升沿和下降沿,但只调用该子程序一次,那么局部变量可以不可以实现上升沿和下降沿的指令?另外如果不可以,那么如果把带局部变量的值传递给全局变量,再进行逻辑判断呢?最好有大神解释下PLC内部代码是如何做上升沿和下降沿判断的

边沿检测是靠检测两个相邻扫描周期的状态来实现的。西门子PLC手册里强调“当子程序在一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。”原因是重复调用的 S7-200的子程序的边沿触发指令无法正确记录上一周期的状态。如果子程序只调用一次的话沿指令可以正常使用,其效果等同于写在主程序里。

子程序只调用一次的话局部变量自然也可以实现上升下降沿判断,但如果是TEMP类型变量需要注意先赋值后使用。

追问

哈哈,谢谢大神耐心解答,但是我感觉PLC中的子程序的局部变量和C语言/单片机中的局部变量有些不同啊。那再问一个问题,就是如果在程序中对一个子程序在不同程序段多次调用,但是每次扫描周期只调用某一个子程序,那么是否可以实现对某个特定信号的边沿检测?

哈哈,谢谢大神耐心解答,但是我感觉PLC中的子程序的局部变量和C语言/单片机中的局部变量有些不同啊。那再问一个问题,就是如果在程序中对一个子程序在不同程序段多次调用,但是每次扫描周期只调用某一个子程序,那么是否可以实现对某个特定信号的边沿检测?

追答

不同时调用应该是可以的。
200PLC这个沿指令最好还是写到子程序外面去。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-25
永远记住 plc 是怎么运作的。你会明白你哪里做错了。你知道自己在说什么。你想在8秒内重置 q0.0。可以用最简单的方法,放弃位置复位,用起停。牛 b 的程序并不是说能实现功能去,让大多数人理解并能实现功能的程序,是牛 b 的程序。白居易是个很厉害的诗人。
第2个回答  2020-10-25
上升沿是信号由低到高的状态,而且只取一次信号,下降沿相反。追问

...字面意思我也懂啊

相似回答