您的当前位置:首页正文

FX 系列 PLC 的基本逻辑指令

2021-03-22 来源:个人技术集锦
5.3 FX 系列 PLC 的基本逻辑指令

FX 2N 系列 PLC 共有 27 条基本指令,可以完成基本的逻辑控制、顺序控制等程序的编写,同时也是编写复杂程序的基础指令,指令可驱动的软元件和指令程序步 如下表 所示,表中 a 触点指的是常开触点, b 触点指的是常闭触点。

FX 2N 系列 PLC 的基本指令

助记符(操作码) LD 取 LDI 取反 LDP 取脉冲上升沿 LDF 取脉冲下降沿 AND 与 ANI 与非 功能 操作数 程序步 1 1 2 2 1 1 2 2 1 1 2 2 1 1 Y 、 M 、 S : 1 特殊 M : 2 OUT 输出 线圈驱动指令 Y 、 M 、 S 、 T 、 C T : 3 C : 3 ~ 5 Y , M : 1 SET 置位 线圈接通保持指令 Y 、 M 、 S S , T , C ,特殊 M : 2 D , V , Z ,特殊 D : 3 Y 、 M 、 S : 1 T 、 C : 2 a 触点逻辑运算开始 X 、 Y 、 M 、 S 、 T 、 C b 触点逻辑运算开始 X 、 Y 、 M 、 S 、 T 、 C 上升沿检出运算开始 X 、 Y 、 M 、 S 、 T 、 C 下降沿检出运算开始 X 、 Y 、 M 、 S 、 T 、 C 串联 a 触点 串联 b 触点 X 、 Y 、 M 、 S 、 T 、 C X 、 Y 、 M 、 S 、 T 、 C ANDP 与脉冲上升沿 上升沿检出串联连接 X 、 Y 、 M 、 S 、 T 、 C ANDF 与脉冲下降沿 下降沿检出串联连接 X 、 Y 、 M 、 S 、 T 、 C OR 或 ORI 或非 ORP 或脉冲上升沿 ORF 或脉冲下降沿 ANB 电路块与 ORB 电路块或 a 触点并联连接 b 触点并联连接 X 、 Y 、 M 、 S 、 T 、 C X 、 Y 、 M 、 S 、 T 、 C 上升沿检出并联连接 X 、 Y 、 M 、 S 、 T 、 C 下降沿检出并联连接 X 、 Y 、 M 、 S 、 T 、 C 并联电路块的串联连接 串联电路块的并联连接 无 无 RST 复位 线圈接通清零指令 Y 、 M 、 S 、 T 、 C 、 D D 、 V 、 Z 、特殊 D : 3 PLS 上升沿微分指令 PLF 下降沿微分指令 上升沿检出指令 下降沿检出指令 Y 、 M Y 、 M 1 1 MC 主控 MCR 主控复位 MPS 进栈 MRD 读栈 MPP 出栈 INV 取反 NOP 空操作 END 结束 公共串联触点的连接 公共串联触点的清除指令 运算存储 存储读出 存储读出与复位 运算结果的取反 无动作 程序结束 Y 、 M N 无 无 无 无 无 无 3 2 1 1 1 1 2 1 ◇ LD 、LDI 、OUT 指令

LD 、LDI 、OUT 指令的功能、电路表示、操作元件、所占的程序步如下表所示。

以上LD、LDI两个指令还可与后面介绍的 ANB 、 ORB 指令配合用于分支回路的开头。

OUT :输出指令,表示对输出继电器 Y 、辅助继电器 M 、状态继电器 S 、定时器 T 、计数器 C 的线圈进行驱动的指令,但不能用于输入继电器,下图是本组指令的应用实例。 需要注意的是:

OUT 指令可连续多次使用,相当于线圈的并联(如图 6.14 中的 OUT M100 和 OUT T0 K20 );定时器或计数器的线圈在使用 OUT 指令后,必须设定常数 K 或指定数据寄存器 D 的地址号。

图 LD 、 LDI 、 OUT 指令的使用

LD/LDI/OUT 指令动画演示

