第 4 章 fx 系列可编程控制器的功能指令

42
第4第 FX 第第第第第第第第第第第第第 第第第第FX2N 第第 PLC 第第第第第第第第 第第第第第第 第第 、, 200 第第第第第第 第第第第第第第第 第 第第第第第第第第第第第第第第第第第第第 第第第第第第第第第第第第 ()。。一 第第第第第第第 第第第第第第第第第第第第第第第第第第第第第第第 ,。 第第第第第第第第第第第第第第第第 一: 1 第第第第 4 第第第第第第 7 第第第第 2 第第第第 5 第第第第第第第 8 第第第第第第第第 3 第第第第第第第 6 第第第第 9 第第第第第第

Upload: yuri

Post on 15-Jan-2016

176 views

Category:

Documents


0 download

DESCRIPTION

第 4 章 FX 系列可编程控制器的功能指令. 教学提示: FX2N 系列 PLC 除了基本逻辑指令、步进指令外,还有 200 多条功能指令(也称为功能指令)。功能指令实际上是许多功能不同的子程序。与基本逻辑指令只能完成一个特定动作不同,功能指令能完成实际控制中的许多不同类型的操作。 一般来说功能指令可以分为以下几类: ( 1 )程序结构 ( 4 )程序流程控制 ( 7 )便利指令 ( 2 )传送与比较 ( 5 )移位与循环移位 ( 8 )外部输入输出处理 ( 3 )算术与逻辑运算 ( 6 )时钟运算 ( 9 )外部设备通讯. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 4 章   FX 系列可编程控制器的功能指令

第 4章 FX 系列可编程控制器的功能指令

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

一般来说功能指令可以分为以下几类: ( 1)程序结构 ( 4)程序流程控制 ( 7)便利指令 ( 2)传送与比较 ( 5)移位与循环移位 ( 8)外部输入输出

处理 ( 3)算术与逻辑运算 ( 6)时钟运算 ( 9)外部设备通讯

Page 2: 第 4 章   FX 系列可编程控制器的功能指令

本讲学习的要点: 1 .掌握字元件、位组合元件的使用方法。 2. 掌握功能指令的基本格式; 3 .学会常用功能指令的编程方法及使用注意事项。 本章教学要求: ( 1)了解 FX2N 功能指令的类别、功能定义和书写方式; ( 2 )掌握应用功能指令的使用条件、表示的方法与步骤

及 编程的规则; ( 3 )能针对一般的工程控制要求应用功能指令编写工程

控制程序。

Page 3: 第 4 章   FX 系列可编程控制器的功能指令

4.1 功能指令概述

功能指令和基本逻辑指令的形式不同,基本逻辑指令用助记符或逻辑操作符表示,其梯形图就是继电器触点、线圈的连接图。功能指令用功能号(代码)表示, FX0N 系列 PLC 功能指令的代码为 FNC ( Function ) 00 ~ FNC67 , FX2 系列 PLC 的功能指令代码为 FNC00 ~ FNC99 , FX2N 系列 PLC 功能指令的代码为 FNC00 ~ FNC250 ,每条功能指令有其相应的助记符和代码。

有关本章中所述的功能指令的代码、操作功能及操作数,参见第 4.10 节中的功能指令汇总表。

Page 4: 第 4 章   FX 系列可编程控制器的功能指令

1. 功能指令的梯形图表示

X0FNC45MEAN D0 D10 K3

