第一章 概述
过程控制的要求与任务
过程控制
过程控制的目的(为什么要提出过程控制? )
过程控制的主要应用领域为化工、石油、食品加工等需要对连续流程进行实时控制的系统,控制的物理参数一般为流体、温度、压力等。
六大参数
过程控制系统组成与特点
- 四个基本组成部分:被控对象、检测与变送仪表、调节器(控制器)、执行机构。
- 被控对象:被控制的生产过程或设备
- 检测变送:测量被调量,并转换成便于传递和综合的信号(转换成能与输入信号进行比较的量纲和数值)
- 调节器:接受被调量与给定值的偏差,输出一定的控制指令
- 执行器:根据调节器送来的指令去推动调节机构,改变调节量
过程控制原理方框图

过程控制系统环节组成
单回路控制系统是由被控过程,测量元件及变送器,控制器和执行器组成一个闭合回路的反馈控制系统。
控制系统均由测量元件、变送器、调节器、调节阀和被控过程等环节构成。如果把测量元件、变送器、调节器和调节阀统称为过程检测控制仪表,则一个简单的过程控制系统是由被控过程和过程检测控制仪表两部分组成的
过程控制系统的性能指标
最大偏差、余差(稳态误差+)、衰减比、衰减率、超调量、动态偏差,静态偏差,调整时间,过渡时间(调节时间)、振荡周期
过程系统的设计
过程控制系统的分类
1.按被控量分类:
- 温度控制系统
- 压力控制系统
- 流量控制系统
- 液位控制系统等
2.按完成的功能分类:
- 比值控制系统(特殊的多变量控制)
- 分程控制系统(一个调解器带几个阀)
- 选择性控制系统(非线性切换控制)
3.按调节器控制规律分类:
- 比例(P)控制系统
- 比例积分(PI)控制系统
- 比例积分微分(PID)控制系统
4.按被控制量的多少分类:
- 单变量控制系统
- 多变量控制系统
第二章 被控系统的数学模型
过程模型概述
被控过程数学模型的内涵
系统特性
环节特性
静态数学模型
动态数学模型
建立被控数学模型的目的
数学模型的形式
参数与非参数模型
被控过程的特点 单调 慢过程 迟延性 自平衡与非自平衡 非线性
建立数学模型的依据
被控过程传递函数的一般形式
一阶惯性加纯迟延
二阶惯性环节加纯迟延
n阶惯性环节加纯迟延
有理分式表示的传递函数
对于非自衡系统,传递函数中应该包含一个积分环节
建立过程数学模型的基本方法
过程控制系统的建模方法:执行机构和控制机构
机理法(白箱)
单容水槽(单容对象的传递函数)
双容水槽(双容对象的传递函数)
测试法(黑箱)








第三章 执行器
执行器概述
- 执行器按驱动能源可分为:电动执行器,气动执行器,液动执行器。
- 执行器的构成:执行机构和控制机构(调节机构?)正装反装 气开气关
气动调节阀结构
阀门定位器
调节阀的流量系数

调节阀的特性
结构特性
- 直线结构特性
- 等百分比结构特性
- 快开结构特性
- 抛物线结构特性
调节阀的流量特性
理想流量特性
工作流量特性
- 串联管道全开阀阻比
结论:

并联管道
- 全开流量比

调节阀可调比
理想可调比
实际可调比
- 串联管道

- 并联管道

调节阀的选择
pid控制原理
这位博主的pid算法讲解可以参考
http://blog.chinaunix.net/uid-30497107-id-5855168.html
stm32 pid控制
https://blog.csdn.net/kk1kk2kk3kk4/article/details/137402385
pid控制概述
PID是应用最广泛的闭环控制方法之一,是一种常用的反馈控制方法,对于每个PID控制器由三个部分组成:比例控制(Proportional)、积分控制(Integral)和微分控制(Derivative)。
一般而言,目标值和反馈值为同种物理量,输出值可以是施加在被控物体上的控制量
举例:对物体进行位置控制时,目标值=目标位置,反馈值=当前位置,输出值=施加的驱动力大小,PID就能实时计算出驱动力使物体到达目标位置。
控制程序一般会定时运行PID算法,在每次运行时,先计算出误差=目标值-反馈值,然后分别由P、I、D三个环节根据误差计算出输出分量,三个分量加和即为最终输出值。
pid公式时域和频域?
pid特点
比例环节(现在)积分环节(过去)微分环节(未来)
PID框图