◇ 触点的串并联指令

( 1 ) AND 、 ANI 指令的功能、电路表示、操作元件、所占的程序步如下表所示。

AND 和 ANI 串联的触点数量无限制,并且可以多次使用。

下图所示的是使用本组指令的实例。图中 OUT 指令后,通过触点对其他线圈使用 OUT 指令(如图 中的 OUT Y4 ),这种形式被称为纵接输出或连续输出。此种纵接输出必须将辅助继电器 M101 的线圈放在 Y4 的线圈之上,否则将用到后面讲到的进栈和出栈指令。

图 AND 、 ANI 指令的应用

( 2 ) OR 、 ORI 指令的功能、电路表示、操作元件、所占的程序步如表 所示。

表 OR 与 ORI 指令在梯形图中的表示

OR 、 ORI 指令紧接在 LD 、 LDI 指令后使用,亦即对 LD 、 LDI 指令规定的触点再并联一个触点,并联的次数无限制,但限于编程器和打印机的幅面限制,应尽量做到 24 行以下。 OR 、 ORI 指令的使用如下图所示。

图 OR 、 ORI 指令的使用

◇ 电路块的串并联指令

1. 串联电路的并联( ORB )指令

ORB 指令的功能、电路表示、操作元件、所占的程序步如表所示。

表 ORB 指令在梯形图中的表示

ORB :多触点电路块的并联连接指令,其应用如下图所示。

ORB 指令是不带操作元件的指令。 两个以上的触点串联连接的电路为串联电路块 ,将串联电路块并联使用时,用 LD 、 LDI 指令表示分支开始,用 ORB 指令表示分支结束。图 6.17 给出了 ORB 指令的使用情况。存在多条并联电路时,应在每个电路块后使用 ORB 指令,对使用的并联电路数没有限制,但考虑到 LD 、 LDI 指令只能连续使用 8 次, ORB 指令的使用次数也应限制在 8 次。

图 ORB 指令的使用

2. 并联电路的串联( ANB )指令

ANB 指令的功能、电路表示、操作元件、所占的程序步如表 所示。

表 ANB 指令在梯形图中的表示

ANB :多触点电路块的串联连接指令,其应用如图 所示。

ANB 指令是不带操作元件的指令。 两个或两个以上触点并联连接的电路称为并联电路块。 当并联电路块与前面的电路串联连接时,使用 ANB 指令。即分支起点用 LD 、 LDI 指令,串联电路块结束后需使用 ANB 指令,以表示与前面电路的串联。 ANB 指令原则上可以无限次使用,但受 LD 、 LDI 指令只能连续使用 8 次的限制, ANB 指令的使用次数也应限制在 8 次。

图 ANB 指令的使用

◇ LDP/LDF 、 ANDP/ANDF 和 ORP/ORF 指令

LDP/LDF , ANDP/ANDF 和 ORP/ORF 指令的功能、电路表示、 操作元件、所占的程序步如下表所示。

表 LDP/LDF 、 ANDP/ANDF 和 ORP/ORF 指令在梯形图中的表示

LDP 、 ANDP 、 ORP 指令分别为上升沿检出的取指令、与指令和或指令。触点的中间有一个向上的箭头, 对应的触点仅在指定位元件的上升沿(由 OFF 变为 ON )时接通一个扫描周期。

LDF 、 ANDF 、 ORF 指令分别为下降沿检出的取指令、与指令和或指令。触点的中间有一个向下的箭头, 对应的触点仅在指定位元件的下降沿(由 ON 变为 OFF )时接通一个扫描周期。

图 LDP 、 LDF 指令的应用和时序图

◇ MC 、 MCR 指令

MC 、 MCR 指令的功能、电路表示、 操作元件、所占的程序步如下表所示。

表 MC 、 MCR 指令在梯形图中的表示

MC 为主控指令,用于公共串联接点的连接。

MCR 为主控复位指令,即 MC 的复位指令,表示公共串联接点的清除。

