第三章 FX系列PLC的基本指令
FX系列PLC有基本逻辑指令20或27条、步进指令2条、功能指令100多条(不同系列有所不同)。本节以FX2N为例,介绍其基本逻辑指令和步进指令及其应用。
一、FX系列PLC的基本逻辑指令
FX2N的共有27条基本逻辑指令,其中包含了有些子系列PLC的20条基本逻辑指令。
1.取指令与输出指令(LD/LDI/LDP/LDF/OUT)
(1)LD(取指令) 一个常开触点与左母线连接的指令,每一个以常开触点开始的逻辑行都用此指令。
(2)LDI(取反指令) 一个常闭触点与左母线连接指令,每一个以常闭触点开始的逻辑行都用此指令。
(3)LDP(取上升沿指令)与左母线连接的常开触点的上升沿检测指令,仅在指定位元件的上升沿(由OFF→ON)时接通一个扫描周期。
(4)LDF(取下降沿指令) 与左母线连接的常闭触点的下降沿检测指令。 (5)OUT(输出指令) 对线圈进行驱动的指令,也称为输出指令。 取指令与输出指令的使用如图3-1所示。
图3-1 取指令与输出指令的使用
取指令与输出指令的使用说明:
1)LD、LDI指令既可用于输入左母线相连的触点,也可与ANB、ORB指令配合实现块逻辑运算;
2)LDP、LDF指令仅在对应元件有效时维持一个扫描周期的接通。图3-1中,当M1有一个下降沿时,则Y3只有一个扫描周期为ON。
3)LD、LDI、LDP、LDF指令的目标元件为X 、Y 、M 、T、C、S; 4)OUT指令可以连续使用若干次(相当于线圈并联),对于定时器和计数器,在OUT指令之后应设置常数K或数据寄存器。
5)OUT指令目标元件为Y、M、T、C和S,但不能用于X。 2.触点串联指令(AND/ANI/ANDP/ANDF)
1
教 案 用 纸 第三章 (1)AND(与指令) 一个常开触点串联连接指令,完成逻辑“与”运算。 (2)ANI(与反指令) 一个常闭触点串联连接指令,完成逻辑“与非”运算。
(3)ANDP 上升沿检测串联连接指令。 (4)ANDF 下降沿检测串联连接指令。 触点串联指令的使用如图3-2所示。
图3-2 触点串联指令的使用
触点串联指令的使用的使用说明:
1)AND、ANI、ANDP、ANDF都指是单个触点串联连接的指令,串联次数没有,可反复使用。
2)AND、ANI、ANDP、ANDF的目标元元件为X、Y、M、T、C和S。 3)图3-2中OUT M101指令之后通过T1的触点去驱动Y4称为连续输出。 3.触点并联指令(OR/ORI/ORP/ORF)
(1)OR(或指令) 用于单个常开触点的并联,实现逻辑“或”运算。 (2)ORI(或非指令) 用于单个常闭触点的并联,实现逻辑“或非”运算。 (3)ORP 上升沿检测并联连接指令。 (4)ORF 下降沿检测并联连接指令。 触点并联指令的使用如图3-3所示。
图3-3 触点并联指令的使用
2
教 案 用 纸 第三章 触点并联指令的使用说明:
1)OR、ORI、ORP、ORF指令都是指单个触点的并联,并联触点的左端接到LD、LDI、LDP或LPF处,右端与前一条指令对应触点的右端相连。触点并联指令连续使用的次数不限;
2)OR、ORI、ORP、ORF指令的目标元件为X、Y、M、T、C、S。 4.块操作指令(ORB / ANB)
(1)ORB(块或指令) 用于两个或两个以上的触点串联连接的电路之间的并联。ORB指令的使用如图3-4所示。
图3-4 ORB指令的使用
ORB指令的使用说明:
1)几个串联电路块并联连接时,每个串联电路块开始时应该用LD或LDI指令;
2)有多个电路块并联回路,如对每个电路块使用ORB指令,则并联的电路块数量没有;
3)ORB指令也可以连续使用,但这种程序写法不推荐使用,LD或LDI指令的使用次数不得超过8次,也就是ORB只能连续使用8次以下。
(2)ANB(块与指令) 用于两个或两个以上触点并联连接的电路之间的串联。ANB指令的使用说明如图3-5示。
图3-5 ANB指令的使用
ANB指令的使用说明:
1)并联电路块串联连接时,并联电路块的开始均用LD或LDI指令; 2)多个并联回路块连接按顺序和前面的回路串联时,ANB指令的使用次数
3
教 案 用 纸 第三章 没有。也可连续使用ANB,但与ORB一样,使用次数在8次以下
5.置位与复位指令(SET/RST)
(1)SET(置位指令) 它的作用是使被操作的目标元件置位并保持。 (2)RST(复位指令) 使被操作的目标元件复位并保持清零状态。
SET、RST指令的使用如图3-6所示。当X0常开接通时,Y0变为ON状态并一直保持该状态,即使X0断开Y0的ON状态仍维持不变;只有当X1的常开闭合时,Y0才变为OFF状态并保持,即使X1常开断开,Y0也仍为OFF状态。
图3-6 置位与复位指令的使用
SET 、RST指令的使用说明:
1)SET指令的目标元件为Y、M、S,RST指令的目标元件为Y、M、S、T、C、D、V 、Z。RST指令常被用来对D、Z、V的内容清零,还用来复位积算定时器和计数器。
2)对于同一目标元件,SET、RST可多次使用,顺序也可随意,但最后执行者有效。
6.微分指令(PLS/PLF)
(1)PLS(上升沿微分指令) 在输入信号上升沿产生一个扫描周期的脉冲输出。
(2)PLF(下降沿微分指令) 在输入信号下降沿产生一个扫描周期的脉冲输出。
微分指令的使用如图3-7所示,利用微分指令检测到信号的边沿,通过置位和复位命令控制Y0的状态。
4
教 案 用 纸 第三章
图3-7 微分指令的使用
PLS、PLF指令的使用说明:
1)PLS、PLF指令的目标元件为Y和M;
2)使用PLS时,仅在驱动输入为ON后的一个扫描周期内目标元件ON,如图3-7所示,M0仅在X0的常开触点由断到通时的一个扫描周期内为ON;使用PLF指令时只是利用输入信号的下降沿驱动,其它与PLS相同。
7.主控指令(MC/MCR)
(1)MC(主控指令) 用于公共串联触点的连接。执行MC后,左母线移到MC触点的后面。
(2)MCR(主控复位指令) 它是MC指令的复位指令,即利用MCR指令恢复原左母线的位置。
在编程时常会出现这样的情况,多个线圈同时受一个或一组触点控制,如果在每个线圈的控制电路中都串入同样的触点,将占用很多存储单元,使用主控指令就可以解决这一问题。MC、MCR指令的使用如图3-8所示,利用MC N0 M100实现左母线右移,使Y0、Y1都在X0的控制之下,其中N0表示嵌套等级,在无嵌套结构中N0的使用次数无;利用MCR N0恢复到原左母线状态。如果X0断开则会跳过MC、MCR之间的指令向下执行。
5
教 案 用 纸 第三章
MC、MCR指令的使用说明:
1)MC、MCR指令的目标元件为Y和M,但不能用特殊辅助继电器。MC占3个程序步,MCR占2个程序步;
2)主控触点在梯形图中与一般触点垂直(如图3-8中的M100)。主控触点是与左母线相连的常开触点,是控制一组电路的总开关。与主控触点相连的触点必须用LD或LDI指令。
3)MC指令的输入触点断开时,在MC和MCR之内的积算定时器、计数器、用复位/置位指令驱动的元件保持其之前的状态不变。非积算定时器和计数器,用OUT指令驱动的元件将复位,如图3-8中当X0断开,Y0和Y1即变为OFF。
4)在一个MC指令区内若再使用MC指令称为嵌套。嵌套级数最多为8级,编号按N0→N1→N2→N3→N4→N5→N6→N7顺序增大,每级的返回用对应的MCR指令,从编号大的嵌套级开始复位。
8.堆栈指令(MPS/MRD/MPP)
堆栈指令是FX系列中新增的基本指令,用于多重输出电路,为编程带来便利。在FX系列PLC中有11个存储单元,它们专门用来存储程序运算的中间结果,被称为栈存储器。
(1)MPS(进栈指令) 将运算结果送入栈存储器的第一段,同时将先前送入的数据依次移到栈的下一段。
(2)MRD(读栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据继续保存在栈存储器的第一段,栈内的数据不发生移动。
(3)MPP(出栈指令) 将栈存储器的第一段数据(最后进栈的数据)读出且该数据从栈中消失,同时将栈中其它数据依次上移。
堆栈指令的使用如图3-9所示,其中图3-9a为一层栈,进栈后的信息可无限使用,最后一次使用MPP指令弹出信号;图3-9b为二层栈,它用了二个栈单元。
6
图3-8 主控指令的使用
教 案 用 纸 第三章
堆栈指令的使用说明:
1)堆栈指令没有目标元件; 2)MPS和MPP必须配对使用;
3)由于栈存储单元只有11个,所以栈的层次最多11层。 9.逻辑反、空操作与结束指令(INV/NOP/END)
(1)INV(反指令) 执行该指令后将原来的运算结果取反。反指令的使用如图3-10所示,如果X0断开,则Y0为ON,否则Y0为OFF。使用时应注意INV不能象指令表的LD、LDI、LDP、LDF那样与母线连接,也不能象指令表中的OR、ORI、ORP、ORF指令那样单独使用。
图3-10 反指令的使用
(2)NOP(空操作指令) 不执行操作,但占一个程序步。执行NOP时并
7
图3-9 堆栈指令的使用 a) 一层栈 b) 二层栈
教 案 用 纸 第三章 不做任何事,有时可用NOP指令短接某些触点或用NOP指令将不要的指令覆盖。当PLC执行了清除用户存储器操作后,用户存储器的内容全部变为空操作指令。
(3)END(结束指令) 表示程序结束。若程序的最后不写END指令,则PLC不管实际用户程序多长,都从用户程序存储器的第一步执行到最后一步;若有END指令,当扫描到END时,则结束执行程序,这样可以缩短扫描周期。在程序调试时,可在程序中插入若干END指令,将程序划分若干段,在确定前面程序段无误后,依次删除END指令,直至调试结束。
二、FX系列PLC的步进指令
1.步进指令(STL/RET)
步进指令是专为顺序控制而设计的指令。在工业控制领域许多的控制过程都可用顺序控制的方式来实现,使用步进指令实现顺序控制既方便实现又便于阅读修改。
FX2N中有两条步进指令:STL(步进触点指令)和RET(步进返回指令)。 STL和RET指令只有与状态器S配合才能具有步进功能。如STL S200表示状态常开触点,称为STL触点,它在梯形图中的符号为
,它没有常闭触点。
我们用每个状态器S记录一个工步,例STL S200有效(为ON),则进入S200表示的一步(类似于本步的总开关),开始执行本阶段该做的工作,并判断进入下一步的条件是否满足。一旦结束本步信号为ON,则关断S200进入下一步,如S201步。RET指令是用来复位STL指令的。执行RET后将重回母线,退出步进状态。
2.状态转移图
一个顺序控制过程可分为若干个阶段,也称为步或状态,每个状态都有不同的动作。当相邻两状态之间的转换条件得到满足时,就将实现转换,即由上一个状态转换到下一个状态执行。我们常用状态转移图(功能表图)描述这种顺序控制过程。如图3-11所示,用状态器S记录每个状态,X为转换条件。如当X1为ON时,则系统由S20状态转为S21状态。
图3-11 状态转移图与步进指令
状态转移图中的每一步包含三个内容:本步驱动的内容,转移条件及指令的转换目标。如图3-11中S20步驱动Y0,当X1有效为ON时,则系统由S20状态转为S21状态,X1即为转换条件,转换的目标为S21步。
3.步进指令的使用说明
8
教 案 用 纸 第三章 1)STL触点是与左侧母线相连的常开触点,某STL触点接通,则对应的状态为活动步;
2)与STL触点相连的触点应用LD或LDI指令,只有执行完RET后才返回左侧母线;
3)STL触点可直接驱动或通过别的触点驱动Y、M、S、T等元件的线圈; 4)由于PLC只执行活动步对应的电路块,所以使用STL指令时允许双线圈输出(顺控程序在不同的步可多次驱动同一线圈);
5) STL触点驱动的电路块中不能使用MC和MCR指令,但可以用CJ指令; 6)在中断程序和子程序内,不能使用STL指令。
第四章 FX系列PLC的功能指令
早期的PLC大多用于开关量控制,基本指令和步进指令已经能满足控制要求。为适应控制系统的其它控制要求(如模拟量控制等),从20世纪80年代开始,PLC生产厂家就在小型PLC上增设了大量的功能指令(也称应用指令),功能指令的出现大大拓宽了PLC的应用范围,也给用户编制程序带来了极大方便。FX系列PLC有多达100多条功能指令(见附录A),由于篇幅的,本节仅对比较常用的功能指令作详细介绍,其余的指令只作简介,读者可参阅FX系列PLC编程手册。
一、概述
(一)功能指令的表示格式
功能指令表示格式与基本指令不同。功能指令用编号FNC00~FNC294表示,并给出对应的助记符(大多用英文名称或缩写表示)。例如FNC45的助记符是MEAN(平均),若使用简易编程器时键入FNC45,若采用智能编程器或在计算机上编程时也可键入助记符MEAN。
有的功能指令没有操作数,而大多数功能指令有1至4个操作数。如图4-1所示为一个计算平均值指令,它有三个操作数,[S]表示源操作数,[D]表示目标操作数,如果使用变址功能,则可表示为[S·]和[D·]。当源或目标不止一个时,用[S1·]、[S2·]、[D1·]、[D2·]表示。用n和m表示其它操作数,它们常用来表示常数K和H,或作为源和目标操作数的补充说明,当这样的操作数多时可用n1、n2和m1、m2等来表示。
图4-1 功能指令表示格式
图4-1中源操作数为D0、D1、D2,目标操作数为D4Z0(Z0为变址寄存器),K3表示有3个数,当X0接通时,执行的操作为[(D0)+(D1)+(D2)]÷3→(D4Z0),如果Z0的内容为20,则运算结果送入D24中。
功能指令的指令段通常占1个程序步,16位操作数占2步,32位操作数占
9
教 案 用 纸 第三章 4步。
(二)功能指令的执行方式与数据长度 1.连续执行与脉冲执行
功能指令有连续执行和脉冲执行两种类型。如图4-2所示,指令助记符MOV后面有“P”表示脉冲执行,即该指令仅在X1接通(由OFF到ON)时执行(将D10中的数据送到D12中)一次;如果没有“P”则表示连续执行,即该在X1接通(ON)的每一个扫描周期指令都要被执行。
图4-2 功能指令的执行方式与数据长度的表示
2.数据长度
功能指令可处理16位数据或32位数据。处理32位数据的指令是在助记符前加“D”标志,无此标志即为处理16位数据的指令。注意32位计数器(C200~C255)的一个软元件为32位,不可作为处理16位数据指令的操作数使用。如图4-2所示,若MOV指令前面带“D”,则当X1接通时,执行D11D10→D13D12(32位)。在使用32位数据时建议使用首编号为偶数的操作数,不容易出错。
(三)功能指令的数据格式 1.位元件与字元件
象X、Y、M、S等只处理ON/OFF信息的软元件称为位元件;而象T、C、D等处理数值的软元件则称为字元件,一个字元件由16位二进制数组成。
位元件可以通过组合使用,4个位元件为一个单元,通用表示方法是由Kn加起始的软元件号组成,n为单元数。例如K2 M0表示M0~M7组成两个位元件组(K2表示2个单元),它是一个8位数据,M0为最低位。如果将16位数据传送到不足16位的位元件组合(n<4)时,只传送低位数据,多出的高位数据不传送,32位数据传送也一样。在作16位数操作时,参与操作的位元件不足16位时,高位的不足部分均作0处理,这意味着只能处理正数(符号位为0),在作32位数处理时也一样。被组合的元件首位元件可以任意选择,但为避免混乱,建议采用编号以0结尾的元件,如S10,X0,X20等。
2.数据格式
在FX系列PLC内部,数据是以二进制(BIN)补码的形式存储,所有的四则运算都使用二进制数。二进制补码的最高位为符号位,正数的符号位为0,负数的符号位为1。FX系列PLC可实现二进制码与BCD码的相互转换。
为更精确地进行运算,可采用浮点数运算。在FX系列PLC中提供了二进制浮点运算和十进制浮点运算,设有将二进制浮点数与十进制浮点数相互转换的指令。二进制浮点数采用编号连续的一对数据寄存器表示,例D11和D10组成的32位寄存器中,D10的16位加上D11的低7位共23位为浮点数的尾数,而D11中除最高位的前8位是阶位,最高位是尾数的符号位(0为正,1是负)。10进制的浮点数也用一对数据寄存器表示,编号小数据寄存器为尾数段,编号大的为指数段,例如使用数据寄存器(D1,D0)时,表示数为
10进制浮点数=〔尾数D0〕×10〔指数D1〕
其中:D0,D1的最高位是正负符号位。
10
教 案 用 纸 第三章
二、FX系列PLC功能指令介绍
FX2N系列PLC有丰富的功能指令,共有程序流向控制、传送与比较、算术与逻辑运算、循环与移位等19类功能指令。
(一)程序流向控制类指令(FNC00~FN09) 1.条件跳转指令
条件跳转指令CJ(P)的编号为FNC00,操作数为指针标号P0~P127,其中P63为END所在步序,不需标记。指针标号允许用变址寄存器修改。CJ和CJP都占3个程序步,指针标号占1步。
如图4-3所示,当X20接通时,则由CJ P9指令跳到标号为P9的指令处开始执行,跳过了程序的一部分,减少了扫描周期。如果X20断开,跳转不会执行,则程序按原顺序执行。 图4-3 跳转指令的使用
使用跳转指令时应注意:
1)CJP指令表示为脉冲执行方式;
2)在一个程序中一个标号只能出现一次,否则将出错;
3)在跳转执行期间,即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保持跳转前的状态,因为跳转期间根本没有执行这段程序。
4)如果在跳转开始时定时器和计数器已在工作,则在跳转执行期间它们将停止工作,到跳转条件不满足后又继续工作。但对于正在工作的定时器T192~T199和高速计数器C235~C255不管有无跳转仍连续工作。
5)若积算定时器和计数器的复位(RST)指令在跳转区外,即使它们的线圈被跳转,但对它们的复位仍然有效。
2.子程序调用与子程序返回指令
子程序调用指令CALL的编号为FNC01。操作数为P0~P127,此指令占用3个程序步。
子程序返回指令SRET的编号为FNC02。无操作数,占用1个程序步。 如图4-4所示,如果X0接通,则转到标号P10处去执行子程序。当执行SRET指令时,返回到CALL指令的下一步执行。
11
教 案 用 纸 第三章
图4-4 子程序调用与返回指令的使用
使用子程序调用与返回指令时应注意:
1)转移标号不能重复,也不可与跳转指令的标号重复; 2)子程序可以嵌套调用,最多可5级嵌套。 3.与中断有关的指令
与中断有关的三条功能指令是:中断返回指令IRET,编号为FNCO3;中断允许指令EI,编号为FNCO4;中断禁止DI,编号为FNC05。它们均无操作数,占用1个程序步。
PLC通常处于禁止中断状态,由EI和DI指令组成允许中断范围。在执行到该区间,如有中断源产生中断,CPU将暂停主程序执行转而执行中断服务程序。当遇到IRET时返回断点继续执行主程序。如图4-5所示,允许中断范围中若中断源X0有一个下降沿,则转入I000为标号的中断服务程序,但X0可否引起中断还受M8050控制,当X20有效时则M8050控制X0无法中断。
图4-5 中断指令的使用 12
教 案 用 纸 第三章
使用中断相关指令时应注意:
1)中断的优先级排队如下,如果多个中断依次发生,则以发生先后为序,即发生越早级别越高,如果多个中断源同时发出信号,则中断指针号越小优先级越高;
2)当M8050~M8058为ON时,禁止执行相应I0□□~I8□□的中断,M8059为ON时则禁止所有计数器中断;
3)无需中断禁止时,可只用EI指令,不必用DI指令;
4)执行一个中断服务程序时,如果在中断服务程序中有EI和DI,可实现二级中断嵌套,否则禁止其它中断。
4.主程序结束指令
主程序结束指令FEND的编号为FNC06,无操作数,占用1个程序步。FEND表示主程序结束,当执行到FEND时,PLC进行输入/输出处理,监视定时器刷新,完成后返回启始步。
使用FEND指令时应注意:
1)子程序和中断服务程序应放在FEND之后;
2)子程序和中断服务程序必须写在FEND和END之间,否则出错。 5.监视定时器指令
监视定时器指令WDT(P)编号为FNC07,没有操作数,占有1个程序步。WDT指令的功能是对PLC的监视定时器进行刷新。
FX系列PLC的监视定时器缺省值为200ms(可用D8000来设定),正常情况下PLC扫描周期小于此定时时间。如果由于有外界干扰或程序本身的原因使扫描周期大于监视定时器的设定值,使PLC的CPU出错灯亮并停止工作,可通过在适当位置加WDT指令复位监视定时器,以使程序能继续执行到END。
如图4-6所示,利用一个WDT指令将一个240ms的程序一分为二,使它们都小于200ms,则不再会出现报警停机。
图4-6 监控定时器指令的使用
使用WDT指令时应注意:
1)如果在后续的FOR-NEXT循环中,执行时间可能超过监控定时器的定时时间,可将WDT插入循环程序中。
2)当与条件跳转指令CJ对应的指针标号在CJ指令之前时(即程序往回跳)就有可能连续反复跳步使它们之间的程序反复执行,使执行时间超过监控时间,可在CJ指令与对应标号之间插入WDT指令。
6.循环指令
循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;
13
教 案 用 纸 第三章 循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。
在程序运行时,位于FOR~NEXT间的程序反复执行n次(由操作数决定)后再继续执行后续程序。循环的次数n=1~32767。如果N=-32767~0之间,则当作n=1处理。
如图4-7所示为一个二重嵌套循环,外层执行5次。如果D0Z中的数为6,则外层A每执行一次则内层B将执行6次。
图4-7 循环指令的使用
使用循环指令时应注意:
1)FOR和NEXT必须成对使用; 2)FX2N系列PLC可循环嵌套5层;
3)在循环中可利用CJ指令在循环没结束时跳出循环体;
4)FOR应放在NEXT之前,NEXT应在FEND和END之前,否则均会出错。
(二)传送与比较类指令(FNC10~FNC19) 1.比较指令
比较指令包括CMP(比较)和ZCP(区间比较)二条。
(1)比较指令CMP (D)CMP(P)指令的编号为FNC10,是将源操作数[S1.]和源操作数[S2.]的数据进行比较,比较结果用目标元件[D.]的状态来表示。如图4-8所示,当X1为接通时,把常数100与C20的当前值进行比较,比较的结果送入M0~M2中。X1为OFF时不执行,M0~M2的状态也保持不变。
图4-8 比较指令的使用
14
教 案 用 纸 第三章
(2)区间比较指令ZCP (D)ZCP(P)指令的编号为FNC11,指令执行时源操作数[S.]与[S1.]和[S2.]的内容进行比较,并比较结果送到目标操作数[D.]中。如图4-9所示,当X0为ON时,把C30当前值与K100和K120相比较,将结果送M3、M4、M5中。X0为OFF,则ZCP不执行,M3、M4、M5不变。
使用比较指令CMP/ZCP时应注意:
1)[S1.]、[S2.]可取任意数据格式,目标操作数[D.]可取Y、M和S。 2)使用ZCP时,[S2.]的数值不能小于[S1.] 3) 所有的源数据都被看成二进制值处理; 2.传送类指令
(1)传送指令MOV (D)MOV(P)指令的编号为FNC12,该指令的功能是将源数据传送到指定的目标。如图4-10所示,当X0为ON时,则将[S.]中的数据K100传送到目标操作元件[D.]即D10中。在指令执行时,常数K100会自动转换成二进制数。当X0为OFF时,则指令不执行,数据保持不变。
图4-10 传送指令的使用
使用应用MOV指令时应注意:
1)源操作数可取所有数据类型,标操作数可以是KnY、KnM、KnS、T、C、D、V、Z。
2)16位运算时占5个程序步,32位运算时则占9个程序步。
(2)移位传送指令SMOV SMOV(P)指令的编号为FNC13。该指令的功能是将源数据(二进制)自动转换成4位BCD码,再进行移位传送,传送后的目标操作数元件的BCD码自动转换成二进制数。如图4-11所示,当X1为ON时,将D1中右起第4位(m1=4)开始的2位(m2=2) BCD码移到目标操作数D2的右起第3位(n=3)和第2位。然后D2中的BCD码会自动转换为二进制数,而D2中的第1位和第4位BCD码不变。
15
图4-9 区间比较指令的使用
教 案 用 纸 第三章
图4-11 移位传送指令的使用
使用移位传送指令时应该注意:
1)源操作数可取所有数据类型,目标操作数可为KnY、KnM、KnS、T、C、D、V、Z。
2)SMOV指令只有16位运算,占11个程序步。
(3)取反传送指令CML (D)CML(P)指令的编号为FNC14。它是将源操作数元件的数据逐位取反并传送到指定目标。如图4-12所示,当X0为ON时,执行CML,将D0的低4位取反向后传送到Y3~Y0中。
图4-12 取反传送指令的使用
使用取反传送指令CML时应注意:
1)源操作数可取所有数据类型,目标操作数可为KnY、KnM、KnS、T、C、D、V、Z.,若源数据为常数K,则该数据会自动转换为二进制数。
2)16位运算占5个程序步,32位运算占9个程序步。
(4)块传送指令BMOV BMOV(P)指令的ALCE编号为FNC15,是将源操作数指定元件开始的n个数据组成数据块传送到指定的目标。如图4-13所示,传送顺序既可从高元件号开始,也可从低元件号开始,传送顺序自动决定。若用到需要指定位数的位元件,则源操作数和目标操作数的指定位数应相同。
16
教 案 用 纸 第三章
图4-13 块传送指令的使用
1
使用块传送指令时应注意:
1)源操作数可取KnX、 KnY、KnM、KnS、T、C、D和文件寄存器,目标操作数可取. KnT、KnM、KnS、T、C和D;
2)只有16位操作,占7个程序步;
3)如果元件号超出允许范围,数据则仅传送到允许范围的元件。
(5)多点传送指令FMOV (D)FMOV(P)指令的编号为FNC16。它的功能是将源操作数中的数据传送到指定目标开始的n个元件中,传送后n个元件中的数据完全相同。如图4-14所示,当X0为ON时,把K0传送到D0~D9中。 图4-14 多点传送指令应用
使用多点传送指令FMOV时应注意:
1)源操作数可取所有的数据类型,目标操作数可取KnX、KnM、KnS、T、C、和D,n小等于512;
2)16位操作占7的程序步,32位操作则占13个程序步; 3)如果元件号超出允许范围,数据仅送到允许范围的元件中。 3.数据交换指令
数据交换指令(D)XCH(P)的编号为FNC17,它是将数据在指定的目标元件之间交换。如图4-15所示,当X0为ON时,将D1和D19中的数据相互交换。
图4-15 数据交换指令的使用
使用数据交换指令应该注意:
1)操作数的元件可取KnY、KnM、KnS、T、C、D、V和Z.。 2)交换指令一般采用脉冲执行方式,否则在每一次扫描周期都要交换一次。
17
教 案 用 纸 第三章 3)16位运算时占5个程序步,32位运算时占9个程序步。 4.数据变换指令 (1)BCD变换指令BCD (D)BCD(P)指令的ALCE编号为FNC18。它是将源元件中的二进制数转换成BCD码送到目标元件中,如图4-16所示。
如果指令进行16位操作时,执行结果超出0~9999范围将会出错;当指令进行32位操作时,执行结果超过0~99999999范围也将出错。PLC中内部的运算为二进制运算,可用BCD指令将二进制数变换为BCD码输出到七段显示器。
(2)BIN变换指令BIN (D)BIN(P)指令的编号为FNC19。它是将源元件中的BCD数据转换成二进制数据送到目标元件中,如图4-16所示。常数K不能作为本指令的操作元件,因为在任何处理之前它们都会被转换成二进制数。
图4-16 数据变换指令的使用
使用BCD/BIN指令时应注意:
1)源操作数可取KnK、KnY、KnM、KnS、T、C、D、V和Z,目标操作数可取KnY、KnM、KnS、T、C、D、V和Z;
2)16位运算占5个程序步,32位运算占9个程序步。 (三)算术和逻辑运算类指令(FNC20~FNC29)
1.算术运算指令
(1)加法指令ADD (D)ADD(P)指令的编号为FNC20。它是将指定的源元件中的二进制数相加结果送到指定的目标元件中去。如图4-17所示,当X0为ON时,执行(D10)+(D12)→(D14)。 图4-17 加法指令的使用
(2)减法指令SUB (D)SUB(P)指令的编号为FNC21。它是将[S1.]指定元件中的内容以二进制形式减去[S2.]指定元件的内容,其结果存入由[D.]指定的元件中。如图4-18所示,当X0为ON时,执行(D10)—(D12)→(D14)。
图4-18 减法指令的使用
18
教 案 用 纸 第三章
使用加法和减法指令时应该注意:
1)操作数可取所有数据类型,目标操作数可取KnY、KnM、KnS、T、C、
D、V和Z.。
2)16位运算占7个程序步,32位运算占13个程序步。
3)数据为有符号二进制数,最高位为符号位(0为正,1为负)。 4)加法指令有三个标志:零标志(M8020)、借位标志(M8021)和进位标志(M8022)。当运算结果超过32767(16位运算)或21474837(32位运算)则进位标志置1;当运算结果小于-32767(16位运算)或-21474837(32位运算),借位标志就会置1。
(3)乘法指令MUL (D) MUL (P)指令的编号为FNC22。数据均为有符号数。如图4-19所示,当X0为ON时,将二进制16位数[S1.]、[S2.]相乘,结果送[D.]中。D为32位,即(D0)×(D2)→(D5,D4)(16位乘法);当X1为ON时,(D1,D0)×(D3,D2)→(D7,D6,D5,D4)(32位乘法)。
图4-19 乘法指令的使用
(4)除法指令DIV (D) DIV (P)指令的编号为为FNC23。其功能是将[S1.]指定为被除数,[S2.]指定为除数,将除得的结果送到[D.]指定的目标元件中,余数送到[D.]的下一个元件中。如图4-20所示,当X0为ON时(D0)÷(D2)→(D4)商,(D5)余数(16位除法);当X1为ON时(D1,D0)÷(D3,D2)→(D5,D4)商,(D7,D6)余数(32位除法)。
图4-20 除法指令的使用
使用乘法和除法指令时应注意:
1)源操作数可取所有数据类型,目标操作数可取KnY、KnM、KnS、T、C、D、V和Z.,要注意Z只有16位乘法时能用,32位不可用。
2)16位运算占7程序步,32位运算为13程序步。
3)32位乘法运算中,如用位元件作目标,则只能得到乘积的低32位,高32位将丢失,这种情况下应先将数据移入字元件再运算;除法运算中将位元件指定为[D.],则无法得到余数,除数为0时发生运算错误。
19
教 案 用 纸 第三章 4)积、商和余数的最高位为符号位。 (5)加1和减1指令 加1指令(D) INC (P)的编号为FNC24;减1指令 (D) DEC (P)的编号为FNC25。INC和DEC指令分别是当条件满足则将指定元件的内容加1或减1。如图4-21所示,当X0为ON时,(D10)+1→(D10);当X1为ON时,(D11)+1→(D11)。若指令是连续指令,则每个扫描周期均作一次加1或减1运算。
图4-21 加1和减1指令的使用
使用加1和减1指令时应注意:
1)指令的操作数可为KnY、KnM、KnS、T、C、D、V、Z;。 2)当进行16位操作时为3个程序步,32位操作时为5个程序步。
3)在INC运算时,如数据为16位,则由+32767再加1变为-32768,但标志不置位;同样,32位运算由+21474837再加1就变为-21474838时,标志也不置位。
4)在DEC运算时,16位运算-32768减1变为+32767,且标志不置位;32位运算由-21474838减1变为=21474837,标志也不置位。
2.逻辑辑运算类指令
(1)逻辑与指令WAND (D)WAND(P)指令的编号为FNC26。是将两个源操作数按位进行与操作,结果送指定元件。
(2)逻辑或指令WOR (D) WOR (P)指令的编号为FNC27。它是对二个源操作数按位进行或运算,结果送指定元件。如图4-22所示,当X1有效时(,D10)∨(D12)→(D14)
(3)逻辑异或指令WXOR (D) WXOR (P)指令的编号为FNC28。它是对源操作数位进行逻辑异或运算。
(4)求补指令NEG (D) NEG (P)指令的编号为FNC29。其功能是将[D.]指定的元件内容的各位先取反再加1,将其结果再存入原来的元件中。 WAND、WOR、WXOR和NEG指令的使用如图4-22所示。
图4-22 逻辑运算指令的使用
20
教 案 用 纸 第三章 使用逻辑运算指令时应该注意:
1)WAND、WOR和WXOR指令的[S1.]和[S2.]均可取所有的数据类型,而目标操作数可取KnY、KnM、KnS、T、C、D、V和Z。
2)NEG指令只有目标操作数,其可取KnY、KnM、KnS、T、C、D、V和Z。
3)WAND、WOR、WXOR指令16位运算占7个程序步,32位为13个程序步,而NEG分别占3步和5步。
(四)循环与移位类指令(FNC30~FNC39) 1.循环移位指令
右、左循环移位指令(D)ROR(P)和(D)ROL(P)编号分别为FNC30和FNC31。执行这两条指令时,各位数据向右(或向左)循环移动n位,最后一次移出来的那一位同时存入进位标志M8022中,如图4-23所示。
图4-23 右、左循环移位指令的使用
2.带进位的循环移位指令
带进位的循环右、左移位指令(D) RCR(P)和(D) RCL(P)编号分别为FNC32和FNC33。执行这两条指令时,各位数据连同进位(M8022)向右(或向左)循环移动n位,如图4-24所示。
图4-24 带进位右、左循环移位指令的使用
使用ROR/ROL/RCR/RCL指令时应该注意:
1)目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,目标元件中指定位元件的组合只有在K4(16位)和K8(32位指令)时有效。
2)16位指令占5个程序步,32位指令占9个程序步。 3)用连续指令执行时,循环移位操作每个周期执行一次。 3.位右移和位左移指令
位右、左移指令SFTR(P)和SFTL(P)的编号分别为FNC34和FNC35。它们使位元件中的状态成组地向右(或向左)移动。n1指定位元件的长度,n2指定移位位数,n1和n2的关系及范围因机型不同而有差异,一般为n2≤n1≤1024。位右移指令使用如图4-25所示。
21
教 案 用 纸 第三章
图4-25 位右移指令的使用
使用位右移和位左移指令时应注意:
1)源操作数可取X、Y、M、S,目标操作数可取Y、M、S。 2)只有16位操作,占9个程序步。 4.字右移和字左移指令
字右移和字左移指令WSFR(P)和WSFL(P)指令编号分别为FNC36和FNC37。字右移和字左移指令以字为单位,其工作的过程与位移位相似,是将n1个字右移或左移n2个字。
使用字右移和字左移指令时应注意:
1)源操作数可取KnX、KnY、KnM、KnS、T、C和D,目标操作数可取KnY、KnM、KnS、T、C和D。
2)字移位指令只有16位操作,占用9个程序步. 3)n1和n2的关系为n2≤n1≤512。 5.先入先出写入和读出指令
先入先出写入指令和先入先出写入读出指令SFWR(P)和SFRD(P)的编号分别为FNC38和FNC39。
先入先出写入指令SFWR的使用如图4-26所示, 当X0由OFF变为ON时,SFWR执行, D0中的数据写入D2,而D1变成指针,其值为1(D1必须先清0);当X0再次由OFF变为ON时,D0中的数据写入D3,D1变为2,依次类推,D0中的数据依次写入数据寄存器。D0中的数据从右边的D2顺序存入,源数据写入的次数放在D1中,当D1中的数达到n-1后不再执行上述操作,同时进位标志M8022置1。
图4-26 先入先出写入指令的使用
22
教 案 用 纸 第三章 先入先出读出指令SFRD的使用如图4-27所示,当X0由OFF变为ON时,D2中的数据送到D20,同时指针D1的值减1,D3~D9的数据向右移一个字,数据总是从D2读出,指针D1为0时,不再执行上述操作且M8020置1。 图4-27 先入先出读出指令的使用
使用SFWR和SFRD指令时应注意:
1)目标操作数可取KnY、KnM、KnS、T、C和D,源操数可取所有的数据类型。
2)指令只有16位运算,占7个程序步。 (五)数据处理指令(FNC40~FNC49) 1.区间复位指令
区间复位指令ZRST(P)的编号为FNC40。它是将指定范围内的同类元件成批复位。如图4-28所示,当M8002由OFF→ON时,位元件M500~M599成批复位,字元件C235~C255也成批复位。
图4-28 区间复位指令的使用
使用区间复位指令时应注意:
1)[D1.]和[D2.]可取Y、M、S、T、C、D,且应为同类元件,同时[D1]的元件号应小于[D2]指定的元件号,若[D1]的元件号大于[D2]元件号,则只有[D1]指定元件被复位。
2)ZRST指令只有16位处理,占5个程序步,但[D1.][D2.]也可以指定32位计数器。
2.译码和编码指令
(1)译码指令DECO DECO(P) 指令的编号为FNC41。如图4-29所示,n=3 则表示[S.]源操作数为3位,即为X0、X1、X2。其状态为二进制数,当值为011时相当于十进制3,则由目标操作数M7~M0组成的8位二进制数的第三位M3被置1,其余各位为0。如果为000则M0被置1。用译码指令可通过[D.]中的数值来控制元件的ON/OFF。
23
教 案 用 纸 第三章
图4-29 译码指令的使用
使用译码指令时应注意:
1)位源操作数可取X、T、M和S,位目标操作数可取Y、M和S,字源操作数可取K,H,T,C,D,V和Z,字目标操作数可取T,C和D。
2)若[D.]指定的目标元件是字元件T、C、D,则n≦4;若是位元件Y、M、S,则n=1~8。译码指令为16位指令,占7个程序步。
(2)编码指令ENCO ENCO(P)指令的编号为FNC42。如图4-30所示,当X1有效时执行编码指令,将[S.]中最高位的1(M3)所在位数(4)放入目标元件D10中,即把011放入D10的低3位。
图4-30 编码指令的使用
使用编码指令时应注意:
1)源操作数是字元件时,可以是T、C、D、V和Z;源操作数是位元件,可以是X、Y、M和S。目标元件可取T、C、D、V和Z。编码指令为16位指令,占7个程序步。
2)操作数为字元件时应使用n≦4,为位元件时则n=1~8,n=0时不作处理。 3)若指定源操作数中有多个1,则只有最高位的1有效。 3. ON位数统计和ON位判别指令
(1)ON位数统计指令SUM (D)SUM(P)指令的编号为FNC43。该指令是用来统计指定元件中1的个数。如图4-31所示,当X0有效时执行SUM指令,将源操作数D0中1的个数送入目标操作数[D2中,若D0中没有1,则零标志M8020将置1。
24
教 案 用 纸 第三章
ON位判别指令的使用 图4-31 ON位数统计和
使用SUM指令时应注意:
1)源操作数可取所有数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。
2)16位运算时占5个程序步,32位运算则占9个程序步。
(2)ON位判别指令BON (D)BON(P)指令的编号为FNC44。它的功能是检测指定元件中的指定位是否为1。如图4-31所示,当X1为有效时,执行BON指令,由K4决定检测的是源操作数D10的第4位,当检测结果为1时,则目标操作数M0=1,否则M0=0。
使用BON指令时应注意:
1)源操作数可取所有数据类型,目标操作数可取Y、M和S。
2)进行16位运算,占7程序步,n=0~15;32位运算时则占13个程序步,n=0~31。
4.平均值指令
平均值指令(D)MEAN(P)的编号为FNC45。其作用是将n个源数据的平均值送到指定目标(余数省略),若程序中指定的n值超出1~的范围将会出错。
5.报警器置位与复位指令
报警器置位指令ANS(P)和报警器复位指令ANR(P)的编号分别为FNC46 和FNC47。如图4-32所示,若X0和X1同时为ON时超过1S,则S900置1;当X0或X1变为OFF,虽定时器复位,但S900仍保持1不变;若在1S内X0或X1再次变为OFF则定时器复位。当X2接通时,则将S900~S999之间被置1的报警器复位。若有多于1个的报警器被置1,则元件号最低的那个报警器被复位。 图4-32 报警器置位与复位指令的使用
使用报警器置位与复位指令时应注意:
1)ANS指令的源操作数为T0~T199,目标操作数为S900~S999,n=1~32767’; ANR指令无操作数。
2)ANS为16位运算指令,占7的程序步;ANR指令为16位运算指令,占1个程序步。
25
教 案 用 纸 第三章 3)ANR指令如果用连续执行,则会按扫描周期依次逐个将报警器复位。 6.二进制平方根指令
二进制平方根指令(D)SQR(P)的编号为FNC48。如图4-33所示,当X0有效时,则将存放在D45中的数开平方,结果存放在D123中(结果只取整数)。
图4-33 二进制平方根指令的使用
使用SQR指令时应注意:
1)源操作数可取K、H、D,数据需大于0,目标操作数为D。 2)16位运算占5个程序步,32位运算占9个程序步。 7.二进制整数→二进制浮点数转换指令
二进制整数→二进制浮点数转换指令(D)FLT(P)的编号为FNC49。如图4-34所示,当X1有效时,将存入D10中的数据转换成浮点数并存入D12中。
图4-34 二进制整数→二进制浮点数转换指令的使用
使用FLT指令时应注意: 1)源和目标操作数均为D。
2)16位操作占5个程序步,32位占9个程序步。 (六)高速处理指令(FNC50~FNC59) 1.和输入输出有关的指令
(1)输入输出刷新指令REF REF(P)指令的编号为FNC50。FX系列PLC采用集中输入输出的方式。如果需要最新的输入信息以及希望立即输出结果则必须使用该指令。如图4-35所示,当X0接通时,X10~X17共8点将被刷新;当X1接通时,则Y0~Y7、Y10~Y17、共16点输出将被刷新。
图4-35 输入输出刷新指令的使用
使用REF指令时应注意:
1)目标操作数为元件编号个位为0的X和Y,n应为8的整倍数。 2)指令只要进行16位运算,占5个程序步。
(2)滤波调整指令REFF REFF(P)指令的编号为FNC51。在FX系列PLC中X0~X17使用了数字滤波器,用REFF指令可调节其滤波时间,范围为0~
26
教 案 用 纸 第三章 60ms(实际上由于输入端有RL滤波,所以最小滤波时间为50μs)。如图4-36所示,当X0接通时,执行REFF指令,滤波时间常数被设定为1ms。
图4-36滤波调整指令说明
使用REFF指令时应注意:
1)REFF为16位运算指令,占7个程序步。 2)当X0~X7用作高速计数输入时或使用FNC56速度检测指令以及中断输入时,输入滤波器的滤波时间自动设置为50ms。
(3)矩阵输入指令MTR MTR指令的编号为FNC52。利用MTR可以构成连续排列的8点输入与n点输出组成的8列n行的输入矩阵。如图4-37所示,由[S]指定的输入X0~X7共8点与n点输出Y0、Y1、Y2(n=3)组成一个输入矩阵。PLC在运行时执行MTR指令,当Y0为ON时,读入第一行的输入数据,存入M30~M37中;Y1为ON时读入第二行的输入状态,存入M40~M47。其余类推,反复执行。 图4-37 矩阵输入指令的使用
使用MTR指令时应注意: 1)源操作数[S]是元件编号个位为0的X,目标操作数[D1] 是元件编号个位为0的Y,目标操作数[D2] 是元件编号个位为0的Y、M和S,n的取值范围是2~8。
2)考虑到输入滤波应答延迟为10ms,对于每一个输出按20ms顺序中断,立即执行。
3)利用本指令通过8点晶体管输出获得点输入,但读一次点输入所许时间为20ms×8=160ms,不适应高速输入操作。
4)该指令只有16位运算,占9个程序步。 2.高速计数器指令
(1)高速计数器置位指令HSCS DHSCS指令的编号为FNC53。它应用于高速计数器的置位,使计数器的当前值达到预置值时,计数器的输出触点立即动作。它采用了中断方式使置位和输出立即执行而与扫描周期无关。如图4-38所示,[S1.]为设定值(100),当高速计数器C255的当前值由99变100或由101变为100时,Y0都将立即置1。
27
教 案 用 纸 第三章
图4-38 高速计数器指令的使用
(2)高速计速器比较复位指令HSCR DHSCR指令的编号为FNC54。如图4-38所示,C254的当前值由199变为200或由201变为200时,则用中断的方式使Y10立即复位。
使用HSCS和HSCR时应注意:
1)源操作数[S1.]可取所有数据类型,[S2.]为C235~C255,目标操作数可取Y、M和S。
2)只有32位运算,占13个程序步。
(3)高速计速器区间比较指令HSZ DHSZ指令的编号为FNC55。如图4-38所示,目标操作数为Y20、Y21和Y22。如果C251的当前值 使用高速计速器区间比较指令时应注意: 1)操作数[S1.] 、[S2.]可取所有数据类型,[S .]为C235~C255,目标操作数[D.]可取Y、M、S。 2)指令为32位操作,占17个程序步。 2.速度检测指令 速度检测指令SPD的编号为FNC56。它的功能是用来检测给定时间内从编码器输入的脉冲个数,并计算出速度。如图4-39所示,[D. ]占三个目标元件。当X12为ON时,用D1对X0的输入上升沿计数,100ms后计数结果送入D0,D1复位,D1重新开始对X0计数。D2在计数结束后计算剩余时间。 28 教 案 用 纸 第三章 图4-39 速度检测指令的使用 使用速度检测指令时应注意: 1)[S1.]为X0~X5,[S2.]可取所有的数据类型,[D.]可以是T、C、D、V和Z。 2)指令只有16位操作,占7个程序步。 3.脉冲输出指令 脉冲输出指令(D)PLSY的编号为FNC57。它用来产生指定数量的脉冲。如图4-40所示,[S1.]用来指定脉冲频率(2~20000Hz),[S2.]指定脉冲的个数(16位指令的范围为1~32767, 32位指令则为1~21474837)。如果指定脉冲数为0,则产生无穷多个脉冲。[D .]用来指定脉冲输出元件号。脉冲的占空比为50%,脉冲以中断方式输出。指定脉冲输出完后,完成标志M8029置1。X10由ON变为OFF时,M8029复位,停止输出脉冲。若X10再次变为ON则脉冲从头开始输出。 图4-40 脉冲输出指令的使用 29 教 案 用 纸 第三章 使用脉冲输出指令时应注意: 1)[S1.]、[S2.]可取所有的数据类型,[D.]为Y1和Y2。 2)该指令可进行16和32位操作,分别占用7个和13个程序步。 3)本指令在程序中只能使用一次。 5.脉宽调制指令 脉宽调制指令PWM的编号为FNC58。它的功能是用来产生指定脉冲宽度和周期的脉冲串。如图4-41所示,[S1.] 用来指定脉冲的宽度,[S2.]用来指定脉冲的周期,[D.]用来指定输出脉冲的元件号(Y0或Y1),输出的ON/OFF状态由中断方式控制。 图4-41 脉宽调制指令的使用 使用脉宽调制指令时应注意: 1)操作数的类型与PLSY相同;该指令只有16位操作,需7个程序步。 2)[S1.]应小于[S2.]。 6.可调速脉冲输出指令 可调速脉冲输出指令该指令(D)PLSR的编号为FNC59。该指令可以对输出 脉冲进行加速,也可进行减速调整。源操作数和目标操作数的类型和PLSY指令相同,只能用于晶体管PLC的Y0和Y1,可进行16位操作也可进行32位操作,分别占9个和17个程序步。该指令只能用一次。 (七)其它功能指令 1.方便指令(FNC60~FNC69) FX系列共有10条方便指令:初始化指令IST(FNC60)、数据搜索指令SER(FNC61)、绝对值式凸轮顺控指令ABSD(FNC62)、增量式凸轮顺控指令INCD(FNC63)、示教定时指令TIMR(FNC)、特殊定时器指令STMR(FNC65)、交替输出指令ALT(FNC66)、斜坡信号指令RAMP(FNC67)、旋转工作台控制指令ROTC(FNC68)和数据排序指令SORT(FNC69)。以下仅对其中部分指令加以介绍。 (1)凸轮顺控指令 凸轮顺控指令有绝对值式凸轮顺控指令ABSD(FNC62)和增量式凸轮顺控指令INCD(FNC63)两条。 绝对值式凸轮顺控指令ABSD是用来产生一组对应于计数值在3600范围内变化的输出波形,输出点的个数由n决定,如图4-42a所示。图中n为4,表明[D.]由M0~M3共4点输出。预先通过MOV指令将对应的数据写入D300~D307中,开通点数据写入偶数元件,关断点数据放入奇数元件,如表4-15所示。当执行条件X0由OFF变ON时,M0~M3将得到如图4-42b所示的波形,通过改变D300~D307的数据可改变波形。若X0为OFF,则各输出点状态不变。这一 30 教 案 用 纸 第三章 指令只能使用一次。 图4-42 绝绝对值式凸轮顺控指令的使用 a) 绝绝对值式凸轮顺控指令 b) 输出波形 4-15 旋转台旋转周期M0~M3状态 开通点 关断点 输出 D300=40 D301=140 M0 D302=100 D303=200 M1 D304=160 D305=60 M2 D306=240 D307=280 M3 增量式凸轮顺控指令INCD也是用来产生一组对应于计数值变化的输出波形。如图4-43所示,n=4,说明有4个输出,分别为M0~M3,它们的ON/OFF状态受凸轮提供的脉冲个数控制。使M0~M3为ON状态的脉冲个数分别存放在D300~D303中(用MOV指令写入)。图中波形是D300~D303分别为20、30、10和40时的输出。当计数器C0的当前值依次达到D300~D303的设定值时将自动复位。C1用来计复位的次数,M0~M3根据C1的值依次动作。由n指定的最后一段完成后,标志M8029置1,以后周期性重复。若X0为OFF,则C0、C1均复位,同时M0~M3变为OFF,当X0再接通后重新开始工作。 31 教 案 用 纸 第三章 图4-43 增量式凸轮顺控指令的使用 凸轮顺控指令源操作数[S1.]可取KnX、KnY、KnM、KnS、T、C和D,[S2.]为C,目标操作数可取Y、M和S。为16位操作指令,占9个程序步。 (2)定时器指令 定时器指令有示教定时器指令TTMR(FNC)和特殊定时器指令STMR(FNC65)两条。 使用示教定时器指令TTMR,可用一个按钮来调整定时器的设定时间。如图4-44所示,当X10为ON时,执行TTMR指令,X10按下的时间由M301记录,该时间乘以10n后存入D300。如果按钮按下时间为t存入D300的值为10n×t 。X10为OFF时,D301复位,D300保持不变。TTMR为16位指令,占5个程序步。 图4-44 示教定时器指令说明 特殊定时器指令STMR是用来产生延时断开定时器、单脉冲定时器和闪动 32 教 案 用 纸 第三章 定时器。如图4-45所示,m=1~32767,用来指定定时器的设定值;[S.]源操作数取T0~T199(100ms定时器)。T10的设定值为100ms×100=10s,M0是延时断开定时器,M1为单脉冲定时器,M2,M3为闪动而设。 图4-45 特殊定时器指令的使用 (3)交替输出指令 交替输出指令ALT(P)的编号为FNC66,用于实现由一个按钮控制负载的启动和停止。如图4-46所示,当X0由OFF到ON时,Y0的状态将改变一次。若用连续的ALT指令则每个扫描周期Y0均改变一次状态。 [D.]可取Y、M和S。ALT为16为运算指令,占3个程序步。 图4-46 交替输出指令的使用 2.外部I/0设备指令(FNC70~FNC79) 外部I/0设备指令是FX系列与外设传递信息的指令,共有10条。分别是 10键输入指令TKY(FNC70)、16键输入指令HKY(FNC71)、数字开关输入指令DSW(FNC72)、七段译码指令SEGD(FNC73)、带锁存的七段显示指令SEGL(FNC74)、方向开关指令ARWS(FNC75)、ASCII码转换指令ASC(FNC76)、ASCII打印指令PR(FNC77)、特殊功能模块读指令FROM(FNC78)和特殊功能模块写指令T0(FNC79)。 (1)数据输入指令 数据输入指令有10键输入指令TKY(FNC70)、16键输入指令HKY(FNC71)和数字开关输入指令DSW(FNC72)。 10键输入指令(D)TKY的使用如图4-47所示。源操作数[S.]用X0为首元件,10个键X0~X11分别为对应数字0~9。X30接通时执行TKY指令,如果以X2(2)、X9(8)、X3(3)、X0(0)的顺序按键,则[D1.]中存入数据为2830, 33 教 案 用 纸 第三章 实现了将按键变成十进制的数字量。当送入的数大于9999,则高位溢出并丢失。使用32位指令DTKY时,D1和D2组合使用,高位大于99999999则高位溢出。 图4-47 10键输入指令的使用 当按下X2后,M12置1并保持至另一键被按下,其它键也一样。M10~M19动作对应于X0~X11。任一键按下,键信号置1直到该键放开。当两个或更多的键被按下时,则首先按下的键有效。X30变为OFF时,D0中的数据保持不变,但M10~M20全部为OFF。此指令的源操作数可取X、Y、M、和S,目标操作数[D.]可取KnY、KnM、KnS、T、C、D、V和Z,[D2.]可取Y、M、S。16位运算占7个程序步,32运算时占13个程序步。该指令在程序中只能使用一次。 16键输入指令(D)HKY的作用是通过对键盘上的数字键和功能键输入的内容实现输入的复合运算。如图4-48所示,[S.]指定4个输入元件,[D1.]指定4个扫描输出点,[D2.]为键输入的存储元件。[D3.]指示读出元件。十六键中0~9为数字键,A~F为功能键,HKY指令输入的数字范围为0~9999,以二进制的方式存放在D0中,如果大于9999则溢出。DHKY指令可在D0和D1中存放最大为99999999的数据。功能键A~F与M0~M5对应,按下A键,M0置1并保持。按下D键M0置0,M3置1并保持。其余类推。如果同时按下多个键则先按下的有效。 34 教 案 用 纸 第三章 图4-48 16键输入指令的使用 该指令源操作数为X,目标操作数[D1.]为Y。[D2]可以取T、C、D、V和Z,[D3.]可取Y、M和S。16位运算时占9个程序步,32位运算时为占17个程序步。扫描全部16键需8个扫描周期。HKY指令在程序中只能使用一次。 数字开关指令DSW的功能是读入1组或2组4位数字开关的设置值。如图4-49所示,源操作数[S]为X,用来指定输入点。[D1]为目标操作数为Y,用来指定选通点。[D2]指定数据存储单元,它可取T、C、D、V和Z。[n]指定数字开关组数。该指令只有16位运算,占9个程序步,可使用两次。图中,n=1指有1组BCD码数字开关。输入开关为X10~X13,按Y10~Y13的顺序选通读入。数据以二进制数的形式存放在D0中。若n=2,则有2组开关,第2组开关接到X14~X17上,仍由Y10~Y13顺序选通读入,数据以二进制的形式存放在D1中,第2组数据只有在n=2时才有效。当X1保持为ON时,Y10~Y13依次为ON。一个周期完成后标志位M8029置1。 35 教 案 用 纸 第三章 图4-49 数字开关指令的使用 (2)数字译码输出指令 数字译码输出指令有七段译码指令SEGD(FNC73)和带锁存的七段显示指令SEGL(FNC74)两条。 七段译码指令SEGD(P) 如图4-50所示,将[S.]指定元件的低4位所确定的十六进制数(0~F)经译码后存于[D.]指定的元件中,以驱动七段显示器,[D.]的高8位保持不变。如果要显示0,则应在D0中放入数据为3FH。 图4-50 七段译码指令的使用 带锁存的7段显示指令SEGL的作用是用12个扫描周期的时间来控制一组或两组带锁存的七段译码显示。 (3)方向开关指令 方向开关指令ARWS(FNC75)是用于方向开关的输入和显示。如图4-51所示,该指令有四个参数,源操作数[S]可选X、Y、M、S。图中选择X10开始的4个按钮,位左移键和右移键用来指定输入的位,增加键和减少键用来设定指定位的数值。X0接通时指定的是最高位,按一次右移键或左移键可移动一位。指定位的数据可由增加键和减少键来修改,其值可显示在7段显示器上。目标操作数[D1]为输入的数据,由7段显示器监视其中的值(操作 36 教 案 用 纸 第三章 数可用T、C、D、V、和Z),[D2]只能用Y做操作数,n=0~3其确定的方法与SEGL指令相同。ARWS指令只能使用一次,而且必须用晶体管输出型的PLC。 图4-51 方向开关指令的使用 (4)ASEII码转换指令 ASCII码转换指令ASC(FNC76)的功能是将字符变换成ASCII码,并存放在指定的元件中。如图4-52所示,当X3有效时,则将FX2A变成ASCII码并送入D300和D301中。源操作数是8个字节以下的字母或数字,目标操作数为T,C,D。它只有16位运算,占11个程序步。 图 4-52 ASEII码转换指令说明 特殊功能模块读指令FROM(FNC78)和特殊功能模块写指令T0(FNC79)将在第6章中介绍。 3. 外围设备(SER)指令(FNC80~FNC) 外围设备(SER)指令包括串行通信指令RS(FNC80)、八进制数据传送指令PRUN(FNC81)、HEX→ASCII转换指令ASCI(FNC82)、ASCII→HEX转换指令HEX(FNC83)、校验码指令CCD(FNC84)、模拟量输入指令VRRD(FNC85)、模拟量开关设定指令VRSC(FNC86)和PID运算指令PID(FNC88)指令。 (1)八进制数据传送指令 八进制数据传送指令(D)PRUN(P)(FNC81)是用于八进制数的传送。如图4-53所示,当X10为ON时,将X0~X17内容送至M0~M7和M10~M17(因为X为八进制,故M9和M8的内容不变)。当X11为ON时,则将M0~M7送Y0~Y7,M10~M17送Y10~Y17。源操作数可取KnX、KnM,目标操作数取KnY、KnM,n=1~8,16位和32位运算分别占5个和9个程序步。 37 教 案 用 纸 第三章 图 4-53 八进制数据传送指令的使用 有HEX→ASCII转换指令ASCI(2)16进制数与ASCII码转换指令 (FNC82)、ASCII→HEX转换指令HEX(FNC83)两条指令 HEX→ASCII转换指令ASCI(P)的功能是将源操作数[S.]中的内容(十六进制数)转换成ASCII码放入目标操作数[D.]中。如图4- 54所示,n表示要转换的字符数(n=1~256)。M8161控制采用16位模式还是8位模式。16位模式时每4个HEX占用1个数据寄存器,转换后每两个ASCII码占用一个数据寄存器;8位模式时,转换结果传送到[D.]低8位,其高8位为0。PLC运行时M8000为ON,M8161为OFF,此时为16位模式。当X0为ON则执行ASCI。如果放在D100中的4个字符为OABCH则执行后将其转换为ASCII码送入D200和D201中,D200高位放A的ASCII码41H,低位放0的ASCII码30H,D201则放BC的ASCII码,C放在高位。该指令的源操作数可取所有数据类型,目标操作数可取KnY、KnM、KnS、T、C和D。只有16位运算,占用7个程序步。 图 4-54 HEX→ASCII码转换指令的使用 ASCII→HEX指令HEX(P)的功能与ASCI指令相反,是将ASCII码表示的信息转换成16进制的信息。如图4-55所示,将源操作数D200~D203中放的ASCII码转换成16进制放入目标操作数D100和D101中。只有16位运算,占7个程序步。源操作数为K、H、KnX、 KnY、KnM、KnS、T、C和D,目标操作数为 KnY、KnM、KnS、T、C、D、V和Z。 图4-55 ASCII→HEX指令的使用 (4)校验码指令 校验码指令CCD(P)(FNC84)的功能是对一组数据寄存器中的16进制数进行总校验和奇偶校验。如图4-56所示,是将源操作数[S.]指 38 教 案 用 纸 第三章 定的D100~D102共6个字节的8位二进制数求和并“异或”,结果分别放在目标操作数D0和D1中。通信过程中可将数据和、“异或”结果随同发送,对方接收到信息后,先将传送的数据求和并“异或”,再与收到的和及“异或”结果比较,以此判断传送信号的正确与否。源操作数可取KnX、 KnY、KnM、KnS、T、C和D,目标操作数可取KnM、KnS、T、C和D,n可用K、H或D,n=1~256。为16位运算指令,占7个程序步。 图 4-56 校验码指令的使用 以上PRUN、ASCI、HEX、CCD常应用于串行通信中,配合RS指令。 (5)模拟量输入指令 模拟量输入指令VRRD(P)(FNC85)是用来对FX2N-8AV-BD模拟量功能扩展板中的电位器数值进行读操作。如图4-57所示,当X0为ON时,读出FX2N-8AV-BD中0号模拟量的值(由K0决定),将其送入D0作为T0的设定值。源操作数可取K、H,它用来指定模拟量口的编号,取值范围为0~7;目标操作数可取KnY、KnM、KnS、T、C、D、V和Z。该指令只有16位运算,占5个程序步。 图4-57 模拟量输入指令的使用 (6)模拟量开关设定指令 模拟量开关设定指令VRSC(P)(FNC86)的作 用是将FX-8AV中电位器读出的数四舍五入整量化后以0~10之间的整数值存放在目标操作数中。它的源操作数[S.]可取K和H,用来指定模拟量口的编号,取值范围为0~7;目标操作数[D.]的类型与VRRD指令相同。该指令为16位运算,占9个程序步。 4.浮点运算指令 浮点数运算指令包括浮点数的比较、四则运算、开方运算和三角函数等功能。它们分布在指令编号为FNC110~FNC119、FNC120~FNC129、FNC130~FNC139之中。 (1)二进制浮点数比较指令ECMP(FNC110) DECMP(P)指令的使用如图4-58所示,将两个源操作数进行比较,比较结果反映在目标操作数中。如果操作数为常数则自动转换成二进制浮点值处理。该指令源操作数可取K、H和D,目标操作数可用Y、M和S。为32位运算指令,占17个程序步。 39 教 案 用 纸 第三章 图4-58 二进制浮点数比较指令的使用 (2)二进制浮点数区间比较指令EZCP(FNC111) EZCP(P)指令的功能是将源操作数的内容与用二进制浮点值指定的上下二点的范围比较,对应的结果用ON/OFF反映在目标操作数上,如图4-59所示。该指令为32位运算指令,占17个程序步。源操作数可以是K,H和D;目标操作数为Y、M和S。[S1.]应小于[S2.],操作数为常数时将被自动转换成二进制浮点值处理。 图4-59 二进制浮点数区间比较指令的使用 浮点数的四则运算指令有加法指令(3)二进制浮点数的四则运算指令 EADD (FNC120)、减法指令ESUB(FNC121)、乘法指令EMVL(FNC122)和除法指令EDIV(FNC123)四条指令。四则运算指令的使用说明如图4-60所示,它们都是将两个源操作数中的浮点数进行运算后送入目标操作数。当除数为0时出现运算错误,不执行指令。此类指令只有32位运算,占13个程序步。运算结果影响标志位M8020(零标志)、M8021(借位标志)、M8022(进位标志)。源操作数可取K、H和D,目标操作数为D。如有常数参与运算则自动转化为浮点数。 40 教 案 用 纸 第三章 图4-60 二进制浮点数四则运算指令的使用 二进制的浮点运算还有开平方、三角函数运算等指令,在此不一一说明。 5.时钟运算指令(FNC160~FNC169) 共有七条时钟运算类指令,指令的编号分布在FNC160~FNC169之间。时钟运算类指令是对时钟数据进行运算和比较,对PLC内置实时时钟进行时间校准和时钟数据格式化操作。 (1)时钟数据比较指令TCMP(FNC160) TCMP(P)它的功能是用来比较指定时刻与时钟数据的大小。如图4- 61所示,将源操作数[S1.]、[S2.]、[S3.]中的时间与[S.]起始的3点时间数据比较,根据它们的比较结果决定目标操作数[D.]中起始的3点单元中取ON或OFF的状态。该指令只有16位运算,占11个程序步。它的源操作数可取T、C和D,目标操作数可以是Y、M和S。 图4-61 时钟数据比较指令的使用 (2)时钟数据加法运算指令TADD(FNC162) TADD(P)指令的功能是将两个源操作数的内容相加结果送入目标操作数。源操作数和目标操作数均可取T,C和D。TADD为16位运算,占7个程序步。如图4-62所示,将[S1.]指定的D10~D12和D20~D22中所放的时、分、秒相加,把结果送入[D.]指定的D30~D32中。当运算结果超过24小时时,进位标志位变为ON,将进行加法运算的结果减去24小时后作为结果进行保存。 41 教 案 用 纸 第三章 图4-62 时钟数据加法运算指令的使用 (3)时钟数据读取指令TRD(FNC166) TRD(P)指令为16位运算,占7个程序步。[D.]可取T,C和D。它的功能是读出内置的实时时钟的数据放入由[D.]开始的7个字内。如图4-63所示,当X1为ON时,将实时时钟(它们以年、月、日、时、分、秒、星期的顺序存放在特殊辅助寄存器D8013~8019之中)传送到D10~D16之中。 图4-63 时钟数据读取指令的使用 6.格雷码转换及模拟量模块专用指令 (1)格雷码转换和逆转换指令 这类指令有2条:GRY (FNC170)和GBIN (FNC171),常用于处理光电码盘编码盘的数据。(D)GRN(P)指令的功能是将二进制数转换为格雷码,(D)GBIN(P)指令则是GRY的逆变换。如图4-所示,GRY指令是将源操作数[S.]中的二进制数变成格雷码放入目标操作数[D.]中,而GBIN指令与其相反。它们的源操作数可取任意数据格式,目标操作数为KnY、KnM、KnS、T、C、D、V和Z。、16位操作时占5个程序步,32位操作时占9个程序步。 图 4- 格雷码转换和逆转换指令的使用 (2)模拟量模块读写指令 这类指令有2条:RD3A (FNC176)和WR3A (FNC177),其功能是对FXON-3A模拟量模块输入值读取和对模块写入数字值。如图4-65所示,[m1.]为特殊模块号K0~K7,[m2.]为模拟量输入通道K1或K2,[D.]为保存读取的数据,[S.]为指定写入模拟量模块的数字值。指令均为16位操作,占7个程序步。 图 4-65 模拟量模块读写指令的使用 42 教 案 用 纸 第三章 7.触点比较指令(FNC224~FNC246) 触点比较指令共有1 (1)LD触点比较指令 该类指令的助记符、代码、功能如表4-17所示。 表4-17 LD触点比较指令 功能指令代码 助记符 导通条件 非导通条件 FNC224 (D)LD= [S1.]=[S2.] [S1.]≠[S2.] FNC225 (D)LD> [S1 ]>[S2.] [S1.]≤[S2.] FNC226 (D)LD< [S1.]< [S2.] [S1.]≥[S2.] FNC228 (D)LD<> [S1.]≠[S2.] [S1.]=[S2.] FNC229 (D)LD≤ [S1.]≤[S2.] [S1.]>[S2.] FNC230 (D)LD≥ [S1.]≥[S2.] [S1.]<[S2.] 如图4-66所示为LD=指令的使用,当计数器C10的当前值为200时驱动Y10。其它LD触点比较指令不在此一一说明。 图4-66 LD=指令的使用 (2)AND触点比较指令 该类指令的的助记符、代码、功能如表4-18所示。 表4-18 AND触点比较指令 功能指令代码 助记符 导通条件 非导通条件 FNC232 (D)AND= [S1.]=[S2.] [S1.]≠[S2.] FNC233 (D)AND> [S1 ]>[S2.] [S1.]≤[S2.] FNC234 (D)AND< [S1.]< [S2.] [S1.]≥[S2.] FNC236 (D)AND<> [S1.]≠[S2.] [S1.]=[S2.] FNC237 (D)AND≤ [S1.]≤[S2.] [S1.]>[S2.] FNC238 (D)AND≥ [S1.]≥[S2.] [S1.]<[S2.] 如图4-67所示为AND=指令的使用,当X0为ON且计数器C10的当前值为200时,驱动Y10。 图4-67 AND= 指令的使用 (3)OR触点比较指令 该类指令的的助记符、代码、功能列于下表4-19中。 表4-19 OR触点比较指令 功能指令代码 助记符 导通条件 非导通条件 FNC240 (D)OR= [S1.]=[S2.] [S1.]≠[S2.] FNC241 (D)OR> [S1 ]>[S2.] [S1.]≤[S2.] 43 教 案 用 纸 第三章 FNC242 (D)OR< [S1.]< [S2.] [S1.]≥[S2.] FNC244 (D)OR<> [S1.]≠[S2.] [S1.]=[S2.] FNC245 (D)OR≤ [S1.]≤[S2.] [S1.]>[S2.] FNC246 (D)OR≥ [S1.]≥[S2.] [S1.]<[S2.] OR=指令的使用如图4-93所示,当X1处于ON或计数器的当前值为200时,驱动Y0。 图4-68 OR=指令的使用 触点比较指令源操作数可取任意数据格式。16位运算占5个程序步,32位运算占9个程序步。 44
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务