[D.][S.] n)10(

3

)2()1()0(D

DDD

指令表格式 步序 操作码 操作数 0 LD X0 1 MEAN D0 D10 K3 8 。。。。

4.1.1 功能指令的基本格式及执行方式

助记符

操作数

Page 5: 第 4 章   FX 系列可编程控制器的功能指令

2 、功能指令的通用表达形式及执行方式

V,ZV,ZV,ZV,ZDDDDCCCCTTTTKnSKnSKnSKnSKnMKnMKnMKnMKnYKnYKnYKnYKnXKnXKnXKnXFNFNCCFNFNCC

代码代码代码代码

助记符助记符助记符助记符

(S.(S.))(S.(S.))

(D.(D.))(D.(D.))

K,HK,HK,HK,Hnnnn

图 4.2 功能指令的通用表达形式

Page 6: 第 4 章   FX 系列可编程控制器的功能指令

操作码与操作数操作码(指令助记符):表示指令的功能操作数:指明参与操作的对象

源操作数 S:执行指令后收据不变的操作数,两个或

两个以上时为 [S1.] 、 [S2.] 。目标操作数 D:执行指令后收据被刷新的操作数,两

个或两个以上时为 [D1.] 、 [D2.] 。其它操作数 m、 n:补充注释的常数,用 K(十进制)

和 H(十六进制)表示,两个或 两个以上时为 m1、 m2 或 n1 、 n2 。

Page 7: 第 4 章   FX 系列可编程控制器的功能指令

位软元件:只处理开关( ON/OFF )信息的元件,如 X、 Y、 M、和 S;

常数 K、 H或指针 P;字软元件:处理数据的元件,如 T、 C和 D等。位软元件的组合:位软元件组合表示数据: 4个位元件一组,代表 4位 BCD 码,

也表示 1位十进制数;用 KnMi表示, K为十进制, n 为十进制位数,也是位元件的组数,

M 为位元件, i 为位元件的首地址,一般用 0结尾的元件。

4.1.2 4.1.2 功能指令的操作数及变址操作功能指令的操作数及变址操作

1.1. 功能指令的操作数功能指令的操作数

Page 8: 第 4 章   FX 系列可编程控制器的功能指令

数据长度16 位:参与运算的数据默认为 16位二进制数据32 位: 32 位数据时在操作码前面加 D( Double )

2. 2. 数据长度及执行方式数据长度及执行方式

X0

MOV D0 D1

X1

DMOV D2 D4

(D0)→(D1)

(D3D2)→(D5D4)

Page 9: 第 4 章   FX 系列可编程控制器的功能指令

执行方式连续执行方式:每个扫描周期都重复执行一次脉冲执行方式:只在信号 OFF→ON 时执行一次,在指令后加 P( Pulse )。

X0

MOV D0 D1

X1

MOVP D2 D4

Page 10: 第 4 章   FX 系列可编程控制器的功能指令

变址:改变操作数的地址变址寄存器的作用:存放改变地址的数据实际地址 = 当前地址 +变址数据 32 位运算时 V和 Z组合使用, V为高 16 位, Z为低 1

6 位。X0

MOV K8 V

X1MOV K4 Z

MOV D0V D10ZX2

V=(8)

Z=(4)

(D8)→(D14)

3.3. 变址寄存器变址寄存器 VV、、 ZZ

Page 11: 第 4 章   FX 系列可编程控制器的功能指令

4.4. 常用特殊辅助继电器常用特殊辅助继电器

功能指令执行结果的标志M8020 :零标志M8021 :借位标志M8022 :进位标志M8029 :执行完毕标志M8064 :参数出错标志M8065 :语法出错标志M8066 :电路出错标志M8067 :运算出错标志

Page 12: 第 4 章   FX 系列可编程控制器的功能指令

名称 梯形图 操作数 D指令

P指令

功能说明

FNC00 CJ

P0~P127 √ 条件跳转

FNC 01 CALL

P0~P62

P64~P127

√ 调用子程序

FNC 02 SRET

子程序返回

FNC 03 IRET

中断返回

FNC 04 EI

中断允许

4.2 程序流程控制指令表 4.1 程序流程控制指令

FNC 00CJ S.

FNC 01CALL S.

FNC 02SRET

FNC 03IRET

FNC 04EI

Page 13: 第 4 章   FX 系列可编程控制器的功能指令

名称 梯形图 操作数 D指令

P指令

功能说明

FNC 05 DI

中断禁止

FNC 06 FEND

主程序结束

FNC 07 WDT

√ 监视定时器刷新

FNC 08 FOR

K 、 H 、 KnX 、KnY 、 KnM 、 KnS 、 T 、 C 、 D 、V 、 Z

循环开始

FNC 09 NEXT

循环结束

FNC 05DI

FNC 06FEND

FNC 07WDT

FNC 09NEXT

FNC 08FOR S.

Page 14: 第 4 章   FX 系列可编程控制器的功能指令

4.2.1 条件跳转指令 CJ

1 .指令格式指令编号及助记符:条件跳转指令 FNC00 CJ或 CJ

( P)CJ指令的目标元件是指针标号,其范围是 P0~P63 (允许变址修改) 该指令程序步为 3步,标点步为 1步 . 作为执行序列的一部分指令,有 CJ, CJP 指令,可以缩短运算周期及使用双线圈 .

2 .指令用法条件跳转指令用于当跳转条件成立时跳过 CJ或 CJ( P)指令和指针标号之间的程序,从指针标号处连续执行,若条件不成立则继续顺序执行,以减少程序执行扫描时间 .

Page 15: 第 4 章   FX 系列可编程控制器的功能指令

图 4.1 CJ 跳转指令的应用

X001X000M100

FNC 00CJ

P1

FNC 00CJ

D1 D2 D3

Y000

M101

S20

T60

RST T248

T248

RST C10

C10

K500

M100①

M100

X002

X003

X004

X005

X006

X007

X010

X011

X012

K100

K100

FNC 00CJ

P2

PLS M 120

M100

X013

P1

X014M120Y000

Y000

Y001

M130

Y002

X005

X006

Y000

⑥P2

Page 16: 第 4 章   FX 系列可编程控制器的功能指令

说 明1) .CJ指令跳过部分程序,可以缩短程序的运算周期。2) .如果积算型定时器和计数器的 RST 指令在跳转程序之内,即使跳转程序生效, RST 指令仍然有效。

