状态字寄存器(16位) 状态字是一个16位的寄存器,用于存储CPU执行指令的状态。状态字中的某些位用于决定某些指令是否执行和以什么样的方式执行,执行指令时可能改变状态字中的某些位,用位逻辑指令和字逻辑指令可以访问和检测它们。
①检测位 状态字的第0位称为检测位(FC),若该位的状态为0,则表明一个梯形逻辑网络的开始,或指令为逻辑串的条指令。CPU对逻辑串条指令的检测(称为检测)产生的结果直接保存在状态字的RLO位中,经过检测存放在RLO中的0或1称为检测结果。该位在逻辑串的开始时总是0,在逻辑串指令执行过程中该位为1,指出指令或与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将该位清0。
②逻辑运算结果(RLO) 状态字的第1位称为逻辑运算结果RLO(Result of LogicOperation)。该位用来存储执行位逻辑指令或比较指令的结果,RLO的状态为1,表示有能流流到梯形图中运算点处,为0则表示无能流流到该点。可以用RLO触发跳转指令。
③状态位(STA) 状态位的第2位称为状态位,执行位逻辑指令时,STA总是与该位的值一致。
④或位(OR) 状态字的第3位称为或位(OR),在先逻辑“与”后逻辑“或”的逻辑运算中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其他指令将OR位复位。
⑤溢出位(OV) 状态字的第4位称为溢出位,如果算术运算或浮点数比较指令执行时出现错误(例如溢出、非法操作和不规范的格式),溢出位被置1。如果后面的同类指令执行结果正常,该位被清0。
⑥溢出状态保持位(OS) 状态字的第5位称为溢出状态保持位,或称为存储溢出位。OV位被置1时OS位也被置1,OV位被清0时OS仍保持,它保存了OV位,用于指明前面的指令执行过程中是否发生过错误。只有JOS(OS=1时跳转)指令、块调用指令和块结束指令才能复位OS位。
⑦条件码1(CC1)和条件码0(CC0) 状态字的第7位和第6位称为条件码1和条件码0。这两位综合起来用于表示在累加器1中产生的算术运算或逻辑运算的结果与0的大小关系、比较指令的执行结果或称位指令的移出位状态
西门子交换机供应商
浔之漫智控技术(上海)有限公司(sqw-xzm-ssm)
本公司是西门子授权代理商自动化产品,全新,西门子PLC,西门子屏,西门子数控,西门子软启动,西门子以太网西门子电机,西门子变频器,西门子直流调速器,西门子电线电缆我公司**供应,德国进口
⑧二进制结果位(BR) 状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方框指令中,BR位与ENO有对应关系,用于表明方框指令是否被正确执行;如果执行出现了错误,BR位为0,ENO也为0;如果能被正确执行,BR位为1,ENO也为1。
在用户编写的FB和FC程序中,必须对BR位进行管理,能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令可将RLO存入BR中,从而达到管理BR位的目的。当FB或FC执行无错误时,使RLO为1,并存入BR;否则在BR中存入0。状态字的9~15位未使用。
(3)数据块寄存器 DB和DI寄存器分别用来保存打开的共享数据块和背景数据块的编号。
(4)诊断缓冲区 诊断缓冲区是系统状态列表的一部分,包括系统诊断事件和用户定义的诊断事件的信息。这些信息按它们出现的顺序排列,行中是新的事件。
诊断事件包括模块的故障、写处理的错误、CPU中的系统错误、CPU的运行模式切换错误、用户程序中的错误和用户用系统能SFC52定义的诊断错误。
2.2.7 寻址方式
操作数是指令操作或运算的对象,寻址方式是指令取得操作数的方式,操作数可以直接给出或间接给出。
(1)立即寻址 立即寻址的操作数直接在指令中,有些指令的操作数是惟一的,为简化起见不在指令中写出。表2-5是立即寻址的示例。
(2)直接寻址 直接寻址在指令中直接给出存储器或寄存器的区域、长度和位置,例如用MW200指定位存储区中的字,地址为200;MB100表示以字节方式存取,MW100表示存取MB100、VB101组成的字,MD100表示存取MB100~MB103组成的双字。
(3)存储器间接寻址 在存储器间接寻址指令中,给出一个作地址指针的存储器,该存储器的内容是操作数所在存储单元的地址。使用存储器间接寻址可以改变操作数的地址,在循环程序中经常使用存储器间接寻址。
地址指针可以是字或双字,定时器(T)、计数器(C)、数据块(DB)、能块(FB)和能(FC)编号范围小于65535,使用字指针就够了。
其他地址则要使用双字指针,如果要用双字格式的指针访问一个字、字节或双字存储器,必须保证指针的位编号为0,例如P#Q20.0。双字指针区域的格式如图2-10所示;位0~2为被寻址地址中位的编号(0~7),位3~18为被寻址的字节的编号(0~65535)。只有双字MD、LD、DBD和DID能作地址指针。
(4)寄存器间接寻址 S7中有两个地址寄存器AR1和AR2,通过它们可以对各存储区的存储器内容作寄存器间接寻址。地址寄存器的内容加上偏移量形成地址指针,后者指向数值所在的存储单元。
地址寄存器存储的双字地址指针见图2-11。其中第0~2位(xxx)为被寻址地址中位的编号(0~7),第3~18位(bbbbbbbb bbbbbbb)为被寻址地址的字节的编号(0~65535)。第24~26位(rrr)为被寻址地址的区域标识号,第31位x=0为区域内的间接寻址,第31位x=1为区域间的间接寻址。
种地址指针格式包括被寻址数值所在存储单元地址的字节编号和位编号,存储区的类型在指令中给出,例如LDBB[AR1,P#6.0],这种指针格式适用于在某一存储区内寻址,即区内寄存器间接寻址,第24~26位(rrr)应为0。
第二种地址指针格式的第24~26位还包含了说明数值所在存储区的存储区域标识符的编号rrr,用这几位可实现跨区寻址,这种指针格式用于区域间寄存器间接寻址。
2.3 位逻辑指令
位逻辑指令用于二进制数的逻辑运算,二进制数只有0和1这两个数,1相当于编程元件的线圈通电,0相当于线圈断电。位逻辑运算的结果(Resultof Logic Operation)简称为RLO。
.3.1 触点指令
(1)触点线圈 在语句表中,用A(AND,与)指令来表示串联的常开触点。用O(OR,或)指令来表示并联的常开触点。触点指令中变量的数据类型为BOOL(布尔)型。常开触点对应的地址位为1状态时,该触点闭合。
在语句表中,用AN(AND NOT,与非)来表示串联的常闭触点,用ON(ORNOT,或非)来表示并联的常闭触点,触点符号中间的“/”表示常闭,常闭触点对应的地址位为0状态时该触点闭合。
输出指令“=”将RLO写入地址位、输出指令与线圈相对应。驱动线圈的电路接通时,有“能流”流过线圈,RLO=1,对应的地址位为1状态,则RLO=0,对应的地址位为0状态。线圈应放在梯形图的右边。下面是图2-12对应的语句表,其中的L20.0是用来保存运算结果的局域变量,局域变量只能在程序所在的逻辑块中使用。将梯形图转换为语句表时,局域变量L20.0是自动分配的。
(2)取反触点 取反触点的中间有“NOT”,用来将它左边电路的逻辑运算结果RLO取反(见图2-13),该运算结果若为1则变为0,为0则变为1,该指令没有操作数。能流到达该触点时即停止流动;若能流未到达该触点,该触点给右侧供给能流。图2-13中左边的两个触点均闭合时,Q4.5的线圈断电。
(4)中线输出指令 中线输出是一种中间赋值元件,用该元件指定的地址来保存它左边电路的逻辑运算结果(RLO位,或能流的状态)。中间标有“#”号的中线输出线圈与其他触点串联,就像一个插入的触点一样,中线输出只能放在梯形图的中间,不能接在左侧的垂直“电源线上”,也不能放在电路右端结束的位置,
2.3.2 输出类指令
(1)赋值指令 赋值指令(=)将逻辑运算结果RLO写入指定的地址位,对应于梯形图中的线圈。
(2)置位与复位
①S(SET置位或置1)指令:将指定的地址位置位(变为1并保持)。
②R(Recst,复位或置0)指令:将指定的地址位复位(变为0并保持)。
如果图2-19中I0.1的常开触点接通,Q4.3变为1并保持该状态,I0.1的常开触点断开,它也仍然保持1状态。I0.3的常开触点闭合时,Q4.3变为0,并保持该状态,I0.3的常开触点断开,它也仍然保持0状态,如果被指定复位的是定时器(T)或计数器(C),将清除定时器和计数器的定时/计数当前值,并将它们的地址位复位。
(3)RS触发器 如果图2-20左边的R输入I0.4为1且S输入I0.6为0,RS复位置位触发器被复位,M0.0与Q4.1均为0状态。如果S输入法I0.6为1且R输入I0.4为0,用被置位M0.0与Q4.1均为1状态,如果两个输入信号的状态均为1,因为先执行复位指令,后执行置位指令,执行完后RS触发器被复位,M0.0与Q4.1均为1状态。
(4)SR触发器 如果图2-20右边的S输入I0.2为1且R输入I0.5为0,SR置位复位触发器被置位,M0.1与Q4.3均为1状态。如果R输入I0.5为1且S输入I0.2为0,则触发器被复位,M0.1与Q4.3均为0状态,如果两个输入均为1,因为先执行置位指令,后执行复位指令,执行完后SR触发器被复位,M0.1与Q4.3均为0状态。
建议一般不要用SAVE指令保存RLO,并在本逻辑块或下一个逻辑块中检查保存的BR位的值,因为在保存和检查操作之间,BR的值可能已被很多指令修改了。
在退出逻辑块之前可以使用SAVE指令,因为使能ENO(即BR位)被设置为RLO位的值,要以用于块的错误检查。
(4)SET与CLR指令 SET与CLR(Clear)指令将RLO(逻辑运算结果)置位或复位,紧接在它们后面的赋值语句中的地址将变为1状态或0状态。