1.累加器(ACCUx)
32位累加器是用于处理字节、字双字的寄存器是执行语句表指令的关键部件。S7-300有两个累加器(ACCU1和ACCU2),S7-400有4个累加器(ACCU1~ACCU4)。几乎所有的语句表的操作都是在累加器中进行的。因此需要用转载指令把操作数送入累加器,在累加器中进行运算和数据处理后,用传送指令把ACCU1中的运算结果传送到某个存储单元。
2.地址寄存器
两个32位的地址寄存器AR1和AR2作为指针用于寄存器间接寻址。
3.数据块寄存器
32位的数据块寄存器DB和DI的高16位分别用来保存打开的共享数据块和背景数据块的编号,低16位用于保存打开数据块的字节长度。
4.状态字
状态字是一个16位的寄存器,只使用了其中的9位,状态字用于存储CPU执行后的状态或结果和出错信息。状态字的结构如图4-12所示。掌握状态字十分关键,否则是无法阅读语句表程序的,更谈不上编写语句表程序。
图4-12 状态字的结构
(1)首次检测位/FC
状态字的第0位是首次检测位,该位的状态0表示一个梯形逻辑程序的开始,或指令为逻辑串的第一条指令。在逻辑串指令执行过程中该位位1,输出指令或与RLO有关的跳转指令将该位清零,表示一个逻辑串的结束。
(2)逻辑运算结果RLO
状态字的第1位RLO是逻辑运算结果。该位用于存储执行位逻辑指令或者比较指令的结果。当RLO的状态位1时,表示有能流到梯形图的运算点处,为0则表示没有能流到该点。如图4-13所示的梯形图,可以看到A点有能流(实线),而B点没有能流(虚线)。
(3)状态位STA
状态字的第2位STA是状态位。执行为逻辑指令时,STA与指令位变量的值一致。可以通过逻辑状态位了解位逻辑指令的状态位。
(4)或位
状态字的第3位OR是或位。在先逻辑“与”后逻辑“或”的逻辑运算中,OR位暂存逻辑“与”(串联)的运算结果,以便进行后面的逻辑“或”运算(并联)。输出指令将OR位复位,编程时不直接使用OR位。
在图4-13中梯形图,对应的逻辑代数表达式为:I0.0·I0.1+I0.2·I0.3=Q0.0,表达式中的“•”表示逻辑“与”,“+”表示逻辑“或”,I0.3上面的水平线表示“非”运算,等号“=”表示将逻辑运算的结果赋值给Q0.0。图4-13和图4-14的运算状态完全相同,只不过图4-13是梯形图,而图4-14左侧是指令表。指令表中的A和AN分别表示串联的常开触点和串联的常闭触点,O表示两个串联电路的并联,等号表示赋值。图4-14右边方框中是程序运行时的程序状态结果,其中STATUSWORD是状态字。
图4-13 梯形图
图4-14 语句表程序状态监控
可以看出,当执行最后一条指令后,状态字变成“1_0000_0110”,状态字的第0位为“0”,也就是/FC为0,当执行其他指令操作时,/FC为1,。即在执行完“与”运算和开始下一条“与”运算时,/FC为0。
从梯形图,可以看出STA表示的是各条指令中布尔变量的值,例如第5条指令的STA位为0,表示I0.3为0状态。(www.xing528.com)
还可以看出RLO是逻辑运算的结果,例如执行完第二条指令后,RLO为0,原因在于I0.1是常开触点,而且没有闭合而造成,如果把I0.1闭合则RLO随之改变成1。从梯形图4-13中还可看出,B点的运算结果保存在OR位中。
(5)溢出位OV
状态字的第5位OV是溢出位。如果算数运算或逻辑运算指令执行出错(例如溢出,除数为零等),溢出位被置1。如果后面影响该位的指令的执行没有出错,该位清零。
(6)溢出状态保持位OS
状态字的第4位OS是溢出存储位。OV位被置1时,OS位也被置1。OV位被后面的指令清零后,OS位仍然保持不变,所以它保存了OV位,用于保存前面的指令是否发生过错误。只有JOS指令(OS为1时跳转)、块调用指令和块结束指令才能复位OS位。
如图4-15所示,L指令将1100分别装载到累加器1和累加器2中,“∗I”是整数乘法指令,运算结果为1210000超过了16位整数乘法的范围32767,因此产生溢出,状态字的第4和5位为1。在实际工程编程中OS位较少应用。
(7)条件码2(CC1)和条件码1(CC0)
状态字的7位和第1位称为条件码1(CC1)和条件码0(CC0)。这两位综合起来使用,表示累加器1中执行的数学运算或字逻辑运算结果与0的大小关系,比较指令的执行结果见表4-7和表4-8。移位和循环移位指令移出的位用CC1保存。用户程序一般不直接使用条件码。
图4-15 语句表程序状态监控
表4-7 算术运算后的CC1和CC0
表4-8 指令执行后的CC1和CC0
执行完图4-15所示的乘法指令“∗I”后,CC1和CC0分别位1和0,表示乘法运算上溢出。
(8)二进制结果位BR
状态字的7位为二进制结果位BR。在梯形图中,用方框图表示某些指令、功能(FC)和功能块(FB)。如图4-16所示,I0.0常开触点接通时,能流流到整数除法指令DIV_I的数字量输入端EN,该指令执行,能流用绿色实线表示。
如果指令执行出错(例如除数为0),能流就在出现错误的除法指令终止,如图4-17所示,其ENO端没有能流流出。ENO可以作为下一个方框的EN输入,也就是几个方框可以串联,只有前一个方框正确执行,与它连接的后面的程序才能被执行。EN和ENO的操作数均为能流,数据类型为布尔型(BOOL)。
图4-16 BR位为1
图4-17 BR位为0
用语句表编写的FB(功能块)和FC(功能)程序中,必须对BR进行管理,当FB和FC执行无错误时,使RLO为1,并存入BR,反之将0存入BR中。可以用SAVE指令将RLO存入BR。下面的程序是图4-16对应的指令表。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。