3) .该指令可以连续和脉冲执行方式。4) .被跳过去的程序中各元件的状态为 : (1) Y 、 M、 S保持跳转前状态不变。 (2) 普通计数器停止计数并保持当前值,高速计数器 C235~C255 继续计数。

(3) 未工作的定时器不动作,已动作的定时器保持当前值。 T192 ~ T199跳转时仍然计时。

Page 17: 第 4 章   FX 系列可编程控制器的功能指令

3 .跳转程序中软组件的状态在发生跳转时,被跳过的那段程序中的驱动条件已经没有意义了,所以该程序段中的各种继电器和状态器、定时器等将保持跳转发生前的状态不变 .

4 .跳转程序中标号的多次引用标号是跳转程序的入口标识地址,在程序中只能出现一次,同一标号不能重复使用 。但是,同一标号可以多次被引用 .

FNC 00CJ

P2X020

X027

M130

Y002

X005

X006

标记 P2

FNC 00CJ

P2…

Page 18: 第 4 章   FX 系列可编程控制器的功能指令

5 .无条件跳转指令的构造

无条件跳转指令指令的构造

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

FNC 00CJ

P5M8000

X022标记 P5 FNC 00

CJP6

运行监视

X023PLS M0

FNC 00CJ

P7

标记 P6

Page 19: 第 4 章   FX 系列可编程控制器的功能指令

P63 的用法

6.CJ指令的跳转目的地是 END 指令时,指针用 P63 ,但 END 指令处不标记 P63 ,否则出错,如下图所示。

FNC 00CJ

P63X000

X001

ENDP63

Y000

( a)错误用法

FNC 00CJ

P63X000

X001

END

Y000

( B)正确用法

Page 20: 第 4 章   FX 系列可编程控制器的功能指令

下图表示了主控指令区和跳转指令控制区之间可能出现的关系

Page 21: 第 4 章   FX 系列可编程控制器的功能指令
Page 22: 第 4 章   FX 系列可编程控制器的功能指令
Page 23: 第 4 章   FX 系列可编程控制器的功能指令

( 1 )当主控区内嵌于跳转区时,跳转区被执行后,则主控区才被执行。

( 2 )当跳转区内嵌于主控区时,主控区被执行后,则跳转区才被执行。

( 3 )从主控区外跳到主控区内时,跳转优先,不论主控触点状态如何,都做 ON 处理。

( 4 )当主控触点为 ON 时,跳转条件也成立时,可以从主控区内跳到主控区外,这时,主控结束指令 MCR 不影响跳转。

( 5 )跳转指令可以从一个主控区跳到另一个主控区,条件是跳转指令所在主控区被执行且跳转条件成立,这时,同样是跳转优先,跳转指令所在的主控区的 MCR 指令被忽略,跳入区的主控指令 MC 也被忽略(即主控触点状态当成 ON状态处理)。

( 6 )每一个跳转程序段都应该使用专用的 P 指针。

Page 24: 第 4 章   FX 系列可编程控制器的功能指令

子程序调用 FNC01 CALL 操作数:指针 P0~ P62 、 P64 ~ P127 子程序返回 FNC02 SRET 无操作数说 明

子程序应该在主程序结束之后编程。即:子程序应写在主程序之后,即子程序的标号应写在指令 FEND之后,且子程序必须以 SRET 指令结束。

CJ指令的指针与 CALL 的指针不能重复。主程序允许嵌套,嵌套级别最多为 5级。每段子程序使用的指针是专用指针,不能再供其他子程序或跳转程序段使用。

