当前位置: 主页 > PLC控制

CLR指令问题求解

CLR
AI0.1
=Q0.1
上面指令我把I0.1用仿真软件赋值为1时,为什么输出是Q0.1输出是零。
我的分析过程是这样的:
CLR指令讲RLO状态字置0,
A指令使RLO和I0.1作与运算,结果为RLO=0(我置I0,1为1)。
RLO赋值给Q0.1
那么Q0.1结果为0,可是仿真的结果为1?
我不知道问题出在哪里?求解。。。。
图片是仿真时的状态字。

问题补充:
问题起始与这个问题。
htTP://www.ad.siemens.com.cn/service/answer/wap/LoggedIn/ReadingPage/Solved.ASpx?QueSTionId=79073
转载:
RT,想咨询下老师BR位在FC中有什么作用呢?谢谢。
看了下别人写的程序
程序开头
SET
SAVE
=L0.1
程序本体。。。
程序结尾
CLR
AL0.1
SAVE
就是没闹懂程序的开头和结尾有什么作用(BR位和L0.1做什么用了,L0.1程序本体中没有用到)。希望老师能指导下,严重感谢。
"
然后回答中有这个问题的解释:

程序结尾
*****CLR//强行将RLO复位为"0"
***AL0.1//与L0.1进行与操作,RLO结果仍为"0"
*******SAVE//将BR位复位清0
也就是说有了这程序开头和结尾,该程序中LAD调用任何用户函数FC或fb时,保证能流导通。

于是我仿真时发现,结果并不像作者所说的那样(带******部分)。于是到底这个问题是如何解释的。

图片说明:

CLR指令问题求解CLR指令问题求解

最佳答案

楼主所提问题非常好,这个涉及到一个STL程序中一个新的逻辑串该从何处开始的问题。换言之,一个STL程序段并非是一个逻辑串,随之不同STL指令的应用会开始一个新的逻辑串。因此应用STL编程是要注意每个指令执行时的各种状态、结果的信息,这些集中在CPU的状态字中。
1、首先要注意当执行CLR指令与A指令时CPU的状态字中的/FC位的状态是不一样的。
执行CLR指令:/FC位的状态为0;执行A指令:/FC位的状态为1。
2、再者重点是清楚首次检查位/FC的功能:
首次检查位/FC:状态字的0位称作首次检查位,如果/FC位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。FC前面的斜杠表示对FC取反。
3、按上述所述,楼主自己可以解释下述程序中为什么Q0.1为1了:
CLR
AI0.1//上述指令的FC位的信号状态为“0”,意味本条指令将开始一个新的逻辑串,当前的RLO与CLR指令的RLO无关。
=Q0.1//如果I0.1为1,Q0.1则为1,;如果I0.1为0,Q0.1则为0。
4、楼主自己也可以解释下述程序中为什么Q0.1为0了:
CLR
=Q0.1//上述指令的FC位的信号状态为“0”,意味本条指令将开始一个新的逻辑串,当前的RLO与CLR指令的RLO无关。但当前的RLO为0,则Q0.1为0。
5、有关CPU状态字,见:
http://wenku.baidu.com/link?url=x5pLo1lDn2V7sqQxujjIxxlVpawbXuLPvajPuJ4QVOh1EFz3uPhUBfuvF2BoK86VJMaAXJUCAC0CYfcMbB_CEnPepvSYP73N1z_F-q4EEam

提问者对于答案的评价:
就你了

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号