当前位置:文档之家› 合肥工业大学电气控制与plc王建平

合肥工业大学电气控制与plc王建平

第7章介绍的基本逻辑控制指令主要用于取代传统的继电器控制系统,实现逻辑控制和计时器/计数器的功能。

作为工业控制计算机之一的PLC除了具有逻辑控制功能外,还具有数据运算、传送、变换、程序控制、通信及一些特殊功能。

MicroLogix/SLC5系列PLC的功能指令分为:运算指令、数据处理指令、移位/顺序控制指令、程序控制指令、PID控制指令、通信控制指令、ASCLl码指令等。

本章主要介绍运算指令、数据处理指令、程序控制指令,并结合控制应用给出一些编程实例。

8.1.1数据比较指令数据比较指令属于输入指令,用于比较两个数值的大小,以此作为逻辑梯级连续的条件。

如果指令中被比较的两个数值满足指令的比较条件,则指令逻辑为“真”,否则指令逻辑为“假”。

比较指令见表8-1。

1.基本比较指令表8-1中的前六个为基本比较指令。

其中两个指令的梯形图符号如图8-1所示,其他比较指令的符号格式与之1基本一致。

图中表示的含义是:如果整数文件字N7:1中的值小于整数文件字N7:9中的值且大于或等于零,则将B3:1/3置位。

图8-1 两个比较指令梯形图符号基本比较指令都有两个参数:源(Source)A和源(Source)B。

源A必须是一个数据文件地址(如N7:1),源B既可以是一个数据文件地址(如N7:9)也可以是常数(如0)。

2.通过屏蔽比较相等指令(MEQ )图8-2 MEQ 指令梯形图符号MEQ 指令梯形图符号如图8-2所示,该指令通过一个屏蔽字,使源地址中的数据和比较地址中数据进行比较,它有以下三个参数:1)源(Source )—被比较值的数据文件地址;2)屏蔽(Mask )—屏蔽字地址或一个十六进制常数(如图中的0F0Fh );3)比较(Compare )—既可以是一个常整数,也可以是 比较值的数据文件地址。

在指令执行时,屏蔽字中为“1”的位使数据参与比较,为“0”的位屏蔽对应的位数据,因此,本指令只比较源值(0000010000010010)和比较值(0000000010000010)中对应于屏蔽位为“1”的那些位(图中屏蔽为0F0Fh,相当于0000111100001111,就是比较源值B3:1和比较值B3:2中的位0~3(0010)及位8~11(0100))。

如果源值没有被屏蔽的位与比较值中相对应的位一致,则指令的逻辑为真,当检测到一个不匹配的位时(图中为第10位),指令就变成假。

所以图8-2的结果为假。

3.极限比较指令(LIM)LIM指令有以下三个参数:1)下限(Low Lim)—输入下限值或数据地址;2)测试值(Test)—输入要检测的值或数据地址;3)上限(High Lim)—输入上限值或数据地址。

LIM指令的三个参数可以是数据字地址或常数,但是不能有下列情况图8-3 LIM指令梯形图符号:如果被测参数是一个常数,则下限参数和上限参数必须是数据字地址;如果被测参数是数据字地址,则下限参数和上限参数既可以是常数,也可以是数据字地址。

LIM指令可以根据所设置的上限和下限值,比较某测试值是在指定数值范围之内或之外。

LIM指令逻辑为“真”或为“假”的条件实例参见教材表8-2。

4.比较指令应用举例例1:若整数文件N7:0与N7:1中的数值相等,点亮L1指示灯;如果N7:2与N7: 3中的数值相等,则点亮L2指示灯。

梯形图程序如图8-4所示。

图中,梯级0000中EQU指令参教N7:0与N7:1中的数值相等(皆为9175),则EQU指令逻辑为“真”,接通与输出端O:0/0相连接的L1指示灯。

而梯级0001的EQU指令参数N7:2与N7:3中的数值不相等(分别是-247和-253),则EQU指令逻辑为“假’,与输出端O:0/1相连接的L2指示灯不得电。

图8-4 EQU指令应用梯形图4.比较指令应用举例例2:如果两个数值的低8位相匹配,则点亮L1指示灯。

梯形图逻辑如图8-5所示,因为只要求比较两个数值B3:1和B3:3的低8位,因此,将MEQ指令屏蔽字B3:2中的数值设置为00FFh,只让源值与比较值中的低8位进行相等的比较,尽管待比较两个数值的其他位不全一致,MEQ指令逻辑仍然为“真”,使连接输出端O:0/0的L1指示灯得电点亮。

图8-5 MEQ指令应用梯形图8.1.2 算术运算指令算术运算指令属于输出指令,大多数算术运算指令需要两个操作数,当梯级条件为真时,执行指定的算术运算,将运算结果存放到指定的存储位置,并根据运算结果自动设置算术标志位的值。

例如,加和减指令都是取一对输入值,对它们进行加或减运算,将结果存放到指定的目的地址内,如果运算结果超过PLC的极限值,则置位上溢出或下溢出位。

1.算术运算指令的通用信息1)指令参数。

算术运算指令有源(Source)和目的(Dest)两种参数。

在源参数中输入参与运算数值的数据文件地址或常数,算术、逻辑、或者传送操作的执行都要输入该参数。

如果一条指令有两个源参数,则两个参数不能都是常数。

目的参数是用于存储指令运算结果的数据文件地址。

对于运算中带符号的源和目的参数,PLC 都以二的补码形式存储。

可以选择用变址寻址方式指定指令参数的“字”地址,也可以选择用间接寻址方式指定指令参数的“字”地址。

