PLC教程理论篇之数据处理指令及标志
值逻辑一
一、数据处理指令简介
数据处理指令很多,占 PLC 指令集的大部分。大都以双字、字、多字为单位操作。这些指令实在太多,只能择其主要者进行介绍。具体是:传送指令、比较指令、译码指令及各种运算与文字处理指令,等等。
1.传送指令
最简单、最常用的传送指令为把源地址的内容或某即时数传送到某目标地址。传送后,源地址内容不变。图 9-1 示的为三厂家传送梯形图及助记符指令。
传送的数为 0 时,置其为 1,不然置 0。
OMRON PLC 的 MOV 指令名称前加@,即@MOV(021),三菱 PLC 的 MOV 指令后加 P、即 MOVP,则指令为微分执行。只在逻辑条件从 OFF 到 ON 那个扫描周期,指令执行一次。其它情况,指令不执行。OMRON 新型 PLC,MOV 之后 L,即 MOVL,三菱 PLCMOV 之前加 D,即 DMOV,可实现双字传送。而且,这里的 MOV 前加字及后加字可同时进行。
西门子 PLC MOV-W 为字传送,而 MOV-B 为字节传送,MOV-D 为双字传送,MOV-R为实数传送。
提示:从三家 MOV 指令的表示再次看出,同样是梯形图,不同厂家的指令表示是不相同
的。所以,设计不同厂家 PLC 的程序,要看到这个差别。除了 MOV,OMRON、三菱还有反相传送指令 MNV(三菱为 CML)指令,它与 MOV不同的只是传送之前,先把要传的内容取反,然后再传。
此外,还有其它多种传送指令。有:
多字传送,也称块传送,或称成批传送指令,可把若干连续地址的内容分别传送给对应的连续的目标地址。只要设好要传的数据的起始地址,目标的起始地址及要传的字数就可以了。
块设定,或称多点传送指令。它可把一个字的内容设定到指定的连续存储区中,只要指出该区的起始地址及末了地址。这个指令可很方便地用于对 PLC 的一些存储区进行初始化。
字交换指令,可进行两个地址内容的交换。
OMRON 还有带偏移目标地址的传送指令 DIST。可把源地址的内容传送给某基址加偏
移地址后的地址。带偏移源地址的传送指令,COLL。可把某基址加偏移地址后的地址的内 容传送到某个目标地址。这种传送也类似使用指针,较灵活。
除了字、双字、多字传送,还有 BCD 码的位(digit)及 16 进制的位(Bit)传送,等等。这些指令给数据处理都提供了方便。
2.比较指令
常用的比较指令为一般 CMP。执行它时,实现两个数的比较,并依据比较结果使相应的标志位置位。
比较结果位有三个:
EQ(等于),第一、第二比较数相等,OMRON 以前机型是使特殊继电器 255. 06 ON: LE(小、等于),第一个数小于第二个数,OMRON 机以前机型是使特殊继电器 250.07ON;
GR(大、等于),第一个数大于第二个数,OMRON 以前机型是使特殊继电器 255.05 ON。
提示:OMRON PLC 不仅使用比较指令会改变以上特殊继电器的状态。有的其它指令也会 改变它。所以,在比较指令与取得比较结果之间,不能如图 9-2 那样,夹入指令 B。因为执
行指令 B,有时可能改变在比较时得到的结果。那样,A 得到的结果,就可能有误。
图 9-2 不正确使用比较指令示意
提示:由于编程软件的进步,比较结果的标志用的特殊继电器编号,可以不必记忆。可用P-EQ(相等)、P-LT(小于)及 P-GT(大于)代替。
三菱的一般比较指令的结果标志是由指令指定。其格式如下:
—[ CMP D1 D2 M1 ]
这里方括号左边横线为执行本指令的逻辑条件。方括号中 CMP 为指令名称,D1 为第一
比较数,D2 为第二比较数,M1(在此虽只指明 M1)到 M3 为比较结果标志。当 D1 大于D2 时,M1 ON,其它 OFF;当 D1 等于 D2 时,M2 ON,其它 OFF;当 D1 小于 D2 时,M3 ON,其它 OFF。
三菱的 CMP 与 MOV 一样可加前、后缀 D、P,实行双字比较或微分执行。西门子无一般比较指令,但有触点比较指令。可进行各种长度及不同数据类型的比较,其结果可当作为梯形图的逻辑条件使用。图 9-3 示的为使用西门子 PLC 比较指令的梯形图程序。
图中除了常开触点 I0.0 及输出 Q0.0 外,全部为比较指令。从图知,要使 Q0.0 产生输出,
其条件是:VB0(字节整数)要大或等于 QB0(字节整数) 或 I0.0 ON,同时 VW7(字整数)等于 VW4 (字整数)或 IB2(字节整数)大于或等于 VB3(字节整数),同时 VD56(双字浮点数)小于或等于 VD12(双字浮点数),同时 VB100(字符)等于 VB10(字符)。
OMRON 新机型及三菱 PLC 也都有类似的触点比较指令。图 9-4 示的为使用三菱触点比较指令的梯形图程序。
图中除了常开触点 X002 及输出 Y000 外,其它的为比较指令。从图知,要使 Y000 产生输出,其条件是:D1(字整数)要大于 D2 (字整数),同时 X002 ON,或 D10(双字,这里大于号之前加 D,为双字的含义)大于或等于 D20(双字)。
此外,OMRON PLC 还有表比较指令,可把一个数与若干个数比较,那个数相等,则指定字中相应位 ON。否则,OFF。块(范围)比较指令。它的比较表是 16 对数,列出被比较数的上下限。当这个比较数处于被比较数的某上下限之间(含上、下限本身),视同比较相等,可使指定字的相应位 ON。否则,OFF。
三菱 PLC 除了 CMP 指令,还有 ZCP 区域比较指令。格式如下:
这里的 S1、S2 为区域的上、下范围界限(S2 必须大于 S1),S 为比较值。D 为比较结
果为输出。如上,当计数器 C30 的现值小于 100 时,M3 ON,M4、M5 OFF;当计数器 C30
的现值大、等于 100,而又小、等于 120 时,M4 ON,M3、M5 OFF;当计数器 C30 的现值
大于 120 时,M5 ON,M3、M4 OFF。
比较指令是很关键的。正如没有比较,人们无法思考问题一样,没有比较指令,PLC 就不能进行逻辑判断,也没有什么智能可言。
如在本教程第 7 讲图 7-10 程序中,增加计数器现值与常数 1 比较,并处理成:若等, 则输出 ON(启动);如不等,则输出 OFF(停车),则可达到单按钮实现启、停控制的目的。
再如在本教程第 7 讲图 7-11 程序中,增加计数器现值与一系列设定的时间值比较,并
处理成:与要求的输出对应,也可实施图 6-11 程序的功能。
比较指令与实时时钟配合,还可实现用时钟的时间对系统实施各种控制。 等等。
提示:比较指令对应操作数的格式应一致,否则无法得到预期的结果。
提示:比较指令是实现逻辑判断的基本手段。正确理解与巧妙使用比较指令,是 PLC 程序设计的关键之一。 3.译码指令
用以译码,以适应数据使用或实现控制的需要。
最常用的为 BCD 码与 BIN 二进制码转换用指令。BCD 为二进制码转换成 BCD 码指令。BIN 为 BCD码转换二进制码指令。有的 PLC 还有可处理双字的 BCD 及 BIN 治令,可进行两字长转换。还有为 4 转 16(DMPX、DECO)及 16 转 4(MLPX、ENCO)的译码指令。4 转 16:此指令可用一个输入(源)数位(DIGIT,由 4 个 BIT 组成)的值 ,使一个 16 位二进制输出(目标)数中,与该值相等的位 ON,其它位 OFF。当使用数值去控制不同的输出时,常要使用到此指令。而多数 PLC 都提供有这个指令。
图 9-5 为一组不同 PLC 使用 4 转 16 指令的梯形图程序。其作用都是用 4 个输入点(分别是 0.00 到 0.03、I0.0 到 I0.3 及 X000 到 X003)组成的一个数位(DIGIT)的不同取值(16 进制编码),去控制输出(分别为 10.00 到 10.15、Q0.0 到 Q1.7 及 Y000 到 Y017)。
如图程序,如输入(编码)值为 6 ,则将使 10.06、Q1.6(注意:西门子位在字中的排序与其它 PLC不同,其升幂先是高字节的 00 位到 07 位,后为低字节的 00 到 07 位,故这里为 Q1.6,而不是 Q0.6) 及Y006 ON,而其它各位全 OFF。再如输入(编码)值为 11 ,则将使 10.11、Q1.3 (8 进制计算)及 Y013(8 进制计算) ON,而其它各位全 OFF。再如输入(编码)值为 0 ,则将使 10.00、Q0.0 及 Y000 ON,而其它各位全 OFF。有了这个程序,如用 16 位的拨码开关接输入点,则可很方便地用这个开关的不同设置,产生不同输出。 如用增计数器作为这里的源,也可用计数值的变化,一步步改变输出。
提示:如图 b)所示,西门子 S7-200 的 DECO 指令的输入(IN)是字节,且其作用的仅它的低 4 位(如图,为 I0.0 到 I0.3 ),输出是两个字节,16 个位(BIT)。只要其 EN 端逻辑条件 ON(图中 SM0.0 为常ON 触点,故此条件满足),即执行本指令。而 S7-300、400 则没有这个指令。提示:如图 c)所示,三菱的 DECO 指令,稍复杂,功能也稍强。
如图,X000 到 X003,4 个位(BIT),为源(S。、输入),Y000 到 Y017 为目标(D。、输出),16 个位(BIT)。只要执行它的逻辑条件 ON(图中 M8000 为常 ON 触点,故此条件满足),即执行本指令。为什么这里输入为 4 位,输出为 16 位?这与常数(n)的取值为 4 有关。
图 9-6 示的为三菱 DECO 指令 n 的取值及其含义示意。
当目标(D)是“位”软元件时,n 取值应小或等于 8。输出多少位?是 2 的 n 次方。9-5C 的 n 为4,故输出为 16 位,对应的输入为 4 位。如 n 为 8,则可输出 256 位。图 9-6n 为 3,故输出为 8 位,对应的输入为 3 位。该图输入 X000、X001 ON,X003 OFF,其值为 3,故 M13 ON,其它 7 位均 OFF。
当目标(D)是“字”软元件时,n 取值应小或等于 4。输出多少位?也是 2 的 n 次方。图 9-6 n 为 3,故输出为 8 位,对应的输入为 3 位。该图输入 D0 的低 3 位值为 3,故 D1 的第 3 位 ON,其它位,含高字节各位均 OFF。
提示:如图 a)所示,OMRON 的 MLPX 指令,更复杂,功能也更强。如图,000。00 到 000.03,4 个位(BIT),为源(第 1 个操作数、S),010。00 到 010。15 为目标(第 3 个操作数、R),16 个位(BIT)。只要执行它的逻辑条件 ON(图中 P-ON 为常 ON 触点,故此条件满足),即执行本指令。为什么这里输入为 4 位,输出为 16 位?这与#0(第 2 个操作数,控制字的取值)有关。图 9-7 示的为 MLPX 指令控制字(第 2 个操作数,C)的含义及应用实例。这里 C 有 4 个数位,其中数位 0(n)指的是“源”字(S)中那个数位用作输入,数位 1(l)指的是有多少数位用作输入。自然,输入数位多,输出也多(4 对 16)。
如图所示,这里 n=2 ,l=1(0 时用一个数位,1 用 2 个,余类推)。所以,如 S 中数位 2 的值为 m,则 R 字中的 m 位 ON。如 S 中数位 3 的值为 p,则 R+1 字中的 p