一、模拟量处理基础
模拟量处理是工业自动化控制中的重要组成部分,用于采集温度、压力、流量、液位等连续变化的物理量。S7-200 SMART提供了完善的模拟量输入输出功能。
学习目标
-
掌握模拟量输入输出的硬件连接
-
理解模拟量数据的转换原理
-
掌握模拟量数据的滤波处理
-
理解PID控制的基本原理
-
掌握PID指令的编程方法
-
能够设计完整的温度控制系统
1.1 模拟量模块介绍
|
模块型号
|
输入通道
|
输出通道
|
分辨率
|
量程
|
|
EM AE04
|
4路模拟量输入
|
0路
|
12位
|
±10V/0-20mA
|
|
EM AQ02
|
0路
|
2路模拟量输出
|
12位
|
±10V/0-20mA
|
|
EM AM06
|
4路模拟量输入
|
2路模拟量输出
|
12位
|
±10V/0-20mA
|
二、模拟量输入处理(梯形图)
2.1 模拟量数据采集
示例1:温度传感器数据采集
步骤1:硬件连接说明
// 使用PT100温度传感器
// 传感器输出:4-20mA对应0-100℃
// 连接到模拟量输入通道AIW0
步骤2:主程序数据采集
Network 1 // 读取模拟量原始值
SM0.0 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW100
步骤3:转换为工程值(0-100℃)
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
步骤4:显示温度值
Network 5 // 温度显示处理
SM0.0 VD112
--| |---+---(MUL_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD112--10.0--VD116
模拟量转换流程
传感器
4-20mA
→
AIW0
0-32000
→
VW100
整数
→
VD112
0-100℃
2.2 模拟量数据滤波
示例2:移动平均滤波
步骤1:定义滤波数据区
// 使用VD200-VD219存储最近5次采样值
// 指针VW220指向当前存储位置
步骤2:数据存储子程序SBR_0
Network 1 // 存储新数据
SM0.0 VD200[VW220]
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---#New_Value---VD200[VW220]
Network 2 // 更新指针
SM0.0 VW220
--| |---+---(INC_W)--
| EN ENO
| IN OUT
| -- --
+---VW220---VW220
Network 3 // 指针循环
VW220 5 VW220
--|>=|----(MOV_W)--
IN OUT
-- --
0-----VW220
步骤3:移动平均计算子程序SBR_1
Network 1 // 清零累加和
SM0.0 #Sum
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+----0.0----#Sum
Network 2 // 循环累加
SM0.0 VW230
--| |---+---(FOR)--
| EN ENO
| INDX INIT FINAL
| -- -- --
+---VW230--0---4
SM0.0 #Sum
--| |---+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---#Sum--VD200[VW230]--#Sum
NEXT
Network 3 // 计算平均值
SM0.0 #Sum
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---#Sum--5.0--#Average
三、模拟量输出控制(梯形图)
3.1 模拟量输出控制
示例3:调节阀控制
步骤1:控制信号计算
Network 1 // 读取设定值
I0.0 VD300
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---50.0---VD300
Network 2
I0.1 VD300
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---80.0---VD300
步骤2:转换为输出值(0-32000)
Network 3 // 计算输出值
SM0.0 VD300
--| |---+---(MUL_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD300--320.0--VD304
Network 4 // 实数转双整数
SM0.0 VD304
--| |---+---(ROUND)--
| EN ENO
| IN OUT
| -- --
+---VD304---VD308
Network 5 // 双整数转整数
SM0.0 VD308
--| |---+---(DI_I)--
| EN ENO
| IN OUT
| -- --
+---VD308---VW312
步骤3:输出到模拟量通道
Network 6 // 输出控制信号
SM0.0 AQW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---VW312---AQW0
四、PID控制基础
4.1 PID控制原理
PID(比例-积分-微分)控制器是最常用的反馈控制器,由三个部分组成:
|
控制项
|
作用
|
数学表达式
|
对系统的影响
|
|
比例(P)
|
纠正当前误差
|
Kp × e(t)
|
加快响应速度,过大导致超调
|
|
积分(I)
|
消除稳态误差
|
Ki × ∫e(t)dt
|
消除余差,过大会导致振荡
|
|
微分(D)
|
预测未来趋势
|
Kd × de(t)/dt
|
抑制超调,改善稳定性
|
PID控制器输出公式
u(t) = Kp × e(t) + Ki × ∫e(t)dt + Kd × de(t)/dt
其中:u(t)为控制器输出,e(t)为误差(设定值-实际值)
4.2 PID回路表
S7-200 SMART使用PID回路表存储控制参数,每个PID指令需要一个唯一的回路表地址。
|
偏移地址
|
字段名
|
格式
|
类型
|
说明
|
|
0
|
过程变量(PVn)
|
实数
|
输入
|
必须在0.0-1.0之间
|
|
4
|
设定值(SPn)
|
实数
|
输入
|
必须在0.0-1.0之间
|
|
8
|
输出值(Mn)
|
实数
|
输入/输出
|
必须在0.0-1.0之间
|
|
12
|
增益(Kc)
|
实数
|
输入
|
比例常数,可正可负
|
|
16
|
采样时间(Ts)
|
实数
|
输入
|
单位为秒,必须为正数
|
|
20
|
积分时间(Ti)
|
实数
|
输入
|
单位为分钟,必须为正数
|
|
24
|
微分时间(Td)
|
实数
|
输入
|
单位为分钟,必须为正数
|
五、PID控制编程实例(梯形图)
5.1 基本PID控制
示例4:温度PID控制
步骤1:初始化PID回路表
Network 1 // 首次扫描初始化
SM0.1 VD400
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---0.5----VD400
Network 2
SM0.1 VD404
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---0.8----VD404
Network 3
SM0.1 VD408
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+----0.0---VD408
Network 4
SM0.1 VD412
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---2.0----VD412
Network 5
SM0.1 VD416
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---0.1----VD416
Network 6
SM0.1 VD420
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---0.5----VD420
Network 7
SM0.1 VD424
--| |---+---(MOV_R)--
| EN ENO
| IN OUT
| -- --
+---0.1----VD424
步骤2:读取过程变量并归一化
Network 8 // 读取温度值
SM0.0 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW430
Network 9 // 转换为实数
SM0.0 VW430
--| |---+---(I_DI)--
| EN ENO
| IN OUT
| -- --
+---VW430---VD434
Network 10
SM0.0 VD434
--| |---+---(DI_R)--
| EN ENO
| IN OUT
| -- --
+---VD434---VD438
Network 11 // 归一化到0.0-1.0
SM0.0 VD438
--| |---+---(DIV_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD438--32000.0--VD400
步骤3:执行PID计算
Network 12 // PID指令
SM0.0
--| |-----(PID)--
TBL LOOP
-- --
VD400 0
步骤4:输出控制信号
Network 13 // 反归一化输出
SM0.0 VD408
--| |---+---(MUL_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD408--32000.0--VD442
Network 14
SM0.0 VD442
--| |---+---(ROUND)--
| EN ENO
| IN OUT
| -- --
+---VD442---VD446
Network 15
SM0.0 VD446
--| |---+---(DI_I)--
| EN ENO
| IN OUT
| -- --
+---VD446---VW450
Network 16
SM0.0 AQW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---VW450---AQW0
5.2 多回路PID控制
示例5:三回路温度控制
步骤1:定义回路表
// 回路1:VD500-VD527
// 回路2:VD600-VD627
// 回路3:VD700-VD727
步骤2:多回路PID控制子程序SBR_2
Network 1 // 读取三个温度
SM0.0 AIW0
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW0---VW10
SM0.0 AIW2
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW2---VW12
SM0.0 AIW4
--| |---+---(MOV_W)--
| EN ENO
| IN OUT
| -- --
+---AIW4---VW14
Network 2 // 执行三个PID回路
SM0.0
--| |-----(PID)--
TBL LOOP
-- --
VD500 0
SM0.0
--| |-----(PID)--
TBL LOOP
-- --
VD600 1
SM0.0
--| |-----(PID)--
TBL LOOP
-- --
VD700 2
5.3 PID参数自整定
示例6:PID参数在线调整
步骤1:在线修改PID参数
Network 1 // 增加比例增益
I0.2 VD412
--|P|----+---(ADD_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD412--0.1--VD412
Network 2 // 减小比例增益
I0.3 VD412
--|P|----+---(SUB_R)--
| EN ENO
| IN1 IN2 OUT
| -- -- --
+---VD412--0.1--VD412
步骤2:PID参数限幅
Network 3 // 比例增益限幅
VD412 5.0 VD412
--|>|----(MOV_R)--
IN OUT
-- --
5.0----VD412
Network 4
VD412 0.1 VD412
--|<|----(MOV_R)--
IN OUT
-- --
0.1----VD412
六、综合应用案例
6.1 案例一:恒温箱控制系统
系统设计要求:
-
温度控制范围:室温~150℃
-
控制精度:±1℃
-
加热功率:3kW,可控硅调功控制
-
温度传感器:PT100,4-20mA输出
-
报警功能:超温报警、传感器故障报警
-
控制方式:PID自动控制,手动/自动切换
-
显示功能:实时温度、设定温度、控制输出
控制系统I/O分配:
|
信号
|
地址
|
功能
|
|
温度输入
|
AIW0
|
PT100温度传感器
|
|
控制输出
|
AQW0
|
可控硅调功信号
|
|
启动按钮
|
I0.0
|
系统启动
|
|
停止按钮
|
I0.1
|
系统停止
|
|
手动/自动
|
I0.2
|
切换控制模式
|
程序设计要点:
1. 模拟量输入滤波处理
2. PID回路参数整定
3. 手动/自动无扰切换
4. 超温报警处理
5. 输出限幅保护
6.2 案例二:液位控制系统
系统设计要求:
-
液位控制范围:0-5米
-
控制精度:±0.05米
-
输入信号:差压变送器4-20mA
-
输出信号:调节阀4-20mA
-
控制方式:PID串级控制
-
安全保护:高低液位报警、联锁保护
串级控制结构:
串级PID控制框图
主回路
PID1
→
副回路
PID2
→
调节阀
→
液位
测量
七、课后练习
练习题目
练习1:温度控制系统编程
根据以下要求编写温度控制系统程序:
-
使用PT100传感器,量程0-200℃
-
PID控制,参数:Kp=2.5, Ti=0.3, Td=0.1
-
采样时间0.2秒
-
控制输出0-100%对应加热功率
-
超温报警(>180℃),低温报警(<20℃)
-
手动/自动切换功能
练习2:压力控制系统设计
设计一个压力控制系统,要求:
-
压力范围:0-1.0MPa
-
使用压力变送器4-20mA输入
-
调节阀4-20mA输出控制
-
实现PID控制,具有抗积分饱和功能
-
压力高报警、压力低报警
-
压力变化率限制功能
练习3:流量比值控制
设计一个流量比值控制系统:
-
主流量F1测量,副流量F2控制
-
比值系数K可设定,F2 = K × F1
-
使用两个流量计,两个调节阀
-
实现比值PID控制
-
比值超限报警
-
流量累积计算功能
八、课程总结
8.1 重点回顾
本课核心知识点
-
模拟量输入处理:数据采集、滤波、归一化
-
模拟量输出控制:反归一化、输出控制
-
PID控制原理:比例、积分、微分作用
-
PID指令使用:回路表配置、参数设置
-
高级控制功能:多回路、串级、比值控制
-
工程实践:温度、压力、流量控制应用
8.2 学习建议
1. 先从简单的模拟量采集开始练习
2. 掌握数据转换的各个步骤
3. 理解PID控制的基本原理
4. 通过实际项目练习参数整定
5. 注意工程实践中的安全保护