FX 2
系列可编程控制器共有
20
条基本指令,供设计者编制语句表使用,它与梯形图有严格的对应关系。
1 、
逻辑取及输出线圈(
LD
、
LD1
、
OUT
)
LD、LDI、OUT指令的功能、电路表示、操作元件、所占的程序如表2所示。
表
2
LD指令是从母线取用常开触点指令,LDI是从母线上取用常闭触点指令,它们还可以与后面介绍的ANB、ORB指令配合用于分支回路的开头;OUT指令是对输出继电器、辅助继电器、状态继电器、定时器、计数器的线圈进行驱动的指令,但不能用于输入继电器。图4-12给出了本组指令的梯形图实例,并配有指令表。这儿还需指出的是:OUT指令可连续使用无数次,相当线圈的并联(如图4中的OUT
M100和OUT
T0);定时器或计数器的线圈,在使用OUT指令后,必须设定常数K,或指定数据寄存器的地址号。
图
4 LD、LDI、OUT指令的使用
2
触点串联(
AND
、
ANI
)
AND、ANI指令的功能、电路表示、操作元件、程序步如表3所示。
表
3
AND、ANI指令为单个触点的串联连接指令。AND用于常开触点。ANI用于常闭触点。串联接点的数量无限制。图1-5是使用本组指令的实例。图中OUT指令后,通过触点对其他线圈使用OUT指令(如图的OUT
Y004),称之为纵接输出或连续输出。此种纵接输出,如果顺序正确可多次重复。但限于图形编程器和打印机幅面限制,应尽量做到一行不超过10个接点及一个线圈,总共不要超过24行。
在图
5中驱动M101之后可通过触点T1驱动Y004。但是,若驱动顺序换成图6的形式,则必须用后述的MPS指令。
图
5 AND、ANI指令的应用
图
6
不能使用连续输出的例子
3
触点并联(
OR
、
ORI
)
OR、ORI指令的功能、操作元件等如表4所示。
表
4
OR、ORI指令为单个触点的并联连接指令。OR为常开触点的并联,ORI为常闭触点的并联。将两个以上触点的串联回路和其他回路并联时,采用后面介绍的ORB指令。
OR、ORI指令紧接在LD、LDI指令后使用,亦即对LD、LDI指令规定的触点再并联一个触点,并联的次数无限制,但限于编程器和打印机的幅面限制,尽量做到24行以下。
OR、ORI指令的使用如图1-7所示
图
7 OR、ORI指令的使用
4
串联电路的并联(
ORB
)
ORB指令的功能、电路表示等如表5所示。
表
5
ORB指令是不带操作元件的指令。两个以上的触点串联连接的电路为串联电路块,将串联电路块并联使用时,用LD、LDI指令表示分支开始,用ORB指令表示分支结束。图8给出了ORB指令的使用情况。若有多条并联电路时,在每个电路块后使用ORB指令,对并联电路数没有限制,但考虑到LD、LDI指令只能连续使用8次,ORB指令的使用次数也应限制在8次。
图
8 ORB指令的使用
5
并联电路块的串联(
ANB
)
ANB指令的功能、电路表示等如表6所示。
表
6
ANB指令是不带操作元件编号的指令。两个或两个以上触点并联连接的电路称为并联电路块。当分支电路并联电路块与前面的电路串联连接时,使用ANB指令。即分支起点用LD、LDI指令,并联电路块结束后使用ANB指令,表示与前面的电路串联。ANB指令原则上可以无限制使用,但受LD、LDI指令只能连续使用8次影响,ANB指令的使用次数也应限制在8次。图9为ANB指令使用的梯形图实例。
图
9 ANB指令的使用
6
多重输出电路(
MPS/MRD/MPP
)
MPS、MRD、MPP指令功能、电路表示等如表6所示。
表
6
指令助记符、名称
|
功能
|
电路表示及操作元件
|
程序步
|
MPS
(
Push
)
|
进栈
|
|
1 |
MRD
(
Read
)
|
读栈
|
1 |
MPP
(
Pop
)
|
出栈
|
1 |
这组指令分别为进栈、读栈、出栈指令,用于多重输出电路。可将连续点先存储,用于连接后面的电路。如图
10所示。在FX2系列可编程序控制器中有11个用来存储运算的中间结果的存储区域被称为栈存储器。使用一次MPS指令,便将此刻的运算结果送入堆栈的第一层,而将原存在第一层的数据移到堆栈的下一层。
使用MPP指令,各数据顺次向上一层移动,最上层的数据被读出。同时该数据就从堆栈内消失。
图
10
堆栈示意图
MRD指令用来读出最上层的最新数据,此时堆栈内的数据不移动。
MPS、MRD、MPP指令都是不带软元件的指令。
MPS、MPP必须成对使用,而且连续使用应少于11次。
以下给出了几个堆栈的实例。
[例1]
一层堆栈,见图
11。
语句步
|
指令
|
元素
|
语句步
|
指令
|
元素
|
0 |
LD |
X000 |
14 |
LD |
X006 |
1 |
AND |
X001 |
15 |
MPS |
|
2 |
MPS |
|
16 |
AND |
X007 |
3 |
AND |
X002 |
17 |
OUT |
Y004 |
4 |
OUT |
Y000 |
18 |
MRD |
|
5 |
MPP |
|
19 |
AND |
X010 |
6 |
OUT |
Y001 |
20 |
OUT |
Y005 |
7 |
LD |
X003 |
21 |
MRD |
|
8 |
MPS |
|
22 |
AND |
X011 |
9 |
AND |
X004 |
23 |
OUT |
Y006 |
10 |
OUT |
Y002 |
24 |
MPP |
|
11 |
MPP |
|
25 |
AND |
X012 |
12 |
AND |
X005 |
26 |
OUT |
Y007 |
13 |
OUT |
Y003 |
|
|
|
|
|
|
图
11
一层堆栈
[例3]
二层堆栈,见图12。
|
|
语句步
|
指令
|
元素
|
语句步
|
指令
|
元素
|
0 |
LD |
X000 |
9 |
MPP |
|
1 |
MPS |
|
10 |
AND |
X004 |
2 |
AND |
X001 |
11 |
MPS |
|
3 |
MPS |
|
12 |
AND |
X005 |
4 |
AND |
X002 |
13 |
OUT |
Y002 |
5 |
OUT |
Y000 |
14 |
MPP |
|
6 |
MAP |
|
15 |
AND |
X006 |
7 |
AND |
X003 |
16 |
OUT |
Y004 |
8 |
OUT |
Y001 |
|
|
|
|
图
12
二层堆栈
[例4]
四层堆栈,见图13。
|
|
语句步
|
指令
|
元素
|
语句步
|
指令
|
元素
|
0 |
LD |
X000 |
9 |
MPP |
|
1 |
MPS |
|
10 |
AND |
X004 |
2 |
AND |
X001 |
11 |
MPS |
|
3 |
MPS |
|
12 |
AND |
X005 |
4 |
AND |
X002 |
13 |
OUT |
Y002 |
5 |
MPS |
|
14 |
MPP |
|
6 |
AND |
X003 |
15 |
AND |
X006 |
7 |
MPS |
|
16 |
OUT |
Y004 |
8 |
AND |
X004 |
17 |
|
|
|
图
13
四层堆栈
7
自保持及解除(
SET/RST
)
SET、RST指令的功能、电路表示、操作元件等如表7所示。
表
7
符号、名称
|
功能
|
电路表示及操作元件
|
程序步
|
SET(置位)
|
元件自保持
ON |
|
Y、M:1
S、特M:2
|
RST(复位)
(
Reset)
|
清除动作保持寄存器清零
|
|
T、C:2
D、V、Z、特D:3
|
|
|
语句步
|
指令
|
元素
|
语句步
|
指令
|
元素
|
0 |
LD |
X000 |
9 |
SET |
S0 |
1 |
SET |
Y000 |
11 |
LD |
X005 |
2 |
LD |
X001 |
12 |
RST |
S0 |
3 |
RST |
Y000 |
14 |
LD |
X006 |
4 |
LD |
X002 |
15 |
RST |
D0 |
5 |
SET |
M0 |
16 |
LD |
X000 |
6 |
LD |
X003 |
17 |
OUT |
T250 |
7 |
RST |
M0 |
|
SP |
K10 |
8 |
LD |
X004 |
20 |
LD |
X007 |
|
|
|
21 |
RST |
T250 |
|
图
14 SET、RST指令的使用
SET为置位指令,使操作保持。RST为复位指令,使操作保持复位。SET、RST指令的使用如图14所示。图中X000接通后,Y000被驱动为ON,即使X000再成为OFF,也不能使Y000变为OFF的状态;X001接通后,Y000复位为OFF,即使X001再为OFF,也不能使Y000变为ON状态。
对同一元件,如例中
Y000、M0、S0等,SET、RST指令可以多次使用,且不限制使用顺序,最后执行者有效。
RST指令还可以用于使数据寄存器D、变址寄存器V、Z的内容清零。使积算定时器T246~T255的当前值以及触点复位。使计数器C的输出触点复位及当前值清零。RST指令对计数器、定时器的应用如图15。
图
15定时器、计数器中的SET、RST指令
8
脉冲输出指令(
PLS/PLF
)
PLS、PLF指令的功能、操作元件等如表8所示。
表
8
符号、名称
|
功能
|
电路表示及操作元件
|
程序步
|
PLS(Pulse)
|
上升沿微分输出
|
|
2 |
PLF
(
PLF)
|
下降沿微分输出
|
|
2 |
PLS、PLF为脉冲输出指令。PLS在输出信号上升沿产生脉冲输出,而PLF在输入信号下降沿产生脉冲输出。图16是脉冲输出指令的例子。从时序图可以看出,使用PLS指令Y、M仅在驱动输入断开后的一个扫描周期内动作(置1)。使用PLF指令时,元件Y、M仅在驱动输入断开后的一个扫描周期内动作。在就是说,PLS、PLF指令可将脉宽较宽的输入信号变成脉宽等于可编程序控制器的扫描周期的触发脉冲信号,而信号周期不变。
特殊继电器不能用作
PLS或PLF的操作元件。
9
空操作指令(
NOP
)
NOP指令的功能、程序步如表9所示。
表
9
符号、名称
|
功能
|
电路表示及操作元件
|
程序步
|
NOP(空操作)
|
无动作
|
无元件
|
1 |
|
|
语句步
|
指令
|
元素
|
0 |
LD |
X000 |
1 |
PLS |
M0 |
3 |
LD |
M0 |
4 |
SET |
Y000 |
5 |
LD |
X001 |
6 |
PLF |
M1 |
8 |
LD |
M1 |
9 |
RST |
Y000 |
|
图
16 PLS、PLF指令的使用
空操作指令使该步做空操作。在程序中加入空操作指令,在变更或增加指令时可以减少步序号的变化。用
NOP指令替换一些已写入的指令,可以改变电路。若将LD、LDI、ANB、ORB等指令换成NOP指令,电路组成将发生很大的变化,亦可能使电路出错。
举例如下。
(1)AND、ANI指令改为NOP指令时使相关触点短路(如图18)
(2)ANB指令改为NOP时使前面的电路全部短路(如图19)
(3)OR指令改为NOP时使相关电路的切断(如图20)
(4)ORB指令改为NOP前面的电路全部切断(如图21)
(5)与前面的OUT电路纵接(如图22)
图
22
当执行程序全部清零操作时,所有指令均变成
NOP
。
10
程序结束(
END
)
END
指令的功能、电路表示如表
19
所示。
表19
符号、名称
|
功能
|
电路表示及操作元件
|
程序步
|
END(结束)
|
输入输出处理回到第“
0”步
|
无元件
|
1 |
END为程序结束指令。可编程序控制器按照输入处理、程序执行、输出处理循环工作,若在程序中不写入END指令,则可编程序控制器从用户程序的第一步扫描到程序存储器的最后一步。若在程序中写入END指令,则END以后的程序步不再扫描,而是直接进行输出处理。也就是说,使用END指令可以缩短扫描周期。END指令的另一个用处是分段程序调试。调试时,可将程序分段后插入END指令,从而依次对各程序段的运算进行检查。而后,在确认前面电路块动作正确无误之后依次删除END指令。