《电气控制与PLC技术》课件第5章_第1页
《电气控制与PLC技术》课件第5章_第2页
《电气控制与PLC技术》课件第5章_第3页
《电气控制与PLC技术》课件第5章_第4页
《电气控制与PLC技术》课件第5章_第5页
已阅读5页,还剩223页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章功能指令及应用5.1FX2N系列PLC功能指令概述5.2程序流控制类指令5.3数据处理类指令5.4特殊功能类指令5.5外部设备类指令小结

思考与练习可编程控制器的基本指令是基于继电器、定时器、计数器类软元件,主要用于逻辑处理的指令。作为工业控制计算机,PLC仅有基本指令是远远不够的。现代工业控制在许多场合需要数据处理。因而PLC制造商逐步在PLC中引入功能指令(FunctionalInstruction),或称为应用程序(AppliedInstruction),用于数据的传送、运算、变换及程序控制等功能。这使得可编程控制器成了真正意义上的计算机。特别是近年来,功能指令又向综合性方向迈进了一大步,出现了许多一条指令即能实现以往需大段程序才能完成的某种任务的指令,如PID(比例微分积分)运算指令。这类指令实际上就是一个个功能完整的子程序,从而大大提高了PLC的实用价值和普及率。5.1FX2N系列PLC功能指令概述

FX2N系列可编程控制器功能指令依据功能不同可分为数据处理类、程序流控制类、特种功能类及外部设备类。由于功能指令主要解决的是数据处理任务,其中数据处理类指令种类多、数量大、使用频繁,又可分为传送比较、四则及逻辑运算、移位、编解码等。程序流控制类指令主要用于程序的结构及流程,含子程序、中断、跳转及循环等指令。外部设备指令含一般的输入输出口设备及专用外部设备两大类。专用外部设备指和主机配接的功能单元及专用通信单元等。特种功能指令指机器的一些特殊功能,如高速计数器或模仿一些专用机械或专用电气设备功能的指令等。5.1.1功能指令的基本表示方法

FX2N系列可编程控制器的功能指令是采用计算机通用的助记符形式来表示的。一般用指令的英文名称或缩写作为助记符,如指令助记符MEAN用来表示取平均值的指令。与基本指令不同,功能指令不含表达梯形图符号间相互关系的成分,而是直接表达本指令要做什么。FX2N系列PLC在梯形图中使用功能框表示功能指令,如图5.1所示。这种表达方式的优点是直观,稍具计算机程序知识的人马上可以悟出指令的功能。图5.1功能指令的梯形图形式有的功能指令只需要指定功能号,但大多数功能指令在指定功能号的同时还需要指定操作元件。操作数分为源(Source)操作数、目标(Destination)操作数及其他操作数。源操作数是指令执行后不改变其内容的操作数,用[S]表示,目标操作数是指令执行后将改变其内容的操作数,用[D]表示。如果可以使用变址功能,则表示为[S·]和[D·]。源或目标不止一个,可表示为[S1·],[S2·],[D1·],[D2·]等。其他操作数用m或n表示,它们常用来表示常数,或作为源操作数和目标操作数的补充说明。表示常数时,K为十进制,H为十六进制。当图5.1中X0的常开触点接通时,执行的操作为[(D0)+(D1)+(D2)]/3→(D4Z0),即求D0,D1,D2的平均值,结果送到目标寄存器D4Z0,Z0是变址寄存器,如果Z0的内容为12,则运算结果送到D16。功能指令的功能号和指令助记符占一个程序步,每个操作数占2个或4个程序步(16位操作数是2个程序步,32位操作数是4个程序步)。图5.1中同时给出了功能指令MEAN的指令语句表和步序号。在使用简易编程器的场合,输入功能指令时,应先按 FNC键,再输入功能指令的编号,如MEAN的编号为FNC45。使用 HELP键的帮助功能,可以显示出功能指令助记符和编号的一览表。5.1.2数据长度与指令执行形式

1.数据长度功能指令依处理数据的长度分为16位指令和32位指令。其中32位指令用(D)表示,无(D)符号的为16位指令。图5.1中助记符MOV之前的(D)表示处理32位(32bit)数据,这时相邻的两个元件组成元件对,该指令将D11,D10中的数据传送到D13,D12。处理32位数据时,为了避免出现错误,建议使用首地址为偶数的操作数。

2.指令执行形式功能指令有脉冲执行型和连续执行型。指令中标有(P)的为脉冲执行型。如图5.1中MOV后面的(P)表示脉冲执行,即仅在X1由OFF(“0”状态)→ON(“1”状态)时执行一次。如果没有(P),在X1为ON的每一扫描周期指令都要被执行,称为连续执行。可见,脉冲执行型指令在执行条件满足时仅执行一个扫描周期,这点对数据处理有很重要的意义。比如一条加法指令,在脉冲执行时,只将加数和被加数做一次加法运算,而连续型加法运算指令执行条件满足时,每一个扫描周期都要相加一次。因此某些指令如INC、DEC等,在用连续执行方式时应特别注意。5.2程序流控制类指令5.2.1条件跳转指令条件跳转指令CJ(ConditionalJump)的功能指令编号为FNC00,操作数为P0~P127,其中P63即END,无需再标号。该指令占3个程序步,标号占1个程序步。

CJ和CJ(P)指令用于跳过顺序程序中的某一部分,以减少扫描时间。跳转指针标号一般在CJ指令之后。如图5.2所示,当X20为ON时,程序跳到P7处,如果X20为OFF,不执行跳转,程序按原顺序执行。跳转时,不执行被跳过的那部分指令。如果被跳过程序段中包含时间继电器和计数器,无论其是否具有掉电保持功能,由于相关程序停止执行,它们的现实值寄存器被锁定,跳转发生后其计数、计时值保持不变,在跳转中止时,计时计数将继续进行。但是正在工作的T63和高速计数器不管有无跳步仍连续工作。另外,计时、计数器的复位指令具有优先权,即使复位指令位于被跳过的程序段中,执行条件满足时,复位工作也将执行。值得说明的是,跳转指针标号也可出现在跳转指令之前,如图5.3所示,但要注意从程序执行顺序来看,如果X22为ON时间过长,会造成该程序的执行时间超过了警戒时钟设定值,程序就会出错。跳转时,如果从主控指令区的外部跳入其内部,不管它的主控触点是否接通,都把它当成接通来执行主控指令区内的程序;如果跳步指令在主控指令区内,主控触点没有接通时不执行跳步。图5.2两条跳转指令使用同一标号

