![先进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=1738885070-o2nfhE0MD1xDVbcUcgyB0giRuU4dYGI5-0-8d2da258700bcf94f309dcf014b5af7c)
上述PID控制器采用Simulink封装的形式,其内部结构如下:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_3.jpg?sign=1738885070-LdxrAXetNDwtEyEDduo1BRp6jn62GFCd-0-44f25a9e3be79d6a9803ffa989e19ce0)
连续系统的模拟PID控制正弦响应如图1-2所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_4.jpg?sign=1738885070-jYi3UDiPKph4Eua8QiDldGYZegPxp9jW-0-0e0af88cdd5fa9a528d1c68b89ab7ff8)
图1-2 连续系统的模拟PID控制正弦响应
【仿真之二】 基于M语言作图的PID控制Simulink仿真
在仿真之一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_1.jpg?sign=1738885070-UafdzPkxC6YZVtCtXW8AEfVNUcGG2YwL-0-0010c7dfd920847c91a783c50acd604b)
图1-3 基于M语言作图的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真程序:chap1_2.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_2.jpg?sign=1738885070-EMWjPKwHjQpMmLC4A8gMOCDPkRHLfhqE-0-6ae70d9963fdf0fdfd2e20901560a1a1)
程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中
,
,C=[1 0],D=0。
(2)作图程序:chap1_2plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_6.jpg?sign=1738885070-OURXNKh2xxgImWlksM4DSonMwflj6Qp5-0-bfaf07f5ff6a3a1f5e03a38f6e9f79ac)
【仿真之三】 基于S函数的PID控制Simulink仿真
仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_1.jpg?sign=1738885070-LMFr6eQ7Ui0iZSpDktX7QzbIo9rK99wE-0-05c8ab42881d4e8f4eb489e7d2388b2e)
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=1738885070-75tpO5fdkxZIWzEppihnR9rTROWieVQC-0-d44390bb102387465afe680366f0d17c)
图1-4 基于S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_4.jpg?sign=1738885070-cHg1O6QhrK3SGm2VFdjq9gJ0CZbeWmGB-0-bb2aec9281212e5a4430707b72c8ccfe)
(2)S函数PID控制器程序:chap1_3s.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_5.jpg?sign=1738885070-wKwkGn5OyNDUOjrqxhvQ5vdyPoowgClA-0-88a6f3a9e13b122a6d414dd22cc7a09a)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_1.jpg?sign=1738885070-ZUWTB9wWpwVhzDuiwrPYiWyxWvs2Xvgk-0-6b7df1253400966706c517fc4caa5c59)
(3)S函数被控对象程序:chap1_3plant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_2.jpg?sign=1738885070-XcV0awuuYlup9dNO1rSGKt3zO308pvFv-0-34319324809d282cabe23585a3e857cd)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_1.jpg?sign=1738885070-JmyX7QwiW6iXKNtBsg992gEkzsiNHoET-0-7d06652b7ad22a1b111db278385f6f33)
(4)作图程序:chap1_3plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_2.jpg?sign=1738885070-tfJfQg5Xk1S0fzPBQQFhF6afqF3YKGVP-0-de42accc16d2f9b1bb4892a1de1e7cd9)
【仿真之四】 基于简化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=1738885070-TTW08BGWrAZzyLQ919nPqjJFqch949rP-0-baaf32fb827ac28664eed36aaebd9411)
图1-5 基于简化S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3n.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_2.jpg?sign=1738885070-OXgyUwUA7R6McagkZtLCpdHgkhsMcgCW-0-8b620abf6e93aac073ae983fdbc32d81)
(2)简化的S函数控制器程序:chap1_3ns.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_3.jpg?sign=1738885070-fblPUA39D4UNqmmS4kWVVzdmYQAJD1kt-0-0b11efff5783078582e4565111e3a921)
(3)简化S函数被控对象程序:chap1_3nplant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_4.jpg?sign=1738885070-czOsJuLXpHtWkiA8rn3xAwWuE0WnFaVa-0-5e8644b4870ed7f196daf96588315c37)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_1.jpg?sign=1738885070-kTSutVUtRAi0WPJaeIJ9b0MWHIF8zyMS-0-cb213f7fa0fc25deab90169235ac7ee1)
(4)作图程序:chap1_3nplot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_2.jpg?sign=1738885070-2fQk4HI9w2E6KBsu2ndLQpSzFBeTclKa-0-512634cafb674fa809e9fff0e8702aac)