下图中的 X0 接通时,执行 MC 与 MCR 之间的指令。当输入条件 X0 断开时,不执行 MC 与 MCR 之间的指令,并且此时非积算定时器、计数器和用 OUT 指令驱动的软元件复位,而积算定时器、计数器、用 SET/RST 指令驱动的元件保持当前的状态。使用 MC 指令后,母线移到主控接点的后面,与主控接点相连的接点必须用 LD 或 LDI 指令。 MCR 指令使母线回到原来的位置。在 MC/MCR 指令区内使用 MC/MCR 指令称为嵌套,嵌套级 N 的编号 (0 ~ 7) 顺次增大,返回时用 MCR 指令,并从大的嵌套级开始解除。

图 MC 、 MCR 指令的应用

主控指令嵌套动画演示

◇ SET 、 RST 指令

SET 、 RST 指令的功能、电路表示、操作元件、所占的程序步如表 所示。

表 SET 、 RST 指令在梯形图中的表示

SET :置位指令,使操作保持 ON 的指令。 RST :复位指令,使操作保持 OFF 的指令。

SET 、 RST 指令的使用如图 6.21 所示。图中 X0 接通后, Y0 被驱动为 ON ,即使 X0 再变为 OFF , Y0 仍保持为 ON 的状态, X1 接通后 Y0 才复位为 OFF 状态,详见图 6.21 的时序图。 对同一编程元件, SET 、 RST 指令可以多次使用,不限制使用顺序,且最后执行者有效。 RST 指令可使数据寄存器 D 、变址寄存器 V 、 Z 的内容清零,使积算定时器 T246 ~ T255 的当前值以及触点复位,还可使计数器 C 的输出触点复位及当前值清零。 RST 指令对计数器、定时器的应用如图 6.22 所示,当 X0 的常开触点接通时,积算定时器 T246 复位, X3 的常开触点接通时,计数器 C200 复位,此时它们的当前值被清零,常开触点断开,常闭触点闭合。

SET 、 RST 指令动画演示

图 SET 、 RST 指令的使用

图 定时器、计数器中的 RST 指令

◇ 栈存储器与多重输出电路( MPS/MRD/MPP )指令

MPS 、 MRD 、 MPP 指令的功能、电路表示、操作元件、所占的程序步如表 6.12 所示。 这组指令分别为进栈、读栈、出栈指令,用于多重输出电路中。

如图 6.23 所示,在 FX 系列可编程控制器中有 11 个用来存储中间运算结果的存储区域被称为栈存储器,堆栈采用先进后出的数据存取方式。使用一次 MPS 指令,便将此刻的运算结果送入堆栈的第一层,以便以后处理有线圈的支路时可以调用该运算结果,此时原本存在第一层的数据将被移到堆栈的下一层。使用 MPP 指令,弹出存储在堆栈最上层的电路分支点对应的运算结果,将下一触点连接在该点,并从堆栈中去掉该点的运算结果。使用 MPP 指令时,堆栈中各层的数据顺次向上移动一层,最上层的数据被读出,同时该数据从堆栈内消失。

表 MPS 、 MRD 、 MPP 指令在梯形图中的表示

图 堆栈示意图

MRD 指令用来读出最上层的最新数据,此时堆栈内的数据不移动。 MPS 、 MRD 、 MPP 指令都是不带软元件的指令。 MPS 、 MPP 必须成对使用,而且连续使用次数应少于 11 次。图 6.24 为一层堆栈实例,图 6.25 为二层堆栈实例。

图 一层堆栈

图 二层堆栈

◇ 脉冲输出、取反、空操作与结束指令 1. 脉冲输出指令( PLS/PLF )指令

PLS 、 PLF 指令的功能、电路表示、操作元件、所占的程序步如表 所示。

表 PLS 、 PLF 指令在梯形图中的表示