图5.3标号指针用法在一个程序中一个标号只能出现一次,如出现两次或两次以上,则会出现错误。但同一程序中两条跳转指令可以使用相同的标号(见图5.2)。如果用辅助继电器M8000作为跳转指令的工作条件,跳转就成为无条件跳转,因为运行时特殊辅助继电器M8000总是为ON。5.2.2子程序调用与返回指令子程序调用指令CALL(SubRoutineCall)的功能指令编号为FNC01,操作数为P0~P127(不包括P63),占用3个程序步,允许用变址寄存器修改。子程序可以嵌套调用,最多嵌套5级。子程序返回指令SRET(SubRoutineReturn)的功能指令编号为FNC02,无操作数。子程序是为一些特定控制目的编制的相对独立的程序。为了区别于主程序,规定在程序编排时,将主程序排在前边,子程序排在后边,并以主程序结束指令FEND将这两部分隔开。子程序指令在梯形图中使用的情况如图5.4所示。图中,子程序调用指令CALL安排在主程序段中,当X0为ON时标号为P9的子程序得以执行。子程序P9安排在主程序结束指令FEND之后,标号P9和子程序返回指令SRET间的程序构成了子程序的内容。当主程序带有多个子程序时,子程序可依次列在主程序结束指令之后,并以不同的标号相区别。应当说明的是,标号应写在FEND指令之后,同一标号只能出现一次,CJ指令中用过的标号不能再用,但不同位置的CALL指令可以调用同一标号的子程序。图5.4中,当X0为ON时,CALL指令使程序跳到标号P9处,子程序被执行,执行完SRET指令后返回到主程序继续执行原程序(即104步)。可见,只要X0为ON,就相当于在主程序中加入了这么一段程序。而在X0为OFF时,程序的扫描就仅在主程序中进行。子程序的这种执行方式对有多个控制功能需依一定的条件有选择地实现有很重要的意义,它可以使程序的结构简洁明了。编程时将这些相对独立的功能都设置成子程序,而在主程序中再设置一些入口条件实现对这些子程序的控制即可。图5.5所示是子程序嵌套调用的例子。图中CALL(P)P10指令仅在X0由OFF变为ON时执行一次。在执行子程序1时,如果X4为ON,CALLP15被执行,程序跳到P15处,嵌套执行子程序2。执行第二条SRET指令后,返回子程序1中CALLP15指令的下一条指令,执行第一条SRET指令后返回主程序中CALL(P)P10指令的下一条指令。图5.4子程序的使用图5.5子程序的嵌套调用5.2.3中断返回、允许与禁止中断指令

中断返回指令IRET(InterruptionReturn)的功能指令编号为FNC03;允许中断指令EI(InterruptionEnable)的功能指令编号为FNC04;禁止中断指令DI(InterruptionDisable)的功能指令编号为FNC05。以上3条指令均无操作数,分别占用1个程序步。中断是计算机所特有的一种工作方式。它是指在主程序的执行过程中,中断主程序的执行去执行中断子程序。和普通子程序一样,中断子程序也是为某些特定的控制功能而设定的。而不同的是,这些特定的控制功能都有一个共同的特点,即要求响应时间小于机器的扫描周期。因而,中断子程序都不能由程序内安排的条件引出。能引起中断的信号叫中断源,FX2N系列的中断源有外部中断、定时器中断及计数器中断。其中外部中断有6个与X0~X5对应的中断输入点,中断指针为I□0□,最低位为0时表示下降沿中断,反之为上升沿中断,最高位与X0~X5的元件号相对应。3点定时器中断,其对应的中断指针为I6~I8□□,低两位是以ms为单位的定时时间,定时器中断用于高速处理或每隔一定的时间执行的程序。6点计数器的中断指针为I0□0(□=1~6),它们利用高速计数器的当前值产生中断,与HSCS(高速计数器比较置位)指令配合使用。可编程控制器通常处于禁止中断的状态,指令EI和DI之间的程序段为允许中断的区间(见图5.6),当程序执行到该区间时,如果中断源产生中断,CPU将停止执行当前的程序,转去执行相应的中断子程序,执行到中断子程序的IRET指令时,返回原断点,继续执行原来的程序。图5.6中断指令的使用如果有多个中断信号依次发出,则优先级按发生的先后为序,发生越早的优先级越高。若同时发生多个中断信号,则中断指针号小的优先。如果机器安排的中断比较多,而这些中断又不一定需同时响应时,还可以通过特殊辅助继电器M8050~M8058实现中断的选择。这些特殊辅助继电器和9个中断的对应关系为:M8050~M8055与6个外部输入中断对应,M8056~M8058与3点定时器中断对应。机器规定,当这些辅助继电器通过控制信号被置1(ON)时,其对应的中断被禁止执行。M8059为ON时,关闭所有的计数器中断。

FX2N系列可编程控制器可实现不多于二级的中断嵌套。即在中断子程序中编入EI和DI,可实现双重中断。如果中断信号在禁止中断区出现,则该中断信号被存储,并在EI指令之后响应该中断。不需要关中断时,只使用EI指令,可以不使用DI指令。5.2.4主程序结束指令主程序结束指令FEND(FirstEnd)的功能指令编号为FNC06,无操作数,占用1个程序步。

