主题
数据处理(FNC 40-49)
ZRST — 区间复位(FNC 40)
| 项目 | 说明 |
|---|---|
| 格式 | ZRST D1 D2 |
将 D1 到 D2 之间所有软元件复位。位元件变 OFF,字元件清零。D1、D2 必须同类型且 D1 ≦ D2。
ZRST M0 M100 ; M0~M100 全部复位
ZRST D0 D100 ; D0~D100 全部清零实用例程
LD M8013
OUT M10
LDI X0
OR M8002
ZRST Y0 Y7
ZRST M0 M100
LD M8000
MPS
AND X1
SET M0
MRD
AND X2
RST M0
RST Y0
RST Y1
MRD
ANDP X3
ALT M1把上面的地址、主题、引脚替换成你项目里的即可。
DECO — 译码(FNC 41)
| 项目 | 说明 |
|---|---|
| 格式 | DECO S D n |
将 S 的低 n 位译码为 2^n 中的对应位,结果存入 D。n 的范围:D 是位元件时 1~8,D 是字元件时 1~4,超出时不动作。
DECO D0 M0 K3 ; D0 低3位(0~7)译码 → M0~M7 对应位ON
; 如 D0=3 → M3=ONENCO — 编码(FNC 42)
| 项目 | 说明 |
|---|---|
| 格式 | ENCO S D n |
将 S 起始的 2^n 位中最高 ON 位编号编码后存入 D。n 的范围:S 是位元件时 1~8,S 是字元件时 1~4,超出时不动作。
ENCO M0 D0 K3 ; M0~M7 中最高ON位编号 → D0
; 如 M5=ON(M0~M4为OFF) → D0=5SUM — 位统计(FNC 43)
| 项目 | 说明 |
|---|---|
| 格式 | SUM S D |
| 16/32位 | SUM / DSUM |
统计 S 中值为 1 的位数,结果存入 D。
SUM D0 D10 ; D0 中 1 的位数 → D10BON — 位检测(FNC 44)
| 项目 | 说明 |
|---|---|
| 格式 | BON S D n |
| 16/32位 | BON / DBON |
检测 S 的第 n 位是否为 1,结果存入 D(位元件)。n 的有效范围是 0~15(32 位版 DBON 为 0~31),越界时这条指令不动作。
BON D0 M0 K5 ; D0 的第5位=1 → M0=ONMEAN — 平均值(FNC 45)
| 项目 | 说明 |
|---|---|
| 格式 | MEAN S D n |
| 16/32位 | MEAN / DMEAN |
计算 S 起始 n 个数据的平均值,余数舍去,结果存入 D。n 的范围是 1~64,超出时这条指令不动作。
MEAN D0 D10 K5 ; D0~D4 的5个数据平均值 → D10实用例程
LDP M8013
OUT C0 K20
MOV C0 D8028
MOV D110 D119Z0
MEAN D120 D140 K20
LDP C0
RST C0
LD M8000
MOV D180 D201
LD M8000
MOV D181 D200
END把上面的地址、主题、引脚替换成你项目里的即可。
ANS — 报警器置位(FNC 46)
| 项目 | 说明 |
|---|---|
| 格式 | ANS S m D |
指令的输入条件持续为 ON,并且 S 指定的定时器计时达到 m×该定时器的时基后,把 D(报警器,范围 S900~S999)置位,同时把该定时器复位。到达时间取决于定时器号本身的时基:T0~T199 是 100ms,T200~T245 是 10ms,T246 起是 1ms。
ANS T0 K100 S900 ; 条件持续 ON 100×100ms = 10s 后,S900 置位
ANS T200 K100 S901 ; 条件持续 ON 100×10ms = 1s 后,S901 置位这条指令会占用您指定的那个定时器号,同一个定时器不要再拿去做别的计时。
ANR — 报警器复位(FNC 47)
| 项目 | 说明 |
|---|---|
| 格式 | ANR |
复位当前处于 ON 状态的最低编号报警器(S900~S999)。
ANRP ; 脉冲执行:复位最低编号的报警器SQR — 开方(FNC 48)
| 项目 | 说明 |
|---|---|
| 格式 | SQR S D |
| 16/32位 | SQR / DSQR |
计算 S 的平方根,整数部分(小数舍去)存入 D。S 为负数时不会报错,但结果没有意义,请自行保证 S ≥ 0。
SQR D0 D10 ; √D0 → D10(整数部分)FLT — 整数转浮点(FNC 49)
| 项目 | 说明 |
|---|---|
| 格式 | FLT S D |
| 16/32位 | FLT / DFLT |
将 S 的整数转换为浮点数存入 D。用于浮点运算前的类型转换。S 和 D 都只能写 D 寄存器,浮点数占 2 个寄存器(如写入 D10,则结果占 D10、D11)。
FLT D0 D10 ; D0 整数 → D10-D11 浮点数注意:LPPLC 中浮点数占 2 个连续 D 寄存器。
实用例程
DMOV D25 D27
DEADD D26 E0 D27
AND M8029
RST M45
LD= K7 D150
SET M40
SET M41
SET M42
SET M43
SET M44
SET M45
MOV K0 D150
LD M8000
MOV K30 D80
FLT D80 D82
DECMP D22 D82 M18
LDI M10
ANI M11
INV
OUT M16
LD M8000
MOV K30 D84
FLT D84 D86
DECMP D2 D86 M10
LD M8000
MOV K30 D88
FLT D88 D90
DECMP D2 D90 M11把上面的地址、主题、引脚替换成你项目里的即可。
各指令详细说明
DMEAN — 32 位求平均值
| 项目 | 说明 |
|---|---|
| 格式 | DMEAN 源 S, 目标 D, 个数 n |
| 操作数 | 源 S, 目标 D, 个数 n |
| 示例 | DMEAN D0 D10 K3 |
| 步数 | 13 |
| FNC | FNC 45 (D) |
DMEAN D0 D10 K3DSQR — 32 位求平方根
| 项目 | 说明 |
|---|---|
| 格式 | DSQR 源 S, 目标 D |
| 操作数 | 源 S, 目标 D |
| 示例 | DSQR D0 D10 |
| 步数 | 9 |
| FNC | FNC 48 (D) |
DSQR D0 D10DBON — 32 位位判定
| 项目 | 说明 |
|---|---|
| 格式 | DBON 源 S, 位 n, 目标 D |
| 操作数 | 源 S, 位 n, 目标 D |
| 示例 | DBON D0 K20 M0 |
| 步数 | 13 |
| FNC | FNC 44 (D) |
DBON D0 K20 M0DSUM — 32 位统计 ON 位数(结果送 D)
| 项目 | 说明 |
|---|---|
| 格式 | DSUM S(源首址), D(结果) |
| 操作数 | S(源首址), D(结果) |
| 示例 | DSUM D0 D10 |
| 步数 | 9 |
| FNC | FNC 43 (D) |
DSUM D0 D10