计算机在控制与监测系统中的应用超详细解析

🌈 say-fall:个人主页 🚀 专栏:《手把手教你学会C++》 | 《系统深入Linux操作系统》 | 《数据结构与算法》 | 《小游戏与项目》 💪 格言:做好你自己,才能吸引更多人,与他们共赢,这才是最好的成长方式。
📝 前言
学微机原理一路走来,我们从CPU体系结构学到存储器,从可编程并行接口8255学到中断控制器8259A,从定时/计数器8253学到A/D和D/A转换器......每一章都是一个"零件"。但你有没有想过------这些零件拼在一起,能做什么?
答案就是:让计算机去控制真实的物理世界。温度太高了就减小加热功率,车流量少了就切换红绿灯,心率异常了就发出预警------这些都是计算机控制系统在做的事。本章就是前面所有接口技术的"大合体",是微机原理课程的最终落脚点。
不过控制系统涉及的知识面确实广:开环与闭环的区别、PID控制算法、中断驱动的实时控制程序、嵌入式低功耗设计......单看每个概念都不难,但要融会贯通成一个完整的系统,确实需要一条清晰的线索。本文从"计算机控制的三个基本步骤"出发,先讲开环控制(交通灯),再讲闭环控制(锅炉温度+PID),最后延伸到嵌入式可穿戴监测,把知识点串成一条线。
通过本文,你将掌握:
| 技能 | 应用场景 |
|---|---|
| 计算机控制的三个基本步骤和系统组成 | 理解任何控制系统的基本框架 |
| 开环控制系统的设计方法(以交通灯为例) | 设计不需要反馈的定时控制/顺序控制系统 |
| 闭环控制系统的设计方法(以锅炉温度为例) | 设计有反馈的高精度控制系统 |
| PID控制算法的原理和数字实现 | 工业过程控制中的核心算法编程 |
| 可穿戴监测系统的架构和关键技术 | 嵌入式系统综合设计 |
📌 前置知识: 本文假设你已经掌握8255并行接口、8259A中断控制器、8253定时器、ADC0809和DAC0832的基本原理和编程方法,以及8086汇编语言的基本语法。
文章目录
- `计算机`在控制与监测系统中的应用超详细解析
-
- [📝 前言](#📝 前言)
- [一、🗺️ 计算机控制系统概述](#一、🗺️ 计算机控制系统概述)
-
- [1.1 🔄 计算机控制的基本过程](#1.1 🔄 计算机控制的基本过程)
-
- [1.1.1 实时数据采集](#1.1.1 实时数据采集)
- [1.1.2 实时决策](#1.1.2 实时决策)
- [1.1.3 实时控制](#1.1.3 实时控制)
- [1.2 🧩 计算机控制系统的基本组成](#1.2 🧩 计算机控制系统的基本组成)
-
- [1.2.1 硬件组成](#1.2.1 硬件组成)
-
- [1. 微机系统](#1. 微机系统)
- [2. 输入接口电路](#2. 输入接口电路)
- [3. 输出接口电路](#3. 输出接口电路)
- [4. 外部设备](#4. 外部设备)
- [1.2.2 软件组成](#1.2.2 软件组成)
- [1.3 📂 计算机控制系统的分类](#1.3 📂 计算机控制系统的分类)
- [二、🚦 微机在开环控制系统中的应用](#二、🚦 微机在开环控制系统中的应用)
-
- [2.1 开环控制系统的基本原理](#2.1 开环控制系统的基本原理)
-
- [2.1.1 定义](#2.1.1 定义)
- [2.1.2 基本结构](#2.1.2 基本结构)
- [2.1.3 特点](#2.1.3 特点)
- [2.2 🚥 典型应用:十字路口交通灯动态控制系统](#2.2 🚥 典型应用:十字路口交通灯动态控制系统)
-
- [2.2.1 系统功能要求](#2.2.1 系统功能要求)
-
- [1. 正常模式](#1. 正常模式)
- [2. 车流量检测模式](#2. 车流量检测模式)
- [3. 紧急车辆模式](#3. 紧急车辆模式)
- [2.2.2 灯色状态编码](#2.2.2 灯色状态编码)
- [2.2.3 硬件电路设计](#2.2.3 硬件电路设计)
-
- [1. 8255端口分配](#1. 8255端口分配)
- [2. 8259A中断分配](#2. 8259A中断分配)
- [2.2.4 软件设计](#2.2.4 软件设计)
-
- [1. 主程序流程](#1. 主程序流程)
- [2. 定时器中断服务程序](#2. 定时器中断服务程序)
- [3. 车流量检测中断服务程序](#3. 车流量检测中断服务程序)
- [4. 紧急车辆中断服务程序](#4. 紧急车辆中断服务程序)
- [三、🌡️ 微机在闭环控制系统中的应用](#三、🌡️ 微机在闭环控制系统中的应用)
-
- [3.1 闭环控制系统的基本原理](#3.1 闭环控制系统的基本原理)
-
- [3.1.1 定义](#3.1.1 定义)
- [3.1.2 基本结构](#3.1.2 基本结构)
- [3.1.3 特点](#3.1.3 特点)
- [3.2 ⚙️ 过程控制与PID控制算法](#3.2 ⚙️ 过程控制与PID控制算法)
-
- [3.2.1 PID控制的基本原理](#3.2.1 PID控制的基本原理)
- [3.2.2 三种控制作用的特点](#3.2.2 三种控制作用的特点)
-
- [1️⃣ 比例控制(P)](#1️⃣ 比例控制(P))
- [2️⃣ 积分控制(I)](#2️⃣ 积分控制(I))
- [3️⃣ 微分控制(D)](#3️⃣ 微分控制(D))
- [3.2.3 数字PID控制算法](#3.2.3 数字PID控制算法)
-
- [1️⃣ 位置式PID算法](#1️⃣ 位置式PID算法)
- [2️⃣ 增量式PID算法](#2️⃣ 增量式PID算法)
- [3.3 🔥 典型应用:锅炉温度闭环控制系统](#3.3 🔥 典型应用:锅炉温度闭环控制系统)
-
- [3.3.1 系统功能要求](#3.3.1 系统功能要求)
- [3.3.2 硬件电路设计](#3.3.2 硬件电路设计)
-
- [1. 温度检测与信号调理](#1. 温度检测与信号调理)
- [2. A/D转换电路](#2. A/D转换电路)
- [3. D/A转换与驱动电路](#3. D/A转换与驱动电路)
- [4. 8255端口分配](#4. 8255端口分配)
- [3.3.3 软件设计](#3.3.3 软件设计)
-
- [1. 主程序流程](#1. 主程序流程)
- [2. A/D转换子程序](#2. A/D转换子程序)
- [3. 增量式PID控制算法子程序](#3. 增量式PID控制算法子程序)
- [4. D/A输出子程序](#4. D/A输出子程序)
- [四、⌚ 嵌入式技术在可穿戴监测系统中的应用](#四、⌚ 嵌入式技术在可穿戴监测系统中的应用)
-
- [4.1 📋 可穿戴式健康监测系统概述](#4.1 📋 可穿戴式健康监测系统概述)
-
- [4.1.1 系统基本功能](#4.1.1 系统基本功能)
- [4.1.2 系统总体架构](#4.1.2 系统总体架构)
-
- [1. 感知层](#1. 感知层)
- [2. 网络层](#2. 网络层)
- [3. 应用层](#3. 应用层)
- [4.2 🔑 关键技术](#4.2 🔑 关键技术)
-
- [4.2.1 数据采集技术](#4.2.1 数据采集技术)
- [4.2.2 嵌入式技术](#4.2.2 嵌入式技术)
- [4.2.3 无线通信技术](#4.2.3 无线通信技术)
- [4.2.4 数据分析与处理技术](#4.2.4 数据分析与处理技术)
- [4.3 📱 典型应用:微型可穿戴多生理参数记录装置](#4.3 📱 典型应用:微型可穿戴多生理参数记录装置)
-
- [4.3.1 硬件架构](#4.3.1 硬件架构)
-
- [1. SoC核心模块](#1. SoC核心模块)
- [2. 信号采集模块](#2. 信号采集模块)
- [3. 数据存储模块](#3. 数据存储模块)
- [4. 蓝牙通信模块](#4. 蓝牙通信模块)
- [5. 电源模块](#5. 电源模块)
- [4.3.2 软件设计](#4.3.2 软件设计)
- [4.3.3 总体工作流程](#4.3.3 总体工作流程)
- [4.3.4 低功耗设计](#4.3.4 低功耗设计)
- [五、🎯 学习重点与综合应用](#五、🎯 学习重点与综合应用)
-
- [5.1 学习重点](#5.1 学习重点)
-
- [1. 基本概念](#1. 基本概念)
- [2. 系统设计](#2. 系统设计)
- [3. 控制算法](#3. 控制算法)
- [4. 嵌入式应用](#4. 嵌入式应用)
- [5.2 综合应用能力要求](#5.2 综合应用能力要求)
- [5.3 实际应用中的注意事项](#5.3 实际应用中的注意事项)
- [六、🤔 几个思考题](#六、🤔 几个思考题)
-
- [1️⃣ 开环控制和闭环控制最本质的区别是什么?请各举一个生活中的例子。](#1️⃣ 开环控制和闭环控制最本质的区别是什么?请各举一个生活中的例子。)
- [2️⃣ 为什么增量式PID比位置式PID更适合实际工程应用?](#2️⃣ 为什么增量式PID比位置式PID更适合实际工程应用?)
- [3️⃣ 在锅炉温度闭环控制系统中,如果PID参数中的Kp设置过大,会出现什么现象?如何解决?](#3️⃣ 在锅炉温度闭环控制系统中,如果PID参数中的Kp设置过大,会出现什么现象?如何解决?)
一、🗺️ 计算机控制系统概述
计算机控制系统是利用计算机实现对工业生产过程或设备的自动控制,它将计算机技术与自动控制理论相结合,具有精度高、速度快、灵活性强、可靠性高等优点,广泛应用于工业、农业、交通、医疗等各个领域。
1.1 🔄 计算机控制的基本过程
计算机控制过程本质上是一个实时数据采集 → 实时决策 → 实时控制的循环过程,分为三个基本步骤:
1.1.1 实时数据采集
- 功能:对被控对象的各个参数进行实时检测和输入
- 被控参数:温度、压力、流量、液位、速度、位移等物理量
- 实现方式:通过传感器将物理量转换为电信号,再通过A/D转换器转换为数字量输入计算机
- 实时性要求:必须在规定的时间内完成数据采集,否则数据将失去意义
1.1.2 实时决策
- 功能:对采集到的被控参数进行分析和处理,按照预先设定的控制规律计算出控制量
- 控制规律:可以是简单的逻辑判断,也可以是复杂的控制算法(如PID、模糊控制、神经网络控制等)
- 决策依据 :给定值(设定值)与反馈值(实际值)的偏差
1.1.3 实时控制
- 功能:根据决策结果,适时向执行机构发出控制信号,调节被控对象的状态
- 实现方式:通过D/A转换器将数字控制量转换为模拟信号,或直接输出数字信号,驱动执行机构动作
- 实时性要求:必须在规定的时间内输出控制信号,否则将影响控制效果
💡 三个步骤形成一个不断循环的"感知→思考→行动"闭环:采集是"看",决策是"想",控制是"做"。周而复始,永不停歇------这就是计算机控制的本质。
1.2 🧩 计算机控制系统的基本组成
一个完整的计算机控制系统由硬件 和软件两大部分组成。
1.2.1 硬件组成
硬件系统由微机系统 、接口电路 和外部设备三部分组成:
1. 微机系统
- 核心:微处理器(CPU)、存储器(RAM、ROM)
- 功能:运行控制程序,完成数据采集、运算、决策和控制输出
- 特点:实时性强、可靠性高、抗干扰能力强
2. 输入接口电路
输入接口电路负责将外部设备的信号转换为计算机能识别的数字信号:
- 脉冲计数器:接收脉冲传感器的输出信号,用于测量转速、流量等
- A/D转换器:将模拟量传感器输出的模拟电压转换为数字量
- 放大电路:放大数字量传感器输出的微弱信号
- 电压转换:将开关量输入信号转换为计算机能接受的电平信号
3. 输出接口电路
输出接口电路负责将计算机输出的数字信号转换为能驱动外部设备的信号:
- D/A转换器:将数字控制量转换为模拟电压或电流信号
- 放大电路:放大数字量输出信号,提高驱动能力
- 电压转换:将计算机输出的电平信号转换为执行机构能接受的电平信号
- 脉冲计数器:输出脉冲信号,用于控制步进电机等
4. 外部设备
- 输入设备:传感器、变送器、开关、按钮等
- 输出设备:执行机构,如电机、阀门、继电器、指示灯等
1.2.2 软件组成
软件系统是计算机控制系统的灵魂,决定了系统的功能和性能:
- 系统软件:操作系统、监控程序、诊断程序等
- 应用软件:数据采集程序、控制算法程序、输出控制程序、人机交互程序等
1.3 📂 计算机控制系统的分类
根据控制方式的不同,计算机控制系统主要分为两大类:
- 开环控制系统:没有反馈环节,输出量不影响控制过程
- 闭环控制系统:有反馈环节,输出量反馈到输入端,与给定值比较,根据偏差进行控制
💡 开环和闭环的区别可以用一句话概括:开环是"只管发命令,不管效果如何";闭环是"发了命令之后,还要检查效果,不行就调整"。就像你扔飞镖------闭着眼睛扔是开环,睁开眼睛看偏差再调整就是闭环。
二、🚦 微机在开环控制系统中的应用
2.1 开环控制系统的基本原理
2.1.1 定义
开环控制系统是指系统的输出量不反馈到输入端,不影响控制过程的控制系统。执行机构根据控制装置发出的一系列控制命令执行相应的操作,但执行结果不返回去与控制命令相核对。
2.1.2 基本结构
开环控制系统由控制器 、执行机构 和被控对象三部分组成:
输入命令 → 控制器 → 执行机构 → 被控对象 → 输出结果
2.1.3 特点
- 优点:结构简单,成本低;调试容易,工作可靠;不存在稳定性问题
- 缺点:无法自动修正输出误差;抗干扰能力差;控制精度取决于控制器和执行机构的精度
- 适用场景:对控制精度要求不高的场合;干扰小、输入输出关系固定的场合;无法或难以获得反馈信号的场合
2.2 🚥 典型应用:十字路口交通灯动态控制系统
交通灯控制系统是最典型的开环控制系统之一。下面我们将详细设计一个具有多种工作模式的智能交通灯控制系统。
2.2.1 系统功能要求
设计一个十字路口交通灯控制系统,具有以下三种工作模式:
1. 正常模式
交通灯按固定时间规律循环切换:
- 南北绿灯亮,东西红灯亮,持续90秒
- 南北黄灯闪烁4次(每次亮0.5秒,灭0.5秒),东西红灯继续亮,共持续4秒
- 南北红灯亮,东西绿灯亮,持续90秒
- 南北红灯继续亮,东西黄灯闪烁4次,共持续4秒
- 循环上述过程,直到有任意键按下退出
2. 车流量检测模式
利用车辆检测器监测路口的车流量,实现智能切换:
- 当某一方向绿灯期间车辆已全部通过,且随后5秒内无车辆继续通过
- 同时另一方向有车辆等待
- 则提前结束当前绿灯,切换为黄灯闪烁,然后切换到另一方向绿灯
3. 紧急车辆模式
当有紧急车辆(如救护车、消防车、警车)通过时:
- 四个方向全部亮红灯,其他车辆暂停行驶
- 紧急车辆通过后,自动恢复之前的灯色状态
2.2.2 灯色状态编码
定义5种灯色状态,用6位二进制数表示南北和东西方向的红、黄、绿灯状态(1表示亮,0表示灭):
| 状态编号 | 南北绿 | 南北黄 | 南北红 | 东西绿 | 东西黄 | 东西红 | 编码 | 说明 |
|---|---|---|---|---|---|---|---|---|
| Z1 | 1 | 0 | 0 | 0 | 0 | 1 | 21H | 南北绿,东西红 |
| Z2 | 0 | X | 0 | 0 | 0 | 1 | 01H/05H | 南北黄灯闪,东西红 |
| Z3 | 0 | 0 | 1 | 1 | 0 | 0 | 0CH | 南北红,东西绿 |
| Z4 | 0 | 0 | 1 | 0 | X | 0 | 04H/0CH | 南北红,东西黄灯闪 |
| Z5 | 0 | 0 | 1 | 0 | 0 | 1 | 05H | 全红 |
说明:黄灯闪烁时,黄灯位交替为0和1,其他位保持不变。
2.2.3 硬件电路设计
系统采用8088微处理器作为控制核心,使用8255 作为并行接口,8259A作为中断控制器。
1. 8255端口分配
- PA口:输入口,PA0接南北方向车辆检测器SN,PA1接东西方向车辆检测器EW
- PB口:输出口,PB0~PB5分别接GSN、YSN、RSN、GEW、YEW、REW,控制交通灯
- PC口 :
- PC0~PC2:输入口,接电子开关,用于手动控制
- PC3~PC5:输出口,接电子开关,控制交通灯电源
- PC6:输入口,接紧急车辆检测器SOS
2. 8259A中断分配
- IR0:定时器中断,用于定时(如1秒定时)
- IR1:南北方向车辆检测中断
- IR2:东西方向车辆检测中断
- IR3:紧急车辆检测中断
⚠️ 交通灯控制是典型的"开环控制+中断增强"------正常模式按固定时序循环,属于开环;车流量检测和紧急车辆处理用中断来"打补丁",提高了系统的智能性,但核心仍然是时序驱动。
2.2.4 软件设计
系统软件采用模块化设计,主要包括以下模块:
- 初始化模块:初始化8255、8259A、定时器
- 正常模式控制模块:实现固定时间的灯色切换
- 车流量检测模块:检测车辆通行情况
- 紧急车辆处理模块:处理紧急车辆请求
- 延时模块:实现精确延时
1. 主程序流程
开始
初始化8255、8259A、定时器
设置中断向量
开中断
初始化灯色状态为Z1(南北绿,东西红)
启动90秒定时器
LOOP:
检查是否有按键按下
有则退出
无则继续循环
结束
2. 定时器中断服务程序
定时器每1秒产生一次中断,用于计时和灯色切换:
asm
TIMER_INT PROC FAR
PUSH AX
PUSH BX
INC TIME_CNT ; 秒计数器加1
; 判断当前状态
CMP STATE, 0 ; 状态0:南北绿灯
JZ STATE0
CMP STATE, 1 ; 状态1:南北黄灯闪烁
JZ STATE1
CMP STATE, 2 ; 状态2:东西绿灯
JZ STATE2
CMP STATE, 3 ; 状态3:东西黄灯闪烁
JZ STATE3
STATE0:
CMP TIME_CNT, 90 ; 90秒到?
JNZ EXIT
MOV TIME_CNT, 0
MOV STATE, 1 ; 切换到南北黄灯闪烁
MOV BLINK_CNT, 0 ; 闪烁计数器清零
JMP EXIT
STATE1:
INC BLINK_CNT
; 黄灯闪烁:每1秒翻转一次
TEST BLINK_CNT, 1
JZ YELLOW_ON
MOV AL, 01H ; 黄灯灭
JMP OUTPUT
YELLOW_ON:
MOV AL, 05H ; 黄灯亮
OUTPUT:
OUT PORT_B, AL
CMP BLINK_CNT, 8 ; 闪烁4次(8个半秒)
JNZ EXIT
MOV TIME_CNT, 0
MOV STATE, 2 ; 切换到东西绿灯
MOV AL, 0CH
OUT PORT_B, AL
JMP EXIT
STATE2:
; 类似STATE0,90秒后切换到东西黄灯闪烁
STATE3:
; 类似STATE1,闪烁4次后切换到南北绿灯
EXIT:
; 发送EOI命令
MOV AL, 20H
OUT 20H, AL
POP BX
POP AX
IRET
TIMER_INT ENDP
3. 车流量检测中断服务程序
当某一方向绿灯期间车辆全部通过时,触发中断,提前切换灯色:
asm
SN_INT PROC FAR
PUSH AX
; 只有在南北绿灯状态下才处理
CMP STATE, 0
JNZ EXIT
; 启动5秒定时器
MOV SN_TIMER, 5
EXIT:
MOV AL, 20H
OUT 20H, AL
POP AX
IRET
SN_INT ENDP
4. 紧急车辆中断服务程序
当检测到紧急车辆时,触发中断,切换为全红状态:
asm
SOS_INT PROC FAR
PUSH AX
PUSH BX
; 保存当前状态和时间
MOV OLD_STATE, STATE
MOV OLD_TIME, TIME_CNT
; 切换为全红状态
MOV STATE, 4
MOV AL, 05H
OUT PORT_B, AL
; 等待紧急车辆通过(这里用延时模拟)
CALL DELAY_10S
; 恢复之前的状态
MOV STATE, OLD_STATE
MOV TIME_CNT, OLD_TIME
; 输出恢复后的灯色
CALL OUTPUT_STATE
EXIT:
MOV AL, 20H
OUT 20H, AL
POP BX
POP AX
IRET
SOS_INT ENDP
三、🌡️ 微机在闭环控制系统中的应用
3.1 闭环控制系统的基本原理
3.1.1 定义
闭环控制系统也叫反馈控制系统 ,是指将输出信号的一部分或全部反送回系统的输入端,与原输入信息进行比较,再将比较的结果施加于系统进行控制的控制系统。
3.1.2 基本结构
闭环控制系统由给定值 、比较器 、控制器 、执行机构 、被控对象 和反馈环节六部分组成:
给定值 → 比较器 → 控制器 → 执行机构 → 被控对象 → 输出量
↑ ↓
└───── 反馈环节 ──────┘
3.1.3 特点
- 优点:能自动修正输出误差,控制精度高;抗干扰能力强;系统稳定性好
- 缺点:结构复杂,成本高;调试困难;存在稳定性问题
- 适用场景:对控制精度要求高的场合;干扰大、参数变化大的场合;大多数工业过程控制系统
3.2 ⚙️ 过程控制与PID控制算法
过程控制是针对流程工业(如化工、石油、电力、冶金等)的特点而构成的自动控制系统,主要用于控制温度、压力、流量、液位等连续变化的物理量。PID控制是过程控制中应用最广泛、最成熟的控制算法。
3.2.1 PID控制的基本原理
PID是**比例(Proportional)、积分(Integral)、微分(Derivative)**控制的简称,它根据给定值与反馈值的偏差,通过比例、积分、微分三种控制作用的组合,计算出控制量,对被控对象进行控制。
PID控制的数学表达式为:
u ( t ) = K p e ( t ) + 1 T i ∫ 0 t e ( τ ) d τ + T d d e ( t ) d t u(t) = K_p \left e(t) + \\frac{1}{T_i} \\int_0\^t e(\\tau) d\\tau + T_d \\frac{de(t)}{dt} \\right u(t)=Kpe(t)+Ti1∫0te(τ)dτ+Tddtde(t)
其中:
- u ( t ) u(t) u(t):控制器输出
- e ( t ) e(t) e(t):偏差, e ( t ) = r ( t ) − c ( t ) e(t) = r(t) - c(t) e(t)=r(t)−c(t)(给定值 - 反馈值)
- K p K_p Kp:比例系数
- T i T_i Ti:积分时间常数
- T d T_d Td:微分时间常数
3.2.2 三种控制作用的特点
1️⃣ 比例控制(P)
- 作用:成比例地反映系统的偏差,偏差一旦产生,控制器立即产生控制作用,减小偏差
- 特点 :反应快,控制及时;但存在静差 (稳态误差); K p K_p Kp越大,静差越小,但系统稳定性越差
2️⃣ 积分控制(I)
- 作用:对偏差进行积分,只要存在偏差,积分作用就会不断积累,输出控制量,直到偏差为零
- 特点 :能消除静差;但积分作用太强会使系统超调量增大,稳定性下降;积分作用滞后,响应慢
3️⃣ 微分控制(D)
- 作用:反映偏差的变化率,能在偏差变化之前,提前产生修正作用
- 特点 :能改善系统的动态性能,减小超调量,缩短调节时间;但对干扰敏感,容易引入噪声;不能单独使用,必须与比例或比例积分结合使用
💡 P、I、D三种作用各有分工:P管"当前偏差"------有错就纠;I管"历史偏差"------有错就累积,直到归零;D管"未来趋势"------发现偏差在变大,提前刹车。三者组合,就是PID。
3.2.3 数字PID控制算法
在计算机控制系统中,PID控制是通过软件实现的,需要将连续的PID公式离散化,得到数字PID控制算法。
1️⃣ 位置式PID算法
u ( k ) = K p ⋅ e ( k ) + K i ∑ i = 0 k e ( i ) + K d ⋅ e ( k ) − e ( k − 1 ) u(k) = K_p \cdot e(k) + K_i \sum_{i=0}^{k} e(i) + K_d \cdot e(k) - e(k-1) u(k)=Kp⋅e(k)+Kii=0∑ke(i)+Kd⋅e(k)−e(k−1)
其中:
- u ( k ) u(k) u(k):第k次采样时刻的控制器输出
- e ( k ) e(k) e(k):第k次采样时刻的偏差
- K i = K p ⋅ T / T i K_i = K_p \cdot T / T_i Ki=Kp⋅T/Ti:积分系数
- K d = K p ⋅ T d / T K_d = K_p \cdot T_d / T Kd=Kp⋅Td/T:微分系数
- T T T:采样周期
特点:
- 输出的是控制量的绝对值
- 计算量大,需要累加所有历史偏差
- 误动作影响大
2️⃣ 增量式PID算法
Δ u ( k ) = K p ⋅ e ( k ) − e ( k − 1 ) + K i ⋅ e ( k ) + K d ⋅ e ( k ) − 2 e ( k − 1 ) + e ( k − 2 ) \Delta u(k) = K_p \cdot e(k) - e(k-1) + K_i \cdot e(k) + K_d \cdot e(k) - 2e(k-1) + e(k-2) Δu(k)=Kp⋅e(k)−e(k−1)+Ki⋅e(k)+Kd⋅e(k)−2e(k−1)+e(k−2)
u ( k ) = u ( k − 1 ) + Δ u ( k ) u(k) = u(k-1) + \Delta u(k) u(k)=u(k−1)+Δu(k)
特点:
- 输出的是控制量的增量
- 计算量小,不需要累加历史偏差
- 误动作影响小
- 容易实现手动/自动无扰动切换
- 是目前应用最广泛的数字PID算法
位置式 vs 增量式对比:
| 对比项 | 位置式PID | 增量式PID |
|---|---|---|
| 输出 | 控制量绝对值 | 控制量增量 |
| 计算量 | 大(需累加历史偏差) | 小(只需最近3次偏差) |
| 误动作影响 | 大 | 小 |
| 手动/自动切换 | 需要特殊处理 | 天然支持无扰动切换 |
| 应用 | 较少 | 主流 |
⚠️ 增量式PID之所以更受欢迎,核心在于"增量"二字------每次只输出变化量,万一程序出了bug输出了一个错误的值,也只是一次"小错误",不会导致控制量突变。而位置式直接输出绝对值,一旦出错可能直接让系统失控。
3.3 🔥 典型应用:锅炉温度闭环控制系统
锅炉是工业生产中常用的设备,炉温控制是锅炉运行的关键。下面我们设计一个基于微机的锅炉温度闭环控制系统。
3.3.1 系统功能要求
- 控制锅炉温度在设定值附近(如800℃±5℃)
- 当温度低于下限MIN时,增加加热功率
- 当温度高于上限MAX时,减小加热功率
- 采用PID控制算法,提高控制精度和稳定性
3.3.2 硬件电路设计
系统采用8088微处理器作为控制核心,使用8255 作为并行接口,ADC0809 作为A/D转换器,DAC0832作为D/A转换器。
1. 温度检测与信号调理
- 温度传感器:采用热电偶,将温度转换为毫伏级电压信号
- 信号调理电路:将热电偶输出的微弱信号放大到ADC0809的输入范围(0~5V),并进行冷端补偿和滤波
2. A/D转换电路
- 采用ADC0809,8位分辨率,转换时间约100μs
- 温度信号接IN0通道
- 8255的PC0输出ALE和START信号,PC1输入EOC状态,PC2输出OE信号
3. D/A转换与驱动电路
- 采用DAC0832,8位分辨率,单缓冲模式
- 输出电压经放大后,控制晶闸管的导通角,从而控制加热功率
4. 8255端口分配
- PA口:输入口,读取ADC0809的转换结果
- PB口:输出口,接DAC0832的数据输入端
- PC口 :
- PC0:输出,ADC0809的ALE和START
- PC1:输入,ADC0809的EOC
- PC2:输出,ADC0809的OE
3.3.3 软件设计
系统软件主要包括数据采集、PID控制算法和控制输出三个模块。
1. 主程序流程
开始
初始化8255、ADC0809、DAC0832
初始化PID参数(Kp, Ki, Kd)
设定温度给定值SET_TEMP
LOOP:
启动A/D转换
等待转换结束
读取温度数据
转换为实际温度值TEMP
计算偏差e = SET_TEMP - TEMP
调用PID控制算法,计算控制量u
将控制量输出到D/A转换器
延时一个采样周期T
跳转到LOOP
结束
2. A/D转换子程序
asm
ADC_READ PROC
; 启动A/D转换
MOV AL, 00H
OUT PORT_C, AL ; ALE=0, START=0
NOP
MOV AL, 01H
OUT PORT_C, AL ; ALE=1, START=1,锁存地址并启动转换
NOP
MOV AL, 00H
OUT PORT_C, AL ; ALE=0, START=0
; 等待转换结束
WAIT_EOC:
IN AL, PORT_C
TEST AL, 02H ; 测试EOC(PC1)
JZ WAIT_EOC
; 读取转换结果
MOV AL, 04H
OUT PORT_C, AL ; OE=1,打开输出缓冲器
IN AL, PORT_A ; 读取转换结果
MOV TEMP_DATA, AL ; 保存结果
MOV AL, 00H
OUT PORT_C, AL ; OE=0
RET
ADC_READ ENDP
3. 增量式PID控制算法子程序
asm
; 变量定义
e_k DB 0 ; 当前偏差e(k)
e_k1 DB 0 ; 上一次偏差e(k-1)
e_k2 DB 0 ; 上上次偏差e(k-2)
u_k DB 0 ; 当前控制量u(k)
u_k1 DB 0 ; 上一次控制量u(k-1)
Kp DB 10 ; 比例系数
Ki DB 2 ; 积分系数
Kd DB 1 ; 微分系数
PID_PROC PROC
; 计算偏差e(k)
MOV AL, SET_TEMP
SUB AL, TEMP
MOV e_k, AL
; 计算增量Δu(k) = Kp*(e(k)-e(k-1)) + Ki*e(k) + Kd*(e(k)-2e(k-1)+e(k-2))
MOV AL, e_k
SUB AL, e_k1
MUL Kp
MOV BX, AX ; BX = Kp*(e(k)-e(k-1))
MOV AL, e_k
MUL Ki
ADD BX, AX ; BX += Ki*e(k)
MOV AL, e_k
SUB AL, e_k1
SUB AL, e_k1
ADD AL, e_k2
MUL Kd
ADD BX, AX ; BX += Kd*(e(k)-2e(k-1)+e(k-2))
; 计算u(k) = u(k-1) + Δu(k)
MOV AL, u_k1
ADD AL, BL
; 限幅处理(0~255)
JC OVERFLOW
CMP AL, 0
JGE OUTPUT
MOV AL, 0
JMP OUTPUT
OVERFLOW:
MOV AL, 0FFH
OUTPUT:
MOV u_k, AL
; 更新历史偏差
MOV AL, e_k1
MOV e_k2, AL
MOV AL, e_k
MOV e_k1, AL
; 更新历史控制量
MOV AL, u_k
MOV u_k1, AL
RET
PID_PROC ENDP
4. D/A输出子程序
asm
DAC_OUTPUT PROC
MOV AL, u_k
OUT PORT_B, AL ; 输出到DAC0832
RET
DAC_OUTPUT ENDP
💡 注意PID子程序中的"限幅处理"------控制量u(k)必须限制在0~255之间(对应8位D/A的输出范围)。如果PID计算出的值超出这个范围,必须截断。这一步在实际工程中非常重要,否则可能导致执行机构过载或损坏。
四、⌚ 嵌入式技术在可穿戴监测系统中的应用
可穿戴技术是近年来发展迅速的新兴技术,它将传感器、嵌入式系统、无线通信等技术集成到可穿戴设备中,实现对人体生理参数、运动状态等的实时监测。
4.1 📋 可穿戴式健康监测系统概述
可穿戴式健康监测系统是一种可以穿戴在人体上,连续、实时监测人体生理参数的智能系统,它将医疗监测从医院延伸到家庭和日常生活中,对于慢性病管理、老年人健康监护、运动健身等具有重要意义。
4.1.1 系统基本功能
一个典型的可穿戴式健康监测系统具有以下基本功能:
- 生理信号检测:实时检测心电、心率、血压、体温、呼吸、血氧等生理参数
- 运动状态监测:监测人体的运动状态,如步数、距离、速度、卡路里消耗等
- 数据存储:本地存储采集到的原始数据和处理结果
- 数据传输:通过蓝牙、WiFi等无线通信方式将数据传输到手机或云端
- 数据分析与处理:对采集到的数据进行分析和处理,提取特征信息,进行异常检测和预警
- 人机交互:通过显示屏、指示灯、振动等方式与用户进行交互
4.1.2 系统总体架构
可穿戴式健康监测系统采用分层架构,由感知层 、网络层 和应用层三部分组成:
| 层次 | 组成 | 功能 |
|---|---|---|
| 感知层 | 各种传感器和数据采集电路 | 采集人体生理信号和运动信号 |
| 网络层 | 嵌入式处理器、无线通信模块 | 数据预处理和无线传输 |
| 应用层 | 智能手机APP、PC端软件、云端服务器 | 数据存储、分析、健康评估、预警 |
1. 感知层
- 组成:各种传感器和数据采集电路
- 功能:采集人体生理信号和运动信号
- 典型传感器:心电传感器、体温传感器、加速度传感器、陀螺仪、血压传感器等
2. 网络层
- 组成:嵌入式处理器、无线通信模块
- 功能:对采集到的数据进行预处理,然后通过无线通信方式传输到智能终端或云端
- 典型通信方式:蓝牙(BLE)、WiFi、ZigBee、4G/5G等
3. 应用层
- 组成:智能手机APP、PC端软件、云端服务器
- 功能:数据存储、数据分析、健康评估、异常预警、远程医疗等
4.2 🔑 关键技术
可穿戴式健康监测系统涉及多种关键技术,主要包括:
4.2.1 数据采集技术
- 传感器技术:微型化、低功耗、高精度的生理传感器是可穿戴设备的核心
- 信号调理技术:对传感器输出的微弱信号进行放大、滤波、去噪等处理
- A/D转换技术:将模拟信号转换为数字信号,要求低功耗、高精度
4.2.2 嵌入式技术
- 低功耗设计:可穿戴设备通常采用电池供电,低功耗是关键技术
- 实时操作系统:采用实时操作系统(RTOS)实现多任务管理,提高系统的实时性和可靠性
- 嵌入式软件:实现数据采集、处理、存储和传输等功能
4.2.3 无线通信技术
- 低功耗蓝牙(BLE):目前可穿戴设备最常用的通信方式,具有低功耗、低成本、短距离的特点
- WiFi:用于高速数据传输和互联网接入
- NFC:用于近距离支付和设备配对
4.2.4 数据分析与处理技术
- 信号处理技术:对生理信号进行滤波、去噪、特征提取等处理
- 模式识别技术:用于心律失常、睡眠呼吸暂停等疾病的自动检测
- 大数据与人工智能技术:对大量健康数据进行分析和挖掘,提供个性化的健康建议
4.3 📱 典型应用:微型可穿戴多生理参数记录装置
下面介绍一个基于CC2640R2F SoC的微型可穿戴多生理参数记录装置,它可以同时采集心电、体温和运动信号。
4.3.1 硬件架构
系统硬件采用模块化设计,主要由以下几个模块组成:
1. SoC核心模块
- 芯片:TI CC2640R2F,基于ARM Cortex-M3内核的低功耗蓝牙SoC
- 特点 :
- 集成了2.4GHz蓝牙射频收发器
- 内置128KB Flash、28KB SRAM
- 支持多种低功耗模式,待机电流仅为0.1μA
- 集成了ADC、UART、SPI、I2C等多种外设
2. 信号采集模块
- 心电采集:采用ADS1192R 16位双通道心电前端芯片,具有低噪声、低功耗的特点
- 体温采集:采用NTC热敏电阻,通过ADC测量其电阻值,转换为温度
- 运动采集:采用三轴加速度传感器,测量人体的运动加速度
3. 数据存储模块
- 采用Micro SD卡作为存储介质,最大支持32GB
- 用于存储采集到的原始生理数据和处理结果
4. 蓝牙通信模块
- 集成在CC2640R2F内部,支持蓝牙5.0低功耗(BLE)
- 用于与手机APP进行数据传输
5. 电源模块
- 采用3.7V锂电池供电
- 集成电源管理芯片,提供3.3V和1.8V两种电源
- 支持USB充电
4.3.2 软件设计
系统软件基于TI-RTOS实时操作系统开发,采用多任务设计,主要包括以下任务:
| 任务 | 功能 |
|---|---|
| 数据采集任务 | 定时采集心电、体温和运动信号 |
| 数据处理任务 | 对采集到的信号进行预处理和特征提取 |
| 数据存储任务 | 将处理后的数据写入SD卡 |
| 蓝牙通信任务 | 与手机APP建立连接,传输数据 |
| 电源管理任务 | 管理系统的电源状态,降低功耗 |
4.3.3 总体工作流程
- 系统上电后,进行初始化,包括传感器、蓝牙、SD卡等
- 启动数据采集任务,定时采集心电、体温和运动信号
- 数据处理任务对采集到的信号进行预处理,去除噪声和干扰
- 数据存储任务将处理后的数据写入SD卡
- 当手机APP连接时,蓝牙通信任务将存储的数据传输到手机
- 手机APP对数据进行进一步的分析和处理,显示健康报告,并在发现异常时发出预警
4.3.4 低功耗设计
低功耗是可穿戴设备的关键设计目标,本系统采用了以下低功耗技术:
- 选用低功耗芯片:所有芯片都选用低功耗型号
- 动态电源管理:系统在空闲时进入低功耗模式,关闭不需要的外设
- 降低采样率:在不影响监测效果的前提下,尽量降低采样率
- 优化软件算法:减少CPU的运行时间,提高效率
- 蓝牙低功耗模式:采用蓝牙BLE的低功耗连接方式,降低通信功耗
💡 可穿戴设备的低功耗设计是一个系统工程------不只是选低功耗芯片那么简单。从硬件的电源管理、采样频率选择,到软件的任务调度、通信策略,每个环节都要"精打细算"。实际开发中,电池续航往往是产品竞争力的关键指标。
五、🎯 学习重点与综合应用
5.1 学习重点
1. 基本概念
- 计算机控制的三个基本步骤(采集→决策→控制)
- 开环控制系统和闭环控制系统的定义、特点和区别
- PID控制的基本原理和三种控制作用的特点
2. 系统设计
- 开环控制系统的硬件设计和软件编程
- 闭环控制系统的硬件设计和软件编程
- 综合应用8253、8255、8259A、ADC0809、DAC0832等接口芯片
3. 控制算法
- 数字PID控制算法的原理和实现
- 增量式PID算法的优点和编程方法
4. 嵌入式应用
- 可穿戴监测系统的基本组成和关键技术
- 低功耗设计方法
5.2 综合应用能力要求
通过本章的学习,应该具备以下综合应用能力:
- 能够根据实际需求,选择合适的控制方式(开环或闭环)
- 能够设计简单的开环控制系统,包括硬件电路和软件程序
- 能够设计简单的闭环控制系统,包括传感器选择、信号调理、A/D和D/A转换、控制算法实现
- 能够综合运用前面所学的接口技术,解决实际工程问题
5.3 实际应用中的注意事项
- 实时性:计算机控制系统必须满足实时性要求,确保在规定的时间内完成数据采集、运算和控制输出
- 可靠性:工业现场环境恶劣,系统必须具有高可靠性和抗干扰能力
- 安全性:控制系统必须具有完善的安全保护措施,防止发生事故
- 可维护性:系统应易于安装、调试和维护
六、🤔 几个思考题
学完本文,来试试回答这些问题:
1️⃣ 开环控制和闭环控制最本质的区别是什么?请各举一个生活中的例子。
答: 最本质的区别是有没有反馈环节。开环系统的输出不会影响控制过程,闭环系统的输出会反馈到输入端,与给定值比较后影响下一次控制。
生活中的例子:
- 开环控制:洗衣机按照设定时间洗涤。你按下"标准洗"按钮,洗衣机就按固定时间运转,不管衣服洗干净没有。它不检测衣服的清洁度,所以没有反馈。
- 闭环控制:空调恒温控制。你设定26℃,空调会不断检测室温(反馈),与26℃比较------温度高了就制冷,温度低了就停机或加热,始终保持室温在26℃附近。
💡 判断一个系统是开环还是闭环,关键看"有没有传感器在测量输出结果并把它送回去比较"。有就是闭环,没有就是开环。
2️⃣ 为什么增量式PID比位置式PID更适合实际工程应用?
答: 增量式PID更适合工程应用,主要有三个原因:
- 安全性:增量式输出的是控制量的"变化量",即使计算出错,也只是影响本次的增量,不会导致控制量突变。位置式直接输出绝对值,一旦出错可能直接让执行机构"暴走"。
- 计算效率:增量式只需要最近3次偏差值(e(k)、e(k-1)、e(k-2)),不需要累加所有历史偏差,计算量小。
- 无扰动切换:增量式天然支持手动/自动无扰动切换------切换时只需令Δu=0,控制量就保持在当前值不变,系统不会因为切换而产生跳变。
💡 这道题在考试和面试中经常出现,记住关键词:安全性、计算效率、无扰动切换。
3️⃣ 在锅炉温度闭环控制系统中,如果PID参数中的Kp设置过大,会出现什么现象?如何解决?
答: Kp(比例系数)设置过大会出现以下现象:
- 系统振荡:温度在设定值上下反复波动,振幅可能越来越大(不稳定)
- 超调量增大:温度会冲过设定值很多才回落
- 调节时间变长:虽然反应快了,但来回震荡导致系统迟迟不能稳定
解决方法:
- 减小Kp:适当降低比例系数,牺牲一些响应速度来换取稳定性
- 引入积分作用(Ki):消除静差的同时,积分的"惯性"效应可以一定程度上抑制振荡
- 引入微分作用(Kd):利用微分对偏差变化率的敏感性,在温度快速变化时提前"刹车",减小超调
- 实际工程中:通常采用"先P后I再D"的参数整定方法,逐步调整Kp→Ki→Kd,直到系统响应满意
💡 PID参数整定是控制工程中的经典难题,实际工程中常用的方法有Ziegler-Nichols法、经验试凑法等。考试中只要理解参数变化对系统性能的影响趋势即可。
✅ 本节完。
📝 作者:say-fall | 编辑:say-fall | 🌟 原创不易,如果对你有帮助,记得 👍 点赞 + ⭐ 收藏 哦!