首页 理论教育 常用功能指令及应用详解

常用功能指令及应用详解

时间:2023-06-25 理论教育 版权反馈
【摘要】:功能指令实际上就是针对许多功能的不同子程序。例如FNC45是一条数据处理平均值功能的指令,助记符为MEAN。该指令执行时一般源操作数的内容不变,目标操作数的内容发生相应的变化。

常用功能指令及应用详解

功能指令实际上就是针对许多功能的不同子程序。

1.功能指令的表示形式、执行方式

(l)功能指令的格式

功能指令既可以用编号FNCOOO~FNC246表示,也可以用相应的助记符表示。例如FNC45是一条数据处理平均值功能的指令,助记符为MEAN。

978-7-111-42445-1-Chapter05-21.jpg

图5-3-9 MFAN示例梯形图

图5-3-9中MEAN是功能指令的语句名称,也可以使用FNC45;DO是源操作数的首元件;D4是指定计算结果存放的数据寄存器的地址;K3是指定取值的个数为3。显然该功能指令的含义是D4=(DO+Dl+D2)/3,即将(DO+Dl+D2)/3的运算结果赋值给D4。该指令执行时一般源操作数的内容不变,目标操作数的内容发生相应的变化。有些指令的源操作数或目标操作数有时不止一个。

(2)功能指令的执行方式

功能指令有连续执行方式和脉冲执行方式两种。图5-3-10a中的MEAN是连续执行型指令,即当XO01接通时,每个周期都执行一次,其执行次数取决于XO01的接通时间;而在图5-3-10b中的MEANP是脉冲执行型指令,有(P)就表示当X003由OFF转换为ON时(上升沿),仅执行一次,与X003的接通时间长短无关。

(3)可处理数据长度

功能指令可处理单字(16)位数据,也可以处理双字(32)位数据。如图5—3-lla中,当XO01接通时,则MOV功能指令处理的数据为16位,即将DO的内容传送至D20;而在图5-3-11b中,(P)MOV功能指令处理的数据为32位,即将D1D0(由D1、D0构成的32位数据)的内容传送至D1D20(由D21、D20构成的32位数据存储单元)。

978-7-111-42445-1-Chapter05-22.jpg

图5-3-10 功能指令的执行方式示例

a)连续执行方式 b)脉冲执行方式

978-7-111-42445-1-Chapter05-23.jpg

图5-3-11 功能指令处理数据长度示例

a)16位数据 b)32位数据

2.条件跳转指令(CJ)

CJ指令用于跳过顺序程序某一部分的场合,以减少扫描时间。CJ指令助记符、功能、操作数、程序步见表5-3-3。

表5-3-3 CJ指令助记符、功能、操作数、程序步

978-7-111-42445-1-Chapter05-24.jpg

当执行条件跳转指令CJ时,则跳过CJ指令和指针标号之间的程序,如图5-3-12所示。当X020接通时,程序跳到标号P20处执行该行及其后的程序;如果X020不接通时,则跳转不执行,程序按原顺序执行。指令可用的有效指针范围为P0~P127。

执行跳转指令CJ后,对不被执行的指令,即使输入元件状态发生改变,输出元件的状态也维持不变。(www.xing528.com)

3.子程序调用指令CALL与返回指令SRET

CALL、SRET指令助记符、功能、操作数、程序步见表5-3-4所示。

978-7-111-42445-1-Chapter05-25.jpg

图5-3-12 CJ指令应用示例

表5-3-4 CALL、SRET指令助记符、功能、操作数、程序步

978-7-111-42445-1-Chapter05-26.jpg

子程序调用指令CALL需与子程序返回指令SRET配合使用,子程序应写在主程序之后,即子程序的标号应写在主程序结束指令FEND之后,且子程序必须以SRET指令结束。如图5-3-13所示,当X000为ON时,CALL P10指令使程序转到P10处去执行子程序,在子程序中执行到SRET指令后程序返回到CALL指令的下一条指令处执行。若X000为OFF,则程序顺序执行。在子程序中可以再次使用CALL子程序,形成子程序嵌套

4.传送指令MOV

传送指令MOV将源操作数据S传送给指定目标D。MOV指令的指令代码为FNC12,格式如图5-3-14所示,源操作数[S]可取所有的数据类型,即K、H、KnX、KnM、KnS、T、C、D、V、Z。第1程序行中,当X001为ON时,将D0中内容写入D20中,D0中的内容不变;第2程序行中,当X002为ON时,源操作数[S]中数据K100传送到目标操作元件D10中。当指令执行时,常数K100自动转换为二进制数。

当X001、X002为OFF时,指令不执行,数据保持不变。

5.CMP指令

CMP指令的功能指令有3个操作数:两个源操作数[S1·]和[S2·]、一个目标操作数[D·]。其功能是将两个源操作数[S1·]和[S2·]进行比较,所有的源操作数可取任意的数据格式,并将比较的结果存放于目标操作数[D·]中。

比较指令的应用如图5-3-15所示,当X1为ON时,将十进制常数K100与计数器C20的当前值比较,目标操作数选定为M0,则M1、M2即自动被占用,比较的结果分3种情况分别使M0、M1、M2中的一个为ON,另两个则为OFF。

978-7-111-42445-1-Chapter05-27.jpg

图5-3-13 CALL指令使用说明

978-7-111-42445-1-Chapter05-28.jpg

图5-3-14 传送指令的应用

978-7-111-42445-1-Chapter05-29.jpg

图5-3-15 比较指令的应用

当常数K100大于C20的当前值时,触点M0闭合;当常数K100等于C20的当前值时,触点M1闭合;当常数K100小于C20的当前值时,触点M2闭合。若触点X0断开时,不执行CMP指令,但以前的比较结果被保存,可用RST指令复位清零。

若X1为OFF,则CMP不执行,M0、M1、M2的状态保持不变。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