首页 理论教育 简易编程器中专用指令的使用方法

简易编程器中专用指令的使用方法

更新时间:2025-01-11 工作计划 版权反馈
【摘要】:专用指令在简易编程器上一般没有对应的指令键,指令的输入是用功能键FUN与两个数字键组合完成。图3-10使用IL/ILC指令编程示例JMP(跳转)和JME指令配合使用,其功能是根据当时条件来决定是执行它们之间的指令还是跳过它们之间的指令。多个JMP和JME指令配合使用,尽管程序检查时会有JMP-JME指令出错信息,但不影响程序执行。

专用指令在简易编程器上一般没有对应的指令键(SFT除外),指令的输入是用功能键FUN与两个数字键组合完成。

1.分支和分支结束指令IL(02)/ILC(03)

IL(02)总是与ILC(03)配合使用,分别位于一段分支程序的首、尾处。若IL的输入条件不满足(即IL支路前面的位为OFF状态),则位于IL和ILC中间的指令不执行,而且IL和ILC之间的程序输出状态如下:

所有输出位:OFF。

图3-7 使用IL/ILC编程示例

所有定时器:复位。

所有计数器、移位寄存器和锁存继电器:保持以前的状态。

若IL的输入条件满足,则位于IL和ILC之间的指令之间的指令正常执行,如同程序中没有IL和ILC指令一样。IL/ILC的梯形图符号和应用编程如图3-7所示。

IL/ILC指令还可以多个联用,图3-8为两个IL指令联用的编程示例。多个IL指令联用的情况可以此类推。在图3-8中,若第一个IL条件(0002)是OFF时,输出0500、0501、0502均为OFF,CNT10保持当前值;若第一个IL的条件(0002)是ON,第二个IL的条件(0004)是OFF时,只有0500根据当时的条件可能是ON,也可能是OFF,0501和0502为OFF,CNT10保持当前值,若两个IL的条件(0002和0004)都是ON,电路就像没有IL和ILC一样正常操作。

多个IL共用一个ILC,可能会在编程器输入程序时产生IL-ILC错误信息,但不会影响程序的正常执行,一个ILC指令可作为前面所有IL指令的结束。IL/ILC指令不允许嵌套使用(如IL-IL-ILC-ILC)。

2.暂存继电器TR

当程序中不能用IL/ILC时,TR位可用作多个输出分支点上暂存继电器。TR位可多次使用,但在同一程序中不能重复使用同一个TR位。共有8个TR位可供使用,即TR0~TR7。

TR不是独立的编程指令,必须与LD和OUT等基本指令一起使用,如图3-9所示。

TR和IL/ILC指令比较,由于IL/ILC指令不需要LDTR这样的额外编程地址,所以使用IL/ILC来代替TR,会使编程更短,可节省存储空间。图3-9和图3-10是分别用TR和IL/ILC指令对同一电路进行编程的例子。

图3-8 使用IL-IL-ILC指令编程示例

图3-9 使用TR指令编程示例

3.跳转和跳转结束指令JMP(040)/JME(050)

(1)JMP-JME指令编程。

图3-10 使用IL/ILC指令编程示例

JMP(跳转)和JME(跳转结束)指令配合使用,其功能是根据当时条件来决定是执行它们之间的指令还是跳过它们之间的指令。在一个程序中最多可使用8次JMP/JME指令,它们之间不能用高速计数指令。图3-11为JMP-JME指令编程的例子,0002和0003作为JMP指令的条件。当0002和0003都是ON时,JMP、JME指令不起作用,它们之间的指令正常工作;当JMP指令的条件为OFF时,JMP、JME指令之间的指令不被执行,这时它们之间的所有继电器都保持原来状态。

图3-11 使用JMP和JME指令编程示例

图3-12 使用JMP-JMP-JME指令编程示例

(2)JMP-JMP-JME指令编程。

多个JMP和JME指令配合使用,尽管程序检查时会有JMP-JME指令出错信息,但不影响程序执行。图3-12为两个JMP指令共用一个JME指令的例子。当第一个JMP指令的条件0002为OFF时,输出0500,0501,0502和计数器CNT10保持原来状态不变;当第一个JMP指令的条件为ON,而第二个JMP指令的条件0005为OFF时,只有0500的状态根据0003和0004的状态而变,0501和0502及计数器CNT10保持原来的状态;当两个JMP指令的条件都为ON时,电路就像没有JMP、JME指令时一样正常操作。

图3-13 使用KEEP指令编程示例

