据历史数据和差别的出现率来调整输入值,这样可以使系统更加准确,更加稳定。可以通
过数学的方法证明,在其他控制方法导致系统有稳定误差或过程反复的情况下,一个 PID
反馈回路却可以保持系统的稳定。
PID 是以它的三种纠正算法而命名的。这三种算法都是用加法调整被控制的数值。而
实际上这些加法运算大部分变成了减法运算因为被加数总是负值。这三种算法是:
比例- 来控制当前,误差值和一个负常数 P(表示比例)相乘,然后和预定的值相加。
P 只是在控制器的输出和系统的误差成比例的时候成立。这种控制器输出的变化与输入控
制器的偏差成比例关系。比如说,一个电热器的控制器的比例尺范围是 10°C,它的预定值
是 20°C。那么它在 10°C 的时候会输出 100%,在 15°C 的时候会输出 50%,在 19°C 的时候
输出 10%,注意在误差是 0 的时候,控制器的输出也是 0。
积分- 来控制过去,误差值是过去一段时间的误差和,然后乘以一个负常数 I,然后和
预定值相加。I 从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单
的比例系统会振荡,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加
上一个负的平均误差比例值,平均的系统误差值就会总是减少。所以,最终这个 PID 回路
系统会在预定值定下来。
导数 - 来控制将来,计算误差的一阶导,并和一个负常数 D 相乘,最后和预定值相加。这
个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作
出更快速的反应。这个 D 参数也是 PID 被称为可预测的控制器的原因。D 参数对减少控制
器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要 D 参数。 用更专业的话
来讲,一个 PID 控制器可以被称作一个在频域系统的滤波器。这一点在计算它是否会最终
达到稳定结果时很有用。如果数值挑选不当,控制系统的输入值会反复振荡,这导致系统
可能永远无法达到预设值。
二.程序设计说明
1.实验设计思路
本实验是通过 GUIDE 和 Simulink 仿真来完成 GUI 界面设计及控制器的仿真,首先创
建 一 个 用 户 界 面 ( fig 文 件 ) , 保 存 为 mypid.fig , 然 后 创 建 一 个 模 块 , 保 存 为
pid_optimize.mdl,设置参数 Kp、Ki 和 Kd,在 mypid.fig 中通过设置文本框中的数据,可以
改变 pid_optimize.mdl 中的 PID Controller 模块中的 Kp、Ki 和 Kd 的值。打开示波器,就是
打开 Scope 模块。这通过程序来控制。按钮“设置受控系统”可以来改变 pid_optimize.mdl 中
的 Transfer Fcn 函数中的分子向量和分母向量。按钮“画出仿真图”会画出和打开 Scope 示波
器里面一样的曲线。点击按钮“开始仿真”即开始运行 pid_optimize.mdl 来仿真。
2.程序详细设计
1)窗口初始化程序(mypid_OpeningFcn.m)
function mypid_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
setappdata(handles.axes1,'tout',0);
setappdata(handles.axes1,'yout',0);
set(handles.btn_plot,'Enable','off');
set(handles.btn_plant,'Enable','off');
set(handles.btn_openScope,'Enable','off');