使用应用指令处理不同的数据时需要用到不同的数据格式,采用不同的执行形式,下面逐一进行说明。
1.字元件和双字元件
应用指令可处理16位(bit)的字元件(数据)和32(bit)位的双字元件(数据)。
(1)字元件
一个字元件是由16位的存储单元构成的,其最高位(第15位)为符号位,第0~14位为数值位,如图5-2所示。
图5-2 16位字元件
(2)双字元件
低位元件(D10)存储32位数据的低16位,高位元件(D11)存储32位数据的高16位,如图5-3所示。
图5-3 双字元件
2.16位/32位指令
PLC能处理16位和32位的数据,下面进行介绍。
(1)16位指令
以16位MOV指令为例介绍,如图5-4所示。
●当X001接通时,将十进制数10传送到16位的数据寄存器D10中去;
图5-416位指令
●当X001断开时,该指令被跳过不执行,源操作数和目的操作数的内容都不变。
(2)32位指令
以32位MOV指令为例介绍,如图5-5所示。
图5-532位指令
●当X001接通时,将由D11和D10组成的32位源数据传送到由D13和D12组成的目的地址中去。
●当X001断开时,该指令被跳过不执行,源操作数和目的操作数的内容都不变。
应用指令中附有符号(D)表示处理32位(bit)数据,如:(D)MOV、FNC(D)12、FNC12(D)。处理32位数据时,用元件号相邻的两个元件组成元件对,元件对的元件号用奇数、偶数均可。但为了避免错误,元件对的首元件建议统一用偶数编号。32位(bit)计数器(C200~C255)不能用做16bit指令的操作数。
3.位元件/位组合元件
只处理ON/OFF信息的软元件称为位元件,如:X、Y、M、S等均为位元件。而处理数值的软元件称为字元件,如:T、C、D等。
“位元件元件”的组合方法的助记符是:Kn+最低位的位元件号。
如:KnX、KnY、KnM即位元件组合,其中“K”表示后面跟的是十进制数,“n”表示4位一组的组数,16位数据用K1~K4,32位数据用K1~K8。
【实例5-1】说明K2M0表示的位组合元件含义
解:
K2M0中的“2”表示2组4位的位元件组成元件,最低位的位元件号分别是M0和M4,所以K2M0表示由M0~M3和M4~M7两组位元件组成一个8位数据,其中M7是最高位,M0是最低位。
使用位组合元件时应注意以下问题。
●若向K1M0~K3M0传递16位数据,则数据长度不足的高位部分不被传递,32位数据也同样。
●在16位(或32位)运算中,对应元件的位指定是K1~K3(或K1~K7),长度不足的高位通常被视为0,因此,通常将其作为正数处理。
●被指定的位元件的编号,没有特别的限制,一般可自由指定,但是建议在X、Y的场合最低位的编号尽可能地设定为0(X000,X010,X020…Y000,Y010,Y020…),在M,S场合理想的设定数为8的倍数,为了避免混乱,建议设定为M0,M10,M20…等。
4.脉冲执行型/连续执行型指令
指令按照执行方式可以分为脉冲执行型和连续执行型两种形式。
(1)连续执行指令型
连续执行型指令如图5-6所示,X000=ON时,指令在各扫描周期都执行。
(2)脉冲执行型指令
如图5-7所示,指令只在X000由OFF→ON变化一次时执行一次,其他时候不执行。连续执行方式在程序执行时的每个扫描周期都会对目的元件加1,而这种情况在许多实际的控制中是不允许的。为了解决这类问题,设置了脉冲执行方式,并在这类助记符的后面加扩展名符号“P”来表示此方式。
(www.daowen.com)
图5-6 连续执行型指令
图5-7 脉冲执行方式举例
5.变址操作
变址寄存器用于在传送、比较指令中修改操作对象的元件号。
变址的方法是将变址寄存器V和Z这两个16位的寄存器放在各种寄存器的后面,充当操作数地址的偏移量。操作数的实际地址就是寄存器的当前值以及V和Z内容相加后的和。当源或目的寄存器用[S·]或[D·]表示时,就能进行变址操作。对32位数据进行操作时,要将V、Z组合成32位(V,Z)来使用,这时Z为低16位,V为高16位,32bit指令中用到变址寄存器时只需指定Z,这时Z就代表了V和Z。可以用变址寄存器进行变址的软元件有X、Y、M、S、P、T、C、D、K、H、KnX、KnY、KnM、KnS等。
【实例5-2】如图5-8所示的程序,求执行加法操作后源和目的操作数的实际地址
图5-8 变址操作举例
解:
第一行指令执行25→V,第二行指令执行30→Z,所以变址寄存器的值为:V=25,Z=30。第三行指令执行(D5V)+(D15Z)→(D40Z)。
[S1·]为D5V:D(5+25)=D30 源操作数1的实际地址。
[S2·]为D15Z:D(15+30)=D45 源操作数2的实际地址。
[D·]为D40Z:D(40+30)=D70 目的操作数的实际地址。
所以,第三行指令实际执行(D30)+(D40)→(D70),即D30的内容和D45的内容相加,结果送入D70中去。
【实例5-3】修改16位指令操作数
如图5-9所示的程序。
解:
将K0或K1的内容向变址寄存器V0传送。
当X001=ON,V0=0时,(D(0+0)=D0),则K500的内容向D0传送。
若V0=10时,(D(0+10)=D10),则K500的内容向D10传送。
【实例5-4】修改32位指令操作数
如图5-10所示的程序。
图5-9 16位指令操作数的变址举例
图5-10 32位指令操作数的变址举例
解:
DMOV是32位的指令,因此,在该指令中使用的变址寄存器也必须指定为32位。
在32位指令中指定了变址寄存器的Z寄存器(Z0~Z7)及与之组合的V寄存器(V0~V7)。
即使Z0中写入的数值不超过16位数值范围(0~32767),也必须用32位的指令将V,Z两寄存器都改写,如果只写入Z侧,则在V侧留有其他数值,会使数值产生很多的运算错误。
【实例5-5】常数K修改
如图5-11所示的程序。
图5-11 常数K的修改举例
解:
当X005=ON,若V5=0,(K6+0=K6),将K6的内容向D10传送。
若V5=20时,(K6+20=K26),则将K26的内容向D10传送。
用MOV指令输出Y7~Y0,通过变址修改输入,使其变换成X7~X0,X17~X10,X27~X20。程序如图5-12所示。
图5-12 八进制软元件(编号)的变址举例
这种变换是将变址值0、8、16通过(X0+0=X0)、(X0+8=X10)、(X0+16=X20)的八进制的换算,然后相加软元件的编号,使输入端子发生变化。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。