PLS 、 PLF 为脉冲输出指令。 PLS 在输入信号上升沿产生一个扫描周期的脉冲输出,而 PLF 在输入信号下降沿产生一个扫描周期的脉冲输出。图 是脉冲输出指令的例子。从时序图可以看出,当 X0 为 ON 时, PLS 指令在 X0 的上升沿使 M0 闭合一个扫描周期, M0 使 Y0 置位为 ON ;当 X1 为 ON 时, PLF 指令在 X1 的下降沿使 M1 闭合一个扫描周期, M1 使 Y0 复位为 OFF 。也就是说, PLS 、 PLF 指令可将脉宽较宽的输入信号变成脉宽等于可编程控制器的扫描周期的触发脉冲信号,而信号周期不变。特殊继电器不能用作 PLS 或 PLF 的操作元件。

图 PLS 、 PLF 指令的应用及时序图

PLS 、 PLF 指令动画演示

2. 取反操作( INV )指令

INV 指令的功能、电路表示、操作元件、所占的程序步如表 所示。

表 INV 指令在梯形图中的表示

INV :取反指令,表示将 INV 指令电路之前的运算结果取反。在梯形图上,用一条短斜线表示,它不带操作元件,不能直接与母线连接,也不能像 OR , ORI , ORP , ORF 一样单独使用。 在图 中,如果 X0 和 X1 同时为 ON 并取反,或 X2 为 ON 并取反,则 Y0 为 ON 。

图 INV 指令的应用

取反指令动画演示

3. 空操作指令( NOP )

空操作指令使该步做空操作。在程序中加入空操作指令,可在变更或增加指令时减少步序号的变化。用 NOP 指令替换一些已写入的指令,可以改变电路。若将 LD 、 LDI 、 ANB 、 ORB 等指令换成 NOP 指令,电路组成将发生很大的变化,亦可能使电路出错。当执行程序全部清零操作时,所有指令均变成 NOP 。 4. 程序结束指令( END )

END 为程序结束指令。可编程控制器按照输入处理、程序执行、输出处理循环工作,若不在程序中写入 END 指令,则可编程控制器将从用户程序的第一步扫描到程序存储器的最后一步。若在程序中写入 END 指令,则 END 以后的程序步不再扫描,而是直接进行输出处理。也就是说,使用 END 指令可以缩短扫描周期。 END 指令的另一个用处是分段调试程序。调试时,可将程序分段后插入 END 指令,从而依次对各程序段的运算进行检查,在确认前面电路块动作正确无误之后依次删除 END 指令即可。

5.4 FX 系列 PLC 功能指令

FX 系列 PLC 的功能指令又称应用指令,共有 128 条,可分为十四大类。由于篇幅所限,本书只介绍比较与传送指令、算术运算指令、循环移位与移位指令,其余十一大类指令详见 FX 系列 PLC 的编程手册。 ◇ FX 2N 系列 PLC 功能指令的基本格式与数据结构 1. 功能指令的通用格式

( 1 )功能指令编号: 功能指令按功能号 FNC00 ~ FNC246 来编号,如图 中的 ①所示。 ( 2 )助记符:功能指令的助记符是该指令的英文缩写。如加法指令“ ADDITION ”简写为 ADD , 如图(a) 中的 ②所示。

( 3 )数据长度:功能指令可按处理数据的长度分为 16 位指令和 32 位指令。其中 32 位指令用( D )表示,无( D )符号的为 16 位指令。图( a )中③表示该指令为 32 位指令。

( 4 )执行形式:功能指令有脉冲执行型和连续执行型两种。指令中标有( P )(图 (a) 中的④所示)的为脉冲执行型,在指令表示栏中用“

”警示,如图 ( a )中的⑤所示。脉冲执行型指令在执

行条件满足时仅执行一个扫描周期,图 (a) 中,当 X0 闭合时,只在一个扫描周期中将加数( D11 、 D10 )和加数( D13 、 D12 )做一次加法运算。连续执行型如图 5.29 所示,在 X0 为 ON 的每个扫描周期都要被重复执行加法运算。在不需要每一个扫描周期都执行时,用脉冲执行方式可缩短程序执行时间。 XCH (数据交换)、 INC (加 1 )、 DEC (减 1 )等指令一般应使用脉冲执行方式,若用连续执行时要特别注意,因为在每一个扫描周期内,其结果均在变化。

图 连续执行方式

( 5 )操作数:操作数是功能指令 涉及或产生的数据,如图 (a) 中的⑥所示。它一般由 1 ~ 4 个操作数组成,但有的功能指令只有助记符和功能号而不需要操作数。操作数分为源操作数、目标操作数和其它操作数。

[S] :源( Source )操作数,其内容不随指令执行而变化。使用变址功能时,表示为 [S] 形式。源操作数不止一个时,可用 [S1] 、 [S2] 等表示。

[D] :目标( Destination )操作数,其内容随执行指令而改变。使用变址功能时,表示为 [D] 形式。目标操作数不止一个时,可用 [D1] 、 [D2] 等表示。

[m] 与 [n] :表示其他操作数。常用来表示常数或作为源操作数和目标操作数的补充说明。表示常数时, K 表示十进制, H 表示十六进制,注释可用 m1 、 m2 等表示。

功能指令的助记符占一个程序步,每个操作数占 2 个或 4 个程序步( 16 位操作数占 2 个程序步, 32 位操作数占 4 个程序步)。

操作数从根本上来说,是参加运算的数据的地址。地址是依元件的类型分布在存储区中。由于不同指令对参与操作的元件类型有一定的限制,因此操作数的取值就有一定的范围,如图 5.28(b) 所示的加法指令的操作数范围。正确选取操作数类型,对正确使用指令有很重要的意义。 2. 功能指令的数据结构

功能指令的操作数的数据长度有 16 位和 32 位两种。构成数据的方法如下: ( 1 )位元件与位元件的组合

只处理 ON/OFF 状态的元件称位元件,如 X 、 Y 、 M 、 S 。位元件 X 、 Y 、 M 、 S 等的组合也可以作为数值数据进行处理。将这些位元件组合,以 KnP 的形式表示,每组由 4 个连续的位元件组成, P 为位元件的首地址, n 为组数( n = 1 ~ 8 )。 4 个单元 K4 组成 16 位操作数,如 K 4M 10 表示由 M10~M15 组成的 16 位数据。

当一个 16 位数据传送到 K 1M 0 、 K 2M 0 、 K 3M 0 时,只传送相应的低位数据,高位数据溢出。 在处理一个 16 位操作数时,参与操作的元件由 K1 ~ K4 指定。若仅由 K1 ~ K3 指定,不足部分的高位作 0 处理,这意味着只能处理正数(符号位为 0 )。

被组合的位元件的首元件号可以是任意的,习惯采用以 0 结尾的元件,如 M0 , M100 等。 如图 5.28(b) 所示,功能指令中的操作数可能取 K (十进制常数)、 H (十六进制常数)、 KnX 、 KnY 、 KnM 、 KnS 、 T 、 C 、 D 、 V 、 Z 。 ( 2 )字元件

处理数据的元件称为字元件,如 T 和 C 的设定值寄存器、当前值寄存器和数据寄存器 D 等,一个字由 16 个二进制位组成。处理 32 位数据时,功能指令中用符号 D 表示,如图 5.29 中的( D ) ADD D10 D12 D14 ,这时相邻的两个数据寄存器组成数据寄存器对,该指令将 D11 和 D10 中的数据与 D13 和 D12 中的数据相加的和传送到 D15 和 D14 中去, D10 中为低 16 位数据, D11 中为高 16 位数据,为了避免出现错误,建议首地址统一用偶数编号。指令前面没有 D 时表示 16 位数据。 32 位计数器 C200 ~ C255 不能用作 16 位指令的操作数。

变址寄存器在传送、比较指令中用来修改操作对象的元件号,其操作方式与普通数据寄存器一样。当操作数据是 32 位时, V 作高 16 位, Z 作低 16 位。 ◇ 比较与传送类指令 1. 比较指令

比较指令有 CMP( 比较 ) 和 ZCP (区间比较) 两种,指令的助记符、功能、操作数、程序步如表 所 示。

( 1 )比较指令 CMP ( FNC10 )

比较指令 CMP 比较源操作数 [S1] 和 [S2] 的内容,比较的结果送到目标操作数 [D] 中去。如图 所

示,在 X0 为 ON 时,比较指令 CMP 将十进制常数 100 与计数器 C20 的当前值比较,比较结果分三种情况分别使 M0 、 M1 、 M2 中的一个为 ON ,另两个为 OFF 。在 X0 为 OFF 时, CMP 不执行, M0 、 M1 、 M2 的状态保持不变。

图 CMP 指令使用说明

( 2 )区间比较指令 ZCP(FNC11)

区间比较指令 ZCP 是将一个源操作数 [S] 与两个源操作数 [S1] 和 [S2] 形成的区间比较,且 [S1] 不得大于 [S2] ,并将比较的结果送到 [D] 中。 ZCP 的应用如图所示,当 X0 为 ON 时,将计数器 C30 的当前值与区间 100~120 进行比较。 C30 的当前值< 100 时, M3=ON ;若 100 ≤ C30 的当前值≤ 120 时, M4=ON ; C30 的当前值> 150 时, M5=ON 。若 X0 为 OFF ,则 ZCP 不执行, M3 、 M4 、 M5 的状态保持不变。

图 ZCP 指令使用说明

2 .传送指令

( 1 )传送指令 MOV ( FNC12 )

当 MOV 执行的条件满足时,将源操作数 [S] 中的数据传送到目标操作数 [D] 中,若源操作数是一个变数,则需用脉冲型传送指令。 32 位数据需用 DMOV 传送。如图 所示,当 X0 为 ON 时,执行指令,将 [S] 中的数据 K100 传送到目标元件 D10 中。当 X0 为 OFF 时,指令不执行。

图 MOV 指令使用说明

( 2 )移位传送指令 SMOV ( FNC13 )

当 SMOV 执行的条件满足时,将 4 位十进制源操作数 [S] 中指定位数的数据传送到 4 位十进制目标

操作数 [D] 中指定的位置。指令中的常数 m1 、 m2 和 n 的取值范围为 1 ~ 4 ,分别对应个位~千位。十进制数在存储器中以二进制数的形式存放,原数据和目标数据的范围均为 0 ~ 9999 。

在图 中,当执行条件 X0 为 ON 时,执行移位传送指令,将 D1 中的二进制数转换成 BCD 码,然后将 D1 中的右起第 4 位( m1 = 4 )开始的 2 位( m2=2 )传送到目标操作数 D2 的右起第 3 位( n=3 )和第 2 位,传送完毕后, D2 中的 BCD 码自动转换为二进制码,且 D2 中的第 4 位、第 1 位保持不变。

图 SMOV 指令使用说明

( 3 )取反传送指令 CML ( FNC14 )

在图 中,当指令的执行条件 X0 为 ON 时,将源操作数 D0 中的二进制数每位取反后传送到目标操作数 Y3 ~ Y0 中。它可作为 PLC 的反相输入或反相输出指令。

图 CML 指令应用

( 4 )块传送指令 BMOV ( FNC15 )

在图 中,当指令的执行条件 X0 为 ON 时,成批传送数据,将源操作数 D5 、 D6 、 D7 中的数据传送到目标操作数 D10 、 D11 、 D12 中去。如果元件号超出允许的范围,数据仅传送到允许的范围。对位元件操作时,源操作数和目标操作数指定的位数必须相同。

图 BMOV 指 令使用说明

( 5 )多点传送指令 FMOV ( FNC16 )

当指令的执行条件满足时,将源操作数 [S] 传送到多个目标操作数 [D] 中,数据传送的目标操作数个数由 n 决定。如果元件号超出允许的范围,数据仅传送到允许的范围,同时

在图 中,当 X0 为 ON 时,将常数 0 送到 D100~D119 这 20 个( n = 20 )数据寄存器中。

图 FMOV 指令使用说明

( 6 )数据交换指令 XCH ( FNC17 )

当指令执行的条件满足时,两个目标元件 D1 和 D2 的内容相互交换,如图 所示。

图 XCH 指令 使用说明

◇数据变换指令

1. BCD 变换指令( FNC18 )

