发布于 2012-06-25 21:50:37
9楼
首先你得明白什么叫上升沿?
1、所谓上升沿是指:某一个变量在上一个扫描周期为0,当前扫描周期为1。 那么即判断该变量在当前扫描周期时为上升沿变化……
2、既然涉及到当前和上一周期,那么就必须要有一个变量来存储上一周期的状态。所以你看到的上升沿指令都是上面一个是变量,下面一个即是用来存储该位的上一周期状态的……
3、再扫一下盲,你看到的S7-200或者日系PLC上升沿好像不是S7-300,S7-1200这样需要一个存储位的。但是那是因为系统专门给它划分了一块区域用来存储上升沿指令的上一周期状态的(至于是在那里,我们不知道,也不需要知道)。 由此引出一个问题就是,象这样的PLC上升沿指令是有限制的!比如印象中S7-200是256个? 因为它的系统存储区域划给上升沿用的大小是固定的! 而理论上S7-300和S7-1200可以有“无数”个上升沿指令,只要它的内存够用的话。
4、针对你说的一键启停,记得原来在300版区有个一个专门的帖子,如果不考虑按钮抖动的话,用STL做的最简单指令是
A I0.0
FP M0.0
X Q0.0
= Q0.0
5、如果用S7-1200,我都是用SCL写,你可以参考:
FP_X00 := X00 AND NOT M00; //上升沿=当前周期为1,且上一周期为0
M00 := X00; //将当前周期状态保存,为下一周期使用
Y00 := Y00 XOR FP_X00; //取异或,得出单键启停功能
你自己可以翻译成LAD语句。
6、最后,你说的FB行而FC不行。 你自己仔细看看上升沿的意义所在?另外FB和FC区别是什么?想明白了,或许你会有一些提高。
I can do it