子程序只能用 T192 ~ T199 和 T246 ~ T249 作定时器。

4.2.2 调用子程序指令

Page 25: 第 4 章   FX 系列可编程控制器的功能指令

梯形图

X001X001

FENDFEND

SRETSRET

P8

CALCALLL

P8P8

Y001Y001

X012X012

Y021Y021

X011X011Y030Y030

……

主程序

子程序

图 4.7 CALL 指令使用说明

Page 26: 第 4 章   FX 系列可编程控制器的功能指令

X001X001

FENDFEND

SRETSRET

P8

CALCALLL

P8P8

Y001Y001

X012X012

Y021Y021

X011X011Y030Y030

……

主程序

子程序

①CALCALLL

P9P9

P9

SRETSRET

子程序

②…

图 4.8 CALL 子程序嵌套示例图

Page 27: 第 4 章   FX 系列可编程控制器的功能指令

4.2.3 4.2.3 中断指令中断指令

中断返回 FNC03 IRET 开中断 FNC04 EI 关中断 FNC05 DI均无操作数梯形图

开中断范围

X0

I100

X10FEND

IRET

EI

DI

IRET

I101

中断子程序 2

中断子程序 1

X11

Page 28: 第 4 章   FX 系列可编程控制器的功能指令

输入端子事件编号

有效性控制 SM上升沿中断 下降沿中断

X000 I001 I000 M8050

X001 I101 I100 M8051

X002 I201 I200 M8052

X003 I301 I300 M8053

X004 I401 I400 M8054

X005 I501 I500 M8055

表 4.2 输入中断事件

Page 29: 第 4 章   FX 系列可编程控制器的功能指令

事件编号 有效性控制 SM

I6口口 M8050

I7口口 M8051

I8口口 M8052

口口内填 10~99 的整数,表示定时中断的时间间隔,单位为毫秒 .

表 4.3 定时器中断事件 事件编号 有效性控制 SM

I010

M8059

I020

I030

I040

I050

I060

表 4.4 计数器中断事件

Page 30: 第 4 章   FX 系列可编程控制器的功能指令

M100M100

FNC 04FNC 04EIEI

Y000Y000

M100M100SETSETM800M80000

FNC 06FNC 06FEND FEND

I001 I001

FNC 03FNC 03IRET IRET

END END

M100M100RSTRSTM800M80000

FNC 03FNC 03IRETIRET

I100 I100

( a)输入中断

X000X000

FNC 04FNC 04EIEI

Y000Y000SETSET

I890 I890

END END

M805M80588

RSTRSTX001X001

M805M80588

SETSET

FNC 06FNC 06FEND FEND

X000X000

Y000Y000RSTRSTM800M80000

FNC 03FNC 03IRETIRET

( b) 定时器中断

Page 31: 第 4 章   FX 系列可编程控制器的功能指令

说 明中断请求信号的宽度必须大于 200μs中断程序以中断事件号作为开始标记,以中断返回指令 IRET 作为结束标志,每个中断程序都要有 IRET语句。

中断程序应该放在主程序结束指令 FEND之后。主程序中,允许中断的程序段以允许中断指令 EI作为开始标志,以禁止中断指令 DI作为结束标志。

一般情况下,一次中断请求执行一次中断程序。中断程序的执行不受扫描周期的影响。

Page 32: 第 4 章   FX 系列可编程控制器的功能指令

说 明在执行某个中断子程序时,禁止其它中断请求。中断程序允许嵌套,嵌套级别为 2级。中断指针共有 15个:输入中断 6 个,定时器中断 3个,计数器中断 6 个。

中断程序用 T192 ~ T199 和 T246 ~ T249 作定时器。中断的优先级别 :多个中断信号不同时产生时,按先后顺序中断。多个中断信号同时产生时,中断指针号小的具有优先权。

Page 33: 第 4 章   FX 系列可编程控制器的功能指令

无操作数梯形图

X1X1

FENDFEND

SRETSRET

P8

CALCALLL

P8P8

Y1Y1

X12X12

Y21Y21

X11X11Y30Y30

……

主程序

子程序

4.2.4 4.2.4 主程序结束指令 主程序结束指令 FNC06 FENDFNC06 FEND

Page 34: 第 4 章   FX 系列可编程控制器的功能指令

说 明

与 END 指令的功能一样,执行到该指令时程序返回

到 0 步。

中断服务子程序和子程序应该写在 FEND之后,并且

