《数据传送和数据比较指令.ppt》由会员分享,可在线阅读,更多相关《数据传送和数据比较指令.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据传送和数据比较指令有两个以上操作数数据传送和数据比较指令有两个以上操作数要注意这些指令的操作数的含义及其范围要注意这些指令的操作数的含义及其范围这些指令多数都有微分和非微分两种形式这些指令多数都有微分和非微分两种形式要注意指令微分和非微分形式时用法的区别要注意指令微分和非微分形式时用法的区别数据传送指令数据传送指令数据比较指令数据比较指令一、一、数据传送指令数据传送指令单字传送指令单字传送指令MOV数字数字传送指令传送指令MOVD位位传送指令传送指令MOVB块块设置指令设置指令BSET块块传送指令传送指令XFER单字单字分配指令分配指令DIST数据交换数据交换指令指令XCHG数据调用数据调
2、用指令指令COLLS:源数据(通道或十六进制数源数据(通道或十六进制数)D:目的通道号目的通道号功功能能MOV(21)SDMOV(21)SDMOV(21)SDMOV(21)SD非微分:在执行条件为非微分:在执行条件为ON时,将时,将S传送到传送到D中中(每个扫描周期都执行)。(每个扫描周期都执行)。微微分:在执行条件分:在执行条件OFFON时,将时,将S传送到传送到D中中(只在条件满足时刻执行一次)。(只在条件满足时刻执行一次)。1.单字传送指令单字传送指令MOV(21)/MOV(21)LD25315MOV(21)#0198HR00在在PLC上电的第一个扫描周期,把上电的第一个扫描周期,把01
3、98传送到传送到HR00中中25315MOV(21)#0198HR00分析程序的功能,并写出语句表分析程序的功能,并写出语句表.使用使用MOV指令举例指令举例(1)在此后的各扫描周期,不再执行在此后的各扫描周期,不再执行MOV指令。指令。使用使用DIFU指指令有何作用令有何作用?只要只要0000OFFON,就执行就执行一次一次MOV指令。指令。2000000000DIFU(13)20000MOV(21)LR00HR00分析程序的功能:分析程序的功能:使用使用MOV指令举例指令举例(2)把把LR00中的内容传送到中的内容传送到HR00中。中。LR00中的内容在变中的内容在变化,必要时将其传化,必
4、要时将其传送到送到HR00中。中。00000MOV(21)LR00HR00分析程序的功能分析程序的功能使用使用MOV指令举例(指令举例(3)只要只要00000OFFON,就执行就执行一次一次MOV指令。指令。把把LR00中的内容传送到中的内容传送到HR00中。中。与举例(与举例(2)功能相同。)功能相同。2000000000DIFU(13)20000MOV(21)LR00HR00指令指令MOV几种使用方法的区别几种使用方法的区别(a)与与(c)相同,指令相同,指令MOV都只在都只在00000OFFON时时执行一次。执行一次。(b)指令指令MOV只在只在PLC上电后的第一个扫描周期执上电后的第一
5、个扫描周期执行一次。行一次。25315MOV(21)LR00HR0000000MOV(21)LR00HR00(a)(b)(c)2000000000DIFU(13)20000MOV(21)LR00HR0025313MOV(21)HR00LR00从从PLC上电开始,每个扫描上电开始,每个扫描周期里,都将周期里,都将HR00中的内中的内容传送到容传送到LR00中。中。与上述几种与上述几种MOV指令指令使用方法的区别是:使用方法的区别是:本本程序中,每个扫描周期指令程序中,每个扫描周期指令MOV都执行!都执行!请注意请注意MOV指令指令各种用法的区别各种用法的区别分析程序的功能分析程序的功能使用使用M
6、OV指令举例(指令举例(4)PLC上电时,将上电时,将0100传送到传送到200通道中通道中,作为作为CNT000的设定值的设定值改变计数器设定值的操作:改变计数器设定值的操作:使使00001OFFON,将将0200传送到传送到200通道中;通道中;自自00000ON开始,开始,CNT000按设按设定值定值100开始计数开始计数(或定时或定时)。此后计数器按设定值此后计数器按设定值200计数计数断开断开00000,闭合一次触点,闭合一次触点00002,使使CNT000复位;复位;00001MOV(21)#010020025315255020000100000CNT000200000022531
7、5MOV(21)#0200200分析程序的功能分析程序的功能使用使用MOV指令举例(指令举例(5)2.块块传送指令传送指令XFER(70)/XFER(70)N:通道数(通道数(BCD数数)功能功能在执行条件为在执行条件为ON时,将几个连续通道中的数据传时,将几个连续通道中的数据传送到另外几个连续通道中。送到另外几个连续通道中。S:源数据块首通道源数据块首通道D:目的通道首通道目的通道首通道XFER(70)NSDXFER(70)NSDXFER(70)NSDXFER(70)NSD执行块传送指令时数据传送如下所示:执行块传送指令时数据传送如下所示:S1234S+182ACS+290B6S+N-10D
8、FED1234D+182ACD+290B6D+N-10DFE3.块设置指令块设置指令BEST(71)/BEST(71)S:源数据(通道或十六进制数源数据(通道或十六进制数)功能功能在执行条件为在执行条件为ON时,将时,将S传送到从传送到从St到到E的各通道中。的各通道中。St:开始通道开始通道E:结束通道号结束通道号BEST(71)SStEBEST(71)SStEBSET(71)SStEBSET(71)SStELD00000MOV(21)#0100HR00TIM000HR00ANDTIM000OUT01000LD00001BSET(71)#0050TIM000TIM00000001BSET(7
9、1)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00分析程序的功能,写语句表分析程序的功能,写语句表使用使用BEST指令举例指令举例00001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00BSET指令的第二、第三操作数指令的第二、第三操作数都是都是TIM000,即执行即执行BSET指令,指令,只把数据传送到只把数据传送到TIM000中。中。功能功能在在00001OFF、00000OFFON时,执行一次时,执行一次MOV指令,将指令,将#0
10、100传送到通道传送到通道HR00中。中。自此自此TIM000以设定值以设定值10秒定时。秒定时。经过经过10秒,定时器秒,定时器TIM000ON,线圈线圈01000ON。00001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00当需要改变定时器当需要改变定时器TIM000的当前值时,可通过执行的当前值时,可通过执行BSET指令来实现。指令来实现。执行执行BSET指令将指令将0050传送到传送到TIM000中,中,TIM000的当前的当前值立即变为值立即变为0050。例如,在例如,在TIM000的当前值为的当
11、前值为0089时,令时,令00001ON一次:一次:自此,自此,TIM000的当前值从的当前值从0050开始,每隔开始,每隔0.1秒减秒减1,一,一直减到为直减到为0000为止。为止。00001BSET(71)#0050TIM000TIM000TIM00001000MOV(21)#0100HR0000000TIM000HR00由于由于HR00中的数据没有改变,中的数据没有改变,在下一次定时器在下一次定时器TIM000工作时,工作时,其定时值仍然是其定时值仍然是0100。以上是用以上是用BSET指令改变定时指令改变定时器的当前值。器的当前值。用用BSET指令也可以改变定时指令也可以改变定时器的设
12、定值。方法为:器的设定值。方法为:本例中,令本例中,令BSET指令的第指令的第2、3操操作数为作数为HR00,执行执行BSET指令后,指令后,TIM000的设定值就为的设定值就为0050了。了。MOV与与BSET指令的异同指令的异同执执行行一一次次MOV指指令令,只只能能向向一一个个通通道道传传送送一一个个字字;而而执执行行一一次次BSET指指令令,可可以以向向多多个个通通道道传传送同一个字。送同一个字。TIM/CNT的的操操作作数数是是通通道道时时,用用MOV和和BSET指令都可以改变指令都可以改变TIM/CNT的设定值。的设定值。用用BSET指指令令既既可可改改变变TIM/CNT的的设设定
13、定值值、也也可以改变可以改变TIM/CNT的当前值的当前值。因为因为MOV指令不能向指令不能向TC区传送数据,区传送数据,所以不能所以不能用用MOV指令改变指令改变TIM/CNT的当前值的当前值!4.位传送指令位传送指令MOVB(82)/MOVB(82)bit00bit07指定指定S中的位号中的位号bit08bit15指定指定D中的位号中的位号MOVB(82)SCDMOVB(82)SCDMOVB(82)SCDMOVB(82)SCDS:源数据源数据D:目的通道目的通道C(BCD):控制数据控制数据在执行条件为在执行条件为ON时,根据时,根据C的内容,将的内容,将S传送到传送到D中。中。C内容的含
14、义内容的含义指令的功能指令的功能分析程序的功能,写语句表分析程序的功能,写语句表使用使用MOVB指令举例指令举例MOVB(82)#0050HR0020025315LD00005MOVB(82)HR00#1500200程序功能程序功能C的含义的含义例:设例:设HR00的内容为的内容为1000100010000101执行指令之后执行指令之后20015为为ON(1)bit00bit07:S中的位中的位bit08bit15:D中的位中的位在在PLC上电之初,将上电之初,将HR0000的内容传送到的内容传送到20015中中。5.数字传送指令数字传送指令MOVD(83)/MOVD(83)MOVD(83)S
15、CDMOVD(83)SCDMOVD(83)SCDMOVD(83)SCD在执行条件为在执行条件为ON时,根据时,根据C的内容,的内容,将将S中指中指定的数字传送到定的数字传送到D中指定的数字位中。中指定的数字位中。指令的功能指令的功能S:源数据源数据D:目的通道目的通道C:控制数据控制数据C(BCD数数)的含义的含义指令各操作数的含义指令各操作数的含义MOVD(83)SCDS中第一个要传送的数字位位号中第一个要传送的数字位位号不用不用C数字数字3 数字数字2 数字数字1 数字数字0S中中要传送的数字位数要传送的数字位数01位位12位位23位位34位位指定指定D中接收第一个数字的位号中接收第一个数
16、字的位号C=#0030使用使用MOVD指令举例指令举例(1)根据根据C、确定指令执行结果确定指令执行结果S中第中第0位位数字开始传送数字开始传送传传送送4位位数数字字D中从第中从第0位位开始接收第一个数字开始接收第一个数字MOVD(83)S#0030D0123D0123S 被传送的数字位要连续被传送的数字位要连续例如:例如:1230例如:例如:3 012例如:例如:2 301等等C=#0023使用使用MOVD指令举例指令举例(2)根据根据C、确定指令执行结果确定指令执行结果S中第中第3位数字开始传送位数字开始传送传传送送3位位数数字字D中从第中从第0位位开始接收第一个数字开始接收第一个数字MO
17、VD(83)S#0023D0123D0123S第一个被传第一个被传送的数字送的数字第二个被传第二个被传送的数字送的数字第三个被传第三个被传送的数字送的数字第一个接收第一个接收数字的位数字的位C=#0123使用使用MOVD指令举例指令举例(3)根据根据C、确定指令执行结果确定指令执行结果S中第中第3位数字开始传送位数字开始传送传传送送3位位数数字字D中从第中从第1位开始接收第一个数字位开始接收第一个数字MOVD(83)S#0123D0123D0123S第一个被传第一个被传送的数字送的数字第二个被传第二个被传送的数字送的数字第三个被传第三个被传送的数字送的数字第一个接收第一个接收数字的位数字的位6
18、.单字分配指令单字分配指令DIST(80)/DIST(80)S:源数据源数据DBS:目标基准通道目标基准通道C:控制数据控制数据(BCD)DIST(80)SDBSCCOLL(81)SDBSCDIST(80)SDBSCDIST(80)SDBSC在执行条件为在执行条件为ON时,根据时,根据C的内容,的内容,进行单字数据分配进行单字数据分配或堆栈的进栈操作(栈区由或堆栈的进栈操作(栈区由C的低的低3位确定)位确定)。指令的功能指令的功能1.C的的bit12bit15的内容的内容8时,执行单字数据时,执行单字数据分配分配操作。操作。控制数据控制数据C(BCD)的含义的含义指令功能指令功能当执行条件为当
19、执行条件为ON时,将时,将S的内容传的内容传送到(送到(DBS+C)中,如下图。中,如下图。DIST(80)SDBSCS90B6DBS+C90B62.C的的bit12bit15的内容的内容=9时,执行指令生时,执行指令生成一个堆栈,执行进栈操作。成一个堆栈,执行进栈操作。指令功能:指令功能:进栈方法:进栈方法:每执行一次指令,将每执行一次指令,将S的内容复制到(的内容复制到(DBS+堆栈指针堆栈指针+1)的栈区通道的栈区通道中中,然后指针加,然后指针加1。当执行条件为当执行条件为ON时,执行指令生成一个堆栈(以时,执行指令生成一个堆栈(以C的的低低3位确定栈区通道数),以位确定栈区通道数),以
20、DBS为堆栈指针进行进栈为堆栈指针进行进栈操作。操作。进栈进栈过程举例。过程举例。DIST(80)200DM000021600000200:FFFF216:90050000DM0000DM0001DM0002DM0003DM0004DM0005000000000000000000000001DM0000DM0001DM0002DM0003DM0004DM0005FFFF0000000000000000源源数据数据控制数据控制数据堆栈指针堆栈指针第一次执行第一次执行!0002DM0000DM0001DM0002DM0003DM0004DM0005FFFFFFFF000000000000第二次执行
21、第二次执行!栈区栈区SBs是基准通道是基准通道D是目的通道是目的通道C是控制数据是控制数据(BCD)7.数据调用指令数据调用指令COLL(81)/COLL(81)COLL(81)SBSCDCOLL(81)SBSCDCOLL(81)SBSCDCOLL(81)SBSCD在执行条件为在执行条件为ON时,根据时,根据C的内容,的内容,进行调用数据或进行调用数据或堆栈的出栈操作(栈区由堆栈的出栈操作(栈区由C的低的低3位确定)位确定)。指令的功能指令的功能1.C=00006655数据调用数据调用控制数据控制数据C(BCD)的含义的含义COLL(81)SBSCD指令功能指令功能当执行条件为当执行条件为ON
22、时,将(时,将(SBS+C)传送到传送到D中。中。2.出栈操作出栈操作(包括两种情况包括两种情况)C=90009999先入先出的出先入先出的出栈栈操作操作以以SBS为堆栈指针,按先入先为堆栈指针,按先入先出的原则,将堆栈中的数据传出的原则,将堆栈中的数据传送到送到D中,堆栈指针减中,堆栈指针减1。C=80008999后入先出的出栈操作后入先出的出栈操作以以SBS为堆栈指针,按后入先出的原则,将堆为堆栈指针,按后入先出的原则,将堆栈中的数据复制到栈中的数据复制到D中(堆栈中的内容不变),中(堆栈中的内容不变),堆栈指针减堆栈指针减1。COLL(81)SBSCD先入先出的出栈过程先入先出的出栈过程
23、COOL(81)DM0000#9007200分析:当分析:当SBs=DM0000、C=#9007、D=200时,指令时,指令COLL执行的结果。执行的结果。执行一次执行一次执行前执行前0156000711010001EEEE568C9D6F0000DM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007568C000601561101EEEE0000EEEE9D6FDM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007IR2000001C=#9007栈区栈区DM0001DM0007先入先出先入先出堆栈指针堆栈指针
24、指针减指针减1栈栈区区执行二次执行二次IR2001101后入先出的出栈过程后入先出的出栈过程COOL(81)DM0000#9007200分析:当分析:当SBs=DM0000、C=#8007、D=200时,指令时,指令COLL执行的结果。执行的结果。执行一次执行一次执行前执行前01560007110100011234568C9D6F0000DM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007IR2001234C=#8007栈区为栈区为DM0001DM0007后入先出后入先出堆栈指针堆栈指针指针减指针减1栈栈区区015600061101000112345
25、68C9D6F0000DM0000DM0001DM0002DM0003DM0004DM0005DM0006DM0007执行二次执行二次9D6F不不变变单字比较指令单字比较指令CMP表比较表比较指令指令TCMP双字比较指令双字比较指令CMPL块块比较指令比较指令BCMP二、二、数据比较指令数据比较指令1.单字比较指令单字比较指令CMPCMP(20)C1C2CMP(20)C1C2C1:比较数比较数1C2:比较数比较数2在执行条件为在执行条件为ON时,将时,将C1和和C2进行比较。进行比较。当当C1C2时,标志位时,标志位25505ON当当C1=C2时,标志位时,标志位25506ON当当C1C2时,
26、标志位时,标志位25507ON功能功能使用使用CMP指令举例指令举例(1)写语句表、分析程序功能写语句表、分析程序功能LD00000TIM000#0030CMP(20)TIM000#0200AND25505OUT20000AND25506OUT20001AND25507OUT20002LDTIM000OUT200032550620001TIM000255072000320002CMP(20)TIM000#0200TIM000#0030000002550520000分析程序功能分析程序功能执行指令执行指令CMP时,将时,将TIM000的的当前值与当前值与#0200进行比较。进行比较。255062
27、0001TIM000255072000320002CMP(20)TIM000#0200TIM000#0300000002550520000当当00000为为ON时,时,TIM000开始开始定时、且开始执行定时、且开始执行CMP指令。指令。TIM000的当前值由的当前值由0300每隔每隔0.1秒减秒减1。可见:配合指令可见:配合指令CMP,用一个定时器可以控制用一个定时器可以控制多个输出位。多个输出位。若若TIM000当前值大于当前值大于#0200时,时,25505ON20000ON。若若TIM000的当前值等于的当前值等于#0200时,时,25506ON20001ON。若若TIM000的当前值
28、小于的当前值小于#0200时,时,25507ON20002ON。2550620001TIM000255072000320002CMP(20)TIM000#0020TIM000#0030000002550520000当当TIM000定时到定时到时,时,20002和和20003ON。续续使用使用CMP指令举例指令举例(2)分析本例使用微分指令的原因分析本例使用微分指令的原因由于由于CMP指令没有微分形式指令没有微分形式若欲若欲使使指令指令CMP只在只在00000OFFON时执行一次时执行一次则必须使用指令则必须使用指令DIFU(13)CMP(20)TIM000#002000000255050100
29、0DIFU(13)200002.块比较指令块比较指令BCMPBCMP(68)CDCBRBMP(68)CDCBRBCMP(68)CDCBRBCMP(68)CDCBRCD:比较数据比较数据CB:数据块的起始通道数据块的起始通道R:存结果通道存结果通道功能功能当执行条件为当执行条件为ON时,将时,将CD与每个数据区域比较。与每个数据区域比较。当当CD处于某个区域时,与该区域对应的处于某个区域时,与该区域对应的R的位的位ON。使用块比较指令使用块比较指令BCMP举例举例MOV(21)#1450200BCMP200DM0000HR0500000 下限下限 上限上限DM00000000DM00010100
30、HR0500DM00020101DM00030200HR0501DM00040201DM00050300HR0502DM00060301DM00070400HR0503DM00080401DM00090500HR0504DM00100501DM00110600HR0505DM00120601DM00130700HR0506DM00140701DM00150800HR0507DM00160801DM00170900HR0508DM00180901DM00191000HR0509DM00201001DM00211100HR0510DM00221101DM00231200HR0510DM002412
31、01DM00251300HR0512DM00261301DM00271400HR0513DM00281401DM00291500HR0514DM00301501DM00311600HR0515HR05比较指令执行结果:比较指令执行结果:HR0514为为ON数据块内容可数据块内容可预先写入预先写入数据块数据块存存结果结果比较数据比较数据块首块首通道通道结果通道结果通道3.表比较指令表比较指令TCMPTCMP(85)CDTBRTCMP(68)CDTBRTCMP(85)CDTBRTCMP(85)CDTBRCD:比较数据比较数据TB:数据表的起始通道数据表的起始通道R:结果通道结果通道功能功能当执行条
32、件为当执行条件为ON时,将时,将CD与数据表中的数据比较。与数据表中的数据比较。当当CD与表中某个通道的数据相同时,与该通道对应的与表中某个通道的数据相同时,与该通道对应的R的位为的位为ON。使用表比较指令使用表比较指令TCMP举例举例MOV(21)#0005200TCMP200HR00HR1900000数据表内容数据表内容可预先写入可预先写入存存结果结果比较数据比较数据数据表数据表结果通道结果通道对应位状态对应位状态HR000101HR19000HR010151HR19010HR020005HR19021HR150605HR19150表首通道表首通道结果通道结果通道该程序执行结果:该程序执行
33、结果:HR1902为为ON。数据传送和数据比较指令小结数据传送和数据比较指令小结1.数据传送指令数据传送指令(2)注意块传送和块设置指令功能的区别。注意块传送和块设置指令功能的区别。(3)注意单字分配、数据调用和数据交换指令的区别。注意单字分配、数据调用和数据交换指令的区别。区别位传送和数字传送指令目的通道内容存放的方法区别位传送和数字传送指令目的通道内容存放的方法(1)注意各种传送指令的区别。注意各种传送指令的区别。单字传送单字传送MOV是常用的指令,要牢记其使用方法。是常用的指令,要牢记其使用方法。块设置指令块设置指令BSET可以向可以向TC区传送数据,用该指令可区传送数据,用该指令可以改变定时器的当前值。以改变定时器的当前值。2.数据比较指令数据比较指令(1)单字单字/双字比较指令是常用的指令,要牢记其格式、双字比较指令是常用的指令,要牢记其格式、梯形图、操作数范围和使用方法。梯形图、操作数范围和使用方法。使用单字使用单字/双字比较指令要影响标志位双字比较指令要影响标志位2550525507:在需要保存标志位状态时,要编写相应程序。在需要保存标志位状态时,要编写相应程序。注意触点注意触点2550525507的使用方法。的使用方法。(2)注意块比较和表比较指令执行结果的表示方法。注意块比较和表比较指令执行结果的表示方法。
限制150内