9
在PLC的应用中经常用到移位指令,在STEP 7中的移位指令,包括有符号整数和长整数的右移指令、无符号字型数据的左移和右移指令、无符号双字型数据的左移和右移指令、双字的循环左移和循环右移指令。
移位指令是将累加器1中的数据或者累加器1低字中的数据逐位左移或逐位右移。左移相当于累加器的内容乘以2“,右移相当于累加器的内容除以2n(n为*的移动位数或移位次数)。
累加器1中移位后空出的位填0或符号位。被移动的最后1位保存在状态字的CC1中,可使用条件跳转指令对CC1进行判断,CCO和OV被复位到0。
循环移位指令的特点是移出的空位填以从累加器中移出的位。移位和循环移位指令的操作数及功能说明如表3-35所示。
2.堆栈指令
S7-300的CPU有两个累加器,S7-400的CPU有4个累加器。CPU中的累加器组成了一个堆栈,堆栈用来存放需要快速存取的数据,堆栈中的数据按“**后出”的原则存取。堆栈指令是否执行与状态字无关,也不会影响状态字。
对于只有两个累加器的CPU来说,PUSH(入栈)指令将累加器1的内容复制到累加器2,累加器l的内容不变。POP(出栈)指令将累加器2的内容复制到累加器1,累加器2的内容不变。
对于有4个累加器的CPU来说,PUSH(入栈)指令使堆栈中各层原有的数据依次向下移动一层,栈底(累加器4)的值被推出丢失,如图3-52所示。栈**(累加器1)的值保持不变。即累加器3的内容复制到累加器4,累加器2的内容复制到累加器3,累加器1的内容复制到累加器2,累加器1的内容不变。
POP(出栈)指令使堆栈中各层原有的数据向上移动一层(如图3-53所示),原来*2层(累加器2)中的数据成为堆栈新的栈**值,原来栈**(累加器1)中的数据从栈内消失。即累加器2的内容复制到累加器1,累加器3的内容复制到累加器2,累加器4的内容复制到累加器3,累加器4的内容不变。
“进入累加器堆栈”指令ENT(Enter Accmulator Stack)将累加器3的内容复制到累加器4,累加器2的内容复制到累加器3。使用ENT指令可以在累加器3中保存中间结果。
“离开累加器堆栈”指令LEAVE (Leave Accumulator Stack)将累加器3的内容复制到累加器2,累加器4的内容复制到累加器3,累加器1、4保持不变。
例用下述程序实现浮点数运算(DBDO+DBD4)/(DBD8-DBD12
3.加、减8位整数指令
字节加指令LNC(Increment ACCUl - LL)和字节减指令DEC(Decrement ACCUl - LL)将累加器1的较低字节(ACCUl - LL)的内容加上或减去指令中的8位常数(0~255),运算结果仍在累加器的较低字节中。累加器1的其他3个字节不变。
这些指令并不适合于16位或32位算术运算,因为累加器1的较低字节和它的相邻字节之间没有进位产生,16位或32位加法运算可以分别使用INC和DEC指令。
4.地址寄存器指令
+ARl (Add to ARl)指令将地址寄存器AR1的内容加上作为地址偏移量的累加器1的低字的内容,或加上指令中的16位常数(-32768~+32767),结果存在AR1中。
+AR2 (Add to AR2)指令将地址寄存器AR2的内容加匕作为地址偏移量的累加器1的低字的内容,或加上指令中的16位常数,结果存在AR2中。
16位有符号整数首先被扩充为24位,其符号位不变,然后与AR1中的低24位有效数字相加。地址寄存器中的存储区域标识符(*24~26位)保持不变。
5.空操作指令
BLD<number>(程序显示指令,空指令)并不执行什么功能,也不会影响状态位。该指令只是用于编程设备的图形显示,在STEP 7中将梯形图或功能块图转换为语句表时,将会自动生成BLD指令。指令中的<number>是编程设备自动生成的。
NOP 0和NOP 1指令并不执行什么功能,也不会影响状态位,它们的指令代码中分别由16个0或16个1组成,其作用与BLD指令类似。
计数器模块的计数器均为0~32位或31位加减计数器,可以判断脉冲的方向,模块给编码器供电;有比较功能,达到比较值时,通过集成的数字量输出响应信号,或者通过背板总线向CPU发出中断请求;这些模块可以2倍频和4倍频进行计数,4倍频是指在两个相差90℃的A、B相信号的上升沿、下降沿都计数。通过集成的数字量输入直接接收启动、停止计数器等数字信号。
(1)单通道高速智能计数器模板FM350-1
FM350-1是智能化的单通道高速计数器模板,其功能有以下几点。
①1个通道可进行增计数或减计数,计数范围可根据需要从0~32位或+31位;
②可直接连接增量编码器,如24V编码器、RS-422编码器(5V),接收来自编码器的脉冲频率较高达500kHz;
⑧可进行1次或周期性计数;
④可进行单倍频、双倍频及四倍频的计数:
⑤可通过电平、脉冲(在数字输入端)或软件进行门控;
⑥可通过集成的数字输入端进行设定;
⑦可装入预定义的起始值;
⑧可判断脉冲的方向,并将实际值与两个可选的基准值进行比较;
⑨当达到基准值、过零或**出范围时,可通过集成的背板总线向CPU发出中断请求,也可选择由集成的数字输出端进行控制;
⑩具有1个组态软件包,可采用STEP 7的参数化格式赋值。
图2-37 FM350-1的连接
(2)8通道高速智能计数器模板FM350-2
FM350-2是智能化的8通道高速计数器模板,用于通用的计数和测量任务,其功能有以下几点。
①8个通道可进行增计数或减计数,计数范围为32位;
②可直接连接增量编码器,如24V启动器、24V编码器、24V方向传感器、RS-422编码器(5V)和NAMUR编码器,接收来自24V编码器的较高脉冲频率为10kHz;接收来自24V启动器、24V方向传感器和NAMUR编码器的较大计数频率为20kHz;
③可进行1次或周期性计数;
④可进行单倍频、双倍频及四倍频的计数;
⑤可通过电平、脉冲(在数字输入端)或软件进行门控;
⑥可通过集成的数字输入端进行设定;
⑦可装入预定义的起始值;
⑧可判断脉冲的方向,并将实际值与两个可选的基准值进行比较;
⑨当达到基准值、过零或**出范围时,可通过集成的背板总线向CPU模板发出中断请求,也可选择由集成的数字输出端进行控制;
⑩具有1个组态软件包,可采用STEP7的参数化格式赋值。
FM350-2有7种工作方式,如表2-15所示,FM350-2的连接如图2-38所示。
图2-38 FM350-2的连接
(3) CM35计数器模块
CM35是8通道智能计数器模块,可以执行通用的计数和测量任务,也可以用于较多4轴的简单定位控制。CM35有4种工作方式:加计数或减计数、8通道定时器、8通道周期测量和4轴简易定位。8个数字量输出点用于对模块的高速响应输出,也可以由用户程序*输出功能,计数频率每通道较高10kHz。
CP343-5用于实现S7-300到PROFIBUS-FMS现场总线的连接。它分担CPU的通信任务,并允许进一步的其他连接,为用户提供各种PROFIBUS总线系统服务,可以通过PROFIBUS-FMS对系统进行远程组态和远程编程。
CP343-1 TCP使用标准的TCP/IP通信协议,实现S7-300(只限服务器)、S7-400(服务器和客户机)到工业以太网的连接。它自身具有处理器,在工业以太网上独立处理数据通信并允许进一步的连接,完成与编程器、PC、人机界面装置、S5系列PLC、S7系列PLC的数据通信。
CP343-1用于实现S7-300到工业以太网总线的连接。它自身具有处理器,在工业以太网上独立处理数据通信并允许进一步的连接,完成与编程器、PC、人机界面装置、S5系列PLC、S7系列PLC的数据通信。
CP342-5用于实现S7-300到PROFIBUS-DP现场总线的连接。它分担CPU的通信任务,并允许增加其他连接,为用户提供各种PROFIBUS总线系统服务,可以通过PROFIB US-DP对系统进行远程组态和远程编程。
当CP342-5作为主站时,可完全自动处理数据传输,允许CP从站或ET200-DP从立占连接到S7-300。当CP342-5作为从站时,允许S7-300与其他PROFIBUS主站交换数据。