1.08k likes | 1.23k Views
5.1 FX 系列可编程控制器功能指令概述 5.2 FX 系列可编程控制器功能指令简介. 5.1 FX 系列可编程控制器功能指令概述. 5.1.1 功能指令的通用表达形式 5.1.2 数据长度 5.1.3 功能指令类型 5.1.4 位元件 5.1.5 变址寄存器 V 、 Z. 5.1.1 功能指令的通用表达形式. 功能指令的表达形式如下表所示: 功能指令按功能号 FNC00~FNC249 编排。每条功能指令都有一个指令助记符。. 5.1.2 数据长度. 功能指令可处理 16 位数据和 32 位数据。
E N D
5.1 FX系列可编程控制器功能指令概述 • 5.2 FX系列可编程控制器功能指令简介
5.1 FX系列可编程控制器功能指令概述 • 5.1.1 功能指令的通用表达形式 • 5.1.2 数据长度 • 5.1.3 功能指令类型 • 5.1.4 位元件 • 5.1.5 变址寄存器V、Z
5.1.1 功能指令的通用表达形式 • 功能指令的表达形式如下表所示: • 功能指令按功能号FNC00~FNC249编排。每条功能指令都有一个指令助记符。
5.1.2 数据长度 • 功能指令可处理16位数据和32位数据。 • 如下图中的第一条指令是将D10中的数据送到D12中,处理的是16 位数据。第二条指令是将D21和D20中的数据送到D23和D22中,处理的是32位数据。
5.1.3 功能指令类型 • FX系列PLC的功能指令有连续执行型和脉冲执行型两种形式。 • 如图左中程序是连续执行方式的例子。当X2为ON状态时上述指令在每个扫描周期都被重复执行。图右程序是脉冲执行方式,该指令仅在X1由OFF转为ON时有效。
5.1.4 位元件 • 位元件:只处理ON/OFF状态的元件称为位元件。 • 字元件:处理数据的元件称为字元件。 • 位元件的组合 :由位元件也可构成字元件进行数据处理,位元件组合由Kn加首元件号来表示。 4个位元件为一组组合成单元,KnM0中的n是组数 。
5.1.5 变址寄存器V、Z • 变址寄存器在传送、比较指令中用来修改操作对象的元件号。其操作方式与普通数据寄存器一样。在[D.]中的(.)表示可以加入变址寄存器。对32位指令,V作高16位,Z作低16位。32位指令中用到变址寄存器时只需指定Z,这时Z就代表了V和Z。
程序流程控制功能指令 传送与比较指令 算术运算和逻辑运算指令 循环移位与移位指令 数据处理指令 高速处理指令 方便指令 外部I/O设备指令 FX系列外部设备指令 浮点数运算指令 时钟运算指令 外围设备指令 触点比较指令 5.2 FX系列可编程控制器功能指令概述
程序流程控制功能指令 • 条件跳转指令CJ • 子程序调用指令CALL与返回指令SRET • 中断返回指令IRET、允许中断指令EI与禁止中 断指令DI • 主程序结束指令FEND • 监视定时器刷新指令WDT • 循环开始指令FOR与循环结束指令NEXT
条件跳转指令CJ • CJ、CJP指令用于跳过顺序程序某一部分的场合,以减少扫描时间。条件跳转指令CJ应用说明如图
子程序调用指令CALL与返回指令SRET • 子程序应写在主程序之后,即子程序的标号应写在指令FEND之后,且子程序必须以SRET指令结束。
中断返回指令IRET、允许中断指令EI与禁止中断指令DI • PLC一般处在禁止中断状态。指令EI~DI之间的程序段为允许中断区间,而DI~EI之间为禁止中断区间。当程序执行到允许中断区间并且出现中断请求信号时,PLC停止执行主程序,去执行相应的中断子程序,遇到中断返回指令IRET时返回断点处继续执行主程序。
主程序结束指令FEND • FEND指令表示主程序的结束,子程序的开始。程序执行到FEND指令时,进行输出处理、输入处理、监视定时器刷新,完成后返回第0步。 • FEND指令通常与CJ-P-FEND、CALL-P-SRET和I-IRET结构一起使用(P表示程序指针、I表示中断指针)。CALL指令的指针及子程序、中断指针及中断子程序都应放在FEND指令之后。CALL指令调用的子程序必须以子程序返回指令SRET结束。中断子程序必须以中断返回指令IRET结束。
监视定时器刷新指令WDT • 如果扫描时间(从第0步到END或FEND)超过100ms,PLC将停止运行。在这种情况之下,应将WDT指令插到合适的程序步(扫描时间不超过100ms)中刷新监视定时器。
循环开始指令FOR与循环结束指令NEXT • FOR~NEXT之间的程序重复执行n次(由操作数指定)后再执行NEXT指令后的程序。循环次数n的范围为1~32767。若n的取值范围为-32767~0,循环次数作1处理。 • FOR与NEXT总是成对出现,且应FOR在前,NEXT在后。FOR~NEXT循环指令最多可以嵌套5层。 • 利用CJ指令可以跳出FOR~NEXT循环体。
传送与比较指令 • 比较指令CMP • 区间比较指令ZCP • 传送指令MOV • 移位传送指令SMOV • 取反传送指令CML • 块传送指令BMOV • 多点传送指令FMOV • 数据交换指令XCH • BCD变换、BIN变换指令
比较指令CMP • CMP指令有三个操作数:两个源操作数[S1.]和[S2.],一个目标操作数[D.],该指令将[S1.]和[S2.]进行比较,结果送到[D.]中。CMP指令使用说明如图所示。
区间比较指令ZCP • ZCP指令是将一个操作数[S.]与两个操作数[S1.]和[S2.]形成的区间比较,且[S1.]不得大于[S2.],结果送到[D.]中。ZCP指令使用说明如图5.15所示。
传送指令MOV • MOV指令将源操作数的数据传送到目标元件中,即[S.]→[D.]。MOV指令的使用说明如图所示。当X0为ON时,源操作数[S.]中的数据K100传送到目标元件D10中。当X0为OFF,指令不执行,数据保持不变。
移位传送指令SMOV • 首先将二进制的源数据(D1)转换成BCD码,然后将BCD码移位传送,实现数据的分配、组合。源数据BCD码右起从第4位(m1=4)开始的2位(m2=2)移送到目标D2/的第3位(n=3)和第2位,而D2/的第4和第1两位BCD码不变。然后,目标D2/中的BCD码自动转换成二进制数,即为D2的内容。BCD码值超过9999时出错。
取反传送指令CML • CML指令使用说明如图所示。将源操作数中的数据(自动转换成二进制数)逐位取反后传送。
块传送指令BMOV • BMOV指令是从源操作数指定的元件开始的n个数组成的数据块传送到指定的目标。如果元件号超出允许的元件号范围,数据仅传送到允许的范围内。BMOV指令的使用说明如图所示。
多点传送指令FMOV • FMOV指令是将源元件中的数据传送到指定目标开始的n个目标元件中,这n个元件中的数据完全相同。FMOV指令使用说明如图所示。
数据交换指令XCH • XCH指令是将两个目标元件D1和D2的内容相互交换。使用说明如图所示。
BCD变换、BIN变换指令 • BCD是将源元件中的二进制数转换为BCD码送到目标元件中。对于l 6位或32位二进制操作数,若变换结果超出0-9999或0-99999999的范围就会出错。 • BCD指令常用于将PLC中的二进制数变换成BCD码输出以驱动LED显示器。 • BIN是将源元件中的BCD码转换为二进制数送到目标元件中。常数K不能作为本指令的操作元件。如果源操作数不是BCD码就会出错。 • BIN指令常用于将BCD数字开关的设定值输入到PLC中。
算术运算和逻辑运算指令 • 加法指令ADD、减法指令SUB • 乘法指令MUL、除法指令DIV • 加1指令INC、减1指令DEC • 字逻辑运算指令(FNC26~FNC29)
加法指令ADD、减法指令SUB • ADD指令是将指定的源元件中的二进制数相加,结果送到指定的目标元件中去。每个数据的最高位作为符号位(0为正,1为负),运算是二进制代数运算。 • 减法指令SUB与ADD指令类似。
乘法指令MUL、除法指令DIV • MUL指令是将两个源元件中的数据的乘积送到指定目标元件。如果为16位数乘法,则乘积为32位,如果为32位数乘法,则乘积为64位,如图5.25所示。数据的最高位是符号位。
加1指令INC、减1指令DEC • INC、DEC指令操作数只有一个,且不影响零标志、借位标志和进位标志。 • 在16位运算中,32767再加1就变成了-32768。32位运算时,2147483647再加1就变成-2147483648。DEC指令与INC指令处理方法类似。
字逻辑运算指令(FNC26~FNC29) • 字逻辑运算指令包括WAND(字逻辑与)、WOR(字逻辑或)、WXOR(字逻辑异或)和NEG(求补)指令。使用方法如图所示。
循环移位与移位指令 • 右循环移位指令ROR、左循环移位指令ROL • 带进位循环右移指令RCR、带进位循环左移指令RCL • 位右移位指令SFTR、位左位指令SFTL • 字右移位指令WSFR、字左移位指令WSFL • 先入先出(FIFO)写入指令SFWR、读出指令SFRD
带进位循环右移指令RCR、带进位循环左移指令RCL带进位循环右移指令RCR、带进位循环左移指令RCL • 执行RCR、RCL指令时,各位的数据与进位位M8022一起(16位指令时一共17位)向右(或向左)循环移动n位。在循环中移出的位送入进位标志,后者又被送回到目标操作元件的另一端。
数据处理指令 • 区间复位指令ZRST • 解码指令DECO、编码指令ENCO • 置1位数总和指令SUM • 置1判别指令BON • 平均值指令MEAN • 报警器置位指令ANS • 报警器复位指令ANR • 平方根指令SQR • 浮点操作指令FLT
区间复位指令ZRST • ZRST指令使[D1.]~[D2.]的元件复位,如图所示。[D1.]指定的元件号应小于或等于[D2.]指定的元件号。若[D1.]号大于[D2.]号,则只有[D1.]指定的元件被复位。[D1.]、[D2.]也可以同时指定32位计数器。
解码指令DECO、编码指令ENCO • 解码指令:将目标元件的指定位置ON • 编码指令:将源元件置0N位的最高位置存放到目标元件
置1位数总和指令SUM • 置1位数总和指令SUM:统计源操作数置ON位的个数,并存放到目标元件
置1判别指令BON • 置1判别指令BON:用位标志指示指定位的状态
平均值指令MEAN • 平均值指令MEAN:计算指定范围源数的平均值 。平均值指n个源操作数的代数和被n除所得的商,余数略去。若元件超出指定的范围,n值会自动缩小,计算出允许范围内数据的平均值。若n值超出1~64,则出错。
报警器置位指令ANS • 报警器置位指令ANS:启动定时,时间到把状态元件置ON。 • 如图所示,若X0和X1同时为ON并超过定时器T0的定时时间1s,S900置1(用于报警);S900置1后若X0或X1变为OFF,则定时器复位,而S900保持为1。
报警器复位指令ANR • 报警器复位指令ANR :把激活的报警器复位。 • 如图所示,X3变为ON时,S900~S999之间被置1的报警器复位。若1个以上报警器被置1,则元件号最低的那个报警器先被复位。当X3再次变为ON时,下一个被置1的报警器复位。若使用连续指令ANR,则按扫描周期依次将报警器复位。
平方根指令SQR • 平方根指令SQR:求源数的算术平方根 • 如图所示,当X0为ON时,SQR指令执行,存放在D10中的数开二次方,结果存放在D12中。当源数据为负数时,计算结果出错,M8067置ON;当计算结果为零时,M8020置ON;当计算结果经过四舍五入圆整时,M8021置ON。
高速处理指令 • 刷新指令REF • 刷新和滤波时间调整指令REFF • 矩阵输入指令MTR • 高速计数器置位指令HSCS • 高速计数器复位指令HSCR • 高速计数器区间比较指令HSZ • 速度检测指令SPD • 脉冲输出指令PLSY • 脉宽调制指令PWM
刷新指令REF • 通常,PLC采用I/O批处理的方法进行工作。刷新指令REF用于在某段程序处理时即时读入最新输人信息或者在某一操作结束后立即将操作结果输出。刷新分输入刷新和输出刷新两种类型。如下图所示:当X0由OFF变为ON,输入X10~X17一共8点被刷新。当X1由OFF变为ON,将Y00~Y07、Y10~Y17、Y20~Y27的24(n=24)点输出刷新。
刷新和滤波时间调整指令REFF • 为防止输入噪声的影响,PLC的输入端都有RC滤波器,滤波时间常数约为10ms。对于没有抖动的无触点电子固态开关,可以高速输入。对于这一类输入信号,PLC输入端的RC滤波器影响了高速输入的速度。FX2N系列的输入X0~X17采用了数字式滤波器,滤波时间可以用REFF指令在0~60 ms的范围内进行调整。该指令使用说明如图。