第 5章 三菱 FX 2系列 PLC的功能指令本章要求
– 本章介绍 FX2系列 PLC功能指令及其编程方法 。
功能指令编号为 FNC00~ FNC99,将其中主要指令归纳为八大类来讲述,限于篇幅从 5.6节起的功能指令只作简讲 。 对于 FX2系列 PLC的功能指令,
将以表格形式归纳其基本的格式,类型及每条功能指令的使用要素 。 对于具体的控制对象,选择合适的功能指令,将使编程更加方便和快捷 。 要求掌握各类功能指令及运用功能指令编程的方法 。
5.1 功能指令的基本规则在 FX2系列 PLC的功能指令编号 FNC00~ FNC99中,有些功能号是预留的,所以实际功能指令将不足 100条。
一条基本逻辑指令只完成一个特定的操作,而一条功能指令却能完成一系列的操作,相当于执行了一个子程序,所以功能指令的功能更加强大,使编程更加精练。基本指令和其梯形图符号之间是互相对应的。而功能指令采用梯形图和助记符相结合的形式,意在表达本指令要做什么。有些功能指令在整个程序中只能使用一次,介绍到此类指令时会特别强调。
5.1.1 功能指令的表示
1.功能指令的梯形图表示用功能框表示功能指令,即在功能框中用通用的助记符形式来表示,如图 5.1( a)所示,该指令的含义如图
5.1( b)所示。图 5.1( a)中 X000常开接点是功能指令的执行条件,其后的方框即为功能指令。由图可见,
功能指令同一般的汇编指令相似,也是由操作码和操作数两大部分组成。
( 1)操作码部分功能框第一段为操作码部分,表达了该指令做什么。
5.1.1 功能指令的表示 2
5.1.1 功能指令的表示 3
一般功能指令都是以指定的功能号来表示,如 FNC45
。但是,为了便于记忆,每个功指令都有一个助记符
,对应 FNC45的助记符是 MEAN,表示“求平均值”。
这样就能见名知义,比较直观。在编程器或 FXGP软件中输入功能指令时,输入的是功能号 FNC45,显示的却是助记符 MEAN。不过,在 FXGP软件中也可直接输入助记符 MEAN。
注意,本书在介绍各功能指令时,将以图 5.1( a)的形式同时给出功能号和对应的助记符,但并不意味着在
FXGP软件中输入功能指令时要两者一起送,而是按上述介绍,只要送入其中一个就行了。
( 2)操作数部分
5.1.1 功能指令的表示 4
功能框的第一段之后都为操作数部分,表达了参加指令操作的操作数在那里。操作数部分部分组成:
源操作数(源) 目标操作数(目) 数据个数源操作数,D0,D1和 D2,数据个数 K3指示源有 3个;
目操作数,D10。
当 X000接通时,MEAN指令的含义如图 5.1( b)所示
,即要取出 D0~ D2的连续 3个数据寄存器中的内容作算术平均后送入 D10寄存器中。当 X000断开时,此指令不执行。
操作数排列次序,源在前,目在后,数据个数在最后有些功能指令还要求多个操作数,也有的功能指令不需要操作数。
5.1.1 功能指令的表示 5
2.功能指令的要素描述功能指令的要素描述将按表图的格式给出。如对图 5.1
( a)这条 MEAN指令的要素描述如表 5.1所示。表中使用符号的说明:
① 求平均值指令,指令的名称
② FNC45,指令的功能号
5.1.1 功能指令的表示 6
③ MEAN 指令的助记符
④( P) 指令的执行形式,( P)表示可使用脉冲执行方式,在执行条件满足时仅执行一个扫描周期;缺省的为连续执行型。
⑤( D) 指令的数据长度可为 32位,缺省为 16位。
⑥ [S·] 源操作数,简称源,指令执行后不改变其内容的操作数。当源不止一个时,用 [S1·],[S2·]等来表示。有,·”表示能用变址方式,缺省为无,·”,表示不能使用变址方式。
⑦ [D·] 目标操作数,简称目,指令执行后将改变其内容的操作数。当目不止一个时,用 [D1·],[D2·]等来表示。有,·”表示能使用变址方式,缺省为无,·”,
表示不能使用变址方式。
⑧ m,n 其它操作数,常用来表示常数或对源和目作出补充说明。表示常数时,K后跟的为十进制数,H
后跟的为十六进制数。
⑨ 程序步 指令执行所需的步数。一般来说,功能指令的功能号和助记符占一步,每个操作数占 2~ 4步 (16
位操作数是 2步,32位操作数是 4步 )。因此,一般 16位指令为 7步,32位指令为 13步。
5.1.2 功能指令的数据长度
1.字元件与双字元件
( 1)字元件
1个字元件是由 16位的存储单元构成,最高位 (第 15位 )
5.1.1 功能指令的表示 7
5.1.2 功能指令的数据长度 2
为符号位,第 0~ 14位为数值位。图 5.2所示为 16位数据寄存器 D0图示。
( 2)双字元件可以使用两个字元件组成双字元件,以组成 32位数据操作数。双字元件是由相邻的寄存器组成,在图 5.3中由
D11和 D10组成。 低 16位数据存放在低位组件 D10中,
5.1.2 功能指令的数据长度 3
高 16位数据存放在高位组件 D10中,存放原则是,低对低,高对高 。双字元件中第 31位为符号位,第 0~ 30位为数值位。
注意,在指令中使用双字元件时,一般只用其低位地址表示这个组件,但高位组件也将同时被指令使用。建议用偶数作为双字元件的地址,此点会用图 5.6来说明。
功能指令中的操作数是指操作数本身或操作数的地址。
功能指令能够处理 16位或 32位的数据。
2.功能指令中的 16位数据因为几乎所有寄存器的二进制位数都是 16位,所以功能指令中 16位的数据都是以缺省形式给出。如图 5.4 所示即为一条 16位 MOV指令:
5.1.2 功能指令的数据长度 4
MOV指令的含义是,当 X000接通时,将十进制数 100
传送到 16位的数据寄存器 D10中去。当 X000断开时,
该指令被跳过不执行,源和目的内容都不变。
13
3.功能指令中的 32位数据功能指令也能处理 32位数据,这时需要在指令前缀符号( D),如图 5.5 所示即为一条 32位 MOV指令:
5.1.2 功能指令的数据长度 5
凡是能前缀显式符号( D)的功能指令,就能处理 32位数据。 32位数据是由两个相邻寄存器构成的,但在指令中写出的是低位地址,源和目都是这样表达的。所以对图 5.5所示 32位 MOV指令含义应该这样来理解:当 X000
接通时,将由 D11和 D10组成的 32位源数据传送到由
D13和 D12组成的目标地址中去。
要避免出现类似图 5.6所示指令的错误:源由 D11和 D10
组成,而目由 D12和 D11组成,这里 D11是源、目重复使用,就会引起出错。所以建议 32位数据首地址用偶地址。
5.1.2 功能指令的数据长度 6
注意,32位计数器 C200~ C255不能作为 16位指令操作数
4.功能指令中的位组件位组件,只有 ON或 OFF两种状态,用一个二进制位就能表达的组件。如 X,Y,M,S等。功能指令中也能使用由只含一个 bit的位组件,以及位组件组合。
位组件组合成位组合组件的方法:将多个位组件按四位一组的原则来组合,也就是说用 4位 BCD码来表示 1位十进制数,这样就能在程序中使用十进制数据了。组合方法的助记符是:
Kn+最低位位组件号如 KnX,KnY,KnM即是位组件组合,其中,K”表示后面跟的是十进制数,,n”表示四位一组的组数,
5.1.2 功能指令的数据长度 7
16位数据,K1~ K4,
32位数据,K1~ K8。
数据中的最高位是符号位。如:
K2M0:由 M0~ M3和 M4~ M7两组位组件组成一个 8位数据,其中 M7是最高位,M0是最低位。
K4M10:由 M10~ M25四组位组件组成一个 16位数据,
其中 M25是最高位,M10是最低位。
注意,
① 当一个 16位数据传送到目组件 K1M0~ K3M0时,由于目标组件不到 16位,所以将只传送 16位数据中的低位数据,高位数据将不传送。 32位数据传送也一样。
② 由于数据只能是 16位或 32位这两种格式,因此当用
5.1.2 功能指令的数据长度 8
K1~ K3组成字时,其高位不足 16位部分均作 0处理。如执行图 5.7所示指令时,源数据只有 12位,而目标寄存器 D20是 16位的,传送结果 D20的高 4位自动添 0,如图
5.8所示。这时最高位的符号位必然是 0,也就是说,只能是正数(符号位的判别是:正 0负 1)。
5.1.2 功能指令的数据长度 9
③ 由位组件组成组合位组件时,最低位组件号可以任意给定 。 如 X000,X001和 Y005均可 。 但习惯上采用以
0结尾的位组件,如 X000,X010和 Y020等 。
5.1.3 功能指令的执行方式功能指令的两种执行方式:连续执行和脉冲执行方式 。
1,功能指令的连续执行方式缺省为连续执行方式,如图 5.9。 PLC是以循环扫描方式工作的,如果执行条件 X000接通,指令在每个扫描周期中都要被重复执行一次,这种情况对大多数指令都是允许的 。
2
5.1.3 功能指令的执行方式 2
2,功能指令的脉冲执行方式对于某些功能指令,如 XCH,INC和 DEC等,用连续执行方式在实用中可能会带来问题 。 如图 5.10所示是一条
INC指令,是对目标组件 ( D10,D11) 进行加 1操作的
。 假设该指令以连续方式工作的话,那么只要 X000是接通的,则每个扫描周期都会对目标组件加 1,而这在许多实际的控制中是不允许的 。 为了解决这类问题,设置了指令的脉冲执行方式,并在指令助记符的后面后缀符号,P”来表示此方式,如图 5.10所示 。
5.1.3 功能指令的执行方式 3
注意,在图 5.10中 INC后加,( P),,仅表示指令还有脉冲执行方式;在 INC前加,( D),,也仅表示指令还有 32位操作方式 。 但在 FXGP中输入时应该这么送
,DINCP D10,即加在前后缀的括号不必送的 。 对于在本书中,以这种方式表达的所有其它功能指令都要这样来理解 。
在脉冲执行方式下,指令 INC只在条件 X000从断开变为接通时才执行一次对目标组件的加 1操作 。 即每当 X000
来了一个上升沿,才会执行加 1;而在其它情况下,即使 X000始终是接通的,都不会执行加 1指令 。
在不需要每个扫描周期都执行指令时,可以采用脉冲执行方式的指令,这样还能缩短程序的执行时间 。
5.1.4 变址操作 1
变址寄存器 V和 Z是两个 16位的寄存器,除了和通用数据寄存器一样用作数值数据读,写之外,主要还用于运算操作数地址的修改 。 在传送,比较等指令中用来改变操作对象的组件地址,变址方法是将 V,Z放在各种寄存器的后面,充当操作数地址的偏移量 。 操作数的实际地址就是寄存器的当前值和 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。
例 5.1 如图 5.11所示的梯形图中,求执行加法操作后源和目操作数的实际地址 。
解,第一行指令执行 10→ V,第二行指令执行 20→ Z,所以变址寄存器的值为,V= 10,Z= 20。 第三行指令执行 ( D5V) + (
D15Z) → ( D40Z),
[S1·]为 D5V,D(5+10)= D15 源操作数 1的实际地址
[S2·]为 D15Z,D(15+20)= D35 源操作数 2的实际地址
[D·]为 D40Z,D(40+20)= D60 目操作数的实际地址所以,第三行指令实际执行 ( D15) + ( D35) → ( D60),
即 D15的内容和 D35的内容相加,结果送入 D60中去 。
5.1.4 变址操作 2
5.2 程序流向控制指令 1
FX2 系列 PLC的功能指令中程序流向控制指令共有 10条
,功能号是 FNC00~ FNC09,程序流向控制指令汇总如表 5.2。 通常情况下,PLC的控制程序是顺序逐条执行的,但是在许多场合下却要求按照控制要求改变程序的流向 。 这些场合有:条件跳转,转子与返回,中断调用与返回,循环,警戒时钟与主程序结束 。
5.2.1 条件跳转指令
1,指令用法条件跳转指令为 CJ或 CJ( P) 后跟标号,其用法是当跳转条件成立时跳过一段指令,跳转至指令中所标明的标号处继续执行,若条件不成立则继续顺序执行 。 这样可以减少扫描时间并使,双线圈操作,成为可能 。
35
5.2 程序流向控制指令 2
5.2 程序流向控制指令 3
2,指令说明条件跳转指令的助记符,功能号,操作数和程序步等指令概要如表 5.3所示 。 由表 5.3可见,能够充当目标操作数的只有标号 P0~ P63。
3,跳转程序中软组件的状态与标号
( 1) 被跳过程序段中软组件的状态被跳过的程序段中的各种继电器和状态器,定时器等将保持跳转发生前的状态不变 。
5.2 程序流向控制指令 4
掉电保持计数器,定时器,其当前值被锁定 。 程序继续执行时,它们将继续工作 。 注意复位优先,即使复位指令在被跳过程序段中,条件满足,复位也将执行 。
( 2) 标号不能重复使用,但能多次引用 。
同一标号不能重复使用,但可多次被引用,即可从不同的地方跳转到同一标号处,如图 5.13( a)
标号也可以出现在跳转指令之前,如图 5.13( b) 。 当
M0接通时,程序也允许向回跳转 。 但是如果 M0接通时间超过 100ms,会引起警戒时钟出错,但不会影响程序的执行 。
标号共有 64个,其中 P63相当于 END,不能作为真正的标号使用 。 这样,当要跳过最后一段程序结束时,就可以在此段程序前设置一条 CJ P63指令 。 也可以理解为 CJ
P63就是跳转到程序的最开始处 。 而且标号 P63不必出现在程序中 。
4,无条件跳转与条件跳转的脉冲执行方式
( 1) 构造无条件跳转指令可用条件跳转指令来构造无条件跳转指令,使用某个始
5.2 程序流向控制指令 5
5.2 程序流向控制指令 6
终成立的条件使条件跳转变成无条件跳转 。 常用的是
M8000,因为只要 PLC处于 RUN状态,则 M8000总是接通的,无条件跳转梯形图如图 5.14( a),条件跳转指令 CJ P0的驱动条件始终成立,因此就可以将这条指令看成是无条件跳转 。
( 2) 条件跳转指令的脉冲执行方式条件跳转指令脉冲执行方式如图 5.14( b) 。
5.2 程序流向控制指令 7
5,跳转与主控区之间的相关问题
① 如果跳转的区域包括整个主控区 (MC—MCR),则将不受任何限制,可以随意跳转而不必考虑主控区问题 。
② 如果跳转从主控区外跳到主控区内时,这时主控指令的目标接点,应被当作接通来处理 。 比如说被跳过的主控指令为 MC N0 M10,则 M10仍被看作是接通的 。
③ 如果跳转发生在主控区内,当主控接点为断开时,跳转指令因没有执行到而不能跳转 。
④ 如果跳转从主控区内跳到主控区外时,当主控接点断开时,由于没有执行到跳转指令,因此不能跳转 。 当主控接点接通时,可以跳转,这时 MCR指令被忽略 。
⑤ 如果跳转从一个主控区内跳到另一个主控区内,而且
5.2 程序流向控制指令 8
源主控接点是接通的,则跳转可以进行,不管目标主控接点原状态如何,均被看做接通,MCR N0被忽略 。
5.2.2 转子与返回指令子程序也是为一些特定的控制目的编制的相对独立的模块,供主程序调用 。 为了区别于主程序,将主程序排在前边,子程序排在后边,并以主程序结束指令 FEND(
FNC06) 给以分隔 。
1,指令用法
( 1) 子程序调用指令,CALL或 CALL( P) 标号,标号是被调用子程序的入口地址,也以 P0~ P62来表示 。
( 2) 子程序返回用 SRET指令 。
2,指令说明
5.2.2 转子与返回指令 2
转子与返回指令的指令概要如表 5.4所示 。 可见,能够充当目标操作数的只有标号 P0~ P62。
子程序调用和返回的梯形图如图 5.15( a) 。 当 M0接通时,调用子程序 P0,程 序将跳转到 P0标号所指向的那条程序,同时将调用指令下一条指令的地址作为断点保
5.2.2 转子与返回指令 3
存 。 此后从 P0开始逐条顺序执行子程序,直至遇到
SRET指令时,程序将返回到主程序的断点处,继续顺序执行主程序,即执行指令 LD M1,OUT Y000。
( 1) 子程序的位置与标号使用子程序 P0安排在主程序结束指令 FEND之后,标号 P0和
5.2.2 转子与返回指令 4
子程序返回指令 SRET间的程序构成了 P0子程序的内容
。 当主程序带有多个子程序时,子程序要依次放在主程序结束指令 FEND之后,并以不同的标号相区别 。 子程序标号范围为 P0~ P62,这些标号与条件 转移中所用的标号相同,而且在条件转移中已经使用了的标号,子程序也不能再用 。 同一标号只能使用一次,而不同的
CALL指令可以多次调用同一标号的子程序 。
( 2) CALL指令的脉冲执行方式脉冲执行方式如图 5.15( b),只有在 M0上升沿时,程序才会转子 。 CJ是跳转,CALL也是一种跳转,不过 CJ
跳转是,有去无回,,而 CALL的跳转则是,有去有回
” 的,子程序结束后将会回到主程序的断点处继续执行原来的程序 。 为了两者区别,把后者称谓,调用,,更适当 。
5.2.2 转子与返回指令 5
( 3) 子程序的嵌套子程序嵌套示意如图 5.16( a),梯形图如图 5.16( b)
子程序嵌套:主程序调用子程序 1,在执行子程序 1时
,子程序 1又调用另一个子程序 2,称为子程序嵌套 。
5.2.2 转子与返回指令 6
( 3) 子程序的嵌套子程序嵌套示意如图 5.16( a),梯形图如图 5.16( b)
子程序嵌套:主程序调用子程序 1,在执行子程序 1时,
子程序 1又调用另一个子程序 2,称为子程序嵌套 。
子程序嵌套总数可有 5级 。
注意,在子程序和中断子程序中使用的定时器范围为:
T192~ T199和 T246~ T249。 在此之外的定时器,虽然在子程序中或许也能使用,但不能保证其运行的正确性
,所以请别使用在此之外的定时器 。
5.2.3 中断与返回指令中断是 CPU与外设,打交道,(数据传送 )的一种方式,
慢速的外设远远跟不上高速 CPU的节拍,要,拖累
” CPU。 为此可采用数据传送的中断方式,使 CPU与外设并行工
5.2.3 中断与返回指令 2
作的,平时 CPU在执行主程序,当外设需要数据传送服务时,才去向 CPU发出中断请求 。 在允许中断的情况下
,CPU可以响应外设的中断请求,从主程序中被拉出来
,去执行一段中断服务子程序,比如给了外设一批数据后,就不再管外设,返回主程序 。 以后都是这样,每当外设需要数据传送服务时,又会向 CPU发中断请求 。 可见 CPU只有在执行中断服务子程序短暂的时间里才同外设打交道,所以 CPU的工作效率就大大提高了 。
1,指令用法
( 1) 中断返回指令,FNC 03 IRET
( 2) 开中断指令 ( 中断允许 ),FNC 04 EI
( 3) 关中断指令 ( 中断禁止 ),FNC 05 DI
5.2.3 中断与返回指令 3
2,指令说明有关中断指令概要如表 5.5所示 。 有 二类中断:
外部中断:信号从输入端子送入,可用于机外突发随机事件引起的中断 。
定时中断:内部中断,定时器定时时间到引起的中断 。
9个中断源,9个中断源可同时向 CPU发中断请求,
CPU要通过中断判优,来决定响应那个中断 。 9个中断源的
5.2.3 中断与返回指令 4
优先级由中断号决定,中断号小者其优先级为高 。 外中断的优先级高于内中断的优先级 。 对可响应中断的程序段用中断允许指令 EI来开中断,对不允许中断的程序段用中断禁止指令 DI来关中断 。
允许中断响应的区间应该由
EI开始,DI结束,如图 5.17。
在此区间之外,则为中断禁止区域,通常在执行某个中断服务程序时,将禁止其它中断 。
中断返回指令必须用 IRET,不能用子程序返回指令 SRET。 IRET指令除了能从中断服务程序返回以外,还要通知 CPU本次中断已经结束 。
5.2.3 中断与返回指令 5
中断与子程序区别:子程序调用是事先在程序中用
CALL给定的,但中断调用要求响应时间小于机器的扫描周期,所以就不能事先在程序中给定,而是由外设 (
中断源 ) 随机地通过硬件向 CPU发中断请求,才把 CPU
拉到中断服务子程序中去的 。 整个中断是一个软硬件结合的过程 。
3,中断指针为区别内外中断及标明中断子程序的入口,规定了中断标号 。 中断标号是 I开头的,又称为 I指针 。 子程序的标号是 P开头的,又称为 P指针 。 I指针分为二种 。
( 1) 外中断用 I指针
I指针格式如图 5.18( a),I00~ 150,共 6点 。 外中断是外部信号引起的中断,对应的外部信号的输入口为
5.2.3 中断与返回指令 6
X000~ X005。 指针格式中的最后一位是选择是上升沿请求中断,还是下降沿请求中断 。 如 I001的含义是:当输入 X000从 OFF→ON 变化时 ( 上升沿 ),执行标号后面的中断服务程序,并在执行 IRET指令时返回 。
( 2) 内中断用 I指针内中断 I指针格式如图 5.18( b),用 I6~ I8,共 3点 。
可见内外中断号是连续的,共 9点,与上面提及的 9个中断
5.2.3 中断与返回指令 7
源对应 。 内中断为机内定时时间到信号中断,由指定编号为 6~ 8的专用定时器控制 。 设定时间在 10~ 99ms间选取,每隔设定时间就会中断一次 。 如 I610的含义是:
每隔 10ms就执行标号为 I610后面的中断服务程序一次,在 IRET指令执行时返回 。
例 5.3 中断指令的梯形图如图 5.19所示,阅读此程序,试解答:
( 1) 指出 I001中断的含义,并分析此中断的过程;
( 2) 指出 I100中断的含义,并分析此中断的过程 。
解,( 1) I001表示 X000为中断请求信号,且上升沿有效 。 因此在允许中断区
5.2.3 中断与返回指令 8
间,如果 输入 X000从 OFF→ ON变化时(上升沿),则程序从主程序转移到标号为 I001处,开始执行中断服务程序 1,遇 IRET后
,再返回到主程序。
( 2) I100表示 X001为中断请求信号,且下降沿有效。因此在允许中断区间,如果 X001从 ON→ OFF变化时(下降沿),则程序从主程序转移到标号为 I100处,开始执行中断服务程序 2,遇
IRET后,再返回到主程序。
4.中断请求信号的宽度与中断屏蔽寄存器
( 1)中断请求信号宽度中断请求信号宽度,即中断请求信号的持续时间必须大于 200μ s,宽度不足的请求信号可能得不到正确响应