SLC503(OS301或更高)、SLC504和SLC505 PLC的算术运算指令支持浮点数和字符串数字类型。

2)算术标志位是指PLC状态文件字0的位0~3(S:0/0~ S:0/3)。

算术运算指令执行时,会根据运算的结果对算术标志位进行更新。

标志位的含义如下表。

2.整数/实数算术运算算术运算指令既可以进行整数(16位)/实数(浮点数)运算,也可以进行双整数(32位)运算,本小节只介绍单字运算指令的执行情况及其对状态位的影响。

运算指令的梯形图符号如图8-6所示。

图中只画出了ADD、SQR和CLR三条运算指令, SUB、MUL和DIV指令的符号格式与ADD基本相同,有三个参数:源A、源B和目的地址,只是指令名称和运算法则不同。

NEG、ABS和SQR指令有两个参数:源和目的地址,CLR指令只有一个参数:目的地址。

源参数可以是数据文件地址也可以是常数,但是目的参数必须是数据文件字地址。

图8-6 算术运算指令梯形图符号整数/实数算术运算指令使用详细规则见教材p181-182。

这里通过实例来说明乘、除两条指令的用法。

例3:乘数是12345,被乘数是3,结果存放在整数地址N7:0内,运算结果等于37035,超过最大值32767,此时,如果S:2/14=0,则N7:0内的数值被设置为32767,而算术寄存器内存储的值是37035。

可见虽然PLC发生溢出错误,但是算术寄存器内的结果还是有效的。

例4:图8-7所示的除法指令,19除以4的余数是3(商为4.75),所以商被向上取整到5存储在目的地址N7:3内。

不整除的商是4,存储在S:14内,同时余数3存储在S:13内。

指令参数及执行结果为:参数: N7:1=19 ; N7:2=4结果: N7:3=5S:14=4图8-7 DIV指令梯形图符号 S:13=33.双整数(32位)运算指令MicroLogix/SLC5 PLC都是16位的,其整数范围是-32768~32767,超过这个值就会发生溢出,而这个数值范围在很多应用中是远不能满足算术运算要求的。

因此,PLC应能进行32位的加法、减法和除法运算。

其中32位加法和减法可以直接用ADD和SUB指令来实现,32位除法则由专门的双除指令(DDV)来实现。

1)32位加法和减法。

可以在编程时根据需要选择进行16位或32位有符号整数加法和减法运算。

如果要进行32位算数运算,要将算术溢出选择位(S:2/14)设置为“1”。

16位有符号整数与32位有符号整数相加的实例如图8-8所示。

16位被加数存放在B3:1中,32位加数的低16位存放在B3:2中,高16位存放在B3:3中。

两个加数的值和运算结果参见表8-7(p183)。

图8-8 32位有符号整数加法实例梯形图2)双字除指令(DDV)该指令只有两个参数:源和目的。

DDV指令将算术寄存器中32位值(S:14和S:13)去除以一个16位的源值(图8-9中的N7:0),如果余数大于等于0.5,则目的地址(图8-9中的N7:1)的值向上取整。

在开始计算时,算术寄存器S:13和S:14包含DDV运算的被除数,指令执行时,高位有效字S:14存储不整图8-9 DDV指令梯形图符号除的商,低位有效字S:13存储余数。

该指令通常用在产生32位结果的MUL指令之后。

8.1.3 逻辑运算指令逻辑运算指令属于输出指令,包括逻辑与指令(AND)、逻辑或指令(OR)、逻辑异或指令(XOR)和逻辑非指令(NOT)。

逻辑运算指令的功能见表8-9(p184)。

图8-10 DDV指令梯形图符号AND、OR和XOR指令有三个参数:源A、源B和目的地址,源A 和源B的参数可以是字地址或常数,但是两者不能都是常数。

目的地址必须是数据文件字地址。

当输入参数是常数时,可以用运算符“&”修改输入值的基数。

例如,用户可以输入&B11111111111111111或&HFFFF,来代替输入-1作为常数。

NOT指令只有源和目的两个参数,它们必须是数据文件字地址。

AND指令使源地址A的值和源地址B的值按位执行逻辑与运算;OR指令使源地址A的值和源地址B的值按位的值按位执行逻辑异或运算;NOT指令对源地址的值按位执行逻辑非运算。

逻辑运算指令都将结果存储在目的地址内,其算术标志位的影响见表8-10(p184)。

8.1.4 数据转换指令数据转换指令属于输出指令。

数据转换指令的功能见表8-10,可以使数据在整数与BCD码、角度与弧度之间进行转换,还可以实现编码器和译码器的功能。

1.BCD码转换指令图8-11 BCD码转换指令梯形图符号例5:要求将存储在N7:3的整数值32760转换成BCD码。

编程时,将N7:3作为TOD指令的源值,算术寄存器作为目的参数,此时可转换的最大BCD码值可以是32760。

然而,如果BCD码值超过9999,溢出位S:0/1就会被设置为“1”,这将导致次要错误位S:5/0也被置位,因此,需要在梯形图程序结束之前解锁存S:5/0,以避免出现主要错误图8-12 TOD指令应用举例代码0020。

梯形图如右图所示,指令执行后源和目的地址内的地址数据见表8-12(p186)。

在很多应应场合,采用拨码开关输入数据,这些数据都是BCD码格式,在梯形图程序使用这些数据之前,应该把BCD码值转换成整数值,否则,PLC会把这些数据当作整数处理,从而造成数据的丢失或改变。

例6:要求将算术寄存器中的BCD码值转换成整数,并存储在N7:10内,梯形图程序如图8-13所示。

相关主题