当指令的执行条件满足时,将源操作数 [S] 中的二进制数变换 BCD 码并传送到指定的目标操作数 [D] 中,如图 所示。 BCD 指令可用于将 PLC 中的二进制数变成 BCD 码输出,以驱动 LED 七段显示器。

图 BCD 码指令使用说明

2. BIN 变换指令( FNC19 )

BIN 是将源操作数 [S] 中的 BCD 码转换为二进制数并送到目标元件 [D] 中,常用于将 BCD 数字开关的设定值输入到 PLC 中。 ◇ 算术逻辑运算指令 1. 算术运算指令

算术运算指令包括 ADD 、 SUB 、 MUL 、 DIV (二进制加、减、乘、除)、 INC 和 DEC ,这些指令的名称、助记符、功能号、操作数、程序步长等如表 所示。 ( 1 )加法指令 ADD ( FNC20 )

当指令执行的条件满足时,加法指令 ADD 将指定的源操作数 [S1 · ] 、 [S2 · ] 中的二进制数相加,结果送到目标操作数 [D] 中,每个数据的最高位为符号位。

如果运算结果为 0 ,则零标志 M8020 置 1 ;如果运算结果超过 32767 ( 16 位运算)或 2147483647 ( 32 位运算),则进位标志 M8022 置 1 ;如果运算结果小于 -32768 ( 16 位运算)或 -2147483648 ( 32 位运算),则借位标志 M8021 置 1 。在 32 位运算中,被指定的字元件是低 16 位元件,下一个元件是高 16 位元件。

在图 中,当 X1 由 OFF 变为 ON 时,执行( D10 )+( D12 )→( D14 )。

图 算术运算指令使用说明

( 2 )减法指令 SUB ( FNC21 )

当指令执行的条件满足时,减法指令 SUB 将指定的源操作数 [S1 · ] 和 [S2 · ] 中的二进制数相减,结果送到目标操作数 [D ] 中,每个数据的最高位为符号位。

在图 中,当 X1 由 OFF 变为 ON 时,执行( D0 )-( D6 )→( D8 )。 ( 3 )乘法指令 MUL ( FNC22 )

当指令执行的条件满足时,乘法指令 MUL 将指定的源操作数 [S1 · ] 和 [S2 · ] 中的二进制数相乘,结果送到目标操作数 [D ] 中,每个数据的最高位为符号位。

在图 中,当 X1 由 OFF 变为 ON 时,执行( D20 )×( D22 )→( D25 、 D24 )。乘积的低 16 位送到( D24 ),高 16 位送到( D25 )。

如果 16 位数相乘,则乘积为 32 位,如果 32 位数相乘,则乘积为 64 位。但是当目标元件用位元件指定时,只能得到指定范围内的乘积。 ( 4 )除法指令 DIV ( FNC23 )

当指令执行的条件满足时, 除法指令 DIV 将指定的源操作数 [S1 · ] 、 [S2 · ] 中的二进制数相除, [S1 · ] 为被除数, [S2 · ] 为除数,商送到目标元件 [D ] 中,余数送到目标元件的下一个元件 [D ]+1 中,每个数据的最高位为符号位。对于 32 位指令,商送到 [D ] 及 [D ]+1 中,余数送到 [D ]+2 及 [D ]+3 中。

当除数为 0 时,运算错误,不执行指令。商和余数的最高位也是符号位,当除数或被除数中有一个为负数时,商为负数,被除数为负数时,余数为负数。

在图 中,当 X1 由 OFF 变为 ON 时,执行( D30 ) / ( D32 ),商送到( D34 ),余数送到( D35 )。 ( 5 )加 1 指令 INC ( FNC24 )

当指令执行的条件满足时, 加 1 指令 INC 将指定的目标操作数 [D · ] 中的二进制数自动加 1 ,它不影响标志位。在 16 位指令执行时, +32767 加 1 就变成- 32767 ;在 32 位指令执行时, +2147483647 加 1 就变成- 2147483647 。

INC 指令需要采用脉冲形式的指令,否则目标操作数中的二进制数每一个扫描周期都加 1 。 ( 6 )减 1 指令 DEC ( FNC25 )