( 2)中断屏蔽寄存器
9个特殊功能寄存器 M8050~ M8058同中断有关的,其
5.2.3 中断与返回指令 9
功能如表 5.6。可用程序设置其为 ON或 OFF,当其为
ON时,即使已经用 EI指令开中断了,也会屏蔽相关的中断,不妨将 M8050~ M8058称之为中断屏蔽寄存器

5.2.4 主程序结束指令 1
1.指令用法主程序结束指令,FNC 06 FEND
2,指令说明有关主程序结束指令的概要如表 5.7。 FEND指令表示主程序结束,此后 CPU将进行输入 /输出处理、警戒时钟刷新,完成后回到第 0步。子程序和中断服务程序都必须写在 FEND后,没有它们时也可以没有 FEND指令。
但是程序的最后必须用 END指令结尾。所以,子程序及中断服务程序必须写在 FEND指令与 END指令之间。
5.2.4 主程序结束指令 2
若 FEND指令在 CALL或 CALL( P)指令执行之后,
SRET指令执行之前出现,或将 FEND指令置于 FOR-
NEXT循环之中,则被认为出错。一个完整的 PLC程序可以没有子程序,也可以没有中断服务程序,但必定要有主程序。
5.2.5 警戒时钟指令
1,指令用法警戒时钟刷新指令,FNC 07 WDT( P)
2,指令说明 警戒时钟刷新指令概要如表 5.8所示 。
5.2.5 警戒时钟指令 1
WDT指令用于刷新顺序程序的警戒时钟。如果 CPU从程序的第 0步到 END或 FEND指令之间的指令执行时间超过了 100ms,PLC将会停止执行用户程序。为防止此类情况发生,可以将 WDT指令插到合适的程序步中来刷新警戒时钟,以使顺序程序得以继续执行到 END。
这样处理后,就可以将一个运行时间大于 l00ms的程序用 WDT指令分成几部分,使每部分的执行时间都小于
100ms。例如,若要执行一个扫描时间为 160ms的程序
,可以将其分为 2个 80ms的程序,为此只要在这两个程序之间插入 WDT指令就行了。
警戒时钟的 100ms这个数值是存储在 D8000中的,它由
PLC的监控程序写入,也允许用户改写。可用功能指令
5.2.5 警戒时钟指令 2
FNCl2 MOV来改写 D8000的内容,如图 5.20所示。 此外,WDT指令还可用于:
( 1)当程序用 CJ指令向后跳转时,即对应的 P标号步序小于 CJ指令的步序,为防止出错,应在 P标号之后插入 WDT指令,如图 5.21。
( 2)可将 WDT指令置于 FOR-NEXT循环之中,以防止死循环或循环时间超时而停止运行。
5.2.6 循环指令 1
1.指令用法
( 1) 循环体起点指令,FNC 08 FOR( 16)
( 2) 循环体终点指令,FNC 09 NEXT
2,指令说明循环指令概要如表 5.9所示 。 能够充当源操作数的为如表中 [S·]所指定的范围内的所有软组件 。
5.2.6 循环指令 2
1.指令用法
( 1) 循环体起点指令,FNC 08 FOR( 16)
( 2) 循环体终点指令,FNC 09 NEXT
循环指令可反复执行某段程序,只要将这一段程序放在
FOR- NEXT间,待执行完指定的循环次数后,才执行
NEXT下一条指令 。
在梯形图中判断 FOR/NEXT指令配对的原则是:与
NEXT指令之前相距最近的 FOR指令是一对循环指令,
FOR/NEXT对是唯一的 。
FOR指令和 NEXT指令间包含的程序,称为循环体,循环体内的程序就是要反复循环执行的操作 。
如果在循环体内又包含了另外一个完整的循环,则称为循环的嵌套 。
5.2.6 循环指令 3
图 5.22中循环 C的循环体中包含了循环 B的全部,循环 B
的循环体中包含了循环 A的全部,这是三重循环的嵌套
,循环指令最多允许 5层嵌套。嵌套循环程序的执行总是由内向外,逐层循环的。
5.2.6 循环指令 4
图 5.22中循环 C的循环体中包含了循环 B的全部,循环 B
的循环体中包含了循环 A的全部,这是三重循环的嵌套
,循环指令最多允许 5层嵌套。嵌套循环程序的执行总是由内向外,逐层循环的。
循环次数由 FOR后的数值指定,表 5.9 中 [S·] 区间内的组件都可以。循环次数范围为 1~ 32767,如循环次数<
1时,被当作 1处理,FOR--NEXT循环一次。
注意:应避免下述会出错情况。
① NEXT指令出现在 FOR指令之前。
② FOR和 NEXT指令必须成对使用,缺一不可。
③ NEXT指令出现在 FEND或 END指令之后。