4.锁存继电器指令KEEP(11)

锁存继电器用来做锁存器使用。它可保持其ON或OFF状态,直到它的两个输入之一把它置为复位或置位。

用KEEP指令编程时,应先装入置位输入,然后装入复位输入,复位端具有高优先级,当两个输入同时为ON时,复位优先。所有输出继电器、辅助继电器和保持继电器都可作为锁存器。

KEEP指令的梯形图符号及应用编程如图3-13所示。

5.微分指令DIFU(13)/DIFD(14)

前沿微分指令DIFU(13)和后沿微分指令DIFD(14)用于在满足条件时产生一个扫描周期的脉冲。DIFU指令在输入端检测到一个上升跳变信号时,输出为ON并保持一个扫描周期。DIFD指令在输入端检测到一个下降跳变信号时,输出为ON并保持一个扫描周期。

DIFU、DIFD指令响应时序图如图3-14所示。

图3-14 使用DIFU和DIFD指令编程及时序图

6.寄存器移位指令SFT(10)

寄存器移位指令的功能是把一个指定通道的16位数据按位左移,也可把几个通道联在一起移位。SFT指令可以指定的通道有:输出继电器通道、辅助继电器通道和保持继电器通道。移位的结果是,原来的最高位丢失,最低位为IN端新输入的数据。移位和SP端移位信号的上升沿同步。R端ON时,参与移位的所有位复位为“0”,且不接受新的数据。

SFT指令的梯形图符号及应用编程如图3-15所示,移位寄存器指令SFT应按数据输入、复位输入、移位通道的顺序编程。

如需要对多于16位的数据移位,可把几个通道串联到一起移位。图3-16就是3个通道共48位移位的程序。

图3-15 使用SFT指令编程示例

图3-16 48位移位寄存器

使用SFT指令时应注意:起始通道和结束通道必须是同类继电器,即同一种继电器才能组成移位寄存器。同时起始通道号≤结束通道号。

7.字移位指令WSFT(16)

字移位指令的功能是以通道为单位将数据从开始通道向结束通道依次移动一个字(16位)。WSFT指令可以指定的通道有:输出、内部辅助继电器通道、保持继电器通道和数据存储器通道。移位的结果是:结束通道中的数据丢失,开始通道中的数据补零。当移位条件变为ON后,CPU每扫描一次程序就执行一次本指令,如果想只执行一次,就应该使用DIFU指令或DIFD指令。

注意:首通道和末通道必须是同类继电器,且首通道号≤末通道号。

SFT指令的梯形图符号及应用编程如图3-17所示。

图3-17 使用WSFT指令编程示例

8.高速定时器指令TIMH(15)

高速定时器的工作过程是,当定时器的输入一接通就开始计,定时器的当前值每隔0.01s减1,定时时间到,当前值变为0,定时器的动合节点为ON。当定时器输入为断开时复位,当前值恢复到设定值。

注意:TIMH的定时器号为00~47,在程序中不要与TIM、CNT重号。当扫描周期大于10ms时,该指令不能正确执行,定时操作可能不准确。

TIMH指令的梯形图符号及应用编程如图3-18所示。

图3-18 使用TIMH指令编程示例

9.可逆计数器指令CNTR(12)

CNTR指令是一个可逆环形计数器。CNTR指令根据递增输入信号由OFF变为ON(上升沿)时加计数,根据递减输入一个上升沿信号做减1计数。当复位信号为ON时,计数器的当前值复位为0000。

CNTR指令是环形计数器。当计数器的当前值是设定值时,再加1后,计数器的当前值变为0000;当计数器的当前值为0000时,再减1后,计数器的当前值变为设定值。只有当计数器的当前值为设定值时,计数为ON状态。

CNTR的设定值可以是一个常数,也可用通道内容。

CNTR指令的梯形图符号及应用编程如图3-19所示。

图3-19 CNTR指令的梯形图及编程示例

10.通道数据比较指令CMP(20)

通道数据比较指令用于把一个通道的内容与另一个通道的内容或4位16进制数进行比较,并将结果输出到内部专用继电器区(SR)的EQ(1906)、GR(1905)、LE(1907)标志位。

除暂存继电器外,所有继电器的内容和常数都可以用于CMP指令。

CMP指令的梯形图符号及应用编程如图3-20所示,将通道10的内容与HR9的内容进行比较,比较结果分别通过0500、0501或0502输出。

11.数据传送指令MOV(21)

图3-20 使用CMP指令编程示例