FEND表示主程序结束,执行到FEND指令时可编程控制器进行输入/输出处理、监控定时器刷新,完成后返回第0步。子程序(包括中断子程序)应放在FEND指令之后。CALL指令调用的子程序必须用SRET指令结束,中断子程序必须以IRET指令结束。若FEND指令在CALL指令执行之后和SRET指令执行之前出现,则程序出错。使用多条FEND指令时,中断程序应放在最后的FEND指令和END指令之间。5.2.5监控定时器指令监控定时器指令WDT(WatchDogTimer)的功能指令编号为FNC07,无操作数,占用1个程序步。监控定时器又称看门狗,是刷新顺序程序的警戒时钟,实际上是一个专用计时器。在FX2N系列PLC中,警戒时钟专用计时器的数据寄存在寄存器D8000中,定时时间的缺省值为200ms,可通过修改D8000来设定它的定时时间。如果程序的扫描周期(从0步到END或FEND指令)超过它的定时时间,PLC将停止运行。在这种情况下,应将WDT指令插到合适的程序步中刷新警戒时钟以使顺序程序得以继续执行,直到END。如条件跳转指令CJ若在它对应的标号之后(即程序往回跳),可能因连续反复跳步使它们之间的程序反复执行,总的执行时间超过警戒时钟的定时时间,为了避免出现这样的情况,可在CJ指令和对应的标号之间插入WDT指令。5.2.6循环指令循环指令由FOR及NEXT二条指令构成,这二条指令总是成对出现的。FOR指令用来表示循环区的起点,功能指令编号为FNC08,16位指令占用3个程序步,它的源操作数用来表示循环次数N,可以取任意的数据格式。循环次数N=1~32767,如N在-32767~0之间,当作N=1处理。NEXT是循环区终点指令,功能指令编号为FNC09,占用1个程序步,无操作数。该指令可以嵌套使用,最多允许5层嵌套。如果要求有条件执行重复扫描,则可以在FOR指令前面加跳转指令。如图5.7所示是3层循环嵌套的情况。循环体分别为A、B和C,其中循环体A要求有条件执行重复扫描,因此在相应的FOR指令前面加了跳转指令。循环体C重复扫描3次后,再扫描相应的NEXT指令下面的梯形图。由于循环体B嵌套在循环体C的内部,设数据寄存器D02内的数据为4,则循环体B重复扫描的次数为4 × 3 = 12(次)。而循环体A嵌套在循环体B的内部,并且在FOX指令前面有跳转指令,因此其重复扫描次数分两种情况:

(1)当跳转指令的控制线路(常开触点X0)断开时,循环体A的重复扫描次数为5 × 4 × 3 = 60。

(2)当跳转指令的控制线路(常开触点X0)闭合时,则不再执行循环体A的重复扫描。在使用FOR、NEXT指令时要注意二者必须成对使用,数目相符,并且在FOR-NEXT循环体之中不能出现FEND或END指令。图5.73层循环嵌套5.3数据处理类指令5.3.1比较与传送指令

1.比较指令

比较指令分为CMP(比较)和ZCP(区间比较),比较结果用目标元件的状态来表示。待比较的源操作数[S1·]和[S2·]可取任意的数据格式,目标操作数[D·]可取Y,M和S,占用3点。此外,还包括时钟数据比较指令、时钟数据区间比较指令、二进制浮点数比较指令、二进制浮点数区间比较指令和触点型比较指令等。

1)比较指令比较指令CMP(Compare)的功能指令编号为FNC10,16位运算占7个程序步,32位运算占13个程序步。比较指令CMP是将源操作数[S1·]和[S2·]的数据进行比较,结果送到目标操作数[D·]中。图5.8所示为CMP指令的使用。其中,比较指令将十进制常数100与C20的当前值比较,比较结果送到M0~M2。在X0为OFF时不执行CMP指令,即不进行比较,M0~M2的状态保持不变。如要清除比较结果,要采用RST或ZRST复位指令。如图5.9所示。数据比较是进行代数值大小比较(即带符号比较)。所有的源数据均按二进制处理。当比较指令的操作数不完整(若只指定一个或两个操作数);指定的操作数不符合要求(例如把X、D、T、C指定为目标操作数);指定操作数的元件号超出了允许范围时,使用比较指令就会出错。图5.8CMP指令的使用图5.9比较结果复位

2)区间比较指令区间比较指令ZCP(ZoneCompare)的功能指令编号为FNC11,16位运算占9个程序步,32位运算占17个程序步。区间比较指令ZCP是将一个数据[S·]与两个源数据[S1·]和[S2·]间的数据进行代数比较,比较结果在目标操作数[D·]及以后的两个软元件中表示出来。源[S1·]的内容比源[S2·]的内容要小。如果[S1·]比[S2·]大,则[S2·]被看做与[S1·]一样大。图5.10所示为ZCP指令的使用。其中,X0为ON时,执行ZCP指令,比较结果送到M3~M5。X0为OFF时,ZCP指令不执行,M3~M5保持X0为OFF前的状态。在不执行指令拟清除比较结果时,可用复位指令。图5.10ZCP指令的使用

3)时钟数据比较指令时钟数据比较指令TCMP(TimeCompare)的功能指令编号为FNC160,源操作数[S1·],[S2·]和[S3·]用来存放指定时间的时、分、秒,可取任意的数据,[S·]可取T,C和D,目标操作数[D·]为Y,M和S,占3点,只有16位运算占11个程序步。

TCMP指令将指定时刻[S·]与时钟数据[S1·](时)[S2·]分[S3·]秒进行比较,比较结果在[D·]中显示(见图5.11)。图5.11时钟数据比较指令

4)时钟数据区间比较指令时钟数据区间比较指令TZCP(TimeZoneCompare)的功能指令编号为FNC161,源操作数[S1·],[S2·]和[S·]可取T,C和D,目标操作数[D·]为Y,M和S,占3点,只有16位运算占9个程序步。[S1·]≤[S2·]。

TZCP指令将指定时刻[S·]与时钟数据[S1·]~[S2·]进行比较,比较结果在[D·]中显示。图5.12所示为时钟数据区间比较指令,其中[S1·],[S2·]和[S·]分别占3个数据寄存器,如D10~D12分别用来存放时、分、秒。图5.12时钟数据区间比较指令

5)二进制浮点数比较指令二进制浮点数比较指令ECMP的功能指令编号为FNC110,源操作数[S1·]和[S2·]可取K,H和D,目标操作数为Y,M和S,占用3点,只有32位运算,占13个程序步。

ECMP指令是将[S1·]同[S2·]进行比较,其比较结果用[D·]指定元件的ON/OFF状态来表示,如图5.13所示。常数参与比较时,被自动转换为二进制浮点数。图5.13浮点数比较指令

6)二进制浮点数区间比较指令二进制浮点数区间比较指令EZCP的功能指令编号为FNC111,源操作数[S1·],[S2·]和[S·]可取K,H和D,目标操作数为Y,M和S,占3点,只有32位运算,占17个程序步。[S1·]<[S2·]。

EZCP指令是将[S·]指定的浮点数与作为比较范围的源操作数[S1·]和[S2·]相比较,比较结果用目标操作数[D·]指定元件的ON/OFF状态来表示,如图5.14所示。常数参与比较时,被自动转换为二进制浮点数。图5.14浮点数区间比较指令

7)触点型比较指令

