2.5 SIMATIC S7-300系列PLC的内部资源
2.5.1 寻址方式
1. 立即寻址
立即寻址是对常数或常量的寻址方式,其特点是操作数直接表示在指令中,或以唯一的形式隐含在指令中。
L66 //表示把常数66装入累加器1中 AWW#16#168 //将十六进制数168与累加器1的低字进行逻辑“与”运算 SET //默认操作数为RLO,该指令实现对RLO置“1”操作
2. 存储器直接寻址
存储器直接寻址,简称直接寻址。该寻址方式在指令中直接给出操作数的存储单元地址。存储单元地址可采用符号地址(如SB1、KM等)或绝对地址(如I0.0、Q4.1等)。
A I0.0 //对输入位I0.0进行逻辑“与”运算 = Q4.1 //将逻辑运算结果送给输出继电器Q4.1 L MW2 //将存储字MW2的内容装入累加器1 T DBW4 //将累加器1低字中的内容传送给数据字DBW4
3. 存储器间接寻址
指令中操作数的地址以存储器的内容来指定。该存储器一般称为地址指针,在指令中需写在方括号“[]”内。地址指针分为单字格式和双字格式两种。
例1:存储器间接寻址的单字格式的指针寻址。地址范围是整数(如T0、C0、DB0、FB0、FC0中的“0”)用单字指针。
位0~15(范围0~65535):用于定时器(T)、计数器(C)、数据块(DB)、功能块(FB与 FC)的编号
L 2 / /将数字2#0000 0000 0010 装入累加器1 T MW50 / /将累加器1 低字中的内容 MW50 作为指针值 OPN DB35 / /打开共享数据块 DB35 L DBW[MW50] / /将共享数据块 DBW2 的内容装入累加器1
例2:存储器间接寻址的双字格式的指针寻址。对于地址是带位号的(如I0.0、Q0.0、M0.0中的“0.0”)用双字指针。
说明:位0~2(xxx)为被寻址地址中位的编号(0~7)位3~8 为被寻址地址的字节的编号(0~65535)
L P#8.7 / /把指针值装载到累加器1 / /P#8.7 的指针值为:2#0000 0000 0000 0000 0000 0000 0100 0111 T [MD2] / /把指针值传送到 MD2 A I[MD2] / /查询 I8.7 的信号状态 = Q[MD2] / /给输出位 Q8.7 赋值
4. 寄存器间接寻址
在S7 -300中有两个地址寄存器AR1和AR2。寄存器间接寻址的寻址方式在指令中通过地址寄存器和偏移量间接获取操作数,其中的地址寄存器及偏移量必须写在方括号“[]”内。
地址寄存器的地址指针有两种格式,其长度均为双字,指针格式如图2.36所示。
图2.36 地址寄存器指针格式
说明:位0~2(xxx)为被寻址地址中位的编号(0~7)位3~8为被寻址地址的字节的编号(0~65535)位24~26(rrr)为被寻址地址的区域标识号位31的x=0 为区域内的间接寻址,x=1为区域间的间接寻址
2.5.2 存储器
1. 装载存储器
装载存储器的用途是装载用户程序。用户程序经由通信接口,从编程设备传送给S7 -300 CPU的装载存储器中。有的CPU集成了RAM类型的装载存储器,另外用Flash EPROM类型的微型存储卡(MMC)扩展。断电时自动把集成的RAM类型的装载存储器内容永久保存到微型存储卡(MMC)中。有的CPU没有集成装载存储器,用SIMATIC微型存储卡(MMC)作为装载存储器。
2. 工作存储器
用于运行用户程序。当CPU处于运行状态时,用户程序和数据从装载存储区调入工作存储区,在工作存储器中运行。工作存储器集成在CPU中,不能被扩展。工作存储区还包括局域数据堆栈区,用于存放调用程序块(FB、FC)时产生的临时数据。
3. 系统存储器
用于位存储、I/O映像寄存器、计数器、定时器等。系统存储器与工作存储器同属于CPU集成的物理内存,用户程序代码和数据均在这两部分存储区中执行。
4. 微存储器卡(MMC)
用于对装载存储器进行扩充,CPU模块上有专用的MMC插槽,MMC可拆卸,最大容量的MMC为8MB。作为装载存储器,MMC用于用户程序和数据的断电保护,也可存储S7 -300系统程序从而有利于以后的系统升级。
2.5.3 CPU中的寄存器
1. 累加器(ACCUx)
累加器用于处理字节、字或双字的寄存器。S7-300有两个32位累加器(ACCU1和AC-CU2)。处理8位或16位的数据时数据放在累加器的低端(右对齐)。
2. 状态字寄存器(16位)
图2.37所示为状态字的结构。
图2.37 状态字的结构
(1)首次检查位(FC):如果FC位的信号状态为“0”,则表示扫描到一条梯形图网络的开始。扫描到一条梯形图网络的中间时该位为1,扫描到一条是以输出指令(置位线圈、复位线圈、输出线圈)等梯形图网络的结束指令时,该位清0。
(2)状态位(STA):执行位逻辑指令时,用于保存对应位的状态。
(3)逻辑运算结果位(RLO):用来存储执行位逻辑指令或比较指令的结果。结果为1表示能流通过。
(4)或位(OR):在先逻辑与、后逻辑或的运算中,OR位暂时保存前面的逻辑与的运算结果,以便进行后面的逻辑或运算。执行其他指令时OR位被复位。
(5)溢出位(OV):该位为1表示算术指令执行结果超出了允许的正、负范围。
(6)溢出状态保持位(OS):一旦算数运算指令执行后有溢出,OV位置1时,OS位也同时被置1,即使执行后面的算数运算指令无溢出,OV被清0时,OS仍保持上一次溢出的状态1,用于表明前面的指令执行过程中是否出现过溢出。如果执行了JOS(OS=1时跳转)的指令(即对溢出错误进行了相应的处理),则OS位被复位。
(7)条件码1(CC1)和条件码0(CC0):综合起来用于表示算术运算结果、比较指令的执行结果或移位指令的移出位状态,见表2.7和表2.8。
表2.7 执行算术运算后的CC1和CC0
表2.8 执行比较、移位和循环移位、逻辑指令后的CC1和CC0
(8)二进制结果位(BR):在梯形图的方块指令中,BR位与ENO位有对应关系,用于表明方块指令是否被正确执行。
如图2.38所示,如果加法指令结果溢出,BR位为0,ENO位也为0;如果加法指令被正确执行,BR位为1,ENO位也为1。
图2.38 二进制结果位示例