用 IRET 和 SRET返回。

如果多次使用 FEND 指令,在最后的 FEND 和 END之

间编写子程序或中断子程序

Page 35: 第 4 章   FX 系列可编程控制器的功能指令

X002X002

P21

FNC 00FNC 00CJCJ P20P20

Y001Y001

主程序段

子程序

P20

P21P21FNC 00FNC 00CJCJ

X001X001

X003X003X003X003

P50P50FNC 01FNC 01CALLPCALLP

FNC 06 FNC 06 FENDFEND

X005X005

Y002Y002

FNC 06 FNC 06 FENDFEND

X006X006

Y002Y002

FNC 06 FNC 06 FENDFEND

主程序段

主程序段

X004X004

Y003Y003SETSETX004X004

FNC 02 FNC 02 SRETSRET

P50

M800M80000

Page 36: 第 4 章   FX 系列可编程控制器的功能指令

无操作数警戒定时器是一个专用定时器,其设定值存放在特殊

的数据寄存器 D8000 中,并以 ms为计时单位。当 PLC 一上电,则对警戒定时器进行初始化,将 K200

(默认设定值为 200ms)装入 D8000 中,每个扫描周期结束时,马上刷新警戒定时器的当前值,使 PLC 能正常运行。

当扫描周期大于 200ms时,即超过了警戒定时器的设定值,警戒定时器的逻辑线圈被接通, CPU 立即停止执行用户程序,同时切断全部输出,并且报警显示。

4.2.5 4.2.5 警戒定时器指令 警戒定时器指令 FNC07 WDTFNC07 WDT

Page 37: 第 4 章   FX 系列可编程控制器的功能指令

300ms程序段

END

150ms程序段 1

END

FNC 07WDT

M800M80000

150ms程序段 2

图 4.10 WDT 指令的使用

( a) 不能正常执行( b) 能正常执行

Page 38: 第 4 章   FX 系列可编程控制器的功能指令

如果正常的扫描周期超过警戒时钟的设定值,可以在适当程序步中加入 WDT 指令,适时刷新警戒时钟,使程序能顺利执行。

也可以通过 MOV指令修改警戒定时器的设定值( D8000 的值),最大设定值是 32767ms。

可以计算出程序扫描周期的最大值作为警戒时钟的设定值。跳转程序的结束标志 Pn 在相应的 CJ指令之前时,可能要使

用 WDT 指令。 WDT 指令可用在 FOR-NEXT之间。系统中使用模拟量、定位、通信等模块时,也可能要使用 W

DT 指令。

Page 39: 第 4 章   FX 系列可编程控制器的功能指令

FNC 12MOV

M800M80000 K500 D8000

FNC 07WDT

4.2.6 4.2.6 循环指令 循环指令 FNC08 FORFNC08 FOR

循环开始 FNC08 FOR 操作数[S] : K,H 、 KnX 、 KnY 、 KnM 、 KnS 、 T、 C、 D、V,Z

循环结束 FNC09 NEXT 无操作数

Page 40: 第 4 章   FX 系列可编程控制器的功能指令

说 明 n 为循环次数,其范围为 1~ 32767 有效。如果指定为

-32768 ~ 0,则作 n=1 处理。

循环指令最多可以嵌套 5级。

程序中 FOR-NEXT 是成对出现的, FOR在前, NEXT 在后不

可倒置,否则出错。

编程时 NEXT 应该在 FEND 或 END之前,否则出错。

利用 CJ 跳转指令可以跳出 FOR、 NEXT 循环体

Page 41: 第 4 章   FX 系列可编程控制器的功能指令

FNC 08FOR

K255

M8002FNC 12MOV

K0 D0

M8002FNC 24

INCD0

FNC 09NEXT

( a) 单重循环

FNC 08FOR

K25

M8002FNC 12MOV

K500 D0

M8002FNC 25

DECD0

FNC 09NEXT

FNC 08FOR

D1

(D1)=20

FNC 09NEXT

( b) 多重循环

Page 42: 第 4 章   FX 系列可编程控制器的功能指令

作业:

1 、 P238 第 1题 ;

2 、设计一个报警电路。要求启动( X0 )之后,灯( Y0 )闪烁,亮 0.5S ,灭 0.5S ,蜂鸣器( Y1 )响。灯闪烁 30次之后,灯灭,蜂鸣器停,间歇 5S 。如此进行三次,自动停止。试用调用子程序方法编写程序。