LD开始的触点型比较指令接在左母线上,ADD开始的触点型比较指令串联在别的触点后面,OR开始的触点型比较指令与别的触点并联,如图5.15所示。当C10的当前值等于20时,Y10被驱动;当X0为ON且D200的值大于-30时,Y11被SET指令置位;当M3为ON或C10的当前值等于200时,M50被驱动。各种触点型比较指令的助记符如表5.1所示。图5.15触点型比较指令表5.1触点型比较指令的助记符

2.传送指令传送指令包括MOV(传送)、SMOV(BCD码移位传送)、CML(取反传送)、BMOV(数据块传送)、FMOV(多点传送)以及XCH(数据交换)指令。

MOV和CML指令的源操作数可取所有的数据类型,SMOV指令可取除K,H以外的其他类型的操作数。它们的目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。

1)传送指令传送指令MOV(Move)的功能指令编号为FNC12,16位运算占5个程序步,32位运算占9个程序步。传送指令MOV是将源操作数内的数据传送到指定的目标操作数内,即[S·]→[D·]。图5.16中,当X0为ON时,源操作数[S·]中的常数100传送到目标操作元件D10中。当指令执行时,常数100自动转换成二进制数。当X0为OFF时,指令不执行,数据保持不变。图5.16传送指令与移位传送指令

2)移位传送移位传送指令SMOV(ShiftMove)的功能指令编号为FNC13,只有16位运算,占11个程序步。源数据(二进制数)被转换成4位BCD码,然后将它们移位传送。图5.16中的X1为ON时,将D1中右起第4位(m1 = 4)开始的2位(m2 = 2)BCD码移到目标操作数(D2)的右起第3位(n = 3)和第2位(见图5.17),然后D2中的BCD码自动转换为二进制码,D2中的第1位和第4位不受移位传送指令的影响。图5.17移位传送

3)取反传送指令取反传送指令CML(Complement)的功能指令编号为FNC14,16位运算占5个程序步,32位运算占9个程序步。取反传送指令将源元件中的数据逐位取反(1→0,0→1)并传送到指定目标。若源数据为常数K,该数据会自动转换为二进制数。CML用于可编程控制器反逻辑输出时非常方便。图5.18所示的CML指令将D0的低4位取反后传送到Y3~Y0中。图5.18取反传送

4)块传送指令块传送指令BMOV(BlockMove)的功能指令编号为FNC15,16位操作占7个程序步。块传送指令的源操作数可取KnX,KnY,KnM,KnS,T,C,D和文件寄存器,目标操作数可取KnY,KnM,KnS,T,C和D。

BMOV指令是从源操作数指定的软元件开始的n点数据传送到指定的目标操作数开始的n点软元件。如果元件号超出允许的元件号范围,数据仅传送到允许的范围内。为防止源数据块与目标数据块重叠时源数据在传送过程中被改写,传送的顺序是自动决定的,传送顺序如图5.19所示。在具有指定的位元件的场合,源与目标要采用相同的位数,如图5.20所示。图5.19块传送指令说明一图5.20块传送指令说明二

5)多点传送指令多点传送指令FMOV(FillMove)的功能指令编号为FNC16,16位操作占7个程序步,32位操作占13个程序步。它的源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C和D,n≤512。

FMOV指令是将源操作数指定的软元件的内容向以目标操作数指定的软元件开头的n点软元件传送。n点软元件的内容都一样,如图5.21所示,当X0为ON时将常数0送到D0~D9这10个(n = 10)数据寄存器中。如果元件号超出允许的元件号范围,数据仅传送到允许的范围内。图5.21多点数据传送与数据交换

6)数据交换指令数据交换指令XCH(Exchange)的功能指令编号为FNC17,16位运算占5个程序步,32位运算占9个程序步。它的两个目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。

XCH指令是在指定的目标软元件间进行数据交换。如图5.21所示,在指令执行前,若目标元件D10和D11中的数据分别为120和350;当X1为ON时,数据交换指令XCH执行后,目标元件D10和D11中的数据分别为350和120。即D10和D11中的数据进行了交换。交换指令一般采用脉冲方式,否则在每一个扫描周期都要交换一次。5.3.2运算指令

1.四则运算指令四则运算指令包括ADD、SUB、MUL、DIV(二进制加、减、乘、除)指令,源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z(32位乘除指令中V和Z不能用作[D·])。16位运算占7个程序步,32位运算占13个程序步。

1)加法指令加法指令ADD(Addition)的功能编号为FNC20。该指令是将指定的源元件中的二进制数相加,结果送到指定的目标元件中。每个数据的最高位为符号位(0为正,1为负),加减运算为代数运算。图5.22中的X0为ON时,执行(D10)+(D12)→(D14)。图5.22二进制加减法运算

ADD加法指令有3个常用标志。M8020为零标志,M8021为借位标志,M8022为进位标志。如果运算结果为0,则零标志M8020置1;如果运算结果超过32767(16bit运算)或2147483647(32bit运算),则进位标志M8022置1;如果运算结果小于-32767(16bit)或-2147483647(32bit),则借位标志M8021置1。在32位运算中,被指定的字元件是低16位元件,而下一个元件为高16位元件。为了避免错误,建议指定操作元件时采用偶数元件号。源和目标可以用相同的元件号。若源和目标元件号相同而采用连续执行的ADD、(D)ADD指令时,加法的结果在每个扫描周期都会改变。若采用脉冲执行的加法指令ADD(P)来加1,这与脉冲执行的INC(加1)指令的执行结果相似,其不同之处在于INC指令不影响零标志、借位标志和进位标志。

2)减法指令减法指令SUB(Subtraction)的功能指令编号为FNC21。该指令是将指定的源元件中的二进制数相减,结果送到指定的目标元件中。如图5.22所示,当X1为ON时,执行(D1,D0)-22→(D1,D0)。各种标志的动作、32位运算中软元件的指定方法、连续执行型和脉冲执行型的差异等均与上述加法指令相同。

3)乘法指令乘法指令MUL(Multiplication)的功能编号为FNC22,每个数据的最高位为符号位(0为正,1为负)。

MUL乘法指令是将指定的源元件中的二进制数相乘,结果送到指定的目标元件中,如图5.23所示。它分为16位和32位两种情况。当为16位运算,执行条件X0为ON时,(D0) × (D2)→(D5,D4)。源操作数是16位,目标操作数是32位。当为32位运算,即执行(D)MUL指令,当X0为ON时,(D1,D0) × (D3,D2)→(D7,D6,D5,D4)。源操作数是32位,目标操作数64位。如将位组合元件用于目标操作数时,限于K的取值,只能得到低32位的结果,不能得到高32位的结果。这时应将数据移入字元件再进行计算。用字元件时,也不能监视64位数据,只能通过监视高32位和低32位来监视。V、Z不能用[D·]目标元件。

