如果在子程序里也用上升沿和下降沿,但只调用该子程序一次,那么局部变量可以不可以实现上升沿和下降沿的指令?另外如果不可以,那么如果把带局部变量的值传递给全局变量,再进行逻辑判断呢?最好有大神解释下PLC内部代码是如何做上升沿和下降沿判断的
边沿检测是靠检测两个相邻扫描周期的状态来实现的。西门子PLC手册里强调“当子程序在同一个周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器指令。”原因是重复调用的 S7-200的子程序的边沿触发指令无法正确记录上一周期的状态。如果子程序只调用一次的话沿指令可以正常使用,其效果等同于写在主程序里。
子程序只调用一次的话局部变量自然也可以实现上升下降沿判断,但如果是TEMP类型变量需要注意先赋值后使用。
哈哈,谢谢大神耐心解答,但是我感觉PLC中的子程序的局部变量和C语言/单片机中的局部变量有些不同啊。那再问一个问题,就是如果在程序中对一个子程序在不同程序段多次调用,但是每次扫描周期只调用某一个子程序,那么是否可以实现对某个特定信号的边沿检测?
哈哈,谢谢大神耐心解答,但是我感觉PLC中的子程序的局部变量和C语言/单片机中的局部变量有些不同啊。那再问一个问题,就是如果在程序中对一个子程序在不同程序段多次调用,但是每次扫描周期只调用某一个子程序,那么是否可以实现对某个特定信号的边沿检测?
追答不同时调用应该是可以的。
200PLC这个沿指令最好还是写到子程序外面去。
...字面意思我也懂啊