![先进PID控制MATLAB仿真(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/9/47549009/b_47549009.jpg)
1.2 连续系统的PID仿真
1.2.1 基本的PID控制
以二阶线性传递函数为被控对象,进行模拟PID控制。在信号发生器中选择正弦信号,仿真时取kp=60、ki=1、kd=3,输入指令为yd(t)=Asin(2πFt),其中A=1.0,F=0.20Hz。采用ODE45迭代方法,仿真时间为10s。
【仿真之一】 PID控制Simulink仿真
PID控制器由Simulink下的工具箱提供。
Simulink仿真程序:chap1_1.mdl。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_2.jpg?sign=1739004163-zc73iEuSYsGQl4qkTlcpALDr455DJwuv-0-5c7de083358defa2660e872b02f1d2ba)
上述PID控制器采用Simulink封装的形式,其内部结构如下:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_3.jpg?sign=1739004163-vqdYE0YAxSUP68NPJgkRoskoT7PI8Dnw-0-0270980b84bdd95fbfde4cd7b74f6f9d)
连续系统的模拟PID控制正弦响应如图1-2所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_4.jpg?sign=1739004163-nKW1D9g4IEz75An6fbvzjSGjRctboyNW-0-f06119c1ea05f4774e3c7ddcf2df7ba0)
图1-2 连续系统的模拟PID控制正弦响应
【仿真之二】 基于M语言作图的PID控制Simulink仿真
在仿真之一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_1.jpg?sign=1739004163-EntS54aeKOVhZ3Ot80R8azkeD10pJJrf-0-cda4d344533354981e1929836227e1fb)
图1-3 基于M语言作图的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真程序:chap1_2.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_2.jpg?sign=1739004163-lVBMUJlUAmc0c2YE6XFxEBXji7ysvfbj-0-03d3425475c9c845b615049538cb6916)
程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中
,
,C=[1 0],D=0。
(2)作图程序:chap1_2plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_6.jpg?sign=1739004163-zYU0nrNpEnWngyWCkV9BHqn7FxwS7aVl-0-03e51edee490c3b95003fb699f6e5a5d)
【仿真之三】 基于S函数的PID控制Simulink仿真
仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_1.jpg?sign=1739004163-XjMDlbaWgC8BU61biNMxN47ya4Ew9n7k-0-14239969ea5c53a08213f095df04a0ea)
S函数是Simulink一项重要的功能,采用S函数可实现在Simulink下复杂控制器和复杂被控对象的编程。在仿真之一的基础上,利用S函数实现上述对象的表达、控制器的设计及仿真结果的输出。
在S函数中,采用初始化、微分函数和输出函数,即mdlInitializeSizes函数、mdlDerivatives函数和mdlOutputs函数。在初始化中采用sizes结构,选择2个输出、3个输入,3个输入实现了P、I、D三项的输入。S函数嵌入在Simulink程序中。系统初始状态为x(0)=0、。仿真结果如图1-4所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_3.jpg?sign=1739004163-gnCoO9MaLdkJM19Z10FwQyaPr1PI550A-0-ac80554d50ca0c91edc835e646ba163a)
图1-4 基于S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_4.jpg?sign=1739004163-xsskV8xQ9FgdCDlit3Lh0D1YxmTTP8cp-0-c6c17b194776bb8fdc3d896baf012407)
(2)S函数PID控制器程序:chap1_3s.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_5.jpg?sign=1739004163-q3RxJDKfavgmQbMVVATGca9YAd8eegZy-0-3767d223ec4d96ef40ef9ce27923d804)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_1.jpg?sign=1739004163-ykIyNeYFDGZCjHkJKqIF7qMwRFu1tiR5-0-5c206fa7d7f6111e12e41ca9d3fae6ff)
(3)S函数被控对象程序:chap1_3plant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_2.jpg?sign=1739004163-4M10YZkOqL0INyQ1FqzRSha0VBlKdU8D-0-a7f09e0d978ec80241237bd8a8b64214)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_1.jpg?sign=1739004163-o6XxTNMf5Yqsy6NbcMd35y4K4MBIrgsF-0-1c5fb10126f32059416261c87e856170)
(4)作图程序:chap1_3plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_2.jpg?sign=1739004163-SRaXqApwQHeu7RTaAanl6VIQo9fxMzo5-0-7c977f63f2aa8846fe4a3475c69f5fdb)
【仿真之四】 基于简化S函数的PID控制Simulink仿真
利用简化S函数形式实现被控对象的表达、控制器的设计及仿真结果的输出。在简化S函数中,flag=0时为S函数初始化。S函数支持多采样周期的系统,x0=[]为系统初始值设定,flag=1时为S函数被控对象微分方程的描述,flag=3时为S函数输出。仿真结果如图1-5所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_1.jpg?sign=1739004163-xBVdNKRzNMYl9HD9B7imu718cEJW2efI-0-7003b47e0ecbfa044de6ce456e436286)
图1-5 基于简化S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3n.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_2.jpg?sign=1739004163-zDf6CBPo8NafAvwd4lJvKkjMqqd8JIPp-0-494f1c107908ca281030e1f049bb4c1f)
(2)简化的S函数控制器程序:chap1_3ns.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_3.jpg?sign=1739004163-UENwV5OA2VT0X7CbxxuJY9oWRV1CJkdi-0-f145eddbb389a9f2be069a51ad3b3ca6)
(3)简化S函数被控对象程序:chap1_3nplant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_4.jpg?sign=1739004163-waiEC3rQM3QeSuBKGrfGQQ6ljBverkzb-0-22e40aee37a7771865fdaa7bcde2b594)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_1.jpg?sign=1739004163-SwfmhQze2RK7OQ3Pl04JcGZGO3NOsWFH-0-25a9fa5c2007bb4f9e4617392bb38c0d)
(4)作图程序:chap1_3nplot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_2.jpg?sign=1739004163-uJ2kK5esCCvUoTVF3XRf1GV7URK1UGOq-0-378eb98ebf02a1a68b11d045b7ea7d59)