![先进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=1739285860-eGBZRAwjTu0N4a4LVVvnmUPz1OSN0hfQ-0-b066674628d0de70a15c55679f2bd01b)
上述PID控制器采用Simulink封装的形式,其内部结构如下:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_3.jpg?sign=1739285860-nXewThekBETpspV67CHxZopQpnfpBOq0-0-d249945d0dd674f2939548ee9c16dd8d)
连续系统的模拟PID控制正弦响应如图1-2所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_4.jpg?sign=1739285860-0gQSN5Lgc4Dlpg9FHCCxYyFyr0gZWmy2-0-8b80847420a2c2a4ea54caa5831dd90a)
图1-2 连续系统的模拟PID控制正弦响应
【仿真之二】 基于M语言作图的PID控制Simulink仿真
在仿真之一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_1.jpg?sign=1739285860-OpbBjVhMyQ36gelN7ETsGdT6QYFXosHe-0-3c83b0480fa0171f30783e7d69ca99a5)
图1-3 基于M语言作图的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真程序:chap1_2.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_2.jpg?sign=1739285860-AC0hYewyVDUrpxTUy1cwiuz3fAG0Du3H-0-51672e2c771e5c89548b2e8e94981510)
程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中
,
,C=[1 0],D=0。
(2)作图程序:chap1_2plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_6.jpg?sign=1739285860-5nP93yq9O8NcEIordycLD5pf380MoZHj-0-ef6bb52972685e4ea92291a641f9320c)
【仿真之三】 基于S函数的PID控制Simulink仿真
仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_1.jpg?sign=1739285860-s03VbbQiJlaATexyoI18zY0RwOGq7o71-0-c108731a7e5f7b2945436d9d438596d2)
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=1739285860-RkNfFcNcjngwYDDFMc568UeST0Rd9N1Y-0-61a9f6c12ff6595b7ab45a280c187684)
图1-4 基于S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_4.jpg?sign=1739285860-QkFHSRDfkPPfVJj4QPbJT1pia3cAAPTe-0-ee6bfad3467f8fc9f7827585dcdb24a9)
(2)S函数PID控制器程序:chap1_3s.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_5.jpg?sign=1739285860-MZtSvjlXtbRsl3ILBgKSFsxEGZ1ZSXJN-0-5aa16b067515265437deb209b32d8a66)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_1.jpg?sign=1739285860-DUJXq0KkJZaZyn4AhwylZSqT89fV7iwZ-0-07b310455f3fa9aaa09d5e333b1e973b)
(3)S函数被控对象程序:chap1_3plant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_2.jpg?sign=1739285860-p9KIL0GlGpHiasdacIwn1pm8cEGaGns8-0-4199d8297fc6ca2d20cd50562846b635)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_1.jpg?sign=1739285860-gOBHBRgw1RWvQlQKDkic0ZIMeHHwOhId-0-e4542427904a5570bef14f95e1ad9be7)
(4)作图程序:chap1_3plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_2.jpg?sign=1739285860-ErMR0FsCSk9YY0xd6XXMkXjloO9u3Mlr-0-7b5d75fb2d61c55247245ea8365f4611)
【仿真之四】 基于简化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=1739285860-Hse8wfaQIQLvb465MuskPLgakPeAuj9v-0-9747262d885940a3494eb90613fc3305)
图1-5 基于简化S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3n.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_2.jpg?sign=1739285860-oIBWEMKepYi1KDMK4cPM2LtnWS1Qkvnu-0-85cc50ea1cc425bf84d94f4485b6003a)
(2)简化的S函数控制器程序:chap1_3ns.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_3.jpg?sign=1739285860-D9ERg5WJXpJla5VylCx4kQlgMpxltSfh-0-97285ab67f61f296b7ad1c1e7ed3f554)
(3)简化S函数被控对象程序:chap1_3nplant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_4.jpg?sign=1739285860-ccxo83Y80sakP7JgVmiRuGVIf2hSj3yR-0-7ac79cbe4d5bc3c75b86576416ba50ef)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_1.jpg?sign=1739285860-fCKwGX7pp7KTq8xaBMOFw0Ujs0bSWYkK-0-0de17b4806588d266e79ce23ef58607a)
(4)作图程序:chap1_3nplot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_2.jpg?sign=1739285860-yX2Hejun8o4HvOhBqBJCenuEYdvg4yJL-0-8c89912edd438fe088a1620ac8dc1fa5)