PID三个环节的作用
由控制无人机案例我们可以总结出PID三个环节各自的主要作用和效应:
- 比例环节:起主要控制作用,使反馈量向目标值靠拢,但可能导致振荡。
- 积分环节:消除稳态误差,但会增加超调量。(稳态误差决定趋于稳定,想象一个不断衰减的振荡曲线)
- 微分环节:产生阻尼效果,抑制振荡和超调,但会降低响应速度。
如何确定实际物理量
- 目标值和反馈值:通常为同种物理量,就是你需要控制的物理量。
- 输出值:通常是直接驱动被控对象的控制量。输出量作用在被控对象上需要经过时间积累才会产生反馈量的变化,换言之,输出值通常为反馈值对于时间的低阶物理量。例如:目标值和反馈值为位置,则输出值可以为速度或加速度。
小结:需要强调的是,PID并不知道被控对象是什么,它仅负责进行数值计算,而我们——作为控制系统的设计者,就需要为PID指定这三个量所对应的实际物理量,这在不同的控制系统中是不一样的。
常用术语
被控对象:需要控制的对象。例如,温度控制中的加热器、速度控制中的电机等。
目标值(Setpoint):期望被控对象达到的状态量。例如,温度控制中的期望温度、速度控制中的目标速度。
反馈值(Measured Value):被控对象当前时刻的状态量。例如,当前的温度、当前的速度。
增益(Gain):比例、积分和微分部分的放大系数,分别是Kp、Ki和Kd。
输出量(Output):PID的计算结果,用于调整被控对象的控制力。例如,加热器的功率、驱动电机的电压。
误差(Error):目标值与反馈值之间的差异。公式为:误差 = 目标值 – 反馈值。
稳态误差(Steady-State Error):系统在稳定状态下仍然存在的误差。例如,加入干扰后仍存在的误差。
阶跃输入(Step Input):在系统稳定状态下,目标值发生突然变化。例如,目标温度从20°C突然升高到25°C。
阶跃响应(Step Response):阶跃输入后,被控对象的响应状态,能够代表系统的控制性能。
瞬态响应(Transient Response):系统从初始状态到达到稳态的过渡过程,包括上升时间、超调量和调节时间等。
响应速度(Response Speed):阶跃输入后,被控对象再次到达目标值的速度。
超调量(Overshoot):阶跃输入后,被控对象到达目标值后超出目标值的距离。
比例控制(Proportional)

计算公式Kp * error
- 假如让无人机悬停在10米的高度,但此时高度为2米,所以此时误差(error)为8米,假设Kp=0.5,比例控制每次调节的高度就为:Kp * error
- 所以第一次调节为 0.5*8=4,此时误差变为4米。
- 第二次调节:0.5*4=2,此时误差变为2米。
- 依次进行调节,误差逐渐变小。这个过程就叫做比例调节。
- Kp值越大,系统反应速度越快,无人机更快靠近误差。
- 缺点:干扰:容易受到外界干扰,比如此时有持续的风将无人机向下吹,导致无人机同一周期向下1米,此时比例控制的计算结果为0.5*2=1,(?)所以,这会导致无人机永远保持在八米的高度,误差保持在2米。这也叫做稳态误差。
- 震荡:Kp值越大,系统反应速度越快,无人机更快靠近误差,但同时无人机在接近目标高度时,产生的震荡也越严重。
积分控制(Integral)


0.1*12=1.2,所以及时有向下持续的风影响无人机,由于积分控制,无人机还是会向上走1.2米。
所以积分控制会对误差进行累计,从而提供更大的升力,让无人机慢慢的朝着目标点靠近,最终误差消除为0。
所以经过第三次调节,累计误差从12调整到了12.8,那么第四次调节的结果0.1*12.8=1.28。
但此时无人机距离目标高度仅为0.8米,如果还是调节1.28米,就会出现过冲现象。
此时就需要使用微分控制进行更细致的调节。
微分控制(Derivative)

微分控制就是通过当前时刻与前一刻误差量的差值对未来做预测。如果差值为正,就表示误差在变大,为负就表示误差在减小。如果误差在变大,就会加大控制强度,让误差降下来。如果误差减小,就会减小控制强度,让无人机平稳缓和的到达指定值。

d(error)/dt = 速度
微分控制算法可以对无人机的速度做出响应,当无人机的速度过快时,微分控制会抵消一部分由比例控制计算出来的升力,从而减缓系统的震荡。所以当我们提高Kd的值,系统的震荡会逐步减小。
但无论是比例,积分还是微分控制,数值调的过大,无人机就会出现过冲现象。
PID调节器的输入输出关系为

