版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 CPM1A系列PLC的指令系统(上),3.1 概述 3.2 基本指令 3.3 常用的应用指令 3.4 数据传输和数据比较指令 3.5 数据位移和数椐转换指令 3.6 数据运算指令 3.7 子程序控制指令 3.8 高速计数器控制指令 3.9 脉冲输出控制指令 3.10 中断控制指令 3.11 步进控制指令 3.12 特殊指令 习题,3.1 概述,1指令的分类 2指令的格式 3执行指令对标志位的影响 4指令的微分、非微分形式,1指令的分类,按指令功能的不同可分为基本指令和应用指令两类。 基本指令是直接对输入和输出点进行操作的指令 输入 输出 逻辑与”、“或”、“非” 应用指令是 数据传送
2、数据处理 数据运算 程序控制 应用指令的多少关系到PLC功能的强弱。,2指令的格式,指令的格式可以表示为: 助记符(指令码) 操作数1 操作数2 操作数3 (1)助记符表示指令的功能,它指明了执行该指令所完成的操作 (2)指令码是指令的代码,用两位数(00-99)表示。基本指令没有指令码,而应用指令几乎都有指令码 (3)操作数提供了指令执行的对象或数据。各种指令的操作数个数不同 操作数可以是继电器号、通道号或常数。操作数为常数时前要加前缀#(操作数例) 操作数为常数时,可以是十进制或十六进制,这取决于指令的要求。 间接寻址的操作数用DM表示。这种操作数是以DMX X X中的数据为地址的另一个D
3、M通道中的数据。DMX X X中的内容必须是BCD码,且不得超出DM区的范围。,操作数例,例如,计数器指令可表示为: CNT000 SV 其中 CNT: 助记符 000 : 计数器的编号 SV : 是操作数 SV为200 表明000号计数器的设定值是200通道中的数据 SV为#0200时,表明计数器的设定值是常数200,3执行指令对标志位的影响,在表2-3中,SR区的2550325507是指令执行结果的标志位,要记住各标志位的含义。有的指令执行后不影响标志位。有的指令执行后可能影响标志位。在下面介绍每一条指令时将说明其执行后是否影响标志位、影响哪些标志位,并指出可能使这些标志位置位的原因。 其
4、中ER(25503)是最常用的标志位,若25503为ON,表示当前执行的程序出错且停止执行程序。,4指令的微分、非微分形式,指令分为微分和非微分两种形式,CPM1A系列的应用指令多数兼有这两种形式。微分型指令要在其助记符前加标记。两种指令的区别是: 对非微分型指令,只要其执行条件为ON,则每个扫描周期都将执行该指令: 微分指令只在其执行条件为OFF变为ON时才执行一次。如果执行条不发生变化,或者从一个扫描周期的ON变为OFF,则该指令都不执指令,3.2 基本指令,3.2.1 常用的基本指令 3.2.2 AND LD和OR LD指令 3.2.3 SET和RESET指令 3.2.4 KEEP指令
5、3.2.5 DIFU和DIFD指令 3.2.6 基本编程规则和编程办法,3.2.1 常用的基本指令,有些基本指令几乎所有的程序都必须使用。表3.1列出了这此常用的基本指令 1LD、LD NOT、AND、AND NOT、OR、OR NOT、OUT、OUT NOT指令 2END指令 3NOP指令,1LD、LD NOT、AND、AND NOT、OR、OR NOT、OUT、OUT NOT指令, LD、LD NOT、AND、AND NOT、OR、OR NOT OUT、OUT NOT 作分析梯形图程序时,常开和常闭触点的状态(ON/OFF)是由它对应的继电器的状态来确定的。例如在图3.1中, 若00000
6、号输入继电器为ON, 则常开触点00000为ON(触点闭合),否则为OFF; 如果00001号输入继电器为ON, 则常闭触点00001为OFF(触点断开),否则为ON。, LD、LD NOT、AND、AND NOT、OR、OR NOT, OUT、OUT NOT,图3.1,2END指令,程序的结尾处不一定要安排END指令,在程序中有END指令时即认为程序到此结束,则END后面的程序一概不执行,并马上返回到程序的起始处再次扫描程序。 在调试程序时可以将END指令插在各段程序之后,对程序进行分段调试,调试结束时再删除插在中间各段程序之后的END指令。 图3.2中使用了END指令,请注意END指令的梯
7、形图画法和语句的写法。,图3.2,3NOP指令,NOP指令常用来修改程序。例如, 用NOP代替AND N语句,可把AND语句中的触点N短接 用NOP代替OR N语句,可把OR语句中的触点N断掉 但是要注意,用NOP修改程序时可能会引起程序出错。例如,若用NOP代替OR N语句时,将造成该梯级无输出。 图3-3是使用NOP指令的例子 在梯形图中体现不了NOP指令,图3-3,3.2.2 AND LD和OR LD指令,表3.2是AND LD和OR LD指令的格式 1AND LD指令 2OR LD指令,1AND LD指令,图3.4中有三个并联的触点组相,语句表有两种编写方法.如图3.4所示的两种不同编
8、写方法。在方法2中AND LD指令之前的触点组个数应小于等于8,而方法1对此没有限制。,2OR LD指令,图3.5是三个串联的触点组相并联。使用OR LD指令时,语句表有如图3.5所示的两种不 同编写方法。同样,在方法2中OR LD指令之前的触点组个数应小于等于8,而方法1对此没有限制。,3.2.3 SET 和RESET指令,SET和RRSET指令分别称为置位和复位指令(见表3.3) 图3.6是使用这两个指令的例子,图(b)是工作波形。 当00000为ON时,20000被置为ON并保持 当00003为ON时,20000被置为OFF并保持,图3.6,图(b)是工作波形 00000是SET指令的执
9、行条件,当00000为ON时,20000被置为ON并保持,即使00000又变为OFF 00003是RESET指令的执行条件,当00003为ON时,20000被置为OFF并保持,即使00003又变为OFF 当SET、RESET指令的操作数是保持继电器HR时具有掉电保持功能,3.2.4 KEEP 指令,表3.4是KEEP指令的格式。在图3.7中,00002是置位端的输入条件,00003是复位端的输入条件。 当00002由OFF变ON时,20000被置为ON并保持,即使00002又变为OFF 当00003由OFF变为ON时。20000被复位为OFF并保持,即使00003又变为OFF,表3.4,3.2
10、.5 DIFU和DIFD指令,表3.5 上升沿微分DIFU指令 下降沿微分DIFD指令 只有发生跳变时才发生动作,不发生跳变任何时候都不动作,包括开机时 DIFU和DIFD指令常用在下面的几种场合: 利用 DIFU和DIFD指令的操作位作为某指令的执行条件,使某条指令只在一个扫描周期中执行一次 利用DIFU和DIFD指令产生脉冲信号。 图3.9使用了DIFU和DIFD指令,表3.5,图3.9,图中Ts是扫描周期。在图3.9中,00005是DIFU和DIFD指令的执行条件。 从触点00005由OFF变为ON开始,继电器20000只接通一个扫描周期; 从触点00005由ON变为OFF开始,保持继电
11、器HR0000只接通一个扫描周期。,3.2.6 基本编程规则和编程办法,1基本编程规则 2基本编程方法,1基本编程规则,梯形图中的每一行都是从左侧母线开始画起,线圈或指令画在最右边 线圈或指令不能直接与左侧母线连接(除END等)。如果必须时,可以通过特殊辅助继电器25313(常ON)的触点连接,如图3.10所示。 用OUT指令输出时,同一编号的继电器线圈在同一程序中使用两次以上,称为双线圈输出。双线圈输出容易引起误动作或逻辑混乱的例 梯形图必须遵循从左到右、从上到下的顺序编写,不允许在两行之间垂直连接触点。如果不符合上述顺序,就要进行转换。如图3.12(a)若转换成图3.12(b)图就符合顺序
12、要求了 程序结束时要安排END指令,否则程序不被执行?,图3.10,容易引起误动作或逻辑混乱的例,例如,在图3.11(a)中,设00000为ON、00005为OFF。由于PLC是按扫描方式执行 程序的,执行第一行时01000为ON,而执行第二行时01000为OFF。在FO刷新阶段01000的输出状态只能是OFF。显然前面的输出无效,最后一次输出才是有效的。 又如。在图3.11(b)中,设00000为ON、00001为OFF。在执行第一行程序后01000为ON,执行第二行后01001为ON,执行第三行后01000为OFF。因此在I/O刷新阶,01001为ON,01000为OFF。,图3.11,没
13、用,可能没用,图3.12,2基本编程方法,两个或两个以上的线圈或指令可以并联输出,如前图3.9 触点组与单个触点相并联时,最好将单个触点放在下面。例如图3.13(a)变成图(b) 并联触点组与几个触点相串联时,最好将并联触点组放在左边。例如图3.14(a)变成(b) 如果一条指令只需在PLC上电之初执行一次,可以用SR区的25315作为其执行条件,如图3.15 有些梯形图难以用AND LD、OR LD等基本逻辑指令编写语句表,这时可重新安排梯形图的结构,如图3.16(a)若改画成图(b) 当某梯级有两个分支时,若其中一条分支从分支点到输出线圈之间无触点,该分支应放在上方,这样可以使语句表的语句
14、更少(详见3.3节)。 尽最使用那些操作数少、执行时间短的指令编程,以缩短扫描周期,从而提高I/O响应速度。,图3.13,例如图3.13(a)变成图(b)后,从语句表看出节省了一个ORLD语句,图3.14,例如图3.14(a)变成(b)图后,从语句表看出节省了一个AND LD语句。,图3.15,如果一条指令只需在PLC上电之初执行一次,可以用SR区的25315作为其执行条件。由于25315只在PLC上电后的第一个扫描周期处于ON状态,因此,以25315为执行条件的指令只在上电后的第一个扫描周期被执行。这种用法常出现在PLC的初始化程序段上,如图3.15,图3.16,有些梯形图难以用AND LD
15、、OR LD等基本逻辑指令编写语句表,这时可重新安排梯形图的结构,如图3.16(a)若改画成图(b)就可以使用ORLD指令编程了。,3.3 常用的应用指令,3.3.1 IL/ILC指令 3.2.2 暂存继电器(TR) 3.3.3 JMP/JME指令 3.3.4 定时器/计数器指令,3.3.1 IL/ILC指令,IL/ILC分支和分支结束指令,见表3.6。 使用IL/ILC指令时应注意: 不论IL的输入条件是ON还是OFF,CPU都要对IL/ILC之间的程序段进行扫描。 如果IL的执行条件为OFF,则位于IL和ILC之间的程序段不执行,此时IL和ILC之间各内部器件的状态如下: OUT指令的输出
16、位为OFF;所有定时器都复位:KEEP指令的操作位、计数器、移寄存器以及SET和RESET指令的操作位都保持IL的执行条件为OFF以前的状态。 IL和ILC指令可以成对使用,也可以多个IL指令配一个ILC指令,但不准嵌套使用,如ILILILCILC。 、 例图3.17 例图3.18 例图3.19多种输出方式,表3.6,例图3.17,图3.17(a)中A为分支点,A右侧有两个分支,且每个分支都有触点控制。这时要使用分支指令编程。图3.17(a)也可以画成图3.17(b)的结构,两图的功能一样。 图3.17中,当00000为OFF时,IL和ILC之间的程序不执行,01000、01001:都处子OF
17、F状态。当00000为ON时,IL和ILC之间的程序执行,01000、01001的状态取决于各自分支上的控制触点的状态。 在图3.17中,若A右侧的第一分支中没有控制触点00001,就不必用分支指令编程了。但如果把没有触点控制的分支放在下面,那也必须用分支指令编程。这就是上节基本编程方法中指出的问题。,图3.17,这两个图目前效果一样,IL/ILC相当新起一个母线,不执行时也扫描,并保持特定输出状态,这是左右图的不同之处,例图3.18,图3.18 (a)的程序有两次分支,图3.18(a)也可以画成图3.18(b)的结构,两图的功能 是一样的。图3.18(c)是它们的语句表。在语句表中,多个IL
18、指令只用一个ILC指令,在程序检查时会有出错信息显示,但不影响程序的正常执行。,图3.18,例图3.19多种输出方式,三种输出方式输出方式,并联输出/连续输出/复合输出三种结构。这的梯形图结构和语句表如图3.19所示,3.2.2 暂存继电器(TR),暂存继电器可用来暂时存储当前指令执行的结果,所以处理梯形图的分支还有另外种方法,即使用暂存继电器(TR) CPM1A系列PLC有编号为TR0TR7的8个暂存继电器。如果某个TR位被设置在一个分支点处,则分支前面的执行结果就会存储在这个TR位中。对暂存继电器的说明如下: 在同一分支程序段中,同一TR号不能重复使用 TR不是编程指令,只能配和LD或OU
19、T等基本指令一起使用 图3.20所示是使用暂存继电器TR处理分支的例子,图3.20所示使用暂存继电器TR处理分支的例子,如图3.20所示是使用暂存继电器TR处理分支的例子,从语句表可以看出两种处理分支方法的区别:用TR时,是用AND指令连接下一个分支的触点;用IL/ILC时,是用LD指令连接下一个分支的触点。在分支多时,用TR处理分支程序比使用IL/ILC指令时语句表要烦琐一些,梯形图体现不出来,内部操作,3.3.3 JMP/JME指令,JMP/JME是跳转和跳转结束指令, 用于控制程序,见表3.7 使用JMP和JME指令时应注意以下几点; 发生跳转时,JMP和JME之间的程序不执行 发生跳转
20、时所有继电器、定时器、计数器均保持跳转前的状态不变 对同一个跳转号N,JMP N和JME N只能在程序中使用一次。但当N取00时,JMP 00/JME 00可以在程序中多次使用 以00作为跳转号时指令的执行时间比其他跳转号的执行时间长,因为CPU要花时间去寻找下一个JME 00。 跳转指令可以嵌套使用,但必须是不同跳转号的嵌套,如JMP 00-JMP 01-JME 01-JMP 00 图3.21是使用跳转指令的例子 多个JMP可以共用一个JME,如图3.22所示 在两段程序的切换时常用到跳转指令,例如图3.23,表3.7,图3.21是使用跳转指令的例子,当00000为OFF时,JMP 00到J
21、ME 00之间的程序不执行,而转去执行JME 00之后的程序,这时01000和1100保持跳转前的状态。,多个JMP可以共用一个JME,与ILILC指令一样,多个JMP可以共用一个JME,如图3.22所示。尽管在进行程序检查时会出现错误信息JMP-JME ERR”,但程序还会正常执行。,两段程序切换,一在两段程序的切换时,常用到跳转指令。例如图3.23中,当输入00000为ON时,执行手动程序,当00000为OFF时,跳过手动程序转去执行自动程序,3.3.4 定时器/计数器指令,定时器(表3.8a) /计数器(表3.8b)指令 使用定时器/计数器时应注意以下几点 1.定时器(TIM) 2.计数
22、器(CNT) 3.可逆循环计数器(CNTR) CNT和CNTR指令的主要区别是: 计数器CNT达到设定值后,只要不复位,其输出就一直为ON,即使计数脉冲仍在输入; 计数器CNTR达到设定值后,其输出为ON,只要不复位,在下一个计数脉冲到来时,计数器CNTR立即变为OFF,且开始下一轮计数,即CNTR是个循环计数器。,表3.8a,表3.8b,使用定时器/计数器时应注意以下几点,定时器和计数器同在一个TC区,它们共同使用编号000127,所以编号不能重复使用 当SV为通道时(通道内数据必须是BCD数),改变通道内的数据,其设定值即改变 间接寻址DM通道不存在,是指以DM的内容为地址的通道不存在。
23、定时器没有掉电保持功能,计数器有掉电保持功能。 当扫描时间Ts0.1s时,定时器TIM会不准确;当Ts0.01s时,定时器TIMH会不准确。 图3.24是CNT的工作波形 图3.25是CNTR加计数和减计数的工作波形,图3.24是CNT的工作波形,CNTR加计数和减计数的工作波形,用可逆计数器CNTR计数时,每个循环内计数的实际值比设定值多1,1.定时器(TIM),定时器的使用方法 定时器定时时间的扩展 定时器的定时方式,定时器的使用方法,在图3.26中,定时器TIM000的设定值为#0050,当00000为OFF时,TIM000为复位状态,当前值PV=#0050;自00000为ON起TIM0
24、00开始定时,其PV值从0050开始每隔0.1s减去1,减50次(5s)时,PV值减为0000,此时TIM000输出为ON,其常开触点闭合,使01000为ON。若00000一直为ON,则TIM000的状态也一直保持ON。若00000变为OFF,则TIM000复位。PV值恢复为设定值#0050,01000变为OFF。,图3.26,定时器定时时间的扩展,一个定时器TIM的最大定时时间是999.9s,但几个定时器连用,则可获得更长的定时时间。例如,图3.27中以TIM000的常开触点作为定时器TIM001的执行条件,就可以实现定时器容量的扩展,总的定时时间为两个定时器SV值的和。,定时器的定时方式,
25、导通延时ON 导通延时OFF 断开延时ON 断开延时OFF 如图3.28中,从00000为ON开始,01000经过60s被接通(接通延时ON),而01001则是经过60s被断开(接通延时OFF)。配合其他指令,读者可以练习用TIM指令编写出断开延时ON或断开延时OFF的定时控制的程序。,图3.28,2.计数器(CNT),计数器的计数功能 计数器的定时功能 计数器容量的扩展,计数器的计数功能,在图3.29中,CNT000的设定值为200,表示设定值是200通道的内容(设其中数据为0050)。当复位端00001为ON时,计数器处于复位状态,CNT000输出为OFF。当复位端由ON变为OFF后计数器
26、开始计数。其计数过程为:每当00000 OFF-ON-OFF一次(一个脉冲),CNT000的当前值就减1。在PV值减到0000时,也即计满50个脉冲时停止计数,此时CNT000的输出变为ON且保持,其常开触点闭合,使01000为ON且保持。若在计数过程中或在计满数以后00001由OFF变为ON则计数器立即复位并停止计数。由于计数器CNT000复位,01000也变为OFF。,图3.29,计数器的定时功能,如果把图3.29中的00000换成25502(产生秒脉冲),则计数器又可以当定时器使用。例如SV为#0500,当计数器计满500时,其计数过程所用的时间刚好是500s。由于计数器有掉电保持功能,
27、所以用计数器作成的定时器也有掉电保持功能,请注意CNT的这种用法,图3.29,25502 秒脉冲,计数器容量的扩展,用一个计数器的常开触点作为另一个计数器的计数输入,即两个计数器连用,就可以实现计数器容量的扩展,总的计数器容量为两个计数器SV值的乘积,如图3.30所示。图中,用25315对两个计数器进行初始复位,计数过程中CNT000能自复位。,3.可逆计数器(CNTR),可逆计数器的计数功能 可逆计数器的循环定时功能 循环计数器容量的扩展,可逆计数器的计数功能,如图3.31所示,当复位端00003为ON时CNTR046复位,当前值变为0000,此时既不进行加计数,也不进行减计数。当00003
28、变为OFF时计数器开始计数,其计数过程如下: 若00002 OFF、由00001输入计数脉冲时为加计数器。00001每输入一个计数脉冲,CNTR 046的当前值加1。当PV=0200时,再输入一个计数脉冲时,PV值变为0000(有进位),同时CNTR046的输出变为ON。若再来一个计数脉冲时,PV=1, CNTR 046的输出变为OFF,且开始下一个循环的汁数。 若00001 OFF、由00002输入计数脉冲时为减计数器。00002每输入一个计数脉冲,CNTR 046的当前值减1,当PV=0000时,再输入一个计数脉冲时,PV变为0200(有借位),同时CNTR 046的输出变为ON。若再来一
29、个计数脉冲时,PV=0199,且CNTR 046的输出变为OFF,并开始下一个循环的计数。 当00001和00002同时输入计数脉冲时,计数器不计数。,图3.31,可逆计数器的循环定时功能,图3.32中,SCP端以25314(常OFF)作为输入条件,所以CNTR000作为加计数器使用。ACP端以25502与20000的串联作为输入条件,由25502产生的秒脉冲作为计数脉冲输入,此时计数器可作为定时器使用。R端以00001与25315的并联作为复位条件,使CNTR 000在PLC上电后的第一个扫描周期被复位。图中若00001为OFF,HR00中的数据是0500,请读者自行分析该图的功能。,图3.
30、32,循环计数器容量的扩展,在图3.33中CNTR000的常开触点连到CNT001的计数脉冲输入端,就可以构成大容量的循环计数器。例如CNTR000指令的HR00中若为#9999,CNT001的SV为#1000,则每经过10000X1000s,CNT001的输出就会ON一次,图3.33,3.4 数据传输和数据比较指令,3.4.1 数据传送指令 3.4.2 数据比较指令,3.4.1 数据传送指令,CPM1A系列提供多种数据传送指令,见表3.9 1传送指令(MOVMOV)和 求反传送指令(MVNMVN) 2块设置指令(BSET,BSET),表3.9(部分),1传送指令(MOV/MOV)和 求反传送
31、指令(MVN/MVN),表3.9(MOV部分) 图3.34中使用了MOV和MOV指令,00000是两个指令的执行条件。其中MOV是非微分型指令,如果00000一直为ON,每个扫描周期MOV指令都执行。执行MOV指令时,把常数2000传送到通道HR00中去。MOV是微分型指令,它只在执行条件00000由OFF变为ON时执行一次,此后,即使00000一直为ON,MOV指令也不再执行。执行MOV指令把BCD数2001按位求反后再送到HR01中。 图3.36是使用MOV指令修改定时器设定值的程序,图3.34中使用了MOV和MW指令,图3.35是执行MOV和MVN指令的示意图,图3.36是使用MOV指令
32、修改定时器设定值的程序,图3.36当00000为ON、00001为OFF时,执行一次MOV指令将常数0100传送到LR00中,所以TIM 000的设定值为10s、并开始定时。定时时间到,TIM000的输出变为ON,01000也变为ON。 当需要改变定时器的定时值时,可令00000为OFF、00001为ON,执行一次MOV指令将#0050传送列LR00 中,于是TIM 000的设定值就变为5s,图3.36,2块设置指令(BSET,BSET),表3.9(BSET部分) 块设置指令BSET/BSET执行一次,相当于执行了多次MOV/MVN指令 图3.37是使用BSET指令的例子,图中BSET指令的第
33、二、三操作数都是TIM000,说明执行BSET指令时,把数据只传送到TIM000中。,表3.9(BSET部分),图3.37,BSET指令的第二、三操作数都是TIM000,说明执行BSET指令时,把数据只传送到TIM000中。,3.4.2 数据比较指令,CPM1A系列提供多种数据比较指令,见表3.10 1单字比较指令(CMP) 2块比较指令(BCMPBCMP),1单字比较指令(CMP),表3.10 CMP部分 图3.38中使用了单字比较指令CMP。执行指令CMP时,将TIM000的当前值与常数0200进行比较。 程序的功能为:在00000为ON时,TIM000开始定时: TIM000值0200时
34、,25505、20000为ON TIM000值=0200时,25506、20001为ON TIM000值0200时,25507、20002为ON TIM000值=0000时,20002、20003为ON,表3.10 CMP部分,图3.38,2块比较指令(BCMPBCMP),表3.10 BCMP部分 图3.40中使用了BCMP指令,图(b)是执行BCMP指令后的结果。本例中比较块由DM0000DM0031组成。由于比较数据#1450在14011500之间,所以与其对应的HR0514为ON。,表3.10 BCMP部分,图3.40,3.5 数据位移和数椐转换指令,3.5.1 数据移位指令 3.5.2
35、 数椐转换指令,3.5.1 数据移位指令,CPM1A系列提供多种数据移位 1移位寄存器指令(SFT) 2可逆移位寄存器指令(SFTR/SFTR) 3数字左移(SLD/SLD)和右移位(SRD/SRD)指令 4字移位指令(WSFT/WSFT),1移位寄存器指令(SFT),表3.11 SFT指令 图3.41是使用SFT指令的例。SFT指令的首通道和末通道都是200,说明移位是在200通道内进行。25502产生的秒脉冲作为移位脉冲,00000的ON、OFF状态作为输入数据。在PLC上电后的第一个扫描周期由25315对移位寄存器进行复位。在移位过程中,只要00001为ON,移位寄存器即复位。 图3.4
36、2是SFT指令的另一种用法。图中,数据输入端接的是25314(常OFF),移位数据是通过MOV指令传送的。在00000由OFF变为ON时刻执行一次MOV指令,将数据#0001传送到200通道中去,使20000为ON,其余位均为OFF。对应每一个移位脉冲,20000的ON状态依次向高位移动。,表3.11 SFT指令,SP,图3.41,25502:产生的秒脉冲作为移位脉冲 00000:ON、OFF状态作为输入数据 25315:上电后的第一个扫描周期由对移位寄存器进行复位,图3.42,25314(常OFF),移位数据是通过MOV指令传送的 25502:产生的秒脉冲作为移位脉冲 25315:上电后的第
37、一个扫描周期由对移位寄存器进行复位,2.可逆移位寄存器指令(SFTR/SFTR),表3.11 SFTR指令 图3.43,图中00004是SFTR指令的执行条件,IR200是控制通道,LRl0LR11组成可逆移位寄存器。当00004为ON时,SFTR指令执行移位操作;当00004为OFF时,SFTR指令不执行,此时控制通道的控制位不起作用,LR10LR11及CY位的数据保持不变。 图3.44中使用的是微分型指令SFTR。在00004由OFF变为ON时只执行一次移位,控制通道各控制位的状态只在一个扫描周期中有效,所以图中可以直接使用00002进行移位控制。该图的工作情况与图3.43相同。,表3.1
38、1 SFTR指令,图3.43,图3.44,在00004由OFF变为ON时只执行一次移位,控制通道各控制位的状态只在一个扫描周期中有效,所以图中可以直接使用00002进行移位控制。,3数字左移(SLD/SLD)和右移位(SRD/SRD)指令,表3.11 SLD/SLD指令, 表3.11 SRD/SRD指令 图3.45是使用SLD指令的例子。图(b)是执行一次SLD指令后的结果通道的状态。SLD指令的执行条件是00001,其数据St和E均为HR00,说明移位是在HR00通道内进行。 当00000 由 OFF变为ON 时,执行一次MOV指令,将#0003传送到HR00通道中。由图3.45(b) 可见
39、,只有HR0000和HR0001为ON,所以01000和01001立即变为ON。当00001由OFF变为ON 、执行一次左移位。第一次移位后,由图(b)可见,HR0000和HR0001变为OFF、HR0004和HR0005变为ON,于是01000和01001变为OFF,01002和01003变为ON。此后,每当00001由OFF变为ON时,就执行一次左移位利用HR00各位的状态可以编写相应的控制程序。,表3.11 SLD/SRD指令,10进制数位,表3.11 SRD/SRD指令,图3.45,10进制数位,4字移位指令(WSFT/WSFT),表3.11 WSFT指令 图3.46,当00000由O
40、FF变为ON时,执行一次MOV指令向HR00中传送数据#0846。每当00001 由OFF变为ON时,执行一次WSFT指令。可以推知经过执行4次WSFT指令。#0846就被移到HR04中,而HROOHR03全部为0000。,表3.11 WSFT指令,图3.46,3.5.2 数椐转换指令,1BCD码二进制数转换指令(BIN/BIN) 2二进制数 BCD码转换指令(BCD/BCD) 3164编码器指令(DMPX/DMPX) 4416译码指令(MLPX/MLPX) 5七段译码指令(SDEC/SDEC) 6ASCII码转换指令(ASC/ASC),1.BCD码二进制数转换指令(BIN/BIN),表3.1
41、2 BIN 图3.47当00000由OFF变ON时,执行一次MOV指令将BCD码#4321传送到源通道200中;执行一次SlN指令将IR200中的BCD码转换成二进制数,并存放在结果通道DM0000中。转换前、后源通道200的内容不变。 转换的原理是:4位BCD码可以分解成若干个22的十进制数的和:4321可分解为:4321=4096+128+64+32+1=212+27+26+25+20。因此,结果通道DM0000中的bit 12、bit07、bit06、bit05、bit00应为1,表3.12 BIN,图3.47,2二进制数 BCD码转换指令(BCD/BCD),表3.12 BCD 图3.4
42、8 二进制数0001 0000 1110 0001用十六进制数表示为10E1图中,当00000为ON时,执行一次MOV指令,将10E1传送到源通道HR00中,执行一次BCD指令后将HR00中的二进制数转换成BCD码,并存放在结果通道HR01中。 转换的原理是:二进制数0001 0000 1110 0001对应的十进制数为212+27+26+25+20=4321。将4321用BCD码表示,因此。转换后结果通道HR01中的各数字位从高到低依次为0100、0011、0010、0001,如图3.48(c)所示。,表3.12 BCD,图3.48,3.164编码器指令(DMPX/DMPX),表3.12 D
43、MPX 图3.49,首源通道为HR00,结果通道为DM0000,以IR220中的内容(#0013)作为控制字,表明要对2个源通道进行编码,从结果通道的第3位数字位开始存放结果。对2个源通道进行编码有2个结果,所以只占用结通道的2个数字位。 HR00的内容ABE7(1010 1000 1110 0111),为1的最高位的位号是15,放在结果通道DM0000的第3位数字位; HR01的内容01BF(0000 00001 1011 1111),为1的最高位的位号是8,放在结果要放在DM0000的第0位数字位 图3.49(c)是转换后源通道与结果通道的内容,表3.12 DMPX,b13,13,图3.4
44、9,#0013控制字,表明要对2个源通道进行编码,从结果通道的第3位数字位开始存放结果。,b15,b8,4416译码指令(MLPX/MLPX),表3.12 MLPX 图3.50,译码指令的源道号为IR200(内容为78F5),HR00是结果通道的首通道号。控制字C=#0013,表明要对源通道中的2个数字进行译吗,从源通道的第3位数字开始译码,译码的顺序为,第3位一第0位。对2个数字译码的结果需要2个通道来存放,本例中结果通道是HR00和HR01。 译码的原理是:源通道的第3位数字是0111,译码为十进制数的7,则以7为位号,将结果首通道HR0中的bit07置为1;源通道的第0位数字是0101,
45、译码为十进制数的5,则以5为位号,将HR01的bit05置为1。,表3.12 MLPX,图3.50,控制字0013:2个数字进行译吗,从第3位数字开始,7,b7,5,b5,5七段译码指令(SDEC/SDEC),表3.12 SDEC指令 图3.51 控制字C=#0013,表明从源通道的第3位数字开始,对2个数字进行译码,译码的顺序为第3位数字第0位数字;从结果通道的低8位开始接受第一个转换结果,每个结果占8位,所以只占用一个结果通道。,表3.12 SDEC指令,开始,开始,图3.51,控制字C=#0013,从源通道的第3位数字开始,对2个数字进行译码,译码的顺序为第3位数字第0位数字;从结果通道
46、的低8位开始接受第一个转换结果,6ASCII码转换指令(ASC/ASC),表3.12 ASC指令 图3.52 图3.52(a)中C=#0011,表示从源通道S的数字位1开始转换,转换2位,转换结果从结果通道R的低8位开始存放,不校验。源通道S的数字位1是BCD数3,转换成ASCII码是33,数字位2是BCD数1,转换成ASCIl码是31。由于C指定不校验,所以bit07和bitl5都写0。 图3.52(b)中C=#1010,示意从源通道S的数字位0开始转换,转换2位,转换结果从结果通道R的低8位开始存放偶校验。源通道S的数字位0和1是BCD数3和1,转换成ASCII码是33和31,由于C指定为
47、偶校验在R的低8位中,ASCII码里1的个数已是偶数,所以,bit07写0;在R的高8位中ASCII码里1的个数不是偶数,所以bitl5写1。 图3.52(c)中C=#2010一指定为奇校验,在Rl的低8位中,ASCII码里1的个数不是奇数,所以bit07写lI在R的高8位中,ASCII码里1的个数已是奇数,所以bitl5写0,表3.12 ASC指令,图3.52,C=#0011 数字位1开始转换,转换2位,从结果通道R的低8位开始存放,不校验,C=#1010 数字位0开始转换,转换2位, 从结果通道R的低8位开始存放偶校验,C=#2010 数字位0开始转换,转换2位,转换结果从结果通道R的低8
48、位开始存放奇校验。,3.6 数据运算指令,CPM1A系列PLC提供了多种数据运算指令,包括对十进制和二进制数的加、减、乘、除运算以及数据的逻辑运算等由于进行加、减运算时进位位也参与运算,所以对进位位置1和置0的指令STC和CLC也将在本节介绍 3.6.1 十进制运算指令 3.6.2 二进制运算指令 3.6.3 逻辑运算指令,3.6.1 十进制运算指令,1十进制加法运算指令(ADD/ADD、ADDL/ADDL) 2十进制减法运算指令(SUB/SUB) 3十进制递增(INC/INC)、递减指令(DEC/DEC)及乘(MUL/(MUL)、除法(DRV/DIV)运算指令,1十进制加法运算指令(ADD/
49、ADD、ADDL/ADDL),表3.13 ADD指令 表3.13 ADDL指令 图3.53 当00000为ON时执行CLC指令清进位位,执行ADD指令,将HR00(#1234)与#8341及CY相加。结果存放在DM0000中; 当00001为ON时,执行CLC指令清进位位,执行ADDL指令,将双字HR02(#9876)HR0l(#5432)与LR02(#1234)LR01(#5678)及CY相加,结果存放在DM0002和DM0001中。 *图3.54是使用ADD指令修改TIM设定值的例子。图中,TIM000的设定值是由DM0010通道提供的。程序运行前用编程器向DM0010写入初始数据#030
50、0。这里使用ADD指令是了方便多次修改TIM的设定值。,表3.13 ADD指令,表3.13 ADDL指令,图3.53,1.设HR00(#1234):DM0000=#1234+#8341+CY 2.DM0001=98765432+12345678+0=111111110,图3.54,比较时第1个比第2个数小置位,2十进制减法运算指令(SUB/SUB),表3.13 SUB指令 例3.55 被减数在HR00中,减数在DM0000中,结果存入HR01中。进位位状态存入HR02中。 当00000为ON时,执行CLC指令清进位位。执行SUB指令,用HR00的内容减去DM0000的内容,再减去CY的内容,差
51、存入HR01中,若CY为0,25504为OFF,HR02为0;若运算有借位时,则结果通道中的内容是差的十进制补码,故需进行第二次减法运算。由于此时CY为1,25504为ON于是第二次执行减法运算,结果存入HR01中,同时把HR02置1。,表3.13 SUB指令,图3.55,求负数时原码差绝对值,符号位,为负数时,求差值,为正数的符号位,3.十进制递增(INC/INC)、递减指令(DEC/DEC)及乘(MUL/(MUL)、除法(DRV/DIV)运算指令,表3.13 INC指令 DEC指令 MUL指令 DIV指令 图3.56 (没什么意思)中,令00000 ON一次,将DM0000 DM0004清
52、零,为进行各种运算作好准备。 每当00001为ON时,要执行以下几个指令。 执行INC指令,将DM0000中当前的内容加1 执行CMP指令,将DM0000中的内容与#0004比较,若DM0000的内容比#0004大则将21000置为ON 执行MUL指令,将DM0000中的内容与#0004相乘,结果存入DM0001和DM0002中 执行DIV指令,将DM0001和DM0002中的内容与#0002相除,商存入DM0003中,余数存入DM0004中。,INC指令,DEC指令,MUL指令,DIV指令,图3.56,0004(DM0000),3.6.2 二进制运算指令,表3.14 ADB指令 SBB指令
53、MLB指令 DVB指令 图3.57中是使用二进制运算指令完成运算(2508-1000)/50 的例子。 当00000为ON,00001为OFF时,执行BSET指令将DM0000DM0004清零。 当00000为OFF,00001为ON时,执行(2508-1000)/50 运算,ADB指令,SBB指令,MLB指令,DVB指令,图3.57,(50)10,(1000)10,(8)10,3.6.3 逻辑运算指令,表3.14 ANDW指令 ORW指令 EORW指令 图3.58在00000为ON,00001为OFF时,执行BSET指令将所有存放结果的通道都清零。当00001为ON,00000为OFF时,执
54、行如下各种逻辑运算指令: ANDW指令,将008F与0081进行逻辑“与”运算,结果0081存入DM0000中 ORW指令,将通道DM0000的内容与0073进行罗辑“或”运算,结果00F3存入DM0001中 XORW指令,将DM0000与DM0001两个通道的内容进行逻辑“异或”运算,结果0072存入DM0002中,ANDW指令,ORW指令,EORW指令,图3.58,3.7 子程序控制指令,3.7.1 子程序凋用、子程序定义/子程序返回指令 3.7.2 宏指令,3.7.1 子程序凋用、子程序定义/子程序返回指令,3.7.2 宏指令,3.8 高速计数器控制指令,3.8.1 旋转编码器 3.8.
55、2 高速计数器的计数功能 3.8.3 高速计数器的中断功能 3.8.4 高速计数器的控制指令,3.8.1 旋转编码器,3.8.2 高速计数器的计数功能,3.8.3 高速计数器的中断功能,3.8.4 高速计数器的控制指令,3.9 脉冲输出控制指令,3.10 中断控制指令,3.10.1 外部输入中断功能 3.10.2 间隔定时器的中断功能 3.10.3 中断的优先级 3.10.4 中断控制指令,3.10.1 外部输入中断功能,3.10.2 间隔定时器的中断功能,3.10.3 中断的优先级,3.10.4 中断控制指令,3.11 步进控制指令,3.11.1 步进程序的结构及程序的编写规则 3.11.2
56、 步进程序的执行过程,3.11.1 步进程序的结构及程序的编写规则,3.11.2 步进程序的执行过程,3.12 特殊指令,3.12.1 故障诊断指令 3.12.2 信息显示指令 3.12.3 I/O刷新指令 3.12.4 位计数指令,3.12.1 故障诊断指令,3.12.2 信息显示指令,3.12.3 I/O刷新指令,3.12.4 位计数指令,习题,1-10 11-20 21-30 31-38,1,1执行微分型指令和非微分型指令时有什么区别?什么情况下需使用微分型指令? 2什么是间接寻址?什么是间接寻址DM通道不存在?,3,3分别画出图示两个语句表的梯形图。,4,4写出图示梯形图的语句表。,5
57、,5把图(a)、(b)和(c)按PLC梯形图的规则进行转换。,6,6用KEEP指令和HR继电器编写具有掉电保护的程序,画出梯形图。写出语句表。,7,7.用TIM指令编写一个程序,实现控制:在00000接通10s后01001接通并保持,定时器则立即复位。01001接通10s后自动断开。画出梯形图,写出语句表。,8,8用CNT指令编写一个程序,实现第7题的控制。画出梯形图,写出语句表。比较第7题和第8题两个程序对01001实施的控制有何区别。,9,9写出图(a)的语句表,画出图(b)中01000、01001和20000的波形图。,10,10写出图示梯形图的语句表,并画出01000和01001的波形
58、图。,11,11按下面的要求,用JMP/JME指令编写一个程序: 当闭合控制开关时,灯l和灯2亮,经过10秒两灯均灭。当断开控制开关时,灯3和灯4开始闪烁(亮1秒、灭1秒)。经过10秒两灯均灭。,12,12用CNT指令编写一个能记录l万个计数脉冲的计数器程序,画出梯形图。,13,13分别用CNTR的加、减计数指令编写一个能记录l万个计数脉冲的循环计数器程序。画出梯形图,写出语句表。,14,14写出图示梯形图的语句表,并画出各指定的波形图。,15,15。用图示梯形图可以测量用户程序的扫描周期,试说明其工作原理(提示:用编程器的监控方式观察计数器10秒内记录的脉冲数)。,16,16在图示梯形图中。当00000为OFF且00001是ON时是连续移位;当00001为FF时可用00000进行手动移位。试分析两种情况下移位过程的区别,并画出连续移位时200通道相关位的波形。,17,17按如下要求设计一个程序,画出梯形图,写出语句表。 在PLC上电的第一个扫描周期。计数器能自动复位,当计数器达到设定值时也能自动复位; CNT的设定值为捍1500,每隔0.1秒其当前值减1; 用MOV指令将jf1000传送到通道210; 将通道210的内容与CNT比较,若通道210的内容CNT的当前值,01001为ON
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业底商空间规划与动线优化方案
- 零售行业的店长岗位的招聘问答参考
- 护理与医疗团队的协作模式
- 水利工程旁站监理方案
- 新时代基础英语 2
- 基于健康素养的儿童体育运动类校外培训机构策略分析
- 客户服务团队激励策略研究
- 零售业门店经理招聘面试技巧与问题
- 炼铁厂的自动化与智能化升级路径
- 零售业内如何做好一名行政助理解析
- 洗煤厂工程施工组织设计方案
- 抵押物品的借款合同模板
- 体育组织信访管理工作流程与制度
- 价值型销售(技能篇)
- 挡土墙新建及土地回填平整投标方案(技术方案)
- T-CECS120-2021套接紧定式钢导管施工及验收规程
- JGJ+196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 《创新创业基础》课件-模块四 创新成果保护与转化
- 燃料检修潜在风险与预控措施
- 中学生防震减灾知识
- 劳务合同模板电子下载
评论
0/150
提交评论