1第二节FX系列PLC的功能指令(一)一、功能指令的表示格式1、功能指令表示格式的基本要素:①助记符②操作数例:区间复位S0—S25防止X0按下是多个扫描周期重复操作可以用后缀P(上升沿有效)MOVP原操作数DO,目标操作数D4Z0,其它操作数K32、助记符每一功能指令都对应一个助记符在编程书写时根据执行方式、处理数据的位数增加后缀(P)MOVP(上升沿有效)或前缀(D)3、操作数:•源操作数、目标操作数、其他操作数•操作数可取的数据类型①可使用X、Y、M、S等位元件②可将位元件组合,以KnX、KnY、KnM、KnS等形式表示K1M0(K1是M0—M3),K2M0(K2是M0—M7),K3X0(K3是X0—X7X10—X13),作为数值数据进行处理③使用字元件:D,T,V,Z或C的当前值寄存器。双字元件D1D0如“DMOVD0D2”双字MOVD0到D2注意:作为32位指令的操作数时的使用方法。另:C200-C255的1点可处理32位数据,不能指定为16位指令的操作数。4、如何查阅资料二、程序流向控制类指令1、条件跳转指令•格式:助记符:CJ(P);操作数:指针标号P0~P127•功能:实现当执行条件满足时,程序跳转到指令所指定的指针标号开始执行,反之,若条件不满足,则按顺序执行程序。跳转指令常用于初始化或手动/自动切换控制。2•应用注意:与MC/MCR指令不同,执行CJ指令后,被跳转部分程序将不被扫描,这意味着,跳转前的输出状态(执行结果)将被保留,例如2、子程序调用与子程序返回指令(FNC01、FNC02)•调用(FNC01):助记符CALL(P);操作数指针标号P0~P127(P63除外)•返回(FNC02):助记符SRET;无操作数•含义:•注意事项:①标号应写在FEND之后。②CJ指令中用过的标号不能重复再用,但不同的CALL指令可调用同一标号的子程序。3③在子程序中可再CALL子程序,形成子程序嵌套,总数可有5级嵌套。④在子程序和中断子程序中使用的定时器范围规定为T192~T199和T246~T249。3、与中断有关的指令(FNC03、FNC04、FNC05)•中断返回IRET(FNC03),无操作数•中断允许EI(FNC04),无操作数•中断禁止DI(FNC05),无操作数•说明:①允许中断范围②禁止中断继电器M8050~M8059M8050—M8058禁止中断,M8059禁止所有中断③中断优先权问题00--10④中断嵌套问题允许1次4、主程序结束指令(FNC06)•助记符FEND;无操作数•说明:这条指令表示主程序结束。执行到此指令时机器进行输出刷新、输入刷新、警戒时钟刷新等处理,完成后返回第0步。•注意:①CALL或CALLP指令的标号应写在FEND指令之后,且一定要用SRET指令作结束。同样,中断子程序也要写在FEND之后,并用IRET指令结束。②若有多个FEND指令,则子程序必须在最后一个FEND指令与END指令之间。45、监视定时器指令•助记符WDT;无操作数•说明:解决程序过长的一种手段。即,如果扫描周期(从第0步到END或FEND指令)超过200ms,PLC将停止运行。可以用WDT指令插到适当的程序步中刷新监视定时器,使得顺序程序能继续运行直到END。6、循环指令•循环起点FOR(FNC08),操作数n•循环结束NEXT(FNC09),无操作数•说明:①程序运行时,位于FOR-NEXT间的程序反复执行n次后,再执行后续程序。注意,FOR和NEXT必须成对使用。②循环次数n的范围:可用常数指定,也可用字元件的内容指定。③可循环嵌套5层。④可利用CJ指令跳出循环。练习题:按如下要求编写程序⑴按下按钮X0,把下面7个数:2、6、5、4、7、4、3按顺序传送到D0~D67个数据寄存器中。⑵完成⑴以后,按X1按钮,求出上述7个数的最大值,当X1按钮松开时,用Y0~Y34个输出点显示最大数的值。⑶按下X2按钮,执行复位操作。三、传送与比较类指令㈠比较类1、比较指令CMP(FNC10)两个数值进行比较,用三个位元件的状态表示比较结果。例:比较结果送到M0—M25M0K100C10M1K100=C10M2K100C10例2:教材例4-5第118页2、区间比较指令ZCP(FNC11)用以确定一个数落在由二个数值构成的闭区间的何处。例:S1比S2小上例中,C10的当前值落在区间[100,120]的左方时,M0ON;落在区间内部时,M1ON;落在区间的右方时,M2ON。3、触点比较指令(FNC224~FNC246)CMP指令的结果是等待处理的,若要直接使用比较结果,可用触点比较指令,即把比较结果表示为一个触点状态,直接在程序中作逻辑运算。比较结果更细化:包括“=”,“”,“”,“”,“≤”,“≥”等6种;逻辑运算可采用LD(FNC224~FNC230)、AND(FNC232~FNC238)、OR(FNC240~FNC246)。例:前面练习题求最大值的一个方法用D10存放最大值,比较前使(D0)→(D10),在FOR/NEXT中执行下面比较程序:㈡传送类传送操作的基本意义在于把源数据传送到指定的目标,可能在传送过程中伴随着其他某些操作,例如•先完成源数据内部的某些处理,例如逐位取反后再传送(CMLFNC14);•把一块连续区域的数据成批地传送到另一块连续区域(BMOVFNC15)•把一个数据传送到一块连续区域(FMOVFNC16)•使数据在指定的目标元件之间交换(XCHFNC17)•进行源数据的数码变换然后传送到目标元件(BCDFNC18和BINFNC19)1、传送指令MOV(FNC12)(DMOVD0D2,D0D1组合放到D2D3)6例:教材例4-4•指令的功能是把源数据传送到指定的目标。•注意:目标操作数可以是所有字元件,或除输入元件外的位元件组合。采用位元件组合作为操作数应注意的问题执行二进制传送,即自动把源操作数转换为二进制数,然后再传送。2、块传送BMOV(FNC15)教材116页•BMOV实现把一块连续区域的数据成批地传送到另一块连续区域的功能。•程序执行时,数据逐个传送,系统自动解决源数据区域与目标区域有重叠引起的问题。3、数据变换指令:实现数据的BCD码与BIN码之间的变换,其中,BCD指令(FNC18)将源中的二进制数变换为BCD码并传送到目标元件中。BIN指令(FNC19)将源元件中的BCD数据变换为二进制数并传送到目标元件中。例BCD码369369每位转成2进制00110110100100+29+28+26+25+23+20=873(BIN码2进制转为10进制)⑴十进制数的BCD码表示⑵使用16位的BCD指令应注意的源元件的数应在K0~9999范围,否则出错⑶使用BIN指令应注意的源元件的数据必须是BCD码,否则出错⑷BCD指令和BIN指令的实际应用:①BCD数字开关②用BCD码作输入的数码管电路4、SMOV指令实现源元件的BCD数据按分配传送,实现数据组合。这条指令同样要求源元件的数据必须是能转换为BCD码的。应用例子:某过程控制系统需要2个由外部设定的时间参数,它们都不超过十位数,若用4位拨码开关作为PLC的输入设定,试设计程序,使输入数据能指定2个定时器T0和T1的设定值。四、算术运算与逻辑运算类指令㈠算术运算指令1、算术运算指令实现2个带符号整数进行四则运算(+,-,×,÷),结果送到目标元件的操作。⑴加法ADD(FNC20)和减法SUB(FNC21)指令7①由于系统进行运算时,数据长度的被限制,“+”,“-”运算可能出现向高位进位或位的情况,需要用标志位(M8020~M8022)标识。M8020零标志、M8021借位标志、M8022进位标志。②源和目标可以用相同的元件号。但须注意,此时若采用连续执行方式,结果会在每个扫描周期都会改变。⑵乘法MUL指令(FNC22)(DMULDOD2D10,把DO、D1组合乘D2、D3组合放到D10、D11、D12、D13)①目标元件的长度增加一倍,即16位运算时,D为32位,32位运算时,D为64位。②采用变址功能确定元件号时,Z只有16乘法时能用,32位不可用。⑶除法DIV指令(FNC23)注意,除数为零运算错误,PLC停机。2、加1和减1指令:INC和DEC指令分别是当条件满足时将指定的元件内容加强和减1,因此,如果使用连续方式,会每一扫描周期都作一次加1或减1运算;这种情况应避免。INC与ADD、DEC与SUB使用时主要区别是:INC和DEC不使用标志位。脉冲执行INCP例:交通灯控制实验㈡逻辑运算类指令逻辑运算类指令通过对两个源操作数按位进行逻辑运算(与、或、异或等),把结果送指定元件,达到屏蔽数据的某些位、保留某些位,或实现某些校验功能的目的。例:某设备有6台电机,要求在手动方式下,每台电机均用一个按钮控制其直接启动/停止。设手动/自动选择开关信号连接到X10端,6个按钮信号从X0起按顺序连接。方法1:用逻辑与(WAND)和逻辑异或指令(WXOR)实现方法2:用交替输出指令ALTP(FNC66)8⑴交替输出指令ALTP(FNC66)属于方便类指令,是FX系列PLC用于专门用于实现由一个按钮控制负载的启动和停止,如下图所示,当X0由OFF到ON时,Y0的状态改变一次。注意,若用连续的ALT指令则每个扫描周期Y0均改变一次。ALT指令也常用于信号分频上。⑵用于本例的程序仅需6条ALTP指令五、循环与移位指令㈠循环与移位指令可分为三种:⑴循环移位和带进位的循环移位指令,实现目标元件内部各位数据的回转,主要用于对采用循环码编码的数据进行处理的场合。⑵位移位和字移位指令。位移位指令实现目标位元件的状态成组地向右(或向左)移动,字移位指令则是位移位指令功能的推广。⑶按先进先出(FIFO)原则进行控制的数据移位写入和读出指令㈡位移位指令:以位右移指令为例•特例:n2=1的位移指令。天塔之光控制实验:塔顶上放置9盏灯,要求系统启动后,各灯按一定规律发亮、熄灭,时间间隔为1秒。㈢FIFO移位写入和读出指令1、FIFO移位写入指令SFWR(FNC38)92、FIFO移位读出指令SFRD(FNC39)例:按产品入库顺序,要求按先入先出原则输出要取出的产品的编号。设产品按16制编号(小于等于4位),允许最大库存量是99件。产品编号由X000~X017输入并送到D256。将D257作指针,D258~D356的99个数据寄存器用来存储产品的编号。根据出库的要求,将最先入库的产品的编号送到D357,要取出的产品的编号以4位16进制数形式输出到Y000~Y017.六、数据处理指令与FNC10~FNC39的基本功能指令相比,FNC40~FNC49指令能进行更复杂的处理或作为满足特殊用途的指令使用。10㈠使用区间复位指令ZRST(FNC40)应注意问题㈡译码和编码指令1、译码指令DECO(P)(FNC41)⑴功能说明计算源元件中n位二进制数值,使目标元件中与计算结果对应编号的位置位。注意:①源元件可以是位元件,也可以是字元件,对于位源元件,n指定了进行数值计算的位元件个数(从低向高编号),n的取值范围为n=1~8;对于字源元件,n指定了进行数值计算的位数(第0位开始)。②目标元件可以是位元件(Y、M、S),也可以是字元件(K、H、T、C、V和Z)。对于位目标元件,其个数为2n,例如:n=8,则为256个。对于字目标元件,位数被限制为16,因此n的取值范围被限制为n≤4。⑵例:教材例4-13用DECO指令实现步进电动机的正反转和调速控制。①被控对象:三相六拍步进电动机,故有A、B、C三相功放电路,PLC产生脉冲序列,作为步进电动机驱动电源的输入。脉冲正序列:A-AB-B-BC-C-CA,脉冲反序列:CA-C-BC-B-AB-A。②步进电动机的速度取决于脉冲序列的频率,本实验要求为1~10步/秒。11脉冲产生方法:用1ms积算定时器T246若T246设定值为K200~K1000,可达到速度要求。速度的调整:每100ms使T246设定值加1或减1,实现减速或加速