模拟仿真
下面这个网站可以模拟调节PID参数来控制无人机
https://rossning92.github.io/pid-simulation
比例环节
比例带?
意义:代表控制器有效范围
数字式pid算法
位置式和增量式
位置式PID和增量式PID是PID控制算法的两种形式,它们在实现上有一定的区别,但核心思想相同,都是通过比例、积分和微分三个部分来控制系统的输出
位置式PID
位置式PID直接计算控制量(输出)的绝对值,公式如下:

位置式PID控制器的输出是控制量的“位置”或绝对值,它适用于系统状态能够进行累积控制的场合,但可能会在一些场合产生较大的控制输出,导致系统不稳定。
增量式PID
增量式PID计算的是控制量的增量,即相对于上一次的变化量。公式如下:

在增量式PID中,控制器每次只调整输出值的增量,这样的好处是能更好地控制输出的变化,适用于数字控制系统。由于每次只输出增量,系统更为稳定,适合精细调节。
位置式pid
#include <stdio.h>
// 定义一个结构体来保存PID控制器的状态
typedef struct {
double Kp; // 比例系数
double Ki; // 积分系数
double Kd; // 微分系数
double prev_error; // 上一次的误差
double integral; // 误差的积分值
} PIDController;
// PID控制器的初始化函数
void PID_Init(PIDController *pid, double Kp, double Ki, double Kd) {
pid->Kp = Kp;
pid->Ki = Ki;
pid->Kd = Kd;
pid->prev_error = 0;
pid->integral = 0;
}
// PID控制器的计算函数
double PID_Compute(PIDController *pid, double setpoint, double measured_value, double dt) {
double error = setpoint - measured_value; // 计算当前误差
pid->integral += error * dt; // 计算误差的积分值
double derivative = (error - pid->prev_error) / dt; // 计算误差的微分值
// PID输出
double output = pid->Kp * error + pid->Ki * pid->integral + pid->Kd * derivative;
// 保存当前误差以供下次计算微分使用
pid->prev_error = error;
return output;
}
int main() {
PIDController pid;
PID_Init(&pid, 1.0, 0.1, 0.01); // 初始化PID控制器参数,Kp=1.0, Ki=0.1, Kd=0.01
double setpoint = 100.0; // 目标值
double measured_value = 90.0; // 测量值
double dt = 0.1; // 时间间隔
double output = PID_Compute(&pid, setpoint, measured_value, dt); // 计算PID输出
printf("PID Output: %f\n", output);
return 0;
}
增量式pid
#include <stdio.h>
// PID控制器结构体
typedef struct {
float Kp; // 比例系数
float Ki; // 积分系数
float Kd; // 微分系数
float prev_error; // 上一次的误差
float prev_prev_error; // 上上次的误差
float integral; // 积分项
} PID_Controller;
// 初始化PID控制器
void PID_Init(PID_Controller *pid, float Kp, float Ki, float Kd) {
pid->Kp = Kp;
pid->Ki = Ki;
pid->Kd = Kd;
pid->prev_error = 0.0f;
pid->prev_prev_error = 0.0f;
pid->integral = 0.0f;
}
// 计算增量式PID控制器的输出
float PID_Compute(PID_Controller *pid, float setpoint, float measured_value) {
float error = setpoint - measured_value; // 当前误差
float P_term = pid->Kp * (error - pid->prev_error); // 比例项
float I_term = pid->Ki * error; // 积分项
float D_term = pid->Kd * (error - 2.0f * pid->prev_error + pid->prev_prev_error); // 微分项
// 计算PID输出的增量
float delta_u = P_term + I_term + D_term;
// 更新误差记录
pid->prev_prev_error = pid->prev_error;
pid->prev_error = error;
return delta_u;
}
int main() {
PID_Controller pid;
PID_Init(&pid, 1.0, 0.1, 0.01); // 初始化PID参数
float setpoint = 100.0; // 目标值
float measured_value = 95.0; // 测量值
float control_output;
control_output = PID_Compute(&pid, setpoint, measured_value);
printf("PID控制器输出: %f\n", control_output);
return 0;
}
改进式数字pid算法
课后








简单控制系统
控制系统的工作过程(负反馈原理的控制过程)
汽包(简形压力容器)
标准方框图

原理方框图
简单控制系统设计


PD控制,不能减小余差,PID能
控制器的正反选择
输入增加,输出增加,正作用,反之减小
变送器、气阀、被控对象、控制器
逻辑推理法和判别式法判断系统稳定,正反

单相性能指标
误差积分性能指标
pid控制器工程整定
动态特性参数法
稳定边界法
衰减曲线法
经验试凑法
串级控制系统
大概在6.3 调节阀(期末要考)
副回路的选择 正反控制器的选择

P182上面公式有问题
第六章
6.1系统判断(什么是串级控制系统) 和框图
6.2
