主题
软元件一览
PLC的软元件是程序操作的基本对象。以下是LP3U支持的软元件概览:
| 软元件 | 名称 | 类型 | 说明 |
|---|---|---|---|
| X | 输入继电器 | 位元件 | 对应PLC硬件开关量输入,编号采用八进制(X0~X377) |
| Y | 输出继电器 | 位元件 | 对应PLC控制输出,编号采用八进制(Y0~Y377) |
| M | 辅助继电器 | 位元件 | 中间存储,普通M为 M0~M7679,系统特殊M为 M8000~M8511 |
| S | 状态继电器 | 位元件 | 步进控制用状态标志(S0~S4095) |
| T | 定时器 | 位/字元件 | 计时功能,时基按编号分档(T0~T511,见下方资源规格表) |
| C | 计数器 | 位/字元件 | 计数功能,C0~C199 为 16 bit,C200~C255 为 32 bit 增减计数器 |
| D | 数据寄存器 | 字元件 | 16 bit数据存储,普通D为 D0~D7999,特殊D为 D8000~D8511 |
| R | 扩展寄存器 | 字元件 | 断电保持的扩展存储区(R0~R32767),数值一有变化就写入 Flash,适合存少量不常改的配置与累计量 |
| V、Z | 变址寄存器 | 字元件 | 用于数据间接寻址,只有 V0~V7、Z0~Z7 这 8 个 |
| P | 指针 | - | 跳转指针和子程序指针(P0~P4095) |
| I | 中断指针 | - | 中断子程序入口(高速输入、定时、计数等中断) |
| K | 十进制常数 | - | 如 K100 表示十进制数100 |
| H | 十六进制常数 | - | 如 H00FF 表示十六进制数FF |
| E | 浮点数常数 | - | 如 E3.14 表示浮点数3.14 |
指令里的地址写越界,编译那一步就拦下来
不会等到运行才发现,编译时直接报错并指出是哪一条指令的哪个操作数:
步号0(第1行): X 编号必须是八进制(0-7的组合): X8
MOV 第2个操作数: 特殊寄存器 D12000 超出范围(D8000-D8511)第二条里那句话透露了一个容易踩的规则:编号 ≥ 8000 一律按特殊区判,D8512 以上连"普通寄存器"都不算, 想要大容量数据区请用 R(R0~R32767,断电保持)。
软元件资源规格
每类软元件有多少个
| 编号范围 | 名称 | 点数 | 数据宽度 | 说明 |
|---|---|---|---|---|
| X0~X377 | 输入继电器 | 256 | 位(ON/OFF) | 编址用八进制 |
| Y0~Y377 | 输出继电器 | 256 | 位(ON/OFF) | 编址用八进制 |
| M0~M7679 | 辅助继电器 | 7680 | 位(ON/OFF) | 普通 M0~M7679 |
| M8000~M8511 | 辅助继电器 | 512 | 位(ON/OFF) | 特殊辅助继电器(只读居多) |
| S0~S4095 | 状态继电器 | 4096 | 位(ON/OFF) | 步进状态 |
| D0~D7999 | 数据寄存器 | 8000 | 16 位有符号整数 | 普通数据寄存器 |
| D8000~D8511 | 数据寄存器 | 512 | 16 位有符号整数 | 特殊数据寄存器 |
| T0~T511 | 定时器 | 512 | 位 + 16 位字 | 触点 + 当前值/设定值 |
| C0~C255 | 计数器 | 256 | 位 + 16 位字 | C0~C199 为 16 位,C200~C255 为 32 位 |
| R0~R32767 | 扩展寄存器 | 32768 | 16 位有符号整数 | 每次数值变化写一次 Flash |
| AI0~AI84 | 模拟量输入 | 85 | 16 位有符号整数 | 实际装了几路看机型 |
| AO0~AO127 | 模拟量输出 | 128 | 16 位有符号整数 | 实际装了几路看机型 |
定时器按编号分档
定时器的时基由编号决定,不是由您填的 K 值决定 —— 同是 K100,T0 是 10 秒、T200 是 1 秒。
| 编号范围 | 时基 | 类型 | 点数 | 定时范围(设定值 K 取 1~32767) |
|---|---|---|---|---|
| T0~T199 | 100ms | 通用 | 200 | 0.1 ~ 3276.7 秒 |
| T200~T245 | 10ms | 通用 | 46 | 0.01 ~ 327.67 秒 |
| T246~T247 | 1ms | 积算(累计) | 2 | 0.001 ~ 32.767 秒 |
| T248~T249 | 10ms | 积算(累计) | 2 | 0.01 ~ 327.67 秒 |
| T250~T255 | 100ms | 积算(累计) | 6 | 0.1 ~ 3276.7 秒 |
| T256~T511 | 1ms | 通用 | 256 | 0.001 ~ 32.767 秒 |
通用:驱动它的能流一断,当前值立刻清零。 积算:能流断了不清零,接着累计,只有 RST 才清零(T246~T255)。
出厂默认的断电保持区间
下表是**新设备(或恢复出厂后)**上电时不清零的那几段,其余软元件每次上电都从 0 开始。
| 软元件 | 出厂默认保持范围 | 点数 | 这一段最多设到 |
|---|---|---|---|
| 辅助继电器 M | M500~M1023 | 524 | M1023 |
| 状态继电器 S | S500~S999 | 500 | S999 |
| 计数器 C(16 位段) | C100~C199 | 100 | C199 |
| 计数器 C(32 位段) | C220~C255 | 36 | C255 |
| 数据寄存器 D | D200~D511 | 312 | D511 |
保持范围可以在参数里改,但改不出上一列的上限
上表的起止编号是设备参数,在上位机的「锁存范围」里改:M / S / D 各一段,计数器分 16 位段与 32 位段两段独立设定。 上电时设备会把不在保持范围内的数据清零 —— 把范围改小,原来存在被移出那一段的数据会在下次上电时丢掉。 两条硬上限改不动:M 只能设到 M1023 以内、S 只能 S999 以内(M1024 以上、S1000 以上每次上电一定清零); D 只能设到 D511,D512 往上没有「保持」一说 —— 要长期保留的数据放扩展寄存器 R。
定时器不参与断电保持
设备上电时 T0~T511 的当前值和设定值一律清零(定时器没有掉电保持区), 所以积算定时器 T246~T255 只扛得住「能流断开」,扛不住断电。 要跨断电累计运行时长,把时长累计到 D 区(放进保持段)或扩展寄存器 R 里,别指望定时器本身。
扩展寄存器 R 怎么用最合适
R 的每一次数值变化都会写一次 Flash,所以它适合存改动很少的东西(配方、标定值、累计产量), 不适合放在每个扫描周期都在变的回路里 —— 那会拖慢扫描,也会提前耗尽 Flash 的写入次数。 中间变量请用 D;成规模的历史数据用 Lua 的 fdb 接口。
模拟量点数随机型而变
上表里的 AI/AO 是地址空间的上限,不是您这台机器上实际装了几路。 某台机型有几个模块、每模块几路,看订货型号与硬件配置页;只有接了硬件的通道才会有读数。
详细说明
各软元件的详细规格、编号范围和特殊用法,请参考: