Skip to content

数据处理(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=ON

DECO 把一个数摊成 2^n 个位里唯一 ON 的那一格;ENCO 反向取最高 ON 的格号

ENCO — 编码(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=5

ENCO 从最高格往低扫,第一个 ON 的格号写进 D

SUM — 位统计(FNC 43) ​

项目说明
格式SUM S D
16/32位SUM / DSUM

统计 S 中值为 1 的位数,结果存入 D。

SUM D0 D10            ; D0 中 1 的位数 → D10

SUM 数整个字的 16 个位,结果为 0 时 M8020 置 ON

BON — 位检测(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=ON

BON 判字第 n 位(n=0 是最低位);SUM 数一个字里有几个 ON

MEAN — 平均值(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
FNCFNC 45 (D)
DMEAN D0 D10 K3

DSQR — 32 位求平方根 ​

项目说明
格式DSQR 源 S, 目标 D
操作数源 S, 目标 D
示例DSQR D0 D10
步数9
FNCFNC 48 (D)
DSQR D0 D10

DBON — 32 位位判定 ​

项目说明
格式DBON 源 S, 位 n, 目标 D
操作数源 S, 位 n, 目标 D
示例DBON D0 K20 M0
步数13
FNCFNC 44 (D)
DBON D0 K20 M0

DBON(32 位版):判 32 位数的第 n 位,n 可到 31

DSUM — 32 位统计 ON 位数(结果送 D) ​

项目说明
格式DSUM S(源首址), D(结果)
操作数S(源首址), D(结果)
示例DSUM D0 D10
步数9
FNCFNC 43 (D)
DSUM D0 D10

DSUM(32 位版):数 32 个位里有几个 ON,结果占 2 个字

LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研