首页 理论教育 数据处理指令:优化你的程序

数据处理指令:优化你的程序

时间:2026-01-23 理论教育 版权反馈
【摘要】:数据处理指令很多,占PLC指令集的相当大部分。此外,还有多种传送指令。这个指令可很方便地用于对PLC的一些存储区进行初始化。提示:在比较指令与取得比较结果之间,不能如图2-37所示那样,插入指令B。表2-18示的即为此类指令的简要介绍。

数据处理指令很多,占PLC指令集的相当大部分。大都以字、多字为单位操作。具体有:传送指令、比较指令、移位指令、译码指令、各种运算指令、文字处理指令,等等。

1.传送指令

最简单、最常用的传送指令为MOV(021),021是它的功能号。

MOV(021)是字传送指令,执行之后(执行它时,若逻辑条件具备,即此时的结果寄存器R的内容为1,则执行),把源地址的内容或某即时数传送到某目标地址。传送后,源地址内容不变。其梯形图格式

图示

这里,S为源地址,也可是即时数;

D为目标地址。

S、D的内容可以是BCD码,或十六进制码。S、D可以为直接地址,也可为间接地址,即该内容仍是地址,后者的内容才是要传的数。

传送指令也影响标志位(25506特殊继电器,它反映相等的特点),传送的数为0时,置其为1,不然置0。

还有MNV(022)指令,它与MOV不同的只是传送之前,先把要传的内容取反,然后再传。高档PLC还有双字传送指令,MOVL、MNVL。

此外,还有多种传送指令。有:

多字传送指令XFER(070)。也称块传送指令,可把若干连续地址的内容分别传送给对应的连续的目标地址。只要设好要传的数据的起始地址,目标的起始地址及要传的字数就可以了。

块设定指令BSET(071)指令。它可把一个字的内容设定到指定的连续存储区中,只要指出该区的起始地址及末了地址。这个指令可很方便地用于对PLC的一些存储区进行初始化。

字交换指令XCHG(073)。可进行两个地址内容的交换。高档的PLC还有双字交换指令XCHGL。

带偏移目标地址的传送指令DIST(80)。可把源地址的内容传送给某基址加偏移地址后的地址。这种传送比较灵活,便于存储数据,或从同一子程序中取出的数存于不同的单元中。带偏移源地址的传送指令,COLL(81)。可把某基址加偏移地址后的地址的内容传送到某个目标地址。这种传送便于取数,或同一子程序可使用不同的参数。

除了字、双字、多字传送,还有BCD码的位(digit)及十六进制的位(bit)传送,等等。这些指令给数据处理都提供了方便。表2-14~表2-17列出了CJ1机的一些主要的传送指令。

2-14 传送指令1

图示

2-15 传送指令2

图示

2-16 传送指令3

图示

2-17 传送指令4

图示

2.比较指令

常用的比较指令为CMP(020),功能码为020。执行它时,实现两个数的比较,并根据比较结果使相应的标志位置位。

比较结果位有3个:

EQ(等于),第一、第二比较数相等,OMRON公司以前机型是使25506ON:

LE(小于),第一个数小于第二个数,OMRON公司以前机型是使25007ON;

GR(大于),第一个数大于第二个数,OMRON公司以前机型是使25505ON。

提示:在比较指令与取得比较结果之间,不能如图2-37所示那样,插入指令B。因为执行指令B,有时可能改变在比较时得到的结果。那样,A得到的结果,就可能有误。

此外,还有表比较指令TCMP(085):可把一个数与若干个数比较。与哪数相等,则指定字中相应位ON。否则,OFF。表比较指令,要指定第一比较数,同时,还要指定数表(一般为16个数)及指定输出通道。表比较指令功能比CMP指令要强得多。

图示

图2-37 不正确使用比较指令示意图

块(范围)比较指令BCMP(-),较高档的PLC才有此指令。它把数与比较表中16对数比较,这16对列出上下限。这个数处于某上下限之间(含上、下限本身),指定字的相应位ON。否则,OFF。

还有很多比较指令。特别要提到的是符号比较指令。它使用等于、大于及小于符号及其组合进行单字、双字比较。而且,指令还可作为中间指令使用。用起来很灵活。表2-18示的即为此类指令的简要介绍。

2-18 符号比较指令概要

图示

(续)

图示

提示比较指令对应操作数的格式应一致,否则无法得到预期的结果。而且,这里介绍的只是一种比较指令,实际还有很多,可根据数据类型选用。

比较指令常用于逻辑判断,是实现智能控制必不可少的指令。

3.移位指令