4)除法指令除法指令DIV(Division)的功能指令编号为FNC23。该指令是将指定的源元件中的二进制数相除,[S1·]为被除数,[S2·]为除数,商送到指定的目标元件[D·]中,余数送到[D·]的下一个目标元件。如图5.23所示,它也分16位和32位两种情况。

16位运算执行DIV指令,当X1为ON时,执行(D6)÷(D8),商送到(D2),余数送到(D3)。

32位运算执行(D)DIV指令,当X1为ON时,执行(D7,D6) ÷ (D9,D8),商送到(D3,D2),余数送到(D5,D4)。若除数为0则出错,不执行指令。若位元件被指定为目标元件,不能获得余数。商和余数的最高位为符号位。

2.加1和减1指令加1指令INC(Increment)和减1指令DEC(Decrement)的功能指令编号分别为FNC24和FNC25。它们的操作数均可取KnY,KnM,KnS,T,C,D,V和Z,16位运算占3个程序步,32位运算占5个程序步。图5.24中,X0每次由OFF变为ON时,由[D·]指定的元件D10中的二进制数自动加1。如果不用脉冲指令,每一个扫描周期都要加1。当X1由OFF变为ON时,由[D·]指定的元件D11中的二进制数自动减1。若用连续指令时,每个周期减1。在16位运算中,+32767再加1就变为-32768;-32768再减1就变为+32767,但标志不置位。同样,在32位运算中,+2147483647再加1就变为-2147483648;-2147483648再减1就变为+2147483647,标志也不置位。图5.24二进制加1减1运算

3.字逻辑运算指令字逻辑运算指令包括WAND(字逻辑与)、WOR(字逻辑或)、WXOR(字逻辑异或)和NEG(求补)指令,它们的功能指令编号分别为FNC26~FNC29。WAND,WOR和WXOR指令的[S1·]和[S2·]均可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,16位运算占7个程序步,32位运算占13个程序步。NEG指令只有目标操作数,同样可取KnY,KnM,KnS,T,C,D,V和Z,但16位运算占3个程序步,32位运算占5个程序步。字逻辑与、字逻辑或、字逻辑异或指令以位(bit)为单位作相应的运算。如图5.25所示,当X0为ON时,[S1·]指定的D10和[S2·]指定的D12内数据按位对应,进行逻辑字与运算(见表5.2),结果存于由[D·]指定的元件D14中。图5.25字逻辑运算表5.2逻辑运算关系表当X1为ON时,[S1·]指定的D20和[S2·]指定的D22内数据按位对应,进行逻辑字或运算,结果存于由[D·]指定的元件D24中。当X2为ON时,[S1·]指定的D30和[S2·]指定的D32内数据按位对应,进行逻辑字异或运算,结果存于由[D·]指定的元件D34中。WXOR指令与求反指令(CML)组合使用可以实现“异或非”运算(见图5.25)。当X3由OFF→ON时,将[D·]指定的D40内数据的每一位取反后该数再加1,结果存于同一元件D40中,求补指令实际上是绝对值不变的变号操作。这是因为FX系列可编程控制器的负数是用2的补码形式来表示的,最高位为符号位,正数时该位为0,负数时为1,将负数求补后可以得到它的绝对值。

4.数据变换指令数据变换指令包括BCD(二进制数转换成BCD码并传送)和BIN(BCD码转换为二进制数并传送)指令。它们的源操作数可取KnX,KnY,KnM,KnS,T,C,D,V和Z,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,16位运算占5个程序步,32位运算占9个程序步。

1) BCD变换指令

BCD变换指令BCD(BinaryCodetoDecimal)的功能指令编号为FNC18,该指令是将源元件中的二进制数转换成BCD码送到目标元件中。如图5.26所示,当X0为ON时,源元件D12中的二进制数转换成BCD码送到目标元件Y0~Y7中。如果是16位操作,变换结果超出0~9999的范围就会出错;如果是32位操作,变换结果超出0~99999999的范围就会出错。图5.26BCD变换和BIN变换的使用可编程控制器内部的算术运算是用二进制进行的,因此可用BCD变换指令将PLC内的二进制数变为七段显示等所需的BCD码后向外部输出。

2) BIN变换指令

BIN变换指令BIN(Binary)的功能指令编号为FNC19,该指令是将源元件中BCD码转换成二进制数送到目标元件。数值范围:16位操作为0~9999;32位操作为0~99999999。

BIN变换指令的使用如图5.26所示。当X1为ON时,源元件K2X0中BCD码转换成二进制数送到目标元件D13中。如果源数据不是BCD数时,M8067为ON(运算错误),M8068(运算错误锁存)不工作,为OFF。常数K不能作为本指令的操作元件,因为在任何处理之前它们都会被转换成二进制数。

5.浮点数运算指令

1)二进制浮点数转换指令

(1)二进制浮点数转换为十进制浮点数。二进制浮点数转换为十进制浮点数指令EBCD的功能指令编号为FNC118,源操作数[S·]和目标操作数[D·]均为D,32位运算占9个程序步。

EBCD指令是将[S·]指定的单元内的二进制浮点数转换为十进制浮点数,并存入[D·]中。二进制浮点数的尾数占23位,符号占1位,指数部分占8位。图5.27中的X0为ON时,将D11,D10中的二进制浮点数转换为十进制浮点数后存入D21和D20。图5.27二进制浮点数转换指令

(2)十进制浮点数转换为二进制浮点数。十进制浮点数转换为二进制浮点数指令(D)EBIN的功能指令编号为FNC119,源操作数[S·]和目标操作数[D·]均为D,32位运算占9个程序步。

EBIN指令是将[S·]指定的单元内的十进制浮点数转换为二进制浮点数,并存入[D·]中。图5.27中的X1为ON时,将D31、D30中的十进制浮点数转换为二进制浮点数后存入D41、D40。使用该指令,可将含有小数点的十进制数直接转换为二进制浮点数。

(3)二进制浮点数转换为二进制整数。二进制浮点数转换为二进制整数指令INT的功能指令编号为FNC129,源操作数[S·]和目标操作数[D·]均为D,16位运算占5个程序步,32位运算占9个程序步。