表3-8 MOV、MVN指令的数据范围表

数据传送指令的功能是将(源)指定的通道数据或4位16进制常数传送到(目的)指定的通道中去。

表3-8中的通道或常数能作为MOV指令中的源及目的通道。

MOV指令的梯形图符号及应用编程如图3-21所示。

图3-21 使用MOV和MVN编程示例

12.数据求反传送指令MVN(22)

数据求反传送指令的功能是将(源)指定的通道数据或4位16进制常数内容取反,然后再传送到(目的)通道中去。

表3-8中的通道或常数能作为MVN指令中的源及目的通道。

MVN指令的梯形图符号及应用编程如图3-21所示。(www.xing528.com)

13.置位进位位指令STC(40)

置位进位位指令的功能是将进位标志继电器CY(1904)置位,即ON。

STC指令的梯形图符号及应用编程如图3-22所示。

图3-22 使用STC和CLC编程示例

14.复位进位位指令CLC(41)

复位进位位指令的功能是将进位标志继电器CY(1904)复位,即OFF。

CLC指令的梯形图符号及应用编程如图3-22所示。

表3-9 ADD和SUB指令的数据范围

*当不使用FUN98指令时,可用至DM63。

15.BCD加法指令ADD(30)

加法指令的功能是将两个通道的内容或者一个通道的内容与一个常数相加(带进位位),送到目的通道。

ADD指令的数据范围见表3-9。

ADD指令的梯形图符号及应用编程如图3-23所示。

图3-23 使用ADD指令编程示例

注意:执行ADD指令前应先用CLC指令清进位位标志CY,被加数和加数必须是BCD数,否则BCD码监视继电器1903为ON,CPU不执行ADD指令。

16.BCD减法指令SUB(31)

减法指令的功能是把一个通道的内容减去另一个通道的内容或一个常数,其差送到目的通道。

SUB指令的数据范围见表3-9。

SUB指令的梯形图符号及应用编程如图3-24所示。

注意:执行SUB指令前应先用CLC指令清进位位标志CY,被减数和加减数必须是BCD数,否则监视继电器1903为ON,CPU不执行SUB指令。若执行SUB结果差为负数,则进位标志1904变为ON;若差为0则1906为ON。

17.BCD数转换为二进制数指令BIN(23)

BIN指令功能是把原通道内的4位十进制数转换为16位二进制数并送入目的通道中去。

图3-24 使用SUB指令编程示例

表3-10 BIN和BCD指令的数据范围

*当没有使用FUN98指令时,可用到DM63。

BIN指令的数据范围见表3-10。

BIN指令的梯形图符号及应用编程见图3-25所示。

18.二进制数转换为BCD数指令BCD(24)

图3-25 使用BIN指令编程示例

BCD指令的功能是将源通道的16位二进制数转换为4位十进制数,并放到目的通道中去。

BCD指令的数据范围见表3-10。

BCD指令的梯形图符号及应用程序如图3-26所示。

图3-26 使用BCD指令编程示例

19.译码器指令MLPX(76)

表3-11 MLPX和DMPX指令的数据范围

MLPX指令的功能是按数字目标位给定的要求,将源通道中的4位十六进制数中的1位或几位分别译成一个或几个0~15的十进制数,并按译码的结果将指定通道对应位置为1。

使用MLPX指令,必须指定3个数据,即源通道、数字目标位和目的通道。这3个数据的取值范围见表3-11。

MLPX指令的梯形图符号及应用程序如图3-27所示。

图3-27 使用MPLX指令编程示例

1—ON;2—OFF

数字目标位可以是一个4位常数,也可以指定一个通道从外部设定。数字目标位只利用4位数的低两位,最低位表示从源通道的第几位数开始译码,0表示从第1位开始译码,1表示从第2位为开始译码,2表示从第3位开始译码,3表示从第4位开始译码。而次低位表示源通道有几位数要译码。例如0021表示要从源通道的第2位开始译码,有3位数要译码,分别是源通道的第2位、第3位和第4位。如图3-28所示程序是当输入点0002为ON时,把DM10通道4位十六进制的最低位译码,译码结果存于HR09通道。

如果要求译码的位数多于1位,则存放译码结果的目的通道也大于1,在程序中只指定第一个通道,其它通道紧随其后。

20.编码指令DMPX(77)

DMPX指令的功能是按数字目标位给定的要求,将源通道中为1的位的最高位号编码为一个16进制数,并将其输出至目的通道中指定的数字位,而目的通道中其它位数据不变。

