很多人可能都有下面的疑问:
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
1)状态字中的首次检测位到底有什么作用?它与编程有关吗? WWW_P※LCJS_CO※M-PLC-技-.术_网
2)程序段的第一条逻辑运算指令实际上作了什么操作?WWW_P※LCJS_COM-PLC-)技.术_网
S7-300/400的状态字(Status word)的最低位为首次检测位FC,该位的为0状态表示一个梯形图逻辑程序段的开始,或指令为逻辑串(即串并联电路块)的第一条指令。在逻辑串指令执行过程中该位为1,输出指令(=、R、S)或与RLO(逻辑运算结果)有关的跳转指令将该位清零,表示一个逻辑串的结束。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
请看下面的程序段,它将两条串联电路(逻辑串)并联后,控制Q4.2的线圈,逻辑表达式为I0.4*I0.7 I0.6*/I0.5=Q4.2(/I0.5对应于I0.5的常闭触点)。执行第一条指令“A I0.4”时首次检测位为0,表示程序段开始。执行指令“A I0.6”时首次检测位为0,表示第二条串联电路开始。执行“=”指令之后,首次检测位被清零。 WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
查阅手册,对A指令的描述如下:检查寻址位的状态是否为1,并将测试结果与RLO进行“与”运算。
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
执行第一条A指令时,它到底做了什么操作?
plcjs.技.术_网
1)显然它不会将I0.4的二进制值与前一个程序段执行完后的RLO进行“与”运算,本程序段与前一程序段之间“井水不犯河水”。
WWW_PLCJS_COM-PLC-技.术_网
2)“与”运算需要两个变量参与,第一条A指令执行完后只有一个位变量I0.4的值,不可能作“与”运算,就像只有一个人不能结婚一样。
WWW_PLCJS_COM-PLC-技.术_网
将上面的第一条A指令改为“O I0.4”或“X I0.4”指令(“或”运算或“异或”运算指令),前两条指令的“与”运算执行的结果相同。这说明前两条指令实际执行的是什么逻辑运算取决于第二条指令,而与第一条指令(A、O或X)无关。
W1WW_P4LCJS_COM-PLC-技.术_网
实际上,程序段的第一条指令或逻辑串的第一条指令并不执行什么逻辑运算,第一条A、O、X指令只是将指令中的位变量的值传送到RLO,第一条AN、ON、XN指令将指令中的位变量的值作“非”运算后传送到RLO。
WW.W_PLCJS_COM-PLC-技.术_网
操作系统在执行程序的时候,判断首次检测位的值,其值为0时,就知道该指令是程序段的第一条指令或逻辑串的第一条指令,然后完成上述的操作。首次检测位与用户程序没有直接的关系。
WWW_PLCJS_COM-PLC-技.术_网
别的PLC(包括S7-200)几乎都用LD和LDN(或LD NOT、LDI)指令来表示一个程序段或逻辑串的开始。S7-300/400因为没有类似的指令,所以用首次检测位来检测一个程序段或逻辑串的开始。
WWW.PLCJS.COM——可编程控制器技术门户