INT指令是将[S·]指定单元内的二进制浮点数舍去小数部分后转换为二进制整数,并存入[D·]中。图5.27中的X2为ON时,将D51、D50中的二进制浮点数转换为二进制整数后存入D60中。该指令是FLT指令(FNC49)的逆运算,运算结果为0时,零标志M8020为ON;转换不满1而舍掉时,借位标志为ON;16位运算结果超出-32767~32767,或32位运算时,运算结果超出-2147483648~2147483647,将会发生溢出,进位标志为ON。

2)二进制浮点数的四则运算指令二进制浮点数四则运算指令的源操作数[S1·]和[S2·]可取K,H和D,目标操作数[D·]为D,只有32位运算,占13个程序步。运算影响标志位M8020(零标志)、M8021(借位标志)和M8022(进位标志)。常数参与运算时,被自动转换为二进制浮点数。源操作数和目标操作数可取同一数据寄存器,如用连续执行指令,每个扫描周期都会执行运算,如图5.28所示。图5.28二进制浮点数四则运算指令

(1)二进制浮点数的加法指令。二进制浮点数的加法指令EADD的功能指令编号为FNC120,该指令是将源操作数[S1·]和[S2·]指定单元内的二进制浮点数相加,和(二进制浮点数)存入目标操作数[D·]中。

(2)二进制浮点数的减法指令。二进制浮点数的减法指令ESUB的功能指令编号为FNC121,该指令是将源操作数[S1·]指定的二进制浮点数减去源操作数[S2·]指定的二进制浮点数,差(二进制浮点数)存入目标操作数[D·]中。

(3)二进制浮点数的乘法指令。二进制浮点数的乘法指令EMUL的功能指令编号为FNC122,该指令是将源操作数[S1·]指定的二进制浮点数乘以源操作数[S2·]指定的二进制浮点数,积(二进制浮点数)存入目标操作数[D·]中。

(4)二进制浮点数的除法指令。二进制浮点数的除法指令EDIV的功能指令编号为FNC123,该指令是将源操作数[S1·]指定的二进制浮点数除以源操作数[S2·]指定的二进制浮点数,商(二进制浮点数)存入目标操作数[D·]中。

3)二进制浮点数的开平方指令与三角函数运算指令

(1)二进制浮点数开平方指令。二进制浮点数开平方指令ESQR的功能指令编号为FNC127,源操作数[S·]为K,H和D,目标操作数[D·]为D,只有32位运算,占9个程序步。

ESQR指令是将[S·]指定的二进制浮点数进行开平方,平方根(二进制浮点数)存入目标操作数[D·]中,如图5.29所示。源操作数应为正数,若为负数则出错,运算错误标志M8067为ON,不执行指令。源操作数为常数时,自动转换为二进制浮点数。图5.29浮点数开平方与三角函数运算指令

(2)二进制浮点数三角函数运算指令。二进制浮点数三角函数运算指令包括SIN(正弦)、COS(余弦)和TAN(正切)指令,功能指令编号分别为FNC130~FNC132,源操作数[S·]和目标操作数[D·]为D,只有32位运算,占9个程序步。这些指令是用来求出源操作数[S·]指定的二进制浮点数(角度)的三角函数,函数值(二进制浮点数)存入目标操作数[D·]指定的单元中。源操作数应满足0°≤角度≤360°。角度单位为弧度(RAD),弧度值 = π × 角度值/180°。

6.时钟数据加减法指令时钟数据加、减法指令的[S1·],[S2·]和[D·]可取T,C和D,只有16位运算占7个程序步。

1)时钟数据加法指令时钟数据加法指令TADD(TimeAddition)的功能指令编号为FNC162,[S1·],[S2·]和[D·]中存放的是时间数据(时、分、秒)。该指令是以[S2·]起始的3点时刻数据加上存入以[S1·]起始的3点时刻数据,其结果存入以[D·]起始的3点中。图5.30中的X0为ON时,TADD指令将D10~D12和D0~D2的时刻数据相加后存入D20~D22中。运算结果如超过24h,进位标志为ON,其和减去24h后存入目标地址。

2)时钟数据减法指令时钟数据减法指令TSUB(TimeSubtraction)的功能指令编号为FNC163。该指令是以[S1·]起始的3点时刻数据减去存入以[S2·]起始的3点时刻数据,其结果存入以[D·]起始的3点中。图5.30中的X1为ON时,TSUB指令将D30~D32和D40~D42的时刻数据相减后存入D50~D52中。运算结果如小于零,借位标志为ON,其差值加上24h后存入目标地址。图5.30时钟数据加减法指令

7.格雷码变换指令格雷码变换指令GRY(GrayCode)和格雷码逆变换指令GBIN(GrayCodetoBinary)的功能指令编号为FNC170和FNC171,[S·]可取任意的数据格式,[D·]可取KnY,KnM,KnS,T,C,D,V和Z,16位运算占5个程序步,32位运算占9个程序步。格雷码的特点是相邻的两个数(二进制数)的各位中,只有一位的值是不同的。格雷码常用于光电码盘编码器。

GRY指令是将[S·]中的二进制数转换为格雷码并存入[D·]中,如图5.31所示。GBIN指令是将[S·]中的格雷码转换为二进制数并存入[D·]中。图5.31格雷码变换指令5.3.3循环移位与移位指令

1.循环移位指令右循环移位指令ROR(RotationRight)和左循环移位指令ROL(RotationLeft)的功能编号分别为FNC30和FNC31。它们只有目标操作数,可取KnY,KnM,KnS,T,C,D,V和Z。16位指令占5个程序步,32位指令占9个程序步。16位指令和32位指令中n应分别小于16和32。循环右(左)移指令可以使16位数据、32位数据向右(左)循环移位,如图5.32和图5.33所示。当X0(或X1)由OFF→ON时,[D·]内指定的D0内的数据向右(或向左)移4(n = 4)位,最后一次移出来的那一位同时存入进位标志M8022中。图5.32右循环移位指令图5.33左循环移位指令用连续指令执行时,循环移位操作每个周期执行一次。若在目标元件中指定位元件组的组数,只有K4(16位指令)和K8(32位指令)有效,例如K4Y0和K8M0。