DMPX指令一次最多可对4个连续的源通道进行编码,得到4个数字位送至目的通道中。使用DMPX指令,必须指定3个数据,即源通道、目的通道和数字目标位。这个数值取值的范围见表3-11。

DMPX指令的梯形图符号及应用程序如图3-28所示。

图3-28 使用DMPX指令编程示例

数字目标位可以是一个4位常数,也可以指定一个通道以外设定。数字目标位只利用4位数的低两位,最低位表示目的通道的哪一位开始接收编码的结果,0表示从第1位开始,1表示从第2位开始,2表示从第3位开始,3表示从第4位开始。次低位表示被编码的通道个数。0表示1个通道,1表示2个通道,2表示3个通道,3表示4个通道。如图3-28所示程序是当输入点0002为ON时,把HR9中为“1”的位中最高一位的地址编码为二进制数,送到DM10通道的第1位。

如果要编码的通道不止一个,目的通道必须有等量的数位用于存放编码结果。例如数字目标位为0012,它表示有两个通道要编码,指定从目的通道的第3位开始存放,把第一个通道的编码结果送到第3位,第2个通道结果送到第4位,图3-29即是这个多通道编码的例子。要注意源通道号的正确选择,该指令只能对同类器件进行编码。如数字目标位为0031,而源通道选为通道HR8,那么需要对通道HR8、HR9、HR10和HR11编码,但HR10和HR11不存在,这时BCD码监视继电器1903为ON,DMPX指令不执行。

上述应用指令中第7条和第11~20条这11条指令,CPU每扫描一次程序就要执行一次。若只希望执行一次,要使用微分指令。

21.高速计数器指令FUN(98)

高速计数器指令的功能是对外部高速脉冲计数,计数值与上下限值比较后给出相应输出。

图3-29 多通道编码示例

C系列P型机设置了高速计数器,计数频率可达2kHz,有16个输出,计数信号脉冲宽度应大于250μs,占空比为1∶1。外部计数脉冲通过0000输入端送到PLC,计数脉冲的每一次正跳变,会使PLC的计数缓冲器进行加1计数。

可用作高速计数器的输出通道为:输出继电器05~09、辅助继电器10~17、保持继电器HR0~HR9。

计数的上下限值要用MOV指令预置在DM32~DM63中,相邻两个通道为一组限值,单号通道为上限,双号通道为下限,上下限值必须是BCD码,下限必须小于上限。

高速计数器的起动由起动输入端的状态决定,当输入端为ON时,高速计数器起动,CPU每次扫描FUN98指令,要进行如下操作:首先把内部计数器缓冲器的计数值传送到CNT47中,作为高速计数器的当前值。然后将此值与上下限进行比较,当数值相符时,指定输出通道对应位ON,具体情况见表3-12。

高速计数器的复位(即高速计数器缓冲区置为0000)有两种复位方法,一种是硬件复位,另一种是软件复位。

硬件复位:将CPU的DIP开关的第7位、第8位置为ON,则硬件复位有效,这时输

表3-12 高速计数当前值与输出位的关系表

入点0001是高速计数器的硬件复位输入端,当它变为ON时,使高速计数器复位。硬件复位信号的脉宽应大于250μs。

软件复位:内部辅助继电器1807使高速计数器软件复位。当1807为ON时,高速计数器的当前值被置为0000。

图3-30为高速计数器的硬件、软件复位编程。

图3-30 高速计数器的硬件、软件复位编程

(a)高速计数器的硬件复位;(b)高速计数器的软件复位

硬件复位和软件复位可以同时使用,这时它们要并行接入,并且软件复位时,复位信号可能要延时一个扫描周期才起作用。

高速计数器指令不能安排在JMP、JME指令之间,可用在IL指令与ILC指令之间。这是因为IL指令条件不满足时,硬件复位信号仍然有效,能使对应的输出点ON或OFF。

高速计数器占用下列资源:输入点0000(计数输入用)、输入点0001(硬件复位输入端)、内部辅助继电器1807(软件复位)、TIM/CNT47(当前计数位)、DM32~DM63(上下限值)。

电源掉电时,高速计数器保持掉电前的计数值。在编程器上可以监视高速计数器的当前值。可提供16个输出点,如果需要多于16个输出点时,可通过编程实现。

高速计数器的梯形图符号、应用程序及时序图如图3-31所示。

图3-31 FUN 98指令的上下限编程和定时图

(a)梯形图;(b)定时图

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

我要反馈