先进PID控制MATLAB仿真(第5版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 连续系统的PID仿真

1.2.1 基本的PID控制

以二阶线性传递函数为被控对象,进行模拟PID控制。在信号发生器中选择正弦信号,仿真时取kp=60、ki=1、kd=3,输入指令为ydt)=Asin(2πFt),其中A=1.0,F=0.20Hz。采用ODE45迭代方法,仿真时间为10s。

【仿真之一】 PID控制Simulink仿真

PID控制器由Simulink下的工具箱提供。

Simulink仿真程序:chap1_1.mdl。

上述PID控制器采用Simulink封装的形式,其内部结构如下:

连续系统的模拟PID控制正弦响应如图1-2所示。

图1-2 连续系统的模拟PID控制正弦响应

【仿真之二】 基于M语言作图的PID控制Simulink仿真

在仿真之一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。

图1-3 基于M语言作图的PID控制正弦响应

〖仿真程序〗

(1)Simulink仿真程序:chap1_2.mdl

程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中C=[1 0],D=0。

(2)作图程序:chap1_2plot.m

【仿真之三】 基于S函数的PID控制Simulink仿真

仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为

S函数是Simulink一项重要的功能,采用S函数可实现在Simulink下复杂控制器和复杂被控对象的编程。在仿真之一的基础上,利用S函数实现上述对象的表达、控制器的设计及仿真结果的输出。

在S函数中,采用初始化、微分函数和输出函数,即mdlInitializeSizes函数、mdlDerivatives函数和mdlOutputs函数。在初始化中采用sizes结构,选择2个输出、3个输入,3个输入实现了P、I、D三项的输入。S函数嵌入在Simulink程序中。系统初始状态为x(0)=0、。仿真结果如图1-4所示。

图1-4 基于S函数的PID控制正弦响应

〖仿真程序〗

(1)Simulink仿真主程序:chap1_3.mdl

(2)S函数PID控制器程序:chap1_3s.m

(3)S函数被控对象程序:chap1_3plant.m

(4)作图程序:chap1_3plot.m

【仿真之四】 基于简化S函数的PID控制Simulink仿真

利用简化S函数形式实现被控对象的表达、控制器的设计及仿真结果的输出。在简化S函数中,flag=0时为S函数初始化。S函数支持多采样周期的系统,x0=[]为系统初始值设定,flag=1时为S函数被控对象微分方程的描述,flag=3时为S函数输出。仿真结果如图1-5所示。

图1-5 基于简化S函数的PID控制正弦响应

〖仿真程序〗

(1)Simulink仿真主程序:chap1_3n.mdl

(2)简化的S函数控制器程序:chap1_3ns.m

(3)简化S函数被控对象程序:chap1_3nplant.m

(4)作图程序:chap1_3nplot.m