在学习廖常初编写的《S7-300/400PLC应用技术》书中,有两个这样的程序:
程序一:
把一个梯形图程序转换成语句表。
这个程序的目的是:如果I2.6为1,MW2中的16位整数被装入累加器1的低字,转换为32位双整数后送到MD6。如果转换成功被执行,Q4.4为1状态。
A I2.6
JNB _001 //如果I2.6=1,则跳转到标号_001处
L MW2 //MW2的值装入累加器1的低字
ITD //累加器1低字中的整数转换为双整数
T MD6 //累加器1的内容传送到MD6
SET //将RLO置1
SAVE //将RLO位保存到BR位
CLR //将RLO置0
_001: A BR
= Q4.4
程序二:
也是一个把梯形图程序转换成语句表。
这个程序的目的是:如果I0.6为1,MD2中的双整数除以MD6中的双整数,运算结果送到MD10,如果转换成功被执行,Q4.1为0状态。
A(
A I0.6
JNB _002
L MD2
L MD6
/D
T MD10
AN OV
SAVE
CLR
_002: A BR
)
NOT
S Q4.1
我的问题:
1:这两个程序中一个用了SET指令,一个没有,这是为什么?
2:如果一个程序,首条语句为:A I2.6。假如I2.6=1,那么此时RBO为1,对吗?
3:接第二个问题,如果RLO=1,那么在程序一中还有必要用SET指令吗?
4:JNB的跳转条件是“RLO=0且BR=1”。在上面的两个程序中,都用到了JNB指令,而且JNB指令前,都是相同性质的语句---A I2.6.我的想问一下,如果I2.6=0,这个时候,RLO=0,而且BR=1,这是怎么得到呢?