1、plc 的基本数据结构
三菱FX 系列 PLC 内部的编程元件从物理实质上来说是电子电路及存储器,按通俗叫法分别称为输入继电器、输出继电器、辅助继电器、定时器、计数器等,鉴于它们的物理属性,称之为软继电器或软元件, 它们与真实元件之间有很大的差别。这些编程用的继电器的工作线圈没有工作电压等级、功耗大小和电磁惯性等问题,触点也没有数量限制、机械磨损和电蚀等问题。在不同的指令操作下,其工作状态可以无记忆,也可以有记忆,还可以作脉冲数字元件使用。一般情况下,这些编程元件分为位元件和字元件两种。
1. 位元件
FX 系列 PLC 有 4 种基本编程位元件,为了分辨各种编程位元件,给它们指定了专用的字母符号:
X :代表输入继电器,用于直接输入给 PLC 的物理信号。
Y :代表输出继电器,用于从 PLC 直接输出物理信号。
M (辅助继电器)和 S (状态继电器): PLC 内部的运算标志。
上述的各 种元件称为 “ 位( bit )元件 ” ,它们只有两种不同的状态,即 ON 和 OFF ,可以分别用二进制 1 和 0 来表示这两种状态。
2. 字元件
8 个连续的位组成一个字节( byte ), 16 个连续的位组成一个字( word ), 32 个连续的位组成一个双字( double word )。定时器和计数器的当前值和设定值均为有符号字,最高位(第十五位)为符号位,正数的符号位为 0 ,负数的符号位为 1 。
2、输入继电器(X)与输出继电器(Y)
1. 输入继电器( X )
PLC 的输入端子是从外部开关接受信号的窗口, PLC 内部与输入端子连接的输入继电器( X ) 是光电隔离的电子继电器,它通常采用八进制编码, 线圈的吸合或释放只取决于 PLC 外部触点的状态 。内部有常开/常闭两种触点供编程时随时使用,且使用次数不限。各基本单元都是八进制输入的地址,输入为 X000 ~ X007 , X010 ~ X017 , X020 ~ X027 ,……,最多 128 点,它们一般位于机器的上端。 图 为 PLC 系统输入继电器与输出继电器示意图。
2. 输出继电器( Y )
PLC 的输出端子是向外部负载输出信号的窗口。输出继电器的线圈由程序控制,且其外部输出主触点接到 PLC 的输出端子上供外部负载使用,而其余常开 / 常闭触点供内部程序使用。输出继电器常开 / 常闭触点的使用次数不限。各基本单元都是按八进制编码输出,输出为 Y000 ~ Y007 , Y010 ~ Y017 , Y020 ~ Y027 ,……,最多 128 点,它们一般位于机器的下端。
图 输入继电器与输出继电器示意图
3、辅助继电器(M)
PLC 内部有很多辅助继电器,其动作原理与输出继电器一样,只能由程序驱动。辅助继电器也称中间继电器,它没有向外的任何联系,只供内部编程使用,且其常开 / 常闭触点使用次数不受限制。辅助继电器不能直接驱动外部负载,外部负载的驱动必须通过输出继电器来实现。辅助继电器主要包含以下 3 类:
1 . 通用辅助继电器
在 FX 系列 PLC 中,除了输入继电器和输出继电器的元件号采用八进制编码外,其它编程元件的元件号均采用十进制编码。
通用辅助继电器的线圈由用户程序驱动,若 PLC 在运行过程中突然断电,输出继电器和通用辅助继电器将全部变为 OFF 。若电源再次接通,除了因外部输入信号而变为 ON 的以外,其余的仍将保持为 OFF 。
FX 2N 的 PLC 内部共有通用辅助继电器 500 点,从 M0 ~ M499 。
2. 锁存(断电保持)辅助继电器
某些控制系统要求记忆电源中断瞬间时的状态,重新通电后再现其状态,锁存辅助继电器就可以用于这种场合。
FX 2N 的 PLC 内部共有锁存继电器 2572 点,从 M500 ~ M3071 。
在电源中断时, PLC 用锂电池保持 RAM 中寄存器的内容,它们只是在 PLC 重新上电后的第一个扫描周期保持断电瞬时的状态。为了利用它们的断电记忆功能,可以采用有记忆功能的电路。设图 中的 X0 和 X1 分别是起动按钮和停止按钮, M600 通过 Y0 控制外部的电动机,若电源中断时 M600 为 ON 状态,因为电路的记忆作用,重新通电后 M600 将保持 ON 状态,从而使 Y0 继续为 ON ,电动机重新开始运行。这时若断开 X1 ,则 M600 失电, Y0 为 OFF 。
图 锁存辅助继电器的保持功能
3 .特殊辅助继电器
辅助继电器中 M8000 ~ M8255 共 256 点为特殊辅助继电器,它们用来表示 PLC 的某些状态,提供时钟脉冲和标志(如进位、借位标志),设定 PLC 的运行方式,或用于步进顺控、禁止中断、设定计数器是加计数器或是减计数器等。特殊辅助继电器可分为以下两类:
( 1 )触点利用型
由 PLC 的系统程序来驱动特殊辅助继电器的线圈,在用户程序中直接使用其触点,但是不能出现它们的线圈,例如:
M8000 (运行监视):当 PLC 执行用户程序时 M8000 为 ON ,停止执行时 M8000 为 OFF ,如图 所示。
M8002( 初始化脉冲 ) : M8002 仅在 M8000 由 OFF 变为 ON 状态时的一个扫描周期内为 ON ,如图 6.10 所示,可以用 M8002 的常开触点来使有断电保护功能的元件复位或给它们置初始值。
图 时序图
M8011 ~ M8014 分别是 10ms 、 100ms 、 1s 和 1min 时钟脉冲,见图 6.10 。
M8005 (锂电池电压降低时用):电池电压下降至规定值时变为 ON ,可以用它的触点驱动输出继电器和外部指示灯,从而提醒工作人员更换锂电池。
( 2 ) 线圈驱动型
由用户程序驱动其线圈,从而使 PLC 执行特定的操作,因此用户并不使用它们的触点。例如:
M8030 的线圈 “ 通电 ” 后, “ 电池电压降低 ” 发光二极管熄灭;
M8033 的线圈 “ 通电 ” 后, PLC 进入 STOP 状态后,所有输出继电器的状态保持不变;
M8034 的线圈 “ 通电 ” 后,禁止所有的输出;
M8039 的线圈 “ 通电 ” 后, PLC 以 D8039 中指定的 扫描时间工作。
4、状态继电器(S)
状态继电器是用于编制顺序控制程序的一种编程元件(状态标志),常与 STL 指令(步进梯形指令)配合使用,主要用于编程过程中顺控状态的描述和初始化。它与 STL 指令组合使用,容易编制出易懂的顺控程序。当不对状态继电器使用步进梯形指令时,可以把它们当作普通辅助继电器( M )使用,其地址码按十进制编码。 FX 2N 系列 PLC 的状态继电器通常分为以下几类:
初始化用: S0 ~ S9 ( 10 点);
返回原点状态器: S10 ~ S19 ( 10 点);
通用型: S20 ~ S499 ( 480 点);
断电保持型: S500 ~ S899 ( 400 点);
报警型: S900 ~ S999 ( 100 点)。
5、定时器(T)与计数器(C)
FX 1N 、 FX 2N 系列 PLC 内部可提供 256 个定时器和 256 个计数器,定时器的编号为 T000 ~ T255 ,计数器的编号为 C000 ~ C255 。定时器和计数器不能直接产生输出,必须通过输出继电器才能输出。
1. 定时器( T )
定时器在 PLC 中的作用相当于一个时间继电器, PLC 内的定时器是根据时钟脉冲的累积形式,将 PLC 内的 1ms 、 10ms 、 100ms 等时钟脉冲进行加法计数,当所计时间达到规定的设定值时,其输出触点动作,定时范围为 0.001 ~ 3276.7s 。定时器可以用用户程序存储器内的常数 K 作为设定值,也可以用数据寄存器( D )的内容作为设定值。定时器的元件号及其设定值如下:
( 1 ) 100ms 定时器 T0 ~ T199 ,共 200 点,计时范围: 0.1 ~ 3276.7 秒;
( 2 ) 10ms 定时器 T200 ~ T245 ,共 46 点,计时范围: 0.01 ~ 327.67 秒;
( 3 ) 1ms 积算定时器 T246 ~ T249 ,共 4 点,计时范围: 0.001 ~ 32.767 秒;
( 4 ) 100ms 积算定时器 T250 ~ T255 ,共 6 点,计时范围: 0.1 ~ 3276.7 秒。
定时器的定时值=设定值×时钟,定时器指令符号和时序图如下图所示。
在上图中,当定时器线圈 T0 的驱动输入 X0 接通时, T0 的当前值计数器对 100ms 的时钟脉冲每隔 100ms 加 1 ,当该值与设定值 K100 相等时,定时器的输出触点动作,即输出触点是在驱动线圈后的 10 秒( 100 × 100ms=10s )时才动作, T0 的常开触点闭合后, Y0 就有输出。当驱动输入 X0 断开或发生停电时,定时器就复位,输出触点也复位。
在 FX 1N 、 FX 2N 系列 PLC 中,积算定时器一共有 10 点, 1ms 积算定时器有 4 点,从 T246 ~ T249 ; 100ms 积算定时器有 6 点,从 T250 ~ T255 。
积算定时器的指令形式和时序图如下图所示。该图中,定时器线圈 T250 的驱动输入 X0 接通时, T250 的当前值计数器开始对 100ms 的时钟脉冲进行累积计数,当该值与设定值 K100 相等时,定时器的输出触点动作。在计数过程中,即使输入 X0 断电,它也会把当前值(如图中的 6s )保持下来,当 X0 通电时,再继续累积 4s ,当累积时间为 10s ( 100 × 100 ms =10s )时触点动作, Y0 闭合。因为积算定时器的线圈断电时不会复位,所以需要用复位指令 RST 使其强制复位,如下图,当复位输入 X1 接通时,定时器就复位,输出触点也复位。
2. 计数器( C )
FX 2N 系列 PLC 的计数器是在执行扫描操作时对内部元件 X 、 Y 、 M 、 S 、 T 、 C 的触点通断次数进行积算式定时方式计数。当计数次数达到计数器的设定值时,计数器触点动作,使控制系统完成相应的控制作用。计数器的设定值可由常数 K 设定,也可以由指定的数据寄存器 D 的存储数据来设定。
计数器分为如下 5 类:
( 1 ) 16 位通用加计数器 C0 ~ C99 ,共 100 点,设定值: 1 ~ 32767 , 16 位是指其设定值寄存器为 16 位。
( 2 ) 16 位锁存加计数器 C100 ~ C199 ,共 100 点,设定值: 1 ~ 32767 。
( 3 ) 32 位通用加 / 减双向计数器 C200 ~ C219 ,共 20 点,设定值:- 2147483648 ~ +2147483647 , 32 位是指其设定值寄存器为 32 位,。
( 4 ) 32 位锁存加 / 减双向计数器 C220 ~ C234 ,共 15 点,设定值:- 2147483648 ~ +2147483647 。
( 5 ) 32 位加 / 减双向高速计数器 C235 ~ C255 ,共 21 点,设定值:- 2147483648 ~ +2147483647 。
C200 ~ C255 以上加 / 减双向计数器的计数方向由特殊辅助继电器 M8200 ~ M8255 设定,对应的特殊辅助继电器为 ON 时,为减计数器,反之为加计数器。
如下图所示,当 X3 为 OFF 时, M8200 为 OFF ,此时由 M8200 将计数器 C200 设定为加计数器。计数输 入X0 每次驱动 C200 线圈时,计数器的当前值加 1 ,当第 5 次执行线圈指令时,计数器 C200 的输出常开触点闭合, Y0 为 ON ,之后即使计数器输入 X0 再给计数器线圈送信号,计数器的当前值也保持不变。当复位输入 X1 接通( ON )时,执行 RST 指令,计数器的当前值为 0 ,输出接点 C200 也复位, Y0 为 OFF 。应注意的是,对于计数器 C100 ~ C199 ,即使 PLC 断电,当前值与输出触点的动作状 态或复位状态也能保持。
6、数据寄存器(D)
数据寄存器主要用来存储参数及工作数据,包括模拟量控制、位置控制、数据输入 / 输出等工作中所用到的数据。 FX 系列中每一个数据寄存器都是 16 位(最高位为符号位)二进制数或一个字,可以用两个相邻数据寄存器合并起来存储 32 位(最高位为符号位)二进制数或两个字。数据寄存器分为 4 种类型:
1. 通用数据寄存器
FX 2N 可编程控制器中的 D0 ~ D199 是通用数据寄存器,共 200 点。
数据寄存器中数据的写入一般采用传送指令,只要不往通用数据寄存器写入新数据,已写入的数据就不会变化。但是, PLC 运行状态由 RUN → STOP 时,全部数据均清零。(若特殊辅助继电器 M8033 已被驱动,则数据不被清零。)
2. 锁存数据寄存器
FX 2N 可编程控制器中的 D200 ~ D7999 为锁存数据寄存器,共 7800 点(不同机型,该点数不同)。
锁存数据寄存器有断电保持功能, PLC 由 RUN 状态进入 STOP 状态时,锁存数据寄存器中的值保持不变。
3. 文件寄存器
FX 2N 可编程控制器中的 D1000 ~ D7999 为文件寄存器,共 7000 点。
文件寄存器是用户程序存储器( RAM 、 EEPROM 、 EPROM )内的一个存储区,以 500 点为一个单位,最多可在参数设置时达到 7000 点。它只能用外部设备进行写入操作,在 PLC 运行时,可用 BMOV 指令将其读到通用数据寄存器中,但是不能用指令将数据写入文件寄存器。用 BMOV 将数据写入 RAM 后,再从 RAM 中读出。将数据写入 EEPROM 盒时,需要花费一定的时间,请务必注意。
4. 特殊数据寄存器
FX 2N 可编程控制器中的 D8000 ~ D8255 为特殊数据寄存器,共 256 点。
特殊数据寄存器用来监控 PLC 内部的各种工作方式和元件,例如电池电压、扫描时间等。其内容是在 PLC 上电时,写入的初始化值(一般先清零,然后由系统 ROM 来写入)。如 D8000 用来存放警戒监视时钟,其时间是由系统 ROM 设定的。若需要改变,应用传送指令将目的时间送入 D8000 。该值在由运行转为停止时,保持不变。
此外, FX 系列 PLC 内部的编程元件还有变址寄存器( V 、 Z )。
变址寄存器( V 、 Z )除了和普通的数据寄存器有相同的使用方法外,还常用于修改器件的地址编号。变址寄存器由 V0 ~ V7 及 Z0 ~ Z7 共 16 点 16 位的数据寄存器构成,可进行数据的读写,当进行 32 位操作时,将 V 和 Z 合并,其中 Z 为低 16 位。
7、内部 指针与常数
内部指针( P/I )包括分支和子程序用的指针( P )和中断用的指针( I )。在梯形图中,指针放在左侧母线的左边。
内部指针( P/I )是在程序执行到内部时用来改变执行流向的元件。分支指令有 P0 ~ P127 ,它们可用来指定条件跳转、子程序调用等,其中 P63 表示跳转结束。中断指令有 I0 ~ I8 ,输入中断 I △ 0 □,△表示输入号,取值范围为 0 ~ 5 ,□ =0 表示下降沿中断,□ =1 表示上升沿中断,每个输入只能用一次,以接受来自对应的输入编号( X0 ~ X5 )的输入信号。定时器中断 I △□□,△表示定时器中断号,取值范围为 6 ~ 8 ,□□表示定时时间,取值范围为 10 ~ 99ms ,中断指令根据 IRET 指令返回。
常数 K 用来表示十进制常数, 16 位常数的范围为- 32768 ~+ 32768 , 32 位常数的范围为- 2147483648 ~+ 2147483647 。
常数 H 用来表示十六进制常数, 16 位常数的范围为 0 ~ FFFF , 32 位常数的范围为 0 ~ FFFFFFFF 。
PLC 内部的编程元件都有确定的地址编号,不同厂家,不同型号的 PLC ,其编程元件的数量、种类、地址编号都不一样,这对编程者是很重要的,下表 以 FX 2N 系列 PLC 为例,列出了其相关的编程元件。
表 FX 2N 系列 PLC 内部各继电器的编号
元件名称 |
符号 |
元件编号 |
点数 | |
输入继电器 |
X |
X000 ~ X177( 八进制 ) |
128 点 | |
输出继电器 |
Y |
Y000 ~ Y177( 八进制 ) |
128 点 | |
辅助继电器 |
通用辅助继电器 |
M |
M0 ~ M499 |
500 点 |
锁存辅助继电器 |
M500 ~ M3071 |
2572 点 | ||
特殊辅助继电器 |
M8000 ~ M8255 |
256 点 | ||
状态继电器 |
初始化状态继电器 |
S |
S0 ~ S9 |
10 点 |
通用状态继电器 |
S10 ~ S499 |
490 点 | ||
锁存状态继电器 |
S500 ~ S899 |
400 点 | ||
信号报警器 |
S900 ~ S999 |
100 点 | ||
定时器 |
100ms 定时器 |
T |
T0 ~ T199 |
200 点 |
10ms 定时器 |
T200 ~ T245 |
46 点 | ||
1ms 积算定时器 |
T246 ~ T249 |
4 点 | ||
100ms 积算定时器 |
T250 ~ T255 |
6 点 | ||
计数器 |
16 位通用加计数器 |
C |
C0 ~ C99 |
100 点 |
16 位锁存加计数器 |
C100 ~ C199 |
100 点 | ||
32 位通用加减计数器 |
C200 ~ C219 |
20 点 | ||
32 位锁存加减计数器 |
C220 ~ C234 |
15 点 | ||
高速计数器 |
C235 ~ C255 |
21 点 | ||
数据寄存器 |
通用数据寄存器 |
D |
D0 ~ D199 |
16 位 200 点 |
锁存数据寄存器 |
D200 ~ D7999 |
16 位 7800 点 | ||
文件寄存器 |
D1000 ~ D7999 |
7000 点,以 500 个为单位设置文件寄存器 | ||
特殊寄存器 |
D8000 ~ D8255 |
16 位 256 点 | ||
变址寄存器 |
V0 ~ V7 , Z0 ~ Z7 |
16 位 16 点 | ||
跳步指针 |
跳步和子程序调用 |
P |
P0 ~ P127 |
128 点 |
常数 |
十进制常数 |
K |
- |
16 位:- 32768 ~ +32768 32 位:- 2147483648 ~ +2147483647 |
十六进制常数 |
H |
16 位 : 0 ~ FFFF 32 位 : 0 ~ FFFFFFFF |