当指令执行的条件满足时,减 1 指令 DEC 将指定的目标操作数 [D · ] 中的二进制数自动减 1 ,它不影响标志位。在 16 位指令执行时,- 32767 减 1 就变成 +32767 ;在 32 位指令执行时,- 2147483647 减 1 就变成 +2147483647 。

DEC 指令需要采用脉冲形式的指令,否则目标操作数中的二进制数每一个扫描周期都减 1 。 ( 1 )字逻辑与 WAND 、或 WOR 、异或 WXOR 指令

当指令执行的条件满足时, WAND 、 WOR 、 WXOR 指令分别将指定的源操作数 [S1 · ] 、 [S2 · ] 中的二进制数的各位进行逻辑与、逻辑或、逻辑异或运算,结果送到目标操作数 [D] 中。 ( 2 )求补 NEG 指令

当指令执行的条件满足时, NEG 指令将指定的目标操作数 [D · ] 中的二进制数求反并加 1 后再送回到目标操作数 [D · ] 中。 ◇ 循环移位与移位指令 1 .循环移位指令

( 1 )右、左循环移位指令 ROR 、 ROL

如图 所示,循环移位指令 ROR 或 ROL 执行时,将目标操作数 D0 中的各位二进制数向右或向左循环移动 4 位,最后一次从目标元件中移出的状态存于进位标志 M8022 中。若在目标元件中指定位元件组的组数时,只能用 K4 ( 16 位指令)或 K8 ( 32 位指令)表示。

注意该指令最好采用脉冲指令形式,只有在 X0 由 OFF 变为 ON 时,目标操作数 D0 中的各位二进制数才移位一次,否则在每一个扫描周期都会移位。 ( 2 )带进位的循环移位指令

如图 所示,带进位循环移位指令 RCR 或 RCL 执行时,将目标操作数 D0 中的各位二进制数和进位标志 M8022 一起向右或向左循环移动 4 位。若在目标元件中指定位元件的组数时,只能用 K4 ( 16 位指令)或 K8 ( 32 位指令)表示。

( a )右循环指令 ( b )左循环指令

右、左循环指令

( a )带进位的右循环指令 ( b )带进位的左循环指令

带进位的右、左循环指令

注意该指令最好采用脉冲指令形式,只有在 X0 由 OFF 变为 ON 时,目标操作数 D0 中的各位二进制数才移位一次,否则在每一个扫描周期都会移位。 2 .移位指令

位移指令 SFTR (或 SFTL )执行时,将源操作数 [S ·] 中的位元件的状态送入目标操作元件 [ D·] 中的高 n1 位(或低 n1 位)中,并依次将目标操作数向右(或左)移位, n1 指定位元件长度, n2 指定移位的位数。

如图( a )所示,当 X10 由 OFF 变为 ON 时,执行 SFTR 指令,将源操作数 X3 ~ X0 中的 4 个数送入到目标操作数 M 的高 4 位 M15 ~ M12 中去,并依次将 M15 ~ M0 中的数顺次向右移,每次移 4 位。低 4 位 M3 ~ M0 溢出。

(a) 右移指令

图 右、左移位指令

如图( b )所示,当 X10 由 OFF 变为 ON 时,执行 SFTL 指令,将源操作数 X3 ~ X0 中的 4 个数送入到目标操作数 M 的低 4 位 M3 ~ M0 中去,并依次将 M15 ~ M0 中的数顺次向左移,每次移 4 位。高 4 位 M15 ~ M12 溢出。

上述两个移位指令都采用 脉冲指令形式,只有在 X10 由 OFF 变为 ON 时,目标操作数 M 中的各位二进制数才移位一次,否则在每一个扫描周期都会移位。

字移位指令 WSFR ( WSFL )执行时,将指定的源操作数 [S ·] 中的二进制数向目标操作数 [D·] 中以字为单位向右(左)移位, n1 指定目标操作数的字数, n2 指定每次向前移动的字数。用位指定的元件进行字位移指令时,是以 8 个数为一组进行的。

因篇幅问题不能全部显示,请点此查看更多更全内容