2019/12/18电气传动的发展1电气控制与PLC应用技术三菱功能指令2019/12/18电气传动的发展2第六章三菱PLC的功能指令可编程控制器除了具有基本逻辑指令和步进指令外,还具有许多功能指令。如FXOn系列具有20条基本指令,51条功能指令,而FX2N系列具有27条基本逻辑指令和298条功能指令,所以不同系列的可编程控制器功能指令相差很多。功能指令实际上是执行一个个功能不同子程序的调用,它既能简化程序设计。,又能完成复杂的数据处理、数值运算,实现高难度控制。2019/12/18电气传动的发展36.1功能指令的表示方式FX系列可编程控制器的功能指令采用梯形图和指令助计符相结合的表达方式,如下图所示。2019/12/18电气传动的发展4①常开触点X0为程序执行的条件;②MEAN为求平均值的助记符;③D10、D30和K3为操作数,其中D10为源操作数,D30为目的操作数,K3为常数。指令内容的解释2019/12/18电气传动的发展5指令内容的解释程序含义当常开触点X0接通时,求出D10开始的连续3个元件的平均值,结果送到目标寄存器D30。标识说明源操作数用[S]表示,当操作数使用变址功能时,表示为[S·],源操作数不止一个时,可用[S1·]、[S2·]表示。2019/12/18电气传动的发展66.2FX2N系列可编程控制器功能指令6.2.1程序流向控制功能指令(FNC00~FNC09)⑴条件跳转指令。条件跳转指令CJ(ConditionalJump)(FNC00)的操作数为指针P0~P127(可以变址修改),表示跳转目标,P63表示跳转到END步,无需标记。该指令占3步,指针标号占1步。2019/12/18电气传动的发展7⑵子程序相关指令子程序调用指令CALL(SubroutineCall)(FNC01)的操作数为指针标号P0~P127(不包括P63,允许变址修改),表示子程序的入口,该指令占3步,指针标号占1步。子程序返回指令SRET(SubroutineReturn)(FNC02)无操作数,占用一个程序步。CALL指令用于一定条件下调用并执行子程序。使用SRET指令回到原跳转点下一条指令继续执行主程序。子程序可以嵌套调用,最多嵌套5级。2019/12/18电气传动的发展8⑶中断相关指令中断返回指令IRET(InterruptionReturn)、允许中断指令EI(InterruptionEnable)、禁止中断指令DI(InterruptionDisable)的功能指令编号分别为FNC03、FNC04和FNC05。它们均无操作数,分别占用一个程序步。FX2N系列可编程控制器具有6个和X0~X5对应的中断输入点,中断指针为I□0△,其中□=0~5,对应X0~X5;△=0,下降沿中断;△=1,上升沿中断。2019/12/18电气传动的发展9⑷主程序结束指令FEND主程序结束指令FEND(FirstEnd)(FNC06)无操作数,占一个程序步,表示主程序结束。程序执行到这条指令时进行输出处理、输入处理和监控定时器的刷新,全部完成后返回到程序的第0步。使用多条FEND指令时,中断程序应放在最后的FEND和END之间。2019/12/18电气传动的发展10⑸监控定时器指令WDT监控定时器俗称看门狗,在执行FEND或END指令时,监控定时器被刷新。如果可编程控制器从0步到FEND或END的执行时间小于它的设定时间,则正常工作;反之,可编程控制器可能已偏离正常的程序执行时间,从而停止运行,CPU-E发光二极管亮。监控定时器定时时间的缺省设定值为200ms,如果想使扫描时间超过200ms的大程序能顺利通过,可以通过M8002的常开触点控制数据传送指令MOV,将需要值写入特殊数据寄存器D8000来实现。2019/12/18电气传动的发展11⑹循环指令FOR(FNC08)为表示循环开始的指令,占3个程序步,操作数表示循环次数N,N=1~32767。NEXT(FNC09)为循环结束的指令,占1个程序步,无操作数。FOR和NEXT之间的程序被反复执行,次数由N决定。执行完后,再执行NEXT指令后的程序。FOR和NEXT指令必须成对使用,且FOR在前,NEXT在后。NEXT指令也不允许写在END和FEND指令之后。2019/12/18电气传动的发展126.22.数据比较与传送指令(1)数据比较指令1)数据比较指令CMP2)区间比较指令ZCP⑵传送指令1)传送指令MOV2)移位传送指令SMOV3)取反传送指令CML4)块传送指令BMOV5)多点传送指令6)数据交换指令2019/12/18电气传动的发展13(3)数据编号指令1)BCD(BinaryCodetoDecimal)变换指令的功能编号为FNC18,它将源元件中得二进制数转换为BCD码并送到指定目标元件中。该指令用于将PLC中二进制数变换成BCD码输出以驱动7段显示。2)BIN(Binary)变换指令的功能编号为FNC19,它将源元件中得BCD码转换为二进制数并送到指定目标元件中。该指令用于将PLC接口BCD数字开关提供的设定值输入到PLC中。2019/12/18电气传动的发展146.2.3.运算功能指令(1)算术运算指令:1)ADD(Addition)加法指令的功能编号为FNC20,它将源元件中得二进制数相加,结果送到指定的目标元件。2)SUB(Subtraction)减法指令的功能编号为FNC21,它将源元件中得二进制数相减,结果送到指定的目标元件。3)MUL(Multiplication)乘法指令的功能编号为FNC22,它将指令的16位二进制源操作数相乘,结果以32位的形式送到指定的目标操作元件中。2019/12/18电气传动的发展156.2.3.运算功能指令4)DIV(Division)除法治疗的功能编号为FNC23,它指定前边的源操作数为被除数,后边的源操作数为除数,运算后所得商送到指定的目标元件中,余数送到目标元件的下一个元件。下图中X3为ON时,则执行(D1,D0)÷(D3,D2),其商是32位数据,被送到(D5,D4,)中,余数也是32位数据,被送到(D7,D6)中2019/12/18电气传动的发展16(2)加1指令和减1指令1)INC(Increment)加1指令的功能编号为FNC24,它将指定的目标操作元件中得二进制数据自动加1。2)DEC(Decrement)减1指令的功能编号为FNC25,它将指定的目标操作元件中得二进制数据自动减1。2019/12/18电气传动的发展17(3)字逻辑运算命令字逻辑与指令WAND、字逻辑或指令WOR、字逻辑异或(ExclusiveOr)指令WXOR的功能指令编号分别为FNC26~FNC28,它们各自将指定的两个源数据以位为单位做相应的逻辑运算,结果存放到目标元件中。2019/12/18电气传动的发展186.2.4.循环移位与移位功能指令(1)循环移位指令。ROR(RotationRight)、ROL(RotationLeft)分别为右循环移位指令和左循环移位指令,功能指令编号为FNC30和FNC31。(2)进位的循环移位指令。RCR(RotationRightCarry)、RCL(RotationleftwithCarry)分别为带进位的右、左循环移位指令,功能指令编号为FNC32和FNC33。2019/12/18电气传动的发展196.2.4.循环移位与移位功能指令(3)位移位指令。SFTR(ShiftRight)SFTL(ShiftRight)分别为位右移、位左移指令,功能指令编号为FNC34和FNC35。其功能是将位元件中得状态成组地向右或向左移动。(4)字移位指令。WSFR(WordShiftRight)、WSFL(WordShiftLeft)分别为字右移、字左移指令,功能指令编号为FNC36和FNC37。(5)FIFO写入与读出指令。SFWR(ShiftRegisterWrite)、SFRD(ShiftRegisterRead)分别为先进先出(FirstinFirstout,简为FIFO)写入、读出指令,功能指令编号为FNC38和FNC39。2019/12/18电气传动的发展206.2.5.数据处理指令(1)区间复位指令。ZRST(ZoneReset)为区间复位指令,其功能指令编号为FNC40,它是将[D1·][D2·]指令的元件号范围内的桶内元件成批复位。目标操作元件可取T,C和D(字元件)或Y,M和S(位元件)。[D1·][D2·]指定的元件必须为同一类元件,且[D1·]指定的元件号必须小于[D2·]指定的元件号。ZRST指令其实可以说是RST指令的集成。2019/12/18电气传动的发展21(2)解码指令和编码指令1)DECO(Decode)为解码指令,其功能指令编号为FNC41.它将目标元件的某一位置“1”,其他位置“0”,置“1”位的位置由源操作数[S1·]为首址的n位连续位元件或数据寄存器所示的十进制码决定。2)ENCO(Encode)为编码指令,其功能指令编号为FNC42,它把源元件中为“1”的最高位的位置转化为二进制数并送到目标元件的低n位中。当源元件是字元件T,C,D,V和Z时,应使n=1~4,当源元件是位元件X,Y,M和S时,应使n=1~8。目标元件可取T,C,D,V和Z。(3)求ON位总数的指令:SUM为求置ON位总数的指令,其功能指令编号为FNC43。2019/12/18电气传动的发展22(2)解码指令和编码指令(4)ON位判别指令。BON(BitONCheck)为ON位判别指令,功能指令编号为FNC44。它用于判断源元件第n位的状态,如果该位为“1”则目标位元件(可取Y、M和S)置“1”,反之置“0”。(5)平均值指令。MEAN为平均值指令,功能指令编号为FNC45。它用于计算以指定源操作数为首址的n个连续源操作数的平均值,结果送到指定的目标元件,余数略去。2019/12/18电气传动的发展23(6)报警器置位和复位指令1)ANS(AnnunciatorSet)为报警器置位指令,功能指令编号为FNC46,源操作数为T0~T199(100ms定时器),目标操作数为S900~S999(报警用状态),n=1~32767。它用于启动定时器,时间到n*100ms时指定目标元件状态置ON。2)ANR(AnnunciatorSet)为报警器复位指令,功能指令编号为FNC47,无源操作数。它用于将S900~S999之间被置ON的报警器依次复位。2019/12/18电气传动的发展24(7)其他有关指令SQR(SquareRoot)二进制平方根指令、FLT(Float)二进制整数转换为二进制浮点指令和SWAP高低字节交换指令功能指令编号分别为FNC48、FNC49、FNC147。2019/12/18电气传动的发展256.2.6.高速处理指令高速处理指令的功能指令编号为FNC50~59,包括输入输出刷新指令REF(Refresh)、刷新和滤波时间常数调整指令REEF(RefreshAndFilterAdjust)、矩阵输入指令MTR(Matrix)、高速计数器比较置位指令HSCS(SetbyHighSpeedCountre)、高速计数器比较复位指令HSCR(ReretbyHighCounter)、高速计数器区间比较指令HSZ(ZonecompareforHighSpeedCounter)、速度检测指令SPD(SpeedDetect)、脉冲输出指令PLSY(PulseOutput)、脉宽调制指令PWM(PulseWidthModulation)、带加减速功能的脉冲输出指令PLSR(PulseR)。此处仅简单介绍其中常用的4条高速处理指令。2019/12/18电气传动的发展266.2.7.方便指令方便指令的功能指令编号为FNC60~69,包括状态初始化指令IST(InitialState)、数据搜索指