西门子S7-200 SMART教程第七课:数据处理指令深度解析
一、数据处理指令概述
数据处理指令是PLC编程中用于数据操作的核心指令集,包括数据传送、比较、数学运算、逻辑运算、移位循环和数据类型转换等。这些指令是实现复杂控制算法、数据处理和通信的基础。
学习目标
-
掌握6大类数据处理指令的工作原理
-
熟练使用数据传送和比较指令
-
掌握四则运算和数学函数指令
-
理解逻辑运算和移位指令的应用
-
掌握数据类型转换的方法
-
能够设计复杂的数据处理系统
二、数据传送指令
2.1 传送指令家族
传送指令用于在不同存储区之间复制数据,是数据处理的基础。
|
指令名称
|
梯形图符号
|
语句表指令
|
数据长度
|
功能描述
|
|
字节传送
|
MOV_B
|
MOVB
|
8位(1字节)
|
传送字节数据
|
|
字传送
|
MOV_W
|
MOVW
|
16位(2字节)
|
传送字数据
|
|
双字传送
|
MOV_DW
|
MOVD
|
32位(4字节)
|
传送双字数据
|
|
实数传送
|
MOV_R
|
MOVR
|
32位(4字节)
|
传送实数数据
|
2.2 传送指令编程实例
实例1:数据初始化与备份
梯形图程序
Network 1 // 系统初始化
SM0.1 VB100
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----0-----VB100
Network 2 // 备份重要数据
I0.0 VW200
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---VW100--VW200
Network 3 // 实数参数设置
I0.1 VD300
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---25.5---VD300
语句表程序
// 网络1
LD SM0.1 // 首次扫描
MOVB 0, VB100 // 初始化状态字节
// 网络2
LD I0.0 // 备份按钮
MOVW VW100, VW200 // 备份重要数据
// 网络3
LD I0.1 // 参数设置
MOVR 25.5, VD300 // 设置温度参数
应用场景说明:
系统初始化:利用SM0.1在PLC启动时清零状态标志
数据备份:将运行参数备份到安全区域,防止误修改
参数设置:设置工艺参数如温度、压力、速度等
数据交换:在不同存储区之间交换数据
2.3 块传送指令
块传送指令用于批量传送数据,提高数据移动效率。
|
指令名称
|
梯形图符号
|
语句表指令
|
参数说明
|
功能描述
|
|
字节块传送
|
BLKMOV_B
|
BMB
|
IN, OUT, N
|
传送N个字节
|
|
字块传送
|
BLKMOV_W
|
BMW
|
IN, OUT, N
|
传送N个字
|
|
双字块传送
|
BLKMOV_D
|
BMD
|
IN, OUT, N
|
传送N个双字
|
实例2:配方数据传输
控制要求:从配方存储区批量传输10个参数到当前配方区。
梯形图程序
Network 1 // 加载配方1
I0.0 VB500
--| |---+---(BLKMOV_B)--
| EN ENO
| IN OUT
| N -
+---VB100--VB200
| 10
语句表程序
LD I0.0 // 加载配方1
BMB VB100, VB200, 10 // 传送10个字节
数据传输示意图:
三、比较指令
3.1 比较指令类型
比较指令用于比较两个数值的大小关系,根据比较结果控制程序流程。
|
比较类型
|
梯形图符号
|
语句表指令
|
数据类型
|
功能描述
|
|
等于
|
==
|
LD==, A==, O==
|
B, W, D, R
|
IN1 = IN2
|
|
不等于
|
<>
|
LD<>, A<>, O<>
|
B, W, D, R
|
IN1 ≠ IN2
|
|
大于
|
>
|
LD>, A>, O>
|
B, W, D, R
|
IN1 > IN2
|
|
大于等于
|
>=
|
LD>=, A>=, O>=
|
B, W, D, R
|
IN1 ≥ IN2
|
|
小于
|
<
|
LD<, A<, O<
|
B, W, D, R
|
IN1 < IN2
|
|
小于等于
|
<=
|
LD<=, A<=, O<=
|
B, W, D, R
|
IN1 ≤ IN2
|
3.2 比较指令编程实例
实例3:温度控制与报警
控制要求:监测温度,在正常范围内控制加热,超出范围报警。
梯形图程序
Network 1 // 温度读取
SM0.0 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW100
Network 2 // 温度过低加热
VW100 VW102 Q0.0
--|<|----| |-----( )--
Network 3 // 温度过高停止加热
VW100 VW104 Q0.0
--|>|----|/|-----( )--
Network 4 // 超温报警
VW100 VW106 Q0.1
--|>|----| |-----( )--
数据说明
VW100: 当前温度值 (0-100℃,对应0-1000)
VW102: 温度下限设定 (如200,对应20℃)
VW104: 温度上限设定 (如800,对应80℃)
VW106: 报警上限设定 (如900,对应90℃)
温度控制逻辑:
|
温度范围
|
比较结果
|
Q0.0加热
|
Q0.1报警
|
控制策略
|
|
VW100 < 200
|
低于下限
|
1
|
0
|
启动加热
|
|
200 ≤ VW100 ≤ 800
|
正常范围
|
0
|
0
|
停止加热
|
|
800 < VW100 ≤ 900
|
高于上限
|
0
|
0
|
停止加热
|
|
VW100 > 900
|
超温报警
|
0
|
1
|
报警输出
|
实例4:多条件联合比较
控制要求:多个条件同时满足时才执行操作。
梯形图程序
Network 1 // 多条件联合控制
VD100 VD104 VD108 VD112 Q0.0
--|>=|---|<=|---|>=|---|<=|---( )--
等效的逻辑表达式
如果 (VD100 ≥ VD104) 且 (VD100 ≤ VD108) 且
(VD112 ≥ VD116) 且 (VD112 ≤ VD120)
则 Q0.0 = 1
否则 Q0.0 = 0
四、数学运算指令
4.1 四则运算指令
四则运算指令实现基本的算术运算。
|
运算类型
|
梯形图符号
|
语句表指令
|
数据类型
|
计算公式
|
|
加法
|
ADD_I
|
+I
|
整数
|
OUT = IN1 + IN2
|
|
减法
|
SUB_I
|
-I
|
整数
|
OUT = IN1 - IN2
|
|
乘法
|
MUL_I
|
*I
|
整数
|
OUT = IN1 × IN2
|
|
除法
|
DIV_I
|
/I
|
整数
|
OUT = IN1 ÷ IN2
|
|
实数加法
|
ADD_R
|
+R
|
实数
|
OUT = IN1 + IN2
|
|
实数乘法
|
MUL_R
|
*R
|
实数
|
OUT = IN1 × IN2
|
4.2 数学运算编程实例
实例5:流量累计计算
控制要求:根据流量计脉冲计算累计流量。
梯形图程序
Network 1 // 读取瞬时流量
SM0.0 AIW2
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW2---VW100
Network 2 // 转换为工程值(L/min)
SM0.0 VW100
--| |---+---(MUL)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VW100--0.1---VD200
Network 3 // 1分钟流量累计
SM0.5 VD204
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD200--VD204--VD204
Network 4 // 小时流量统计
T37 VD208
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD204--VD208--VD208
计算公式:
瞬时流量 = AIW2 × 0.1 (L/min)
分钟累计 = Σ(瞬时流量) (L)
小时累计 = Σ(分钟累计) (L)
4.3 数学函数指令
数学函数指令实现高级数学运算。
|
函数类型
|
梯形图符号
|
语句表指令
|
功能描述
|
数据范围
|
|
平方根
|
SQRT
|
SQRT
|
计算平方根
|
IN ≥ 0
|
|
自然对数
|
LN
|
LN
|
计算自然对数
|
IN > 0
|
|
自然指数
|
EXP
|
EXP
|
计算e的IN次方
|
任意实数
|
|
正弦
|
SIN
|
SIN
|
计算正弦值
|
弧度制
|
|
余弦
|
COS
|
COS
|
计算余弦值
|
弧度制
|
|
正切
|
TAN
|
TAN
|
计算正切值
|
弧度制
|
实例6:工程计算 - 管道流量计算
控制要求:根据差压计算管道流量(流量与差压的平方根成正比)。
梯形图程序
Network 1 // 读取差压
SM0.0 AIW4
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW4---VD300
Network 2 // 转换为实数
SM0.0 VD300
--| |---+---(DTR)--
| EN ENO
| IN OUT
| -- --
+---VD300--VD304
Network 3 // 计算平方根
SM0.0 VD304
--| |---+---(SQRT)--
| EN ENO
| IN OUT
| -- --
+---VD304--VD308
Network 4 // 乘以系数得到流量
SM0.0 VD308
--| |---+---(MUL_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD308--0.85--VD312
计算公式
流量 = K × √ΔP
其中:K = 0.85 (流量系数)
ΔP = 差压值 (Pa)
五、逻辑运算指令
5.1 逻辑运算指令类型
逻辑运算指令对二进制数据进行位逻辑操作。
|
运算类型
|
梯形图符号
|
语句表指令
|
数据长度
|
真值表
|
|
与运算
|
WAND
|
AND
|
B, W, D
|
1&1=1, 其他=0
|
|
或运算
|
WOR
|
OR
|
B, W, D
|
0|0=0, 其他=1
|
|
异或运算
|
WXOR
|
XOR
|
B, W, D
|
相同=0, 不同=1
|
|
取反运算
|
INV
|
INV
|
B, W, D
|
0→1, 1→0
|
5.2 逻辑运算编程实例
实例7:状态位组合控制
控制要求:多个设备状态组合控制,实现复杂的联锁逻辑。
梯形图程序
Network 1 // 组合状态字
I0.0 VB10
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+----0-----VB10
Network 2 // 设置状态位
I0.1 VB10.0
--| |--------( )-- // 设备1运行
I0.2 VB10.1
--| |--------( )-- // 设备2运行
I0.3 VB10.2
--| |--------( )-- // 设备3运行
I0.4 VB10.3
--| |--------( )-- // 故障状态
Network 3 // 允许启动条件
SM0.0 VB10
--| |---+---(WAND)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VB10--16#07--VB20
Network 4 // 判断条件
VB20 16#07 Q0.0
--|==|----|/|----( )--
状态位说明:
状态字节VB10位定义
备用
备用
备用
备用
故障
设备3
设备2
设备1
逻辑运算分析:
VB20 = VB10 AND 16#07
16#07 = 00000111B
结果:只保留低3位(设备运行状态)
条件:VB20 = 16#07 (00000111B)
含义:设备1、2、3都运行,且第3位(故障位)为0
六、移位与循环指令
6.1 移位指令类型
移位指令用于对数据进行位移动操作。
|
移位类型
|
梯形图符号
|
语句表指令
|
数据长度
|
移位方向
|
|
左移位
|
SHL
|
SL
|
B, W, D
|
向左移动
|
|
右移位
|
SHR
|
SR
|
B, W, D
|
向右移动
|
|
循环左移
|
ROL
|
RL
|
B, W, D
|
循环左移
|
|
循环右移
|
ROR
|
RR
|
B, W, D
|
循环右移
|
6.2 移位指令编程实例
实例8:流水灯控制
控制要求:8个流水灯依次点亮,实现跑马灯效果。
梯形图程序
Network 1 // 初始化
SM0.1 QB0
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+---16#01--QB0
Network 2 // 1秒定时
SM0.0 T37
--| |---+---(TON)--
| EN ENO
| IN PT
| -- --
+---SM0.0--10---T37
Network 3 // 左循环移位
T37 QB0
--| |---+---(ROL_B)--
| EN ENO
| IN OUT
| N -
+---QB0---QB0
| 1
移位过程演示:
初始化:QB0 = 00000001B (只有Q0.0亮)
1秒后左移1位:QB0 = 00000010B (Q0.1亮)
再1秒后左移1位:QB0 = 00000100B (Q0.2亮)
...依次左移,实现跑马灯效果
到Q0.7后,由于是循环移位,回到Q0.0
位模式变化:
七、数据类型转换指令
7.1 转换指令类型
转换指令用于不同数据类型之间的转换。
|
转换类型
|
梯形图符号
|
语句表指令
|
输入类型
|
输出类型
|
|
字节到整数
|
B_I
|
BTI
|
字节
|
整数
|
|
整数到字节
|
I_B
|
ITB
|
整数
|
字节
|
|
整数到双整数
|
I_DI
|
ITD
|
整数
|
双整数
|
|
双整数到整数
|
DI_I
|
DTI
|
双整数
|
整数
|
|
双整数到实数
|
DI_R
|
DTR
|
双整数
|
实数
|
|
实数到双整数
|
R_DI
|
ROUND
|
实数
|
双整数(四舍五入)
|
|
实数到双整数
|
TRUNC
|
TRUNC
|
实数
|
双整数(截断)
|
7.2 转换指令编程实例
实例9:模拟量处理与显示
控制要求:读取模拟量输入,转换为工程值显示。
梯形图程序
Network 1 // 读取模拟量原始值
SM0.0 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW100
Network 2 // 整数转双整数
SM0.0 VW100
--| |---+---(I_DI)--
| EN ENO
| IN OUT
| -- --
+---VW100--VD104
Network 3 // 双整数转实数
SM0.0 VD104
--| |---+---(DI_R)--
| EN ENO
| IN OUT
| -- --
+---VD104--VD108
Network 4 // 转换为工程值
SM0.0 VD108
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD108--320.0--VD112
转换公式
温度值 = (AIW0 ÷ 32000) × 100 ℃
其中:AIW0范围 0-32000
温度范围 0-100℃
数据类型转换链:
AIW0 (WORD) → VW100 (INT) → VD104 (DINT) → VD108 (REAL) → VD112 (REAL)
原始值 → 整数 → 双整数 → 实数 → 工程值
八、综合应用案例
8.1 案例一:智能配料系统
控制要求:
-
系统有3种原料A、B、C,按配方比例混合
-
配方参数:A:VW100, B:VW102, C:VW104 (单位:kg)
-
每种原料有独立的称重传感器(AIW0, AIW2, AIW4)
-
实时计算已投料重量和剩余重量
-
投料完成后自动搅拌,搅拌时间可设置
-
记录每次生产的配方、实际用量、生产时间
数据处理流程:
数据采集:读取3路模拟量,转换为重量值
配方比较:比较实际重量与配方设定值
数学运算:计算剩余重量、总重量、比例等
数据转换:重量单位转换,数据格式转换
数据存储:存储生产数据到指定区域
逻辑控制:根据比较结果控制阀门动作
关键计算:
原料A实际重量 = (AIW0 ÷ 32000) × 量程
剩余重量 = 配方设定 - 实际重量
投料比例 = 实际重量 ÷ 配方设定 × 100%
总重量 = 原料A + 原料B + 原料C
8.2 案例二:数据采集与处理系统
系统功能:
-
采集8路模拟量信号(温度、压力、流量等)
-
对每路信号进行滤波处理(移动平均)
-
计算每个参数的最大值、最小值、平均值
-
越限报警,记录报警次数和时间
-
定时存储数据到历史记录区
-
计算运行效率、能耗等统计指标
数据处理算法:
移动平均滤波算法
// 数据结构:VD100-VD199 存储最近10次采样值
// 每次采样时:
1. 将新值存入当前指针位置
2. 指针向后移动一位
3. 如果指针超过数组末尾,回到开头
4. 计算数组中所有值的平均值
5. 输出平均值作为滤波结果
统计计算:
平均值 = (Σ采样值) ÷ 采样次数
最大值 = MAX(采样值1, 采样值2, ..., 采样值n)
最小值 = MIN(采样值1, 采样值2, ..., 采样值n)
标准偏差 = √[Σ(采样值-平均值)² ÷ (n-1)]
西门子S7-200 SMART教程第七课补充:数据处理程序实例
九、智能配料系统完整程序
9.1 系统I/O分配
|
信号类型
|
地址
|
功能描述
|
|
数字量输入
|
I0.0
|
启动按钮
|
|
数字量输入
|
I0.1
|
停止按钮
|
|
数字量输入
|
I0.2
|
急停按钮
|
|
数字量输出
|
Q0.0
|
原料A进料阀
|
|
数字量输出
|
Q0.1
|
原料B进料阀
|
|
数字量输出
|
Q0.2
|
原料C进料阀
|
|
数字量输出
|
Q0.3
|
搅拌电机
|
|
数字量输出
|
Q0.4
|
出料阀
|
|
模拟量输入
|
AIW0
|
原料A重量传感器
|
|
模拟量输入
|
AIW2
|
原料B重量传感器
|
|
模拟量输入
|
AIW4
|
原料C重量传感器
|
9.2 配方参数存储区
|
参数名称
|
地址
|
数据类型
|
单位
|
说明
|
|
原料A配方值
|
VW100
|
INT
|
kg
|
0-100kg
|
|
原料B配方值
|
VW102
|
INT
|
kg
|
0-100kg
|
|
原料C配方值
|
VW104
|
INT
|
kg
|
0-100kg
|
|
搅拌时间
|
VW106
|
INT
|
秒
|
10-600秒
|
|
原料A实际值
|
VD200
|
REAL
|
kg
|
实时重量
|
|
原料B实际值
|
VD204
|
REAL
|
kg
|
实时重量
|
|
原料C实际值
|
VD208
|
REAL
|
kg
|
实时重量
|
9.3 完整梯形图程序
网络1 系统启停控制
I0.0 I0.1 I0.2 M0.0
--| |----|/|----|/|-----(S)--
N:1
I0.1 M0.0
--| |--------(R)--
N:1
网络2 原料A重量采集与转换
SM0.0 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW10
SM0.0 VW10
--| |---+---(I_DI)--
| EN ENO
| IN OUT
| -- --
+---VW10---VD14
SM0.0 VD14
--| |---+---(DI_R)--
| EN ENO
| IN OUT
| -- --
+---VD14---VD20
SM0.0 VD20
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD20--100.0--VD200
网络3 原料B重量采集与转换
SM0.0 AIW2
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW2---VW30
SM0.0 VW30
--| |---+---(I_DI)--
| EN ENO
| IN OUT
| -- --
+---VW30---VD34
SM0.0 VD34
--| |---+---(DI_R)--
| EN ENO
| IN OUT
| -- --
+---VD34---VD40
SM0.0 VD40
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD40--100.0--VD204
网络4 原料C重量采集与转换
SM0.0 AIW4
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW4---VW50
SM0.0 VW50
--| |---+---(I_DI)--
| EN ENO
| IN OUT
| -- --
+---VW50---VD54
SM0.0 VD54
--| |---+---(DI_R)--
| EN ENO
| IN OUT
| -- --
+---VD54---VD60
SM0.0 VD60
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD60--100.0--VD208
网络5 原料A投料控制
M0.0 VD200 VW100 Q0.0
--| |----|<|----| |-----( )--
VD200 VW100 VW110
--|>=|----| |----(MOV_W)--
IN OUT
-- --
1-----VW110
网络6 原料B投料控制
M0.0 VW110 VD204 VW102 Q0.1
--| |----| |----|<|----| |-----( )--
VD204 VW102 VW112
--|>=|----| |----(MOV_W)--
IN OUT
-- --
1-----VW112
网络7 原料C投料控制
M0.0 VW112 VD208 VW104 Q0.2
--| |----| |----|<|----| |-----( )--
VD208 VW104 VW114
--|>=|----| |----(MOV_W)--
IN OUT
-- --
1-----VW114
网络8 搅拌控制
VW114 Q0.3
--| |----+----( )--
| | T37
+----+---(TON)--
IN PT
-- --
VW106 x 10
网络9 出料控制
T37 Q0.4
--| |----+----(S)--
| | N:1
| | T38
+----+---(TON)--
IN PT
-- --
50
T38 Q0.4
--| |--------(R)--
N:1
网络10 数据计算 - 剩余重量
SM0.0 VW100
--| |---+---(SUB_I)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VW100--VD200--VW120
SM0.0 VW102
--| |---+---(SUB_I)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VW102--VD204--VW122
SM0.0 VW104
--| |---+---(SUB_I)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VW104--VD208--VW124
网络11 数据计算 - 总重量和比例
SM0.0 VD200
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD200--VD204--VD300
SM0.0 VD300
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD300--VD208--VD304
SM0.0 VD200
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD200--VW100--VD308
网络12 生产数据记录
T38 VB400
--| |---+---(MOV_B)--
| EN ENO
| IN OUT
| -- --
+---VB400+1--VB400
T38 VD404
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---VD200--VD404
T38 VD408
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---VD204--VD408
网络13 报警处理
VD200 VW130 Q0.5
--|>|----| |-----( )--
T37 VW140
--| |---+---(ADD_I)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VW140--1--VW140
9.4 程序功能说明
网络1:系统启停控制,使用置位复位指令
网络2-4:模拟量采集与转换,将原始值转换为工程值
网络5-7:顺序投料控制,前一种原料完成才开始下一种
网络8:搅拌控制,时间可设定
网络9:出料控制,自动出料5秒
网络10-11:数据计算,包括剩余重量、总重量、比例等
网络12:生产数据记录,记录每次生产的关键数据
网络13:报警处理,超重和超时报警
十、数据采集与处理系统完整程序
10.1 系统参数定义
|
参数区域
|
地址范围
|
功能描述
|
|
采样数据区
|
VD100-VD179
|
存储最近10次采样值(8路×10次)
|
|
滤波结果区
|
VD200-VD207
|
存储8路信号的滤波结果
|
|
统计数据区
|
VD300-VD307
|
存储最大值
|
|
统计数据区
|
VD400-VD407
|
存储最小值
|
|
统计数据区
|
VD500-VD507
|
存储平均值
|
|
报警记录区
|
VD600-VD607
|
存储报警次数
|
10.2 完整梯形图程序
网络1 系统初始化
SM0.1 VB0
--| |---+---(FILL_N)--
| EN ENO
| IN OUT
| N -
+----0----VB0
| 200
SM0.1 VW10
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+----0----VW10
网络2 采样定时
SM0.0 T50
--| |---+---(TON)--
| EN ENO
| IN PT
| -- --
+---SM0.0--100--T50
网络3 通道1数据采集
T50 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW20
T50 VW20
--| |---+---(I_DI)--
| EN ENO
| IN OUT
| -- --
+---VW20---VD24
T50 VD24
--| |---+---(DI_R)--
| EN ENO
| IN OUT
| -- --
+---VD24---VD30
T50 VD30
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD30--320.0--VD100[VW10]
网络4 通道1移动平均滤波
T50 VD200
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+----0.0---VD200
T50 VW40
--| |---+---(FOR)--
| EN ENO
| INDX INIT FINAL
| -- -- --
+---VW40--0---9
T50 VD200
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD200--VD100[VW40]--VD200
NEXT
T50 VD200
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD200--10.0--VD500
网络5 通道1最大值最小值计算
T50 VD100[0]
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---VD100[0]--VD300
T50 VD100[0]
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---VD100[0]--VD400
T50 VW50
--| |---+---(FOR)--
| EN ENO
| INDX INIT FINAL
| -- -- --
+---VW50--1---9
T50 VD100[VW50] VD300 VD300
--| |----|>|----(MOV_R)--
IN OUT
-- --
VD100[VW50]--VD300
T50 VD100[VW50] VD400 VD400
--| |----|<|----(MOV_R)--
IN OUT
-- --
VD100[VW50]--VD400
NEXT
网络6 通道1越限报警处理
VD500 VD600 Q0.0
--|>|----| |-----( )--
VD500 VD610 Q0.1
--|<|----| |-----( )--
VD500 VD600 VD620
--|>|----| |----(INC_W)--
IN OUT
-- --
VD620--VD620
网络7 定时数据存储
T51 VD700
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---VD500--VD700[VW60]
T51 VW60
--| |---+---(INC_W)--
| EN ENO
| IN OUT
| -- --
+---VW60--VW60
VW60 1000 VW60
--|>=|----(MOV_W)--
IN OUT
-- --
0-----VW60
网络8 运行效率计算
T52 VD800
--| |---+---(MUL_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD500--VD810--VD820
T52 VD830
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD820--VD830--VD830
T52 VD840
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD820--VD850--VD860
网络9 通道1标准偏差计算
T53 VD900
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+----0.0---VD900
T53 VW70
--| |---+---(FOR)--
| EN ENO
| INDX INIT FINAL
| -- -- --
+---VW70--0---9
T53 VD910
--| |---+---(SUB_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD100[VW70]--VD500--VD910
T53 VD910
--| |---+---(MUL_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD910--VD910--VD920
T53 VD900
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD900--VD920--VD900
NEXT
T53 VD900
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD900--9.0--VD930
T53 VD930
--| |---+---(SQRT)--
| EN ENO
| IN OUT
| -- --
+---VD930--VD940
10.3 程序功能说明
网络1:系统初始化,清零数据区
网络2:设置采样定时器,100ms采样周期
网络3:通道1数据采集与转换,存储到循环缓冲区
网络4:移动平均滤波,计算10次采样的平均值
网络5:最大值最小值计算,遍历10次采样值
网络6:越限报警处理,超上下限报警并计数
网络7:定时数据存储,循环存储历史数据
网络8:运行效率计算,功率和效率计算
网络9:标准偏差计算,数据稳定性分析
10.4 注意事项
编程注意事项
-
循环缓冲区需要正确管理指针,防止溢出
-
浮点数运算要注意精度问题,避免累积误差
-
FOR循环嵌套不宜过深,避免扫描周期过长
-
报警处理要有防抖动机制,避免误报警
-
数据存储要考虑掉电保持,重要数据要备份
-
多通道处理时,可以复用相同的处理逻辑