2.带进位的循环移位指令带进位的右循环移位指令RCR(RotationRightwithCarry)和带进位的左循环移位指令RCL(RotationLeftwithCarry)的功能指令编号分别为FNC32和FNC33,它们的目标操作数、程序步数和n的取值范围与循环移位指令相同。执行这两条指令时,各位的数据与进位位M8022一起向右(或向左)循环移动n位(见图5.34和图5.35)。在循环中进位标志被送到目标操作数中。与循环移位指令一样,若在目标元件中指定位元件组的组数,只有K4(16位指令)和K8(32位指令)有效。图5.34带进位的右循环移位指令图5.35带进位的左循环移位指令

3.位右移和位左移指令位右移指令SFTR(ShiftRight)与位左移指令SFTL(ShiftLeft)的功能指令编号分别为FNC34和FNC35。它们的源操作数可取X,Y,M和S,目标操作数可取Y,M和S。它们只有16位运算,占9个程序步。位右移和位左移指令使元件中的状态成组地向右或向左移动,由n1指定位元件组的长度,n2指定移动的位数,对于FX2N,n2≤n1≤1024。图5.36中的X10由OFF变为ON时,位右移指令按以下顺序移位:M3~M0中的数溢出,M7~M4→M3~M0,M11~M8→M7~M4,M15~M12→M11~M8,X3~X0→M15~M12。图5.37中的X10由OFF变为ON时,位左移指令按以下顺序移位:M15~M12中的数溢出,M11~M8→M15~M12,M7~M4→M11~M8,M3~M0→M7~M4,X3~X0→M3~M0。图5.36位右移指令图5.37位左移指令

4.字右移和字左移指令字右移指令WSFR(WordShiftRight)与字左移指令WSFL(WordShiftLeft)的功能指令编号分别为FNC36和FNC37。它们的源操作数可取KnX,KnY,KnM,KnS,T,C和D,目标操作数可取KnY,KnM,KnS,T,C和D。字移动指令只有16位运算,占9个程序步。字右移(或字左移)指令是以字为单位,对[D·]所指定的n1个字元件进行[S·]所指定的n2个字的右移(或左移)。其中n2≤n1≤512。图5.38中的X0由OFF变为ON时,字右移指令按以下顺序移位:D3~D0中的数溢出,D7~D4→D3~D0,D11~D8→D7~D4,D15~D12→D11~D8,T3~T0→D15~D12。字左移指令的使用方法与字右移指令基本原理相同,请读者自行分析,在此不再赘述。图5.38字右移指令

5. FIFO(先入先出)写入与读出指令

1) FIFO(FirstInFirstOut)写入指令

FIFO写入指令SFWR(ShiftRegisterWrite)的功能指令编号为FNC38,源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C和D,只有16位运算,占7个程序步。图5.39中的X0由OFF→ON时,将[S·]所指定的D0的数据写入D2,[D·]所指定的指针D1的内容成为1。以后如X0再次由OFF→ON时,D0中新的数据写入D3,D1的内容变为2。依此类推,源操作数D0中的数据依次写入数据寄存器。数据由最右边的寄存器D2开始顺序存入,源数据写入的次数存入D1。当D1中的数达到n-1后不再执行上述处理,进位标志M8022置1。若是连续指令执行时,则在各个扫描周期按顺序执行。图5.39FIFO写入指令

2) FIFO读出指令

FIFO读出指令SFRD(ShiftRegisterRead)的功能指令编号为FNC39,源操作数可取KnY,KnM,KnS,T,C和D,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,只有16位运算,占7个程序步。图5.40中的X0由OFF→ON时,将D2的数据传送到D20内,与此同时,指针D1的内容减1,D3~D10的数据向右移。当X0再由OFF→ON时,即原D3中的内容传送到D20内,D1的内容再减1。依此类推,数据总是从D2读出,当D1的内容为0时,则上述操作不再执行,零标志M8020置1。若是连续指令执行时,则在各个扫描周期按顺序向右移位传送执行。图5.40FIFO读出指令5.3.4其他数据处理指令

1.区间复位指令区间复位指令ZRST(ZoneReset)也称为成批复位指令,其功能指令编号为FNC40,目标操作数可取T,C和D(字元件)或Y,M,S(位元件)。该指令只有16位运算,占5个程序步。

ZRST指令将[D1·]和[D2·]指定的元件号范围内的同类元件成批复位。图5.41中当M8002由OFF→ON时,区间复位指令执行。位元件M500~M599成批复位,字元件C235~C255成批复位,状态元件S0~S127成批复位。[D1·]和[D2·]指定的应为同一类元件,[D1·]的元件号应小于等于[D2·]的元件号。若[D1·]的元件号大于[D2·]的元件号,则只有[D1·]指定的元件被复位。图5.41区间复位指令虽然ZRST指令是16位处理指令,但是可在[D1·],[D2·]中指定32位计数器。不过不能混合指定,即不能在[D1·]中指定16位计数器,在[D2·]中指定32位计数器。

2.解码与编码指令

1)解码指令解码指令DECO(Decode)的功能指令编号为FNC41。位源操作数可取X,T,M和S,位目标操作数可取Y,M和S。字源操作数可取K,H,T,C,D,V和Z,字目标操作数可取T,C和D,n = 1~8,只有16位运算,占7个程序步。

(1)当[D·]是位元件时,以源[S·]为首地址的n位连续的位元件所表示的十进制码值为Q,DECO指令把以[D·]为首地址目标元件的第Q位(目标元件位为第0位)置1,其他位置0。如图5.42所示,X2~X0组成的3位(n = 3)二进制数为011,相当于十进制数Q为3(21 + 20 = 3),由目标操作数M17~M10组成的8位二进制数的第3位被置1,其余各位置0。如源数据Q为0,则第0位M0为1。若n = 0时,程序不执行;n=0~8以外时,出现运算错误;n = 8时,[D·]位数为28= 256,驱动输入为OFF时,不执行指令,上一次解码输出置1的位保持不变。图5.42解码(位)指令

(2)当[D·]是字元件时,以源[S·]所指定字元件的低n位所表示的十进制码值为Q,DECO指令把以[D·]所指定目标字元件的第Q位置1,其他各位置0。如图5.43所示,源操作数Q = 22 + 21 = 6,因此D1的第6位为1。当源数据为0时,D1的第0位为1。若n = 0时,程序不执行;n = 0~4以外时,出现运算错误;n = 4时,[D·]位数为24 = 16,驱动输入OFF时,不执行指令,上一次解码输出置1的位保持不变。图5.43解码(字)指令

