标题:
PLC里SCR和C语言switch程序分支的区别
[打印本页]
作者:
xiaojuan
时间:
2014-9-16 23:45
标题:
PLC里SCR和C语言switch程序分支的区别
2014-03-22,又是一个不眠的夜晚,被这个PLC的SCR段差点折磨半死。习惯了C++语言的编程,就是这个下场。不过还是找到了其中的奥秘。我来举个例子:下面这段程序:按照C语言的理解,意思应该是当S0.0接通,S0.1断开的时候,Q0.0应该走第一个程序段(Q0.0=1),可是PLC不是这么理解的,即使S0.1=OFF,程序依次扫描,当程序扫描到S0.1的时候,母线为OFF,那么,Q0.0这个时候又变成了0,这不是我们期待的结果。PLC没有break这个语句,SCR语句只是告诉了系统,当前的母线已由S替代,直到发现SCRE才恢复正常的母线,即使S是OFF状态,程序依旧扫描。如果要实现这个功能,还需要配合JMP指令和LBL指令来跳转,或者使用RS指令,如图2.,当程序扫描到S0.0时,Q0.0的S指令有效,这时Q0.0就为1,当程序扫描到S0.1时,Q0.0的R指令无效,那么Q0.0依旧保持原样,即ON状态,如图3的C++例程,这就符合了我们的要求。当然,编程的方法有很多,SCR可以同时执行多个程序段,switch不行,各有千秋。习惯了就好,可能我还没有完全适应PLC,需要一个过程,适应它了就有它的优势。PLC程序比较听话,程序依次执行,直到发现SCRE为止才跳出程序,哪怕执行了SCRT,它依旧活着,直到下次扫描才关闭。
图1:
图2:
图3:
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1