1 / 94

第六章 FX 2N 功能指令

第六章 FX 2N 功能指令. 教学提示: FX 2N 系列 PLC 除了基本逻辑指令、步进指令外,还有 200 多条功能指令(也称为功能指令)。功能指令实际上是许多功能不同的子程序。与基本逻辑指令只能完成一个特定动作不同,功能指令能完成实际控制中的许多不同类型的操作.

naomi
Download Presentation

第六章 FX 2N 功能指令

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 FX2N功能指令 教学提示:FX2N系列PLC除了基本逻辑指令、步进指令外,还有200多条功能指令(也称为功能指令)。功能指令实际上是许多功能不同的子程序。与基本逻辑指令只能完成一个特定动作不同,功能指令能完成实际控制中的许多不同类型的操作 FX2N系列PLC的200多条功能指令按功能不同可分为程序流向控制指令、数据传递与比较指令、算术与逻辑运算指令、数据移位与循环指令、数据处理指令、高速处理指令、方便指令指令、外部设备通信(I/O模块、功能模块等)指令、浮点运算指令、定位运算指令、时钟运算指令、触点比较指令等十几大类。对实际控制中的具体控制对象,选择合适的功能指令可以使编程较之基本逻辑指令快捷方便

  2. 教学要求:本章让学生了解FX2N功能指令的类别、功能定义和书写方式;掌握应用功能指令的使用条件、表示的方法与步骤及 编程的规则;能针对一般的工程控制要求应用功能指令编写工程控制程序

  3. 第六章 FX2N功能指令 6.1 功能指令的表示与执行方式 6.1.1 指令与操作数 6.1.2 指令的数据长度与执行形式 6.1.3 变址操作 6.2 程序流向控制指令 6.2.1 条件跳转指令 6.2.2 子程序调用和返回指令 6.2.3 中断指令 6.2.4 主程序结束指令 6.2.5 监视定时器指令

  4. 6.2.6 循环开始指令和循环结束指令 6.3 数据传送和比较指令 6.3.1 比较指令 6.3.2 区间比较指令 6.3.3 传送指令 6.3.4 移位传送指令 6.3.5 取反传送指令 6.3.6 块传送指令 6.3.7 多点传送指令 6.3.8 数据变换指令 6.3.9 BCD变换指令 6.3.10 BIN变换指令

  5. 6.4 算术运算和逻辑运算指令 6.4.1 加法指令 6.4.2 减法指令 6.4.3 乘法指令 6.4.4 除法指令 6.4.5 加1指令、减1指令 6.4.6 逻辑与、或和异和指令 6.4.7 求补指令 6.5 循环与移位指令 6.5.1 左、右循环指令 6.5.2 带进位的左、右循环指令 6.5.3 位组件左移、位组件右移指令 6.5.4 字元件右移、字元件左移指令

  6. 6.1 功能指令的表示与执行方式 6.1.1 指令与操作数 1.指令 功能框的第一部分是指令 2.操作数 功能框的第一段之后都为操作数部分 操作数部分依次由“源操作数”(源)、“目标操作数”(目)、和“数据个数”3部分组成 有些功能指令仅使用指令段(FNC编号),但多数情况下是将其与操作数结合在一起使用。其中: • ① [S·] :源操作数,指令执行后其内容不改变。源的数量多时,以[S1]· 、[S2·]等表示。以加上“· ”符号表示使用变址方式,,默认为无“· ”,表示不能使用变址方式

  7. ② [D·] :目标操作数,指令执行后将改变其内容。在目标数种多时,以 [D1·] 、 [D2·]等表示。默认为无“· ”,表示不能使用变址方式 • ③ M、n:其他操作数,用来表示阐述或对源和目标操作数作出补充说明。表示常数时,K后跟的为十进制数,H后跟的为十六进制数 • ④ 程序步:指令执行所需的步数。功能指令的指令段的程序步数通常为1步,但是根据各操作数是16位指令还是32位指令,会变为2步或4步。当功能指令处理32位操作数时,则在指令助记符号前加[D]表示,指令前无此符号时,表示处理16位数据 例: (a) (b) 图6.1 功能指令格式例 (a)功能指令的梯形图;(b)X000=ON,MAEN指令的操作结果

  8. 6.1.2 指令的数据长度与执行形式 1.字元件/双字元件 (1) 字元件 • 一个字元件是由16位的存储单元构成,其最高位(第15位)为符号位,第0~14位为数值位 图6.2 字元件 (2) 双字元件 • 低位元件D10存储32位数据的低16位,高位元件D11存储32位数据的高16位

  9. 32位元件对数据的存放原则是:“低对低,高对高”32位元件对数据的存放原则是:“低对低,高对高” • 双字节元件中第31位为符号位,第0~30位为数值位 图6.3 双字元件 2.16位/32位指令 16位MOV指令 图6.4 16位MOV指令 • 当X001接通时,将十进制数10传送到16位的数据寄存器D10中去 • 当X001断开时,该指令被跳过不执行,源和目的内容都不变

  10. 32位MOV指令 图6.5 32位MOV指令 • 当X001接通时,将由D11和D10组成的32位源数据传送到由D13和D12组成的目标地址中去 • 当X001断开时,该指令被跳过不执行,源和目的内容都不变 3.位元件/位元件组件 只处理ON/OFF信息的软元件称为位元件,如X,Y,M,S等均为位元件 而处理数值的软元件称为字元件,如T,C,D等

  11. “位元件组件” 的组合方法的助记符是: Kn+最低位的位元件号 • 如KnX、KnY、KnM即是位元件组合,其中“K”表示后面跟的是十进制数,“n”表示4位一组的组数,16位数据用K1~K4,32位数据用K1~K8 【例6-1】说明K2M0表示的位元件组件含义 解: K2M0中的“2”表示2组4位的位元件组成组件,最低位的位元件号分别是M0和 M4。所以K2M0表示由M0~M3和M4~M7两组位元件组成一个8位数据,其中M7是最高位,M0是最低位

  12. 使用位元件组件时应注意: (1)若向K1M0~K3M0传递16位数据,则数据长度不足的高位部分不被传递,32位数据也同样 (2)在16位(或32位)运算中,对应元件的位指定是K1~K3(或K1~K7),长度不足的高位通常被视为0,因此,通常将其作为正数处理 (3)被指定的位元件的编号,没有特别的限制,一般可自由指定,但是建议在X,Y的场合最低位的编号尽可能的设定为0(X000,X010,X020…Y000,Y010,Y020…),在M,S场合理想的设定数为8的倍数,为了避免混乱,建议设定为M0,M10,M20…等

  13. 图6.6 连续执行指令举例 图6.7 脉冲执行方式举例 4.脉冲执行型/连续执行型指令 (1)连续执行指令型 • X000= ON时,指令在各扫描周期都执行 (2)脉冲执行型指令 指令总是只在X000由OFF→ON变化一次时执行一次,其它时候不执行 连续执行方式在程序执行时的每个扫描周期都会对目标组件加1,而这种情况在许多实际的控制中是不允许的。为了解决这类问题,设置了脉冲执行方式,并在这类助记符的后面加后缀符号“P”来表示此方式 (如图6.7)

  14. 6.1.3 变址操作 1.寄存器变址操作的一般规则 变址的方法是将变址寄存器V和Z这两个16位的寄存器放在各种寄存器的后面,充当操作数地址的偏移量 操作数的实际地址就是寄存器的当前值以及V和Z内容相加后的和 当源或目标寄存器用[S·]或[D·]表示时,就能进行变址操作。对32位数据进行操作时,要将V、Z组合成32位(V,Z)来使用,这时Z为低16位, V为高16位 可以用变址寄存器进行变址的软元件有X、Y、M、S、P、T、C、D、K、H、KnX、KnY、KnM、KnS

  15. 【例6-2】 求执行加法操作后源和目操作数的实际地址 图6.8 变址操作举例 解: 第一行指令执行25→V,第二行指令执行30→Z,所以变址寄存器的值为:V=25,Z=30。第三行指令执行(D5V)+(D15Z)→(D40Z) [S1·]为D5V:D(5+25)=D30 源操作数1的实际地址 [S2·]为D15Z:D(15+30)=D45 源操作数2的实际地址 [D·]为D40Z:D(40+30)=D70 目操作数的实际地址 所以,第三行指令实际执行(D30)+(D40)→(D70),即D30的内容和D45的内容相加,结果送入D70中去

  16. 2.16位指令操作数的变址 【例6-3】 图6.9是16位指令操作数修改的例子 • 将K0或K1的内容向变址寄存器V0传送 • 当X001=ON,V0=0时,(D0+0=D0),则K500的内容向D0传送 • 若V0=10时,(D0+10=D10),则K500的内容向D10传送 解: 图6.9 16位指令操作数的变址举例

  17. 3.32位指令操作数的变址 【例6-4】 图6.10是32位指令操作数修改的例子 • DMOV是32位的指令,因此在该指令中使用的变址寄存器也必须指定32位 • 在32位指令中指定了变址寄存器的Z寄存器(Z0~Z7)及与之组合的V寄存器(V0~V7) 解: 图6.10 32位指令操作数的变址举例 • 即使Z0中写入的数值不超过16位数值范围(0~32767),也必须用32位的指令将V,Z两方向改写,如果只写入Z侧,则在V侧留有其它数值,会使数值产生很多的运算错误

  18. 4.常数K的修改 【例6-5】图6.11是常数的修改的例子 • 当X005=ON,若V5=0,(K6+0=K6),将K6的内容向D10传送 • 若V5=20时,(K6+20=K26),则将K26的内容向D10传送 解: 图6.11 常数K的修改举例

  19. 5.输入输出继电器八进制软元件的变址 【例6-6】输入输出继电器8进制软元件的变址的例子 • 用MOV指令输出Y7~Y0,通过变址修改输入,使其变换成X7~X0,X17~X10,X27~X20 • 这种变换是将变址值0、8、16通过(X0+0=X0)、(X0+8=X10)、X0+16=X20)的八进制的换算,然后相加软元件的编号,使输入端子发生变化 解: 图6.12 8进制软元件(编号)的变址举例

  20. 6.2 程序流向控制指令 6.2.1条件跳转指令 1.指令格式 指令编号及助记符:条件跳转指令FNC00 CJ或CJ(P) • CJ指令的目标元件是指针标号,其范围是P0~P63(允许变址修改) • 该指令程序步为3步,标点步为1步 • 作为执行序列的一部分指令,有CJ,CJP指令,可以缩短运算周期及使用双线圈 2.指令用法 • 条件跳转指令用于当跳转条件成立时跳过CJ或CJ(P)指令和指针标号之间的程序,从指针标号处连续执行,若条件不成立则继续顺序执行,以减少程序执行扫描时间

  21. 【例6-7】说明图6.13的示例中条件跳转指令CJ的用法【例6-7】说明图6.13的示例中条件跳转指令CJ的用法 解: • X000“ON”,则从1步跳转到36步(标记P8的后一步) • X000“OFF”时,不进行跳转,从1步向4步移动,不执行跳转指令 • 程序定时器T192~T199及高速计数器C235~C255如果在驱动后跳转则继续工作,输出接点也动作 • Y001为双线圈,X000=OFF时,不跳转,采样X001 • X000=ON时跳转至P8,P8处不跳转,采样X012

  22. 图6.13 CJ跳转指令修改举例

  23. 3.跳转程序中软组件的状态 • 在发生跳转时,被跳过的那段程序中的驱动条件已经没有意义了,所以该程序段中的各种继电器和状态器、定时器等将保持跳转发生前的状态不变 4.跳转程序中标号的多次引用 • 标号是跳转程序的入口标识地址,在程序中只能出现一次,同一标号不能重复使用 。但是,同一标号可以多次被引用 图6.14 标号可以多次引用

  24. 5.无条件跳转指令的构造 • PLC只有条件跳转指令,没有无条件跳转指令 。遇到需要无条件跳转的情况,可以用条件跳转条件来构造无条件跳转指令,最常使用的是使用M8000 (只要PLC处于RUN状态,则M8000总是接通的 ) 图6.15 无条件跳转指令指令的构造

  25. 6.2.2子程序调用和返回指令 1.指令格式 指令编号及助记符: • 子程序调用功能指令FNC01 CALL ,CALL(P) • 子程序返回功能指令 FNC02 SRET 指令的目标操作元件是指针号P0~P62(允许变址修改) 2.指令用法 (1)子程序与标号的位置 • CALL指令必须和FEND,SRET一起使用 • 子程序标号要写在主程序结束指令FEND之后 • 标号P0和子程序返回指令SRET间的程序构成了P0子程序的内容

  26. 当主程序带有多个子程序时,子程序要依次放在主程序结束指令FEND之后,并用不同的标号相区别 • 子程序标号范围为P0~P62,这些标号与条件转移中所用的标号相同,而且在条件转移中已经使用了标号,子程序也不能再用 • 同一标号只能使用一次,而不同的CALL指令可以多次调用同一标号的子程序 例: 图6.16 CALL指令举例

  27. (2)子程序嵌套 图6。17 子程序嵌套举例

  28. 6.2.3 中断指令 1.指令格式 指令编号及助记符: • 中断返回指令FNC03 IRET • 中断允许指令FNC04 EI • 中断禁止指令FNC05 DI 2.指令用法 FX2N系列PLC有两类中断,即外部中断和内部定时器中断 • 外部中断信号从输入端子送入,可用于机外突发随机事件引起的中断 • 定时中断是内部中断,是定时器定时时间到引起的中断

  29. FX2N系列PLC设置有9个中断源,9个中断源可以同时向CPU发出中断请求信号,多个中断依次发生时,以先发生为优先;完全同时发生时,中断指针号较低的有优先权。另外,外中断的优先级整体上高于内中断的优先级 FX2N系列PLC有三条中断指令: • ① EI中断允许指令 对可以响应中断的程序段用中断允许指令EI来开始 • ② DI中断禁止指令 对不允许中断的程序段用中断指令DI来禁止 • ③ 中断返回指令IRET 从中断服务子程序中返回时必须用专门的中断返回指令IRET,不能用子程序返回指令SRET 在主程序的执行过程中,可根据不同中断服务子程序中PLC要完成工作的优先级高低决定能否响应中断 程序中允许中断响应的区间应该由EI指令开始,DI指令结束 在中断子程序执行区间之外时,即使有中断请求,CPU也不会立即响应。通常情况下,在执行某个中断服务程序时,应禁止其他中断

  30. 例: 图6.18 中断指令举例

  31. 2.中断指针 (1)外中断用I指针 • 外中断用I指针的格式如图6.19(a)所示, 有I0~I5 共6点 • 外中断是外部信号引起的中断,对应的外部信号的输入口为X000~X005 (2)内中断用I指针 • 内中断用I指针格式如图6.19(b)所示,有I6~I8 3点 • 内中断是指机内定时时间到,中断主程序去执行中断子程序。定时时间由指定编号为6~8的专用定时器控制 • 设定时间值在10~99ms间选取,每隔设定时间就会中断一次

  32. 图6.19 中断指针格式 (a)外中断指针格式(b)内中断指针格式

  33. 6.2.4主程序结束指令 1.指令格式 • 指令编号及助记符:主程序结束指令FNC06 FEND 2.指令用法 FEND指令是一步指令,无操作目标元件 子程序应写在FEND指令和END指令之间,包括CALL,CALL(P)指令对应的标号、子程序和中断子程序 FEND指令的用法(见图6.20)应注意以下几点 : • (1) CALL,CALL(P)指令的标号P用于在FEND指令后编程,必须要有IRET指令。中断指针I也在FEND指令后编程,必须要有SRET指令 • (2) 使用多个FEND指令的情况下,应在最后的FEND指令与END指令之间编写子程序或中断子程序 • (3)当程序中没有子程序或中断服务程序时,也可以没有FEND指令。但是程序的最后必须用END指令结尾。所以,子程序及中断服务程序必须写在FEND指令与END指令之间

  34. 图6.20 FEND指令的用法

  35. 6.2.5 监视定时器指令 1.指令格式 • 指令编号及助记符:监视定时器指令FNC07 WDT 2.指令用法 (1)WDT用来在程序中刷新监视定时器(D8000) • 通过改写存于特殊数据寄存器D8000中的内容,可改变监视定时器的检出时间。程序如图6.21所示 图6.21 WDT指令举例

  36. (2)WDT指令还可以用于将长扫描时间的程序分割(2)WDT指令还可以用于将长扫描时间的程序分割 • 当PLC的运行扫描周期指令执行时间超过200ms时,CPU的出错指示灯亮,同时停止工作。因此在合适的程序步中插入WDT指令,用以刷新监视定时器,以使顺序程序得以继续执行到END ,如图6.22 图6.22 WDT用于分隔程序

  37. 6.2.6 循环开始指令和循环结束指令 1.指令格式 • 指令编号及助记符:循环开始FNC08 FOR 循环结束FNC09 NEXT • 操作数的软组件:无 2.指令用法 循环指令可以反复执行某一段程序,只要将这一段程序放在FOR-NEXT之间,待执行完指定的循环次数后,才执行NEXT下一条指令。循环程序可以使程序变得简炼 FOR和NEXT指令必须成对使用,只有在FOR~NEXT指令之间的程序(利用源数据指定的次数)执行几次后,才处理NEXT指令以后的一步

  38. 循环次数在FOR后的数值指定。循环次数范围为n=1~32767时有效。如循环次数<1时,被当作1处理,FOR-NEXT循环一次 若不想执行FOR~NEXT间的程序时,利用CJ指令,使之跳转 环次数多时扫描周期会延长,可能出现监视定时器错误 NEXT指令在FOR指令之前,或无NEXT指令,或在FEND,END指令之后有NEXT指令,或FOR与NEXT的个数不一致时,会出错

  39. 【例6-8】分析图6.23的程序的循环工作过程和次数【例6-8】分析图6.23的程序的循环工作过程和次数 • 已知K1X000的内容为7,数据寄存器D0Z的内容为6 图6.23 FOR、NEXT循环指令举例

  40. 解: 图6.23所示程序是三重循环的嵌套,按照循环程序的执行次序由内向外计算各循环次数 (1)单独一个循环[A]执行的次数 当X010为OFF时,已知K1X000的内容为7,所以[A]循环执行了7次 (2)循环B执行次数(不考虑C循环) [B]循环次数由D0Z指定,已知D0Z为6次。B循环包含了整个A循环,所以整个A循环都要被启动6次 (3)[C]的程序循环次数由K4指定为4次 在[C]的程序执行一次的过程中,则[B]的程序执行6次,所以A循环总计被执行了4×6×7=168次。然后向NEXT指令(3)以后的程序转移

  41. 6.3 数据传送和比较指令 6.3.1 比较指令 1.指令格式 指令编号及助记符:比较指令FNC10 CMP[S1·][S2·][D·] • [S1·][S2·]为两个比较的源操作数 其中: • [D·]为比较结果的标志组件,指令中给出的是标志软组件的首地址(标号最小的那个) 标志位的软组件有Y、M、 S 源操作数的软组件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS

  42. 2.指令用法 • 比较指令CMP是将源操作数[S1·]和源操作数[S2·]进行比较,结果送到目标操作数[D·]中,比较结果有三种情况:大于、等于和小于 • CMP指令可以比较两个16位二进制数,也可以比较两个32位二进制数,在作32位操作时,使用前缀(D):(D)CMP[S1·][S2·][D·] • CMP指令也可以有脉冲操作方式,使用后缀(P):(D)CMP(P) [S1·][S2·][D·],只有在驱动条件由OFF→ON时进行一次比较 标志位操作规则: • 若K100>(C20),则M0被置1 • 若K100=(C20),则M1被置1 • 若K100<(C20),则M2被置1 图6.24 比较指令CMP举例

  43. 6.3.2区间比较指令 1.指令格式 指令编号及助记符:区间比较指令FNC11 ZCP[S1·][S2·] [S3·] [D·] 其中: • [S1·] 和[S2·]为区间起点和终点 • [S3·] 为另一比较软组件 • [D·]为标志软组件,指令中给出的是标志软组件的首地址 标志位的软组件有Y、M、S 源操作数的软组件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS

  44. 2.指令用法 • ZCP指令是将源操作数[S3·]与[S1·]和[S2·]的内容进行比较,并比较结果送到目标操作数[D·]中 图6.25 区间比较指令ICP指令举例

  45. [S1·]>[S3·],即K100>C30的当前值时,M3接通 • [S1·]≤[S3·]≤[S2·],即K100≤C30的当前值≤K120时,M4接通 • [S3·]> [S2·],即C30当前值>K120时,M5接通 • 当X000为OFF时,不执行ZCP指令,M3~M5仍保持X000=OFF之前的状态 • 使用比较指令CMP/ZCP时应注意: • (1)使用ZCP时,[S2·]的数值不能小于[S1·] • (2)所有的源数据都被看成二进制值处理

  46. 6.3.3 传送指令 1.指令格式 指令编号及助记符:传送指令FNC12 MOV [S·] [D·] 其中: • [S·] 为源数据 • [D·]为目标软组件 目标操作数为T、C、V、Z、D、KnY、KnM、KnS 源操作数的软组件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS

  47. 2.指令用法 • 传送指令是将源操作数传送到指定的目标操作数,即[S·] → [D·] 图6.26 传送指令MOV举例 • 当常开触点X000闭合为ON时,每扫描到MOV指令时,就把存入[S·]源数据中操作数100(K100)转换成二进制数,再传送到目标操作数D10中去 • 当X000为OFF时,则指令不执行,数据保持不变

  48. 6.3.4 移位传送指令 1.指令格式 指令编号及助记符:传送指令FNC13 SMOV [S·] m1 m2[D·]n 其中: • [S·]为源数据,m1为被传送的起始位,m2为传送位数 • [D·]为目标软组件,n为传送的目标起始位 目标操作数可为T、C、V、Z、D、KnY、KnM、KnS 源操作数的软组件有T、C、V、Z、D、K、H、KnX、KnY、KnM、KnS n, m1, m2 的软组件有K、H

  49. 2.指令用法 • 移位传送指令的功能是将[S·]第m1位开始的m2个数移位到[D·]的第n位开始的m2个位置去,m1、m2和n取值均为1~4。分开的BCD码重新分配组合,一般用于多位BCD拨盘开关的数据输入 图6.27 移位传送指令SMOV举例 自动转换 103 102 101 100 D1’ D1’(四位BCD码) 103 102 101 100 D2’ D2’(四位BCD码) 自动转换 图6.28 移位说明

  50. X000满足条件,执行SMOV指令 • 源操作数[S·]内的16位二进制数自动转换成4位BCD码,然后将源操作数(4位BCD码)的右起第m1位开始,向右数共m2位的数,传送到目标操作数(4位BCD码)的右起第n位开始,向右数共m2位上去,最后自动将目的操作数[D]中的四位BCD码转换成16位二进制数 • 图中,m1为4,m2为2,n为3,当X000闭合时,每扫描一次该梯形图,就执行SMOV移位传送操作,先将D1中的16位二进制数自动转换成4位BCD码,并从4位BCD码右起第4位开始(m1为4),向右数共2位(m2为2)(即103,102)上的数传送到D2内4位BCD码的右起第3位(n=3)开始,向右数共2位(即102,101)的位置上去,最后自动将D2中的BCD码转换成二进数 • 上述传送过程中,D2中的另两位即(即103,100)上的数保持不变

More Related