2)编码指令编码指令ENCO(Encode)的功能指令编号为FNC42,只有16位运算,占7个程序步。当[S·]指定的源操作数是字元件T,C,D,V和Z时,就使n = 4,当[S·]指定的源操作数是位元件X,Y,M和S时,应使n = 1~8,目标元件可取T,C,D,V和Z。

(1)当[S·]是位元件时,以源[S·]为首地址、长度为2n的位元件中,将最高位置1的位置数存放到目标[D·]所指定的元件中,[D·]中数值的范围由n确定。如图5.44所示,源元件的长度为2n = 23 = 8位,即M0~M7,其最高位置1的是M4,即第4位。因此将“4”这个位置数以二进制数的形式存放到D10的低3位中。当源操作数的第0位位元件为1,则[D·]中存放0。当源操作数中无1,出现运算错误。若n = 0时,程序不执行;n = 1~8以外时,出现运算错误;n = 8时,[S·]位数为28=256。当执行条件OFF时,指令不执行,编码输出保持不变。

(2)当[S·]是字元件时,在其可读长度为2n位中,最高置1的位置数被存放到[D·]所指定的元件中,[D·]中数值的范围由n确定。如图5.45所示,源字元件的可读长度为2n = 23 = 8位,其最高置1位是第4位。将“4”这个位置数以二进制形式存放到D1的低3位中。若n = 0时,程序不执行;n = 1~4以外时,出现运算错误;n = 4时,[S·]位数为24=16。当执行条件OFF时,指令不执行,编码输出保持不变。图5.44编码(位)指令图5.45编码(字)指令

3.求置ON位总数与ON位判别指令

1)求置ON位总数指令求置ON位总数指令SUM的功能指令编号为FNC43。它的源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,16位运算占5个程序步,32位运算占9个程序步。图5.46中的X0为ON时,统计源操作数D0中为ON(位元件的值为“1”时称为ON)的位的个数,并将它送入目标操作数D2中。若D0的各位均为“0”,则零标志M8020置1。如使用32位指令,目标操作数的高位字为0。图5.46求置ON位总数与ON位判别指令

2) ON位判别指令

ON位判别指令BON(BitONCheck)的功能指令编号为FNC44。它的源操作数可取所有的数据类型,目标操作数可取Y,M和S。16位运算占7个程序步,n = 0~15,32位运算占13个程序步,n = 0~31。

BON指令用来检测指定元件中的指定位是否为“1”。如图5.46所示,当X1为ON时,若源操作数D10的第11位为ON(n = 11),则目标操作数M0变为ON。即使X1变为OFF,M0仍保持不变。

4.平均值指令平均值指令MEAN的功能指令编号为FNC45。它的源操作数可取KnX,KnY,KnM,KnS,T,C和D,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,16位运算占7个程序步,32位运算占13个程序步,n = 1~64。平均值指令MEAN是将[S·]开始的n个源操作数据的平均值(用n除代数和)存入目标操作数[D·]中,舍去余数。平均值指令的使用说明如图5.47所示。若元件超出指定的范围,n的值会自动缩小,只求允许范围内元件的平均值。若n的值超出范围1~64,则出错。图5.47平均值指令

5.报警器置位复位指令

1)报警器置位指令报警器置位指令ANS(AnnunciatorSet)的功能指令编号为FNC46。它的源操作数为T0~T199,目标操作数为S900~S999,m = 1~32767(以100ms为单位),只有16位运算,占7个程序步。图5.48中的X0为ON的时间超过1s(m = 10),S900置1,若X0变为OFF,定时器复位而S900保持为ON。

2)报警器复位报警器复位指令ANR(AnnunciatorReset)的功能指令编号为FNC47,无操作数,只有16位运算,占1个程序步。图5.48中的X1变为ON时,S900~S999之间被置1的报警器复位,若超过1个报警器被置1,则元件号最低的那一个报警器被复位。若X1再次ON,下一地址的信号报警器被复位。图5.48报警器置位与复位指令

6.二进制平方根指令平方根指令SQR(SquareRoot)的功能指令编号为FNC48。它的源操作数[S·]应大于零,可取K,H和D,目标操作数为D。16位运算占5个程序步,32位运算占9个程序步。图5.49中的X0变为ON时,将存放在D0中的数开平方,结果存放在D4内。计算结果舍去小数,只取整数。

7.二进制整数→二进制浮点数转换指令二进制整数→二进制浮点数转换指令FLT(Float)的功能指令编号为FNC49。它的源操作数和目标操作数均为D。16位运算占5个程序步,32位运算占9个程序步。图5.49中的X1变为ON时,该指令将存放在源操作数D10中的数据转换为浮点数,将它存放在目标寄存器D13和D12中。图5.49二进制平方根与浮点数转换指令

8.高低字节交换指令高低字节交换指令SWAP的功能指令编号为FNC147。它的源操作数可取KnY,KnM,KnS,T,C,D,V和Z。16位运算占5个程序步,32位运算占9个程序步。一个字节由8位二进制数组成。16位运算时,该指令交换源操作数的高字节和低字节。图5.50中的X2变为ON时,D10的高字节和低字节进行交换。32位运算时,如指定的源操作数为D20,先交换D20的高字节和低字节,再交换D21的高字节和低字节。图5.50高低字节交换指令

9.时钟数据读/写指令

1)时钟数据读出指令时钟数据读出指令TRD(TimeRead)的功能指令编号为FNC166,[D·]可取T,C和D,只有16位运算占5个程序步。该指令用来读出内置的实时钟的数据,并存放在[D·]开始的7个字内,实时钟的时间数据存放在特殊辅助寄存器D8013~D8019内,D8018~D8013中分别存放年、月、日、时、分和秒,星期存放在D8019中。图5.51中的X1为ON时,D8018~D8013中存放的6个时钟数据分别读入D10~D15,D8019中的星期值读入D16。图5.51时钟数据读写指令

2)时钟数据写入指令时钟数据写入指令TWR(TimeWrite)的功能指令编号为FNC167,[S·]可取T,C和D,只有16位运算,占5个程序步。该指令用来将[S·]开始的7点数据(时间设定值)写入内置的实时钟。图5.51中的D20~D25分别存放年、月、日、时、分和秒,D26存放星期,X2为ON时,D20~D25的时钟数据分别写入D8018~D8013,D26中的数据写入D8019。5.4特殊功能类指令5.4.1高速处理指令

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论