最常用的为SFT(010)指令,它的梯形图符号为(https://www.xing528.com)

图示

这里,I为输入信号;P为移位脉冲;R为复位信号;St为起始通道地址;E为终止通道地址。

复位端ON时,从St到E的地址的内容全部置0,并禁止移位。

R端OFF,允许移位。移位由移位脉冲实现。当P从0到1时,把I的内容(位,0或1)移入St通道的00位,而00位的原内容移给01位……,St通道的15位移给St+1通道的00位……,依此类推。E的15位原数据丢失。

每产生一个脉冲,移一个位。

这里的3个端(I、P、R)用3个LD开头的输入指令产生,在语句表上必须为

××××LD××××

××××LD××××

××××LD××××

××××SFT(010)

St

E

此外,还有多种多样的移位指令:

算术左移ASL(025):仅对一个字移位,执行一次本指令移一次位。移位时用0移入最低位(00位)。原00位的内容,移入01位……,15位的内容移入进位位CY(25504)。而原进位位的内容丢失。

算术右移ASR(026):与ASL不同的只是它为右移,先把进位位的内容移入字的最高位(15位),原15位的内容移入14位……,原00位的内容丢失。

循环左移ROL(027):它与ASL不同的只是它的CY的内容不丢失,要传给00位,以实现循环。

循环右移ROR(028):与ASR不同的是00的内容不丢失,传给进位位,以实现循环。还有可逆移位指令,由控制字去控制左,还是右移,并可实现多字移位。

除了二进制的位(bit)移位,还有数位(digit)移位,可左移SLD(074),也可右移SRD(075)。移位的对象可以多个字。

还有字移位WSFT(016),以字为单位的移,执行一次本指令移一个字。移时0000移入起始地址(最小地址),起始地址的原内容移入相邻的较高地址,……最高地址(结束地址)的内容丢失。多次执行本指令,可对从起始到结束地址的内容清零。

4.译码指令

用以译码,以适应数据使用或实现控制的需要。

最常用的为BCD码与BIN二进制码转换用指令。BCD(024)为二进制码转换成BCD码指令。BIN(023)为BCD码转换二进制码指令,还可用BCDL及BINL进行两字长转换。

此外,还有其它译码指令。

如:4转16的MLPX(076)指令:它可根据源地址十六进制数的一个数位(digit)的内容(0~F),使相应通道的二进制位(bit)置成1(其它非指定位置成0)。如某位内容为7,可使指定通道的07位(bit)置成1,其余的均为0。最多可用4个数位(digit)使4个通道的相应位置1。到底有多少个数位,各数位对应于哪个通道由控制字确定。

还有与MLPX相反的译码指令DMPX(077)。它为16到4译码,是前者的反过程,把1~4个通道中最高位(bit)为1的位号,分别置入指定通道的某个数位(digit)。有多少通道及通道与哪个指定字数位(digit)对应由控制字确定。

这两条指令的控制字高位设成1,可进行8到256或256到8的译码。256为16个字组成的256个位(bit)。8为8个字节为一组,每组两位16进制数,其值变化范围为00~FF,对应于256位(bit)的000~255位。只是8到256,或256到8最多只能进行两组,不像4到16及16到4可进行4组。

此外还有:7段译码指令SDEC,可把BCD码译成7段码,用于数字显示。ASCII码转换指令ASC,把十六进制数译成ASCII码,还可加或不加奇或偶校验。十六进制数译码指令HEX,把ASCII码译成十六进制数。小时到秒译码指令SEC,把小时数译成秒数。秒到小时译码指令HMS,把秒数译成小时数。列译成行译码LINE,把16个字的指定同一个位(bit)的内容,变成一个指定字的内容。行列列译码COLM,与LINE具有相反的过程。

等等。

5.数据运算与处理指令

最常用的为一个字的BCD码+、-、×、/指令。还有两个字(8位BCD码)+、-、×、/。

还有16位及32位二进制的+、-、×、/,CJ1机还可带符号位的运算。

还有加1,INC(038)及减1,DEC(039)两个也是较常用的指令(CJ1机不是用此符号)。

这些运算都要影响进位位,而且进位位也都参加运算。

为此,在运算之前要对进位位(CY)进行操作。有两个指令可做此工作。即:

STC(040):置进位位,进位位置1。

CLC(041):清进位位,进位位置0。

提示:进行BCD码加减运算时,进位位(CY)也是其运算成员。它既是运算原始数据(1或0)之一,又要存放运算结果(有进位或借位时置1,否则置O)。如加运算是Au(被加数)+Ad(加数)+CY→CY,R(结果)如减运算是Mi(被减数)-Su(减数)-CY→CY.R

此外,还有开方,浮点除。还有浮点+、-……

还有,在一组数中求最小值(MIN),在一组数中求最大值(MAX),求一组数的平均值(AVG),求一组数的总和(SUM)。

还有可进行三角函数运算,有的还进行对数、指数运算,可进行一组数的数值插值运算。

随着PLC技术的发展,以及满足模拟量控制、脉冲量控制及通信的需要,综合运算指令越来越多,功能也越来越强。PLC可以进行PID运算,以适应比例、积分、微分的要求。可进行FCS运算,为一组ASCII码进行纵向异或校验计算FCS码。

此外,还有种种逻辑运算指令基本逻辑指令。如,ANDW字与、ORDW字或、XORW字异或及XNRW字同或。

总之,数据运算与处理指令是很多的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