发布于 2006-11-07 15:40:57
0楼
就是为了让你在用梯型图编程时,ENO是正确的。 比如你建立一个FC1,然后在OB1内用梯型图编程方式如下编程: 当I0.1为真是调用该FC1,且将ENO赋值给Q0.1 , 这个梯型图程序转换成STL就是:
A I 0.1
JNB _001
CALL FC 1
_001: A BR
= Q 0.1
JBN指令的意义是:当RLO=1时,不跳转,而且无论如何,都会将RLO的值赋给BR位。 那么,当I0.1为真时,RLO=1,BR=1, 这时OB1会调用FC1... ... 现在回过头来讨论一下FC1: 假设FC1内有很多操作涉及了BR位,比如在FC1内也使用了很多的JNB指令,那么到FC1的结束时刻,BR到底是0还是1?你是不知道的! 而为了延续前面的BR=1(OB1内的JNB指令将BR位=RLO=1了), 那么就需要在FC1的最后面来两句:
SET
SAVE
这意思就是,不管怎么样,FC1结束后BR都等于1了, 那么再返回到OB1时, 会执行
A BR
= Q0.1
如果你不在FC1内不管理BR位,那么你想想,上面两句是有可能不执行的!(因为BR位可能在FC1内被改变了!)。
I can do it