数据处理指令(FNC40~FNC49)如表4-9所示。
表4-9 数据处理指令
1.区间复位指令
区间复位指令ZRST(P)的编号为FNC40。它的功能是将[D1.]和[D2.]指定的元件号范围内的同类元件成批复位。
示例及使用:如图4-36所示,当M8002由OFF到ON时,位元件M500~M599成批复位,字元件C235~C255也成批复位。
使用区间复位指令时应注意:
1)[D1.]和[D2.]可取Y、M、S、T、C、D,且应为同类元件,同时[D1.]的元件号应小于[D2.]指定的元件号,若[D1.]的元件号大于[D2.]的元件号,则只有[D1.]指定元件被复位。
2)ZRST指令只有16位处理,占5个程序步,但[D1.][D2.]也可以指定32位计数器。
图4-36 区间复位指令的使用
2.译码和编码指令
(1)译码指令DECO
DECO(P)指令的编号为FNC41。功能是根据n位输入的状态对2n个输出进行译码。它是将目标元件的某一位置1,其他位置0,置1位的位置由操作数的十进制码决定。解码指令的操作规则与数字电路中的状态译码器(如3/8译码器等)相同。
示例及使用:如图4-37所示,n=3则表示[S.]源操作数为3位,即X0、X1、X2。其状态为二进制数,当值为011时相当于十进制3,则由目标操作数M7~M0组成的8位二进制数的第三位M3被置1,其余各位为0。如果为000,则M0被置1。用译码指令可通过[D.]中的数值来控制元件的ON/OFF。
使用译码指令时应注意:
1)位的源操作数可取X、T、M和S,位的目标操作数可取Y、M和S,字的源操作数可取K、H、T、C、D、V和Z,字的目标操作数可取T、C和D。
2)若[D.]指定的目标元件是字元件T、C、D,则n≤4;若是位元件Y、M、S,则n=1~8。译码指令为16位指令,占7个程序步。
(2)编码指令ENCO
ENCO(P)指令的编号为FNC42。其功能是根据2n个输入位的状态进行编码,将结果存放到目标元件中。它是将源操作数为1的最高位位置存放到目标寄存器D中,只有16位运算。若指定的源元件中为1的位不止一个,则只有最高位的1有效。
示例及使用:如图4-38所示,当X1有效时执行编码指令,将[S.]中最高位的1(M3)所在位数(4)放入目标元件D10中,即把011放入D10的低3位。
图4-37 译码指令的使用
图4-38 编码指令的使用
使用编码指令时应注意:
1)指令的源操作数和目标操作数可以是位元件,也可以是字元件。
2)源的操作数是字元件时,可以是T、C、D、V和Z;源的操作数是位元件时,可以是X、Y、M和S。目标元件可取T、C、D、V和Z。编码指令为16位指令,占7个程序步。
3)操作数为字元件时应使n≤4,为位元件时则n=1~8,n=0时不做处理。
4)若指定源操作数中有多个1,则只有最高位的1有效。
3.ON位数统计和ON位判别指令
(1)ON位数统计指令SUM
(D)SUM(P)指令的编号为FNC43。该指令是用来统计指定元件中1的个数。
示例及使用:如图4-39所示,当X0有效时执行SUM指令,将源操作数D0中1的个数送入目标操作数D2中,若D0中没有1,零的标志M8020将置1。
使用SUM指令时应注意:
1)源的操作数可取所有数据类型,目标操作数可取Kn Y、Kn M、Kn S、T、C、D、V和Z。(www.xing528.com)
图4-39 ON位数统计指令的使用
2)16位运算时占5个程序步,32位运算时则占9个程序步。
图4-40 ON位判别指令的使用
(2)ON位判别指令
BON(D)、BON(P)指令的编号为FNC44。它的功能是检测指定元件中指定位是否为1。如图4-40所示,当X1为有效时,执行BON指令,由K4决定检测的是源操作数D10的第4位,当检测结果为1时,则目标操作数M0=1,否则M0=0。
使用BON指令时应注意:
1)源操作数可取所有数据类型,目标操作数可取Y、M和S。
2)进行16位运算,占7程序步,n=0~15;32位运算时则占13个程序步,n=0~31。
4.平均值指令
平均值指令(D)MEAN(P)的编号为FNC45,它主要用来计算n个源操作数的平均值,结果送到目标元件中(余数省略)。其中,源操作数可以取Kn X、Kn Y、Kn M、Kn S、T、C和D,目标操作数可以取Kn Y、Kn M、Kn S、T、C、D、V和Z,n可以取1~64。若程序中指定的n值超出1~64的范围将会出错。
5.报警器置位与复位指令
报警器置位指令ANS(P)和报警器复位指令ANR(P)的编号分别为FNC46和FNC47。如图4-41所示,若X0和X1同时为ON时超过1s,则S900置1;当X0或X1变为OFF,虽定时器复位,但S900仍保持1不变;若在1s内X0或X1再次变为OFF,则定时器复位。当X2接通时,则将S900~S999之间被置1的报警器复位。若有多于1个的报警器被置1,则元件号最低的那个报警器被复位。
使用报警器置位与复位指令时应注意:
1)ANS指令的源操作数为T0~T199,目标操作数为S900~S999,n=1~32767(以100ms为单位);ANR指令无操作数。
2)ANS为16位运算指令,占7个程序步;ANR指令为16位运算指令,占1个程序步。
3)ANR指令如果用连续执行,则会按扫描周期依次逐个将报警器复位。
6.二进制平方根指令
二进制平方根指令(D)SQR(P)的编号为FNC48。如图4-42所示,当X0有效时,则将存放在D45中的数开平方,结果存放在D123中(结果只取整数)。
图4-41 报警器置位与复位指令的使用
图4-42 二进制平方根指令的使用
使用SQR指令时应注意:
1)源操作数可取K、H、D,数据需大于0,目标操作数为D。
2)16位运算时占5个程序步,32位运算时占9个程序步。
7.二进制整数→二进制浮点数转换指令
二进制整数→二进制浮点数转换指令(D)FLT(P)的编号为FNC49。如图4-43所示,当X1有效时,将存入D10中的数据转换成浮点数并存入D12中。
使用FLT指令时应注意:
1)源和目标操作数均为D。
2)16位操作时占5个程序步,32位操作时占9个程序步。
图4-43 二进制整数→二进制浮点数转换指令的使用
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。