![先进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=1738839893-FCzm9PlrQuUZr1dNiBWGaW0TE2aILfCL-0-c5e07ed593c7af3766048c28f35d113d)
上述PID控制器采用Simulink封装的形式,其内部结构如下:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_3.jpg?sign=1738839893-CRDUpfcBTxEHLMTh36Xz7vhVfDNxYVBT-0-80afcf4c74abd7d47f294f7cb19bacca)
连续系统的模拟PID控制正弦响应如图1-2所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_4.jpg?sign=1738839893-U7gowLpf6FbIiASK18WvO9eBXUF74kM8-0-c6f0cd9db2b6e5f5e7f5280baa18b76d)
图1-2 连续系统的模拟PID控制正弦响应
【仿真之二】 基于M语言作图的PID控制Simulink仿真
在仿真之一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_1.jpg?sign=1738839893-ccObixgKFiaBf4qhJuGXWQUhzYZ8OpzQ-0-c1b6dabd5ece597ad3e2cd3317a5e81e)
图1-3 基于M语言作图的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真程序:chap1_2.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_2.jpg?sign=1738839893-0khFN7rqadOxJKGxyg2qaBAu5clL54ub-0-56677e291cb8aeacc3839b5622c46830)
程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中
,
,C=[1 0],D=0。
(2)作图程序:chap1_2plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_6.jpg?sign=1738839893-gTO8uTWCKPs0PwsbPVZTnskQFhNmRV3w-0-d1c1faf27b660df10786d496f420a485)
【仿真之三】 基于S函数的PID控制Simulink仿真
仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_1.jpg?sign=1738839893-nKi8xxj8fyh2koGMwgOadrkXvrXtZ7mm-0-bb214f6ff146e2d80379befa14426fc7)
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=1738839893-Uijoa1pB66KlzsbaFix95dfHnIdO2ofM-0-f50f847127e64b8ae498a92d11c6af95)
图1-4 基于S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_4.jpg?sign=1738839893-PFyH99kmZyMFTfsM2nLKhZU4FQ7xQVvg-0-9b2ffe2c73ab921e2413f983718c3f3b)
(2)S函数PID控制器程序:chap1_3s.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_5.jpg?sign=1738839893-OFOVQb20GttJ6oklorUcrnGTttwJ1b85-0-6242f51965e7fb7abc87f9cc4568569c)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_1.jpg?sign=1738839893-b1BjwNs9PazToqW4jMECBBCFSmN6l6ZY-0-fda8c72e9284d6973981ab9d5722c3fb)
(3)S函数被控对象程序:chap1_3plant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_2.jpg?sign=1738839893-q8sFW7U7ac34K9DmlXYFxz977Z6YG6i8-0-ac758955079597ac4fdd72b6485076dd)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_1.jpg?sign=1738839893-Sm2PuSByZTG99j40eBVzo3R0R7gIWeSA-0-e172ca9b447c65f6b9083c007cce3ce2)
(4)作图程序:chap1_3plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_2.jpg?sign=1738839893-eeEmiMjeP7x7VZZHAYZl1zOEs2MHxEfm-0-5da3b9e2db338c5de9e5fa7f8b4c3376)
【仿真之四】 基于简化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=1738839893-RT2Fk0biW3RJlJ4ZQDEZQjMo30488qfo-0-ccfdb42805e5793ac1870b7c810b1b75)
图1-5 基于简化S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3n.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_2.jpg?sign=1738839893-6dErluBWnXCI1Q2oL3dbSg1SrFMScu3P-0-d650d05804429ddbdc96f14409575293)
(2)简化的S函数控制器程序:chap1_3ns.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_3.jpg?sign=1738839893-Qi2YirjcrNpn0W8t0COZ64LROzmgymhj-0-a0ce93dc502faf9f556fd3208cd3a9d0)
(3)简化S函数被控对象程序:chap1_3nplant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_4.jpg?sign=1738839893-lrRMQ2sL1yB16rBk33np9hSSS7Zsg4N4-0-18b2481155a1eb49be037cc17f8cec59)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_1.jpg?sign=1738839893-Yn7uT7O4TL0kvhxG6lDscr2g3zeQ0LZT-0-ef1ded11eb813393a2691fb870d47a07)
(4)作图程序:chap1_3nplot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_2.jpg?sign=1738839893-gBkFJjlKUPSfSu0igHiH1THf39Uw6Vde-0-1519fa4945055911b4bcc0d18f8f33a7)