《CPM1A欧姆龙-PLC指令系统及编程.ppt》由会员分享,可在线阅读,更多相关《CPM1A欧姆龙-PLC指令系统及编程.ppt(320页珍藏版)》请在三一办公上搜索。
1、6.1 概述6.2 基本编程指令6.3 保持、微分指令6.4 顺序控制和暂存指令6.5 定时器和计数器应用指令6.6 数据比较类应用指令6.7 数据转换类应用指令6.8 数据移位类应用指令6.9 数据传送类应用指令6.10 数据运算类应用指令,6.11 子程序和中断控制类应用指令6.12 高速计数器应用指令6.13 其他特殊应用指令6.14 特殊运算指令6.15 通信指令6.16 典型应用举例,CPM1A共有:基本指令14条,应用指令79条(有功能号)。指令执行的典型时间是:基本指令:LD指令的执行时间为0.64 s。应用指令:MOV指令:16.3 s。PLC编程可以以梯形图形式出现,也可以用
2、指令形式表示,两者可以相互转化。,6.1 概述,助记符指令的一般格式为:指令码 操作数1 操作数2操作数3或 指令码 操作数,【例1】某指令ADD(30)#1270*DM0101DM0123 由指令码可知,该指令为一条BCD码加法运算指令。指令的三个操作数分别为参加运算的加数、被加数和结果。其中加数为立即数操作数1270。被加数为间接寻址操作数,程序在DM0101通道中取出操作数的实际地址。运算结果为直接寻址操作数,即把和数送至DM0123通道。,小于标志LE(25507),执行比较指令时,如果第一操作数小于第二操作数,该位置ON。等于标志EQ(25506),执行比较指令时两操作数相等,或执行
3、运算指令时运算结果等于0,该位置ON。大于标志GR(25505),执行比较指令时,如果第一操作数大于第二操作数,该位置ON。进位标志CY(25504),执行运算指令时,如果结果最高位向上有进位或借位,该位置ON。出错标志ER(25503),执行指令出错时该位置ON。典型的执行错误有操作数地址错、控制字无定义等。出错标志为ON时,指令将停止执行。,6.2基本编程指令,基本编程指令主要包括与、或、非、输出、复位、置位等逻辑指令。另外,普通定时器和计数器指令也没有功能号,也归为基本指令。共14条。所有无功能号的指令称为基本编程指令。,1 LD和LD NOT 指令格式:LDNLD NOT N其中的操作
4、数N为位,即LD和LD NOT指令只能以位为单位进行操作。这里的N可以是IR、SR、AR、HR、LR、TR或TC。功能:装入指令。用来表示一个逻辑运算的开始,它们的执行不会影响标志位。LD表示N的常开触点与左端母线相连。LD NOT表示N的常闭触点与左端母线相连。说明:LD和LD NOT指令的执行不会影响标志位。,2 OUT和OUT NOT指令格式:OUTN OUT NOTN其中的操作数N也是位,它可以是IR、SR、AR、LR、TR或HR。功能:输出指令。用来表示一个运算结果。OUT指令将运算结果输出到N。OUT NOT指令将运算结果取反后输出到N。说明:OUT 和OUT NOT指令也只能以位
5、为单位进行操作。它们的执行不会影响标志位。在程序中不同的线圈可以同条件并联输出。,【例1】OUT和OUT NOT等指令的应用,,指令的程序如下:LD00000OUT01000OUT NOT01001LD NOT00002OUT01002,3 AND和AND NOT指令格式:ANDNAND NOTN其中的操作数N也是位,它可以是IR、SR、AR、LR、HR或TC。功能:逻辑与运算指令。AND表示N与前面的逻辑结果进行与运算。即N的常开触点与前面的逻辑串联。AND NOT表示N取非并与前面的逻辑结果进行与运算。即N的常闭触点与前面的逻辑串联。说明:AND和AND NOT指令只能以位为单位进行操作。
6、它们的执行不会影响标志位。在程序中逻辑与运算的串联触点个数是没有限制的。,【例2】AND和AND NOT指令的应用。指令的程序如下:LD 00001AND00002AND NOT00003OUT01000,4 OR和OR NOT指令格式:ORNOR NOTN其中的操作数N也是位,它可以是IR、SR、AR、LR、HR或TC。功能:逻辑或运算指令。OR表示N与前面的逻辑结果进行或运算。即N的常开触点与前面的逻辑并联。OR NOT表示N取非并与前面的逻辑结果进行或运算。即N的常闭触点与前面的逻辑并联。说明:OR和OR NOT指令只能以位为单位进行操作。它们的执行不会影响标志位。在程序中逻辑或运算的并
7、联触点个数是没有限制的。,【例3】OR和OR NOT等指定的应用程序段为:LD00000OR 00001OR NOT00002OUT01001这段程序表示的运算逻辑为:当三个输入条件00000为ON或00001为ON,或00002为OFF中有一个被满足时,输出01001就会被置ON。,5 AND LD和OR LD指令格式:AND LDOR LD功能:触点组操作指令。AND LD指令表示对触点组进行逻辑与运算。OR LD指令表示对触点组进行逻辑或运算。说明:AND LD指令和OR LD指令不需要任何操作数,只表明触点组之间的逻辑运算关系。使用这两条指令有两种方法:分置法和后置法。两种方法可以得到
8、相同的运算结果,但使用分置法时触点组数是没有限制的,而采用后置法时触点组数不能超过8,【例4】设有梯形图为图(a)、(b)所示的两个逻辑运算。将该运算用AND LD和OR LD指令完成,有两种方法实现助记符程序段,分别如下:,图(a)逻辑分置法实现程序段:LD00000OR00003LD00001OR 00004AND LDLD NOT00002OR NOT00005AND LDOUT01001,图(a)逻辑后置法实现程序段:LD00000OR00003LD00001OR 00004LD NOT00002OR NOT00005AND LDAND LDOUT01001,图(b)逻辑分置法实现程序
9、段:LD00000AND00002LD00003AND NOT00004OR LDLD NOT00005AND NOT00006OR LDOUT01001,图(b)逻辑后置法实现程序段:LD00000AND00002LD00003AND NOT00004LD NOT00005AND NOT00006OR LDOR LDOUT01001,6 SET和RESET指令格式:SETNRESETN其中的操作数N也是位,它可以是IR、SR、AR、LR或HR。功能:置位和复位指令。用来完成直接对位的置位或复位操作。当SET指令的执行条件满足时置N为ON。当RESET指令的条件满足时置N为OFF。,【例5】在
10、00000和00002的状态变化已知的条件下,下面程序段执行的结果如图所示。LD00000SET20000LD00002RESET20000,7、编 程 规 则在编制梯形图或助记符程序时,应注意遵循以下编程规则:(1)每一个内部继电器的触点在程序中可以无限次重复使用,但其线圈在同一程序中一般只能使用一次。同一继电器的多线圈使用会引起逻辑上的混乱,应尽量避免。(2)梯形图信号流向只能自左向右,垂直分支上不可以有任何触点。,【例1】梯形图的编制举例。在下图的梯形图例中,图(a)为不规范的梯形图,图(b)为规范的梯形图。,(3)继电器的线圈应该放在每一运算逻辑的最右端,在线圈右端不能再有任何触点。线
11、圈不可以与左端母线直接相连,如果逻辑上有这种需要时也要通过一合适的常闭触点来实现。,【例2】下图所示逻辑应用了特殊继电器中的常ON触点来实现上电后一直执行的操作。,(4)编程时对于复杂逻辑关系的程序段,可按照先难后易的基本原则实现。当有几个串联支路相并联时,可按先串后并的原则将触点多的支路放在梯形图的最上端。当有几个并联支路相串联时,可按先并后串的原则将触点多的支路放在梯形图的最左端。,【例3】梯形图等效变换图例如图所示。,LD00001 LD00002LD00002 AND00003AND00003 OR00001OR LD OUT01001OUT01001,图(a)等效变换前程序段 图(a
12、)等效变换后程序段,图(b)等效变换前程序段 图(b)等效变换后程序段LD00001 LD00002LD00002 OR00003OR00003 AND00001AND LD OUT01001OUT01001,8 TIM指令格式:TIMNSV其中:操作数N为定时器TC号,取值范围为十进制数000127。操作数SV为定时器的设定值,由4位BCD码组成,可以是IR、SR、HR、AR、LR、DM、*DM、#,取值范围00009999。功能:定时器指令。TIM是最小单位为0.1秒的减一计数器,故定时范围为0999.9秒。当输入条件为ON时,TIM开始记时。记时操作为每0.1秒当前值PV减一。当PV等于
13、0时,定时到,TIM状态置ON。当输入条件为OFF或电源掉电时,TIM被复位。复位后状态置OFF,送SV为新的PV值。,【例1】TIM指令应用图例之一如图所示。图中的定时器TIM000的定时时间为60秒,即当00000为ON时,TIM开时记时。60秒以后定时器定时到,程序段中的01000为ON。相应的梯形图程序如下:LD00000TIM000#0600LDTIM000OUT01000,9 计数器CNT指令格式:CP条件R条件CNTNSV其中:操作数N为计数器TC号,取值范围为十进制数000127。操作数SV为计数器的设定值,由4位BCD码组成,可以是IR、SR、HR、AR、LR、DM、*DM、
14、#,取值范围00009999。CNT在程序中有两个输入条件,故在格式中专门列出。在这里CP为计数脉冲输入端。R为复位端。,功能:计数器指令。减一计数器。当R为OFF时计数器为计数状态。计数时,CP每次由OFF变为ON计数一次。计数操作由PV值减一完成。当PV值减到0时计数到,计数器输出状态置ON。当R为ON时计数器为复位状态,复位后计数器输出状态置OFF,PV被重新置入SV值。,【例3】ONT指令的应用。CNT指令的程序段如下:LD00000LD00001CNT127#0050LDCNT127OUT01001,6.3 保持指令、微分指令、空操作和结束指令,KEEP指令格式:条件S条件RKEEP
15、(11)N其中的操作数N也是位,它可以是IR、SR、AR、LR或HR。功能:锁存指令。KEEP相当于一个软件保持器。它前面要有两个条件,故在格式中专门列出。条件S为保持器的置位输入。条件R为保持器的复位输入。即:当条件S满足,操作数N置ON并保持;当条件R满足,则操作数N置OFF。特别地,当 S和R同时满足时,按复位优先的运算,操作数N置OFF。,【例6】KEEP指令的应用。KEEP指令的程序段如下:LD00001LD00002KEEP(11)01000 与程序段对应的梯形图例及其相应波形如图所示。例中的置位输入为00001,复位输入为00002,显然利用KEEP指令可以代替相应的自锁运算逻辑
16、。,图KEEP指令应用梯形图例及相应的波形,DIFU(13)和DIFD(14)指令格式:DIFU(13)NDIFD(14)N其中的操作数N也是位,它可以是IR、SR、AR、LR或HR。功能:微分指令。DIFU为上升沿微分指令,当执行条件上升沿时使操作数N有一个扫描周期的ON。DIFD为下降沿微分指令,当执行条件下降沿时使操作数N有一个扫描周期的ON。,【例7】DIFU和DIFD指令的应用。DIFU和DIFD指令的程序段如下:LD00001DIFU(13)20001DIFD(14)20002 与程序段的对应的梯形图例及其相应波形如图所示。其中微分指令的输出脉冲宽度为一个扫描周期。,图4.2.6
17、DIFU(13)和DIFD(14)指令应用梯形图例及相应的波形,NOP(00)指令 格式:NOP(00)功能:空操作指令。不做任何操作,可用于程序调试时的指令暂时删除或程序执行时间微调等特殊用途。,END(01)指令 格式:END(01)功能:结束指令。表示程序的结束。每一程序的最后一条指令必须是END指令。没有END指令的程序不能被执行并会显示相应的出错信息。END指令以后的程序段将不会被执行。说 明:执行END指令时标志位ER、CY、GR、EQ和LE将被置OFF。,6.4 顺序控制和暂存指令,6.4.1 IL和ILC指令格式:IL(02)ILC(03)功能:互锁和互锁解除指令。,IL定义互
18、锁程序段的开始,IL指令的条件就是互锁的条件。ILC定义互锁程序段的结束。当IL前的逻辑条件为ON时,位于IL和ILC指令之间的互锁程序段照常运行。当IL前的逻辑条件为OFF时,互锁程序段将不被执行。此时该程序中的各个输出的状态为:所有的输出线圈置为OFF,所有的定时器被复位,所有的计数器、保持继电器和移位寄存器保持当前状态不变。说明:IL和ILC指令应成对使用,否则在检查程序时会得到出错信息。但该错误并不影响程序的执行。,例1】IL和ILC指令的应用。有互锁程序段如图4.4.1(a)所示,无互锁程序段如图4.4.1(b)所示。当互锁条件00001为OFF时,无论其他条件如何变化,程序段中的所
19、有输出均保持OFF不变。从逻辑运算上看图(a)和图(b)具有完全相同的功能。,图4.4.1 IL和ILC指令应用例梯形图,6.4.2 TR指令 功能:TR被称为暂存继电器。与LD和OUT指令配合,TR可以用来暂存程序运行的中间结果。利用TR可以方便编程。在程序中可以使用的TR共有8个,分别编号为TR0到TR7。,【例2】TR指令的应用。TR指令的程序段如下:,LD00000OUTTR0AND00001OUT01000LDTR0AND00002OUTTR1AND00003OUT01001LDTR1AND00004OUT01002,图4.4.2 TR指令应用例梯形图,6.4.3 JMP和JME格式
20、:JMP(04)NJME(05)NN为跳转号,可以是0049之间任何十进制数字。功能:跳转和跳转结束指令。,当JMP指令前的执行条件为OFF时,CPU将跳过JMP和JME指令之间的程序段,直接执行其后面的程序内容。当JMP指令前的执行条件为ON时,则不进行跳转,如同没有跳转指令时一样执行。JMP、JME指令和互锁程序的最大不同是,当发生跳转时,JMP和JME指令之间程序段中的所有输出、保持器、定时器和计数器状态都会保持不变。且被跳转的程序段不再占用扫描时间。,【例3】JMP和JME指令应用图例如图所示。,图4.4.3 JMP和JME指令应用例梯形图,4.4.4 JMP指令嵌套应用例梯形图,6.
21、5 定时器和计数器应用指令,6.5.2 TIMH指令格式:TIMH(15)NSV其中:操作数N和SV的定义和取值范围与TIM指令相同。功能:高速定时器指令。最小定时单位为0.01秒。定时范围为099.99秒。其应用和使用方法与TIM指令相同。,6.5.4 CNTR指令格式:ACP条件SCP条件R条件CNTR(12)NSV,其中:操作数N为计数器TC号,取值范围为十进制数000225(CPM/A为000127)。操作数SV为计数器的设定值,由4位BCD码组成,可以是IR、SR、HR、AR、LR、DM、*DM、#,取值范围00009999。CNTR在程序中有三个输入条件。ACP为加计数脉冲输入端。
22、SCP为减计数脉冲输入端。R为复位端。功能:可逆循环计数器指令。当R为OFF时,为计数状态。计数时每当ACP由OFF变为ON时,PV值做一次加法运算。每当SCP由OFF变为ON时,PV值做一次减法运算。当PV值加到等于SV后再有加一脉冲,CNTR的状态置ON,PV值变为0。当PV值减到0再有减一脉冲,CNTR的状态置ON,PV值被置入SV值。当R为ON时为复位状态。复位时CNTR状态为OFF,ACP和SCP脉冲不起作用。,【例4】CNTR指令的应用。CNTR指令的程序段如下:LD00000LD00001LD00002CNTR(12)126#0100LDCNT126OUT01000,由程序可知可
23、逆计数器CNTR126的SV=100,在加一运算时,当加到PV=SV,再加一,PV=0,CNTR为ON。若再加一,PV=1,CNTR为OFF。在减一运算时,当减到PV=0,再减一,PV=SV,CNTR为ON。若再减一,PV=SV-1,CNTR为OFF。与程序段对应的梯形图例及其相应的工作时序波形如图所示。,图4.5.4 CNTR指令应用例梯形图及工作时序波形图,6.5.4 定时器和计数器的扩展,6.6 数据比较类应用指令,6.6.1 CMP和CMPL指令格式:CMP(20)C1C2CMPL(60)C1C2,其中:操作数C1为比较数1,操作数C2为比较数2。CMP的两个比较数可以是IR、SR、A
24、R、LR、HR、TC、DM、*DM、#。CMPL的两个比较数可以是IR、SR、AR、LR、HR、TC、DM、*DM。,功能:CMP为单字比较指令,完成C1和C2 两个字的比较。CMPL为双字比较指令,完成C1与C1+1组成的双字和C2与C2+1组成的双字的比较。当指令前的执行条件为ON时执行比较操作,比较操作的结果送SR中的标志位。若C1C2,大于标志位(LG)25505置ON。若C1=C2,等于标志位(EQ)25506置ON。若C1C2,小于标志位(LE)25507置ON。SR中的比较结果,可以用做其他运算的条件。,【例1】CMP指令的应用。CMP指令的程序段如下:LD00000CMP(20
25、)HR10#0100LD00000AND25505OUT01000LD00000AND25506OUT01001LD00000AND25507OUT01002,图4.6.1 CMP指令应用例梯形图,6.6.2 BCMP指令格式:BCMP(68)BCMP(68)CDCDCBCBRR,其中:操作数CD为比较数据,它可以是IR、SR、AR、LR、HR、TC、DM、*DM、#。操作数CB为比较数据块起始通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。操作数R为比较结果通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。功能:块比较指令。用数据CD和CB开始的16个上下限数据
26、进行比较,比较结果送R通道。,表6.6.1 CB通道与R位的对应关系,【例2】设以下数据存储区中的数据值为:DM0005=0000DM0006=0100DM0007=0101DM0008=0200DM0009=0201DM0010=0300 DM0036=1600,执行下边程序段:LD20000BCMP(68)#0210DM0005HR05当20000为ON时进行块比较操作。由于比较数据等于210,介于201和300之间,因此,比较操作的结果是将HR05通道的第二位即HR0502置ON。配合相应的硬件设备,BCMP指令可以用来实现运动部件的位置控制。,6.6.3 TCMP指令格式:TCMP(8
27、5)TCMP(85)CDCDCBCBRR,其中:操作数CD为比较数据,它可以是IR、SR、AR、LR、HR、TC、DM、*DM、#。操作数CB为比较数据表起始通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。操作数R为比较结果通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。功能:表比较指令。当指令的执行条件满足时,将数据CD与从TB开始的16个通道分别进行比较。若CD与其中的某一通道数据相等,则置R中的相应位为ON。TCMP指令在程序中可以用来查询某一指定数据。,【例3】设由HR00到HR15的16个通道中只有HR06和HR07等于100,则表比较指令执行后,01
28、006和01007为ON。LD00000TCMP(85)#0100HR00010,6.6.4 ZCP和ZCPL指令格式:ZCP的指令格式:ZCP(-)CDLLUL,其中:操作数CD为比较字,它可以是IR、SR、AR、LR、HR、TC、DM、#。操作数LL为数据范围下限,它可以是IR、SR、AR、LR、HR、TC、DM、#。操作数UL为数据范围上限,它可以是IR、SR、AR、LR、HR、TC、DM、#。LLUL。,ZCPL指令格式:ZCPL(-)CDLLUL,其中:操作数CD为比较字,它可以是IR、SR、AR、LR、HR、TC、DM。操作数LL为数据范围下限,它可以是IR、SR、AR、LR、HR
29、、TC、DM。操作数UL为数据范围上限,它可以是IR、SR、AR、LR、HR、TC、DM。LLUL。,功能:ZCP是数据区域范围比较指令;ZCPL是双字数据区域范围比较指令。数据区域范围比较时用CD和由LL和UL指定的数据区域进行比较,根据比较结果置相应的标志位:若CDLL,则置LE为ON;若LLCDUL,则置EQ为ON;若ULCD,则置GR为ON。双字数据区域范围比较时参加比较的数据为CD和CD+1组成的8位二进制数,数据区域范围的上、下限分别由UL、UL+1和LL、LL+1两个8位二进制数指定。输出结果送相应的标志位。,【例4】设有以下程序段:LD00001ZCP(-)200#0100#8
30、F00,在执行程序段条件满足时,可以根据标志位的结果知道IR200中的数据是否在指定区域范围内(01008F00),或者是否大于或小于指定的数据区域范围。,6.7 数据转换类应用指令,6.7.1 BIN和BCD指令格式:BIN(23)BIN(23)SSRRBCD(24)BCD(24)SSRR,其中:操作数S为源通道,操作数R为目的通道。S和R可以是IR、SR、AR、LR、HR、TC、DM、*DM。功能:BIN为BCD码到二进制码的转换指令;BCD为二进制码到BCD码的转换指令。当执行条件满足时,将S中的数据完成所需转换并将结果送R。S中的内容不变。说明:当转换结果等于0000时,系统置相等标志
31、25506为ON。,【例1】设指令执行前210通道中有数据000F。当下面的BCD指令执行后,211通道被赋值0016,210通道中数据000F不变。LD00005BCD(24)210211,6.7.2 MLPX和DMPX指令格式:MLPX(76)MLPX(76)SSCCRR,其中:操作数S为源通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。操作数C为控制字,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。操作数R为目的通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。DMPX(77)DMPX(77)SSCCRR,其中:操作数S为源通道,它可以是IR、S
32、R、AR、LR、HR、TC、DM、*DM。操作数C为控制字,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。操作数R为目的通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM、#。功能:MLPX是十六进制数的译码指令。它可以按照C的规定把S中最多4位十六进制数译为十进制数,根据十进制结果将由R指定的目的通道中的对应位置为ON,而S中的内容不变。第1位数字结果影响R,第2位数字结果影响R+1,依次类推直至D+3。,图4.7.1 MLPX指令控制字定义,图4.7.2 DMPX指令控制字定义,【例2】设在内部通道中有数据200=0090201=0001202=0000则当0000
33、0为ON时执行下面的十六进制编码操作指令后,编码的结果是通道202中的数据变为0400,即20209被置为ON。LD00000MLPX(76)200201202,6.7.3 ASC和SDEC指令格式:ASC(86)ASC(86)SSCCRRSDEC(78)SDEC(78)SSCCRR,其中:操作数S为源通道,它可以是IR、SR、AR、LR、HR、TC、DM、*DM。操作数C为控制字,它可以是IR、SR、AR、LR、HR、TC、DM、*DM、#。操作数R为目的开始通道,它可以是IR、SR、AR、LR、HR、DM、*DM。功能:ASC为ASCII码转换指令,一次可以将S中的最多4位十六进制数转换成
34、ASCII码。转换的结果存入以R开始的目的通道中。,图为ASC指令控制字C的定义。,图4.7.4 SDEC 指令控制字定义,【例3】设有如下的ASC指令:LD00001ASC(86)009#2010HR00 设有数据009=0013,则在ASC指令的执行条件00001满足时,执行ASCII码转换,按照C的规定,转换的结果是HR00=31B3。,6.7.4 HEX指令格式:HEX(-)HEX(-)SSCCDD,其中:操作数S为源开始通道,它可以是IR、SR、AR、LR、HR、TC、DM、#。操作数C为控制字,它可以是IR、SR、AR、LR、HR、TC、DM、#。操作数D为目的开始通道,它可以是I
35、R、SR、AR、LR、HR、DM。C由4位十六进制数组成。其中第0位指定D中的第一位数据所在的位置(03);第1位指定要转换的字节数(0:1个字节;1:2个字节;2:3个字节;3:4个字节);第2位指定S中的开始字节(0:低字节;1:高字节);第3位指定校验方式(0:无;1:偶校验;2:奇校验)。,功能:ASCII码到十六进制转换指令。执行条件满足时,把S开始的指定字节的ASCII码转换为相应的十六进制数送入D开始的目的通道中。,6.7.5 SCL、SCL2和SCL3指令,格式:SCL(66)SCL(66)S1S1PiPiRRSCL2(-)SCL2(-)S2S2PjPjRRSCL3(-)SCL
36、3(-)S2S2PjPjRR,其中:操作数S1、S2为源通道,S1可以是IR、SR、AR、LR、HR、TC、DM、#;S2可以是IR、SR、AR、LR、HR、DM。操作数Pi、Pj为第一参数通道,Pi可以是IR、SR、AR、LR、HR、TC、DM;Pj可以是IR、SR、AR、LR、HR、DM。操作数R为结果通道,它可以是IR、SR、AR、LR、HR、DM。功能:SCL是十六进制到BCD码线性转换指令。与BCD指令不同的是,SCL是按用户指定的线性关系来进行转换的。其线性关系由从Pi到Pi+1四个通道的数据给定的两点来描的。,在以BCD码为纵坐标,十六进制数为横坐标的二维空间中,Pi为点1的纵坐
37、标值(Ay),取值范围00009999;Pi+1为点1的横坐标值(Ax),取值范围0000FFFF;Pi+2为点2的纵坐标值(By),取值范围00009999;Pi+3为点2的横坐标值,取值范围0000FFFF。设被转换的十六进制数为S,则转换结果为:R=By-(By-Ay)/(Bx-Ax)(Bx-S)。最后结果取运算结果最接近的整数。如果运算结果大于9999,则取9999;如果运算结果小于0000,则取0000。,SCL2是带符号十六进制到BCD码线性转换指令,按照一定线性关系将4位带符号的十六进制数转换成相应的BCD码,其线性关系由用户在指令中指定的直线的斜率和x轴上的截距来描述。在Pj到
38、Pj+2三个通道中,Pj为横坐标截距,取值范围为十六进制数80007FFF(-3276832767);Pj+1为x,取值范围为十六进制数80007FFF;Pj+2为y,取值范围为BCD码00009999。x/y就是指定的直线的斜率。设被转换的十六进制数为S,则转换结果为:R=(x/y)(S-P1)。如果最后结果为负数,则置CY为ON;如果运算结果大于9999,则取9999;如果运算结果小于-9999,则取-9999。,SCL3是BCD码到带符号十六进制线性转换指令。按照一定线性关系将4位BCD码转换成相应的带符号的十六进制数,其线性关系由用户在指令中指定的直线的斜率和y轴上的截距来描述。在Pj
39、到Pj+4五个通道中,Pj为纵坐标截距,取值范围为十六进制数80007FFF(-3276832767);Pj+1为x,取值范围为BCD码00009999;Pj+2为y,取值范围为十六进制数80007FFF;Pj+3为纵坐标上限值,取值范围为十六进制数80007FFF;Pj+3为纵坐标下限值,取值范围为十六进制数80007FFF。设被转换的BCD码为S,则转换结果为:R=(x/y)(S-P1)。指令执行时若CY为ON,则源数据按负数处理,故S的实际有效范围是-99999999;如果运算结果大于或小于给定上下限,则最后结果取上限或下限值。,【例4】设有如下的SCL指令:LD25313CLC(41)
40、LD00100SCL3(-)LR02DM0000DM0001,并有如下数据:DM0000=0005DM0001=0003DM0002=0006DM0003=07FFDM0004=F800LR02=0100则在程序段的执行条件00100满足后,执行结果是:DM0100=00CDCY=0,6.7.6 BINL和BCDL指令格式:BINL(58)BINL(58)SSRRBCDL(58)BCDL(58)SSRR,其中:操作数S为源开始通道,它可以是IR、SR、AR、TC、LR、HR、DM。操作数R为目的开始通道,它可以是IR、SR、AR、LR、HR、DM。功能:BINL是双字长BCD码(8位BCD,低
41、4位在S,高4位在S+1)到二进制数转换指令;BCDL是双字长二进制数(32位,低16位在S,高16位在S+1)到BCD码转换指令。当条件满足时,将S和S+1中的双字节数据完成相应的转换,结果存入R和R+1。,6.7.7 SEC和HMS指令格式:SEC(-)SEC(-)SSRR000000HMS(-)HMS(-)SSRR000000,其中:操作数S为源开始通道,它可以是IR、SR、AR、TC、LR、HR、DM,数据格式为BCD码。操作数R为目的开始通道,它可以是IR、SR、AR、LR、HR、DM。数据格式为BCD码。功能:SEC为小时到秒转换指令,用来将按小时/分/秒组成的时间值转换成以秒为单
42、位的时间值。在源通道中的BCD码数据中,S 的前两位为分,后两位为秒;S+1的四位为小时。故可转换的最大时间值为9999小时59分59秒。转换结果存入R和R+1中,对应的最大时间值为35 999 999秒。HMS为秒到小时转换指令,它是SEC的反操作。,例5】设有如下的SEC指令:LD00000SEC(-)HR12DM0100000,设程序段执行前有如下数据:HR12=3207HR13=2815它表示源时间值为2815小时32分07秒。则程序段条件满足,执行后有结果:DM0100=5927DM0101=1013它表示结果时间值为10 135 927秒。,4.7.8 NEG指令格式:NEG(-)
43、NEG(-)SSRR000000,其中:操作数S为源通道,它可以是IR、SR、AR、TC、LR、HR、DM、#。操作数R为目的通道,它可以是IR、SR、AR、LR、HR、DM。功能:二进制补码转换指令,将S中的二进制数转换为二进制补码结果存入R。其操作过程与用S减0000结果送R相同。,4.8 数据移位类应用指令,4.8.1 SFT指令,格式:条件IN 条件SP条件RSET(10)STE,SFT指令有三个输入条件:IN为数据输入,SP为移位脉冲输入,R为复位输入。操作数ST指定开始通道,操作数E指定结束通道,它们可以是IR、SR、AR、LR、HR。但是E不能大于ST,且二者必须在相同的区域内。
44、功能:移位操作指令。只有当条件R为OFF时才进行移位操作。所谓的移位操作是指SP输入脉冲的每个上升沿,都会使由ST和E所指定数据中的所有二进制位依次左移一位。移位后数据最高位由于移出而丢失,最低位补入IN的状态。当R为ON时进行复位操作。复位时所有的数据位置0,IN和SP的输入无效。,【例1】在下面的指令中,使用了SR中的1秒时钟脉冲(25502)作为移位脉冲,实现的是每秒移位一次的操作。参加移位的数据为由200202三个通道组成的48位二进制数。LD00001LD25502LD00002SFT(10)200202,4.8.2 SFTR指令格式:SFTR(84)SFTR(84)CCSTSTEE
45、,操作数C为控制字,它可以是IR、SR、HR、AR、LR、DM、*DM、#。操作数ST为开始通道。操作数E为结束通道。它们可以是IR、SR、HR、AR、LR、DM、*DM。ST不能大于E,且二者必须是在同一区域内。功能:可逆移位寄存器指令。指令中的控制字C的定义如图所示。当执行条件满足时,根据C的规定执行二进制数据的左移或右移操作。C中的R为复位操作标志,SP为移位操作标志。移位数据包括进位标志(25504)在内。即左移时数据通道中的最高位移入进位标志,数据通道的最低位移入C中的输入数据IN。右移时输入数据IN移入数据通道最高位,数据通道最低位移入进位标志。复位操作时,数据通道连同进位标志一并
46、置0。,图4.8.1 SFTR指令控制字定义,【例2】设有如下的程序段:LD00000OUT20012LD00001OUT20013LD00002OUT20014LD00003OUT20015LD00004SFTR(84)200DM0010DM0011,图4.8.2 SFTR指令应用例梯形图,4.8.3 WSFT指令格式:WSFT(16)WSFT(16)STSTEE 操作数ST为开始通道。操作数E为结束通道。它们可以是IR、SR、HR、AR、LR、DM、*DM。ST不能大于E,且二者必须是在同一区域内。功能:字移位指令。实现每次一个通道(16位二进制数)数据的左移。最低位置0000,最高位移出
47、丢失。,【例3】设有如下的WSFT指令:LD 00000WSFT(16)AR00AR02 又设指令执行前,数据通道的内容为:AR00=1234AR01=4567AR02=789A 则指令执行一次后,数据通道的内容改变为:AR00=0000AR01=1234AR02=4567,图4.8.3 WSFT指令应用例梯形图,4.8.4 ASL和ASR指令格式:ASL(25)ASL(25)CHCHASR(26)ASR(26)CHCH,其中:操作数CH为移位通道,它可以是IR、SR、HR、AR、LR、DM、*DM。功能:ASL为算术左移指令,执行算术左移操作时,将CH中的16位二进制数据顺序左移一位,最高位
48、移入进位标志,最低位补入一个0。ASR为算术右移指令,执行算术右移操作时,将CH中的16位二进制数据顺序右移一位,最低位移入进位标志,最高位补入一个0。,【例4】设原操作数200=6786,则下面指令执行一次后得200=CF0C。LD00000ASL(25)200 说明:当CH中的数据为0000时,系统置相等标志25506为ON。,4.8.5 ROL和ROR指令格式:ROL(25)ROL(25)CHCHROR(26)ROR(26)CHCH,其中:操作数CH为移位通道,它可以是IR、SR、HR、AR、LR、DM、*DM。功能:ROL为循环左移指令,执行循环左移操作时,将CH中的16位数据连同进位
49、位循环左移一位,CH中的最高位移入进位标志,原进位位的值移入CH的最低位。ROR为循环右移指令,执行循环右移操作时,将CH中的16位数据连同进位位循环右移一位,CH中的最低位移入进位标志,原进位位的值移入CH的最高位。,【例5】设原操作数200=6786,且25504=1。则下面指令执行一次后得200=CF0D,25504=0。LD00000ROL(27)200 说明:当CH中的数据为0000时,系统置相等标志25506为ON。,4.8.6 SLD和SRD指令格式:SLD(74)SLD(74)STSTEESRD(75)SRD(75)STSTEE,其中:操作数ST为开始通道。操作数E为结束通道。
50、它们可以是IR、SR、HR、AR、LR、DM、*DM。ST不能大于E,且二者必须是在同一区域内。功能:SLD为十六进制数左移指令。左移时每位十六进制顺序左移一位,最高一位数移出丢失。最低位补入数字0。SRD为十六进制数右移指令。右移时每位十六进制顺序右移一位,最低一位数移出丢失。最高位补入数字0。,【例6】设指令执行前有数据200=6786201=CF0D则下面指令执行一次后的数据为200=7860201=F0D6LD00000SLD(74)200201,4.8.7 ASFT指令格式:ASFT(17)ASFT(17)CCSTSTEE,其中:操作数C为控制字,它可以是IR、SR、HR、AR、LR