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 )做一次加法运算。连续执行型如图所示,在 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 等。
如图 (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 位。