![先进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=1739287018-GGWQ03Co9QfUlxr5DG525Zhh8eLPYGkv-0-8a7e4ea74345cc6d9381a27e1704c921)
上述PID控制器采用Simulink封装的形式,其内部结构如下:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_3.jpg?sign=1739287018-YHo0zCKgbMncWiW3aeGnDlOmOl6ge6Xl-0-6ae8461accb70a022b4b7bdb0904a9a8)
连续系统的模拟PID控制正弦响应如图1-2所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_19_4.jpg?sign=1739287018-v56OwLHEo5Hr1qOYcQUZQnBJi5saNs1b-0-0a0a703c043742029034386abbbed3b8)
图1-2 连续系统的模拟PID控制正弦响应
【仿真之二】 基于M语言作图的PID控制Simulink仿真
在仿真之一的基础上,将仿真结果输出到工作空间中,利用M语言作图,仿真结果如图1-3所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_1.jpg?sign=1739287018-japzoyLmMlL7gkJH74Z2Ur1JMGYG7t3P-0-0b6574101aef2799ea4bd87d993d0579)
图1-3 基于M语言作图的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真程序:chap1_2.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_2.jpg?sign=1739287018-GnBziM5gssKkrBHLgaS1RrGawN8s49y8-0-1a3a0f4ac0d96099d5e1db113f29684e)
程序中同时采用了传递函数的另一种表达方式,即状态方程的形式,其中
,
,C=[1 0],D=0。
(2)作图程序:chap1_2plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_20_6.jpg?sign=1739287018-gWzGFvkzJn9xkeYYtvUzq0bxfmCicFtV-0-adb5f3db36f6df9657a6dcefcab56c6d)
【仿真之三】 基于S函数的PID控制Simulink仿真
仍以二阶线性传递函数为被控对象,进行模拟PID控制。被控对象形式为,其中b为在[103,163]范围内随机变化,a为在[15,35]范围内随机变化,则被控对象的描述方式可转换为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_1.jpg?sign=1739287018-Ryz2WmHzqzigI1x3TNtw9S7aWcvd5EeH-0-2f1bbe9cbdf90426577fcf3337b9fc56)
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=1739287018-1CHZ5f6lwXjjj7qyLXWJMiCw5TUg2EEo-0-8796f7b09cedecc0fe60883b5d4f02b0)
图1-4 基于S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_4.jpg?sign=1739287018-Z3UfaQzNpJKzqClVkvGi57SwFhIzF2Oq-0-5c20541fecd18dd2269ee5ba14d08a62)
(2)S函数PID控制器程序:chap1_3s.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_21_5.jpg?sign=1739287018-j5dxb77TK0MjMM3IzdsdbVKVoyc2UdfX-0-cee93936b388992a5a410cc7901983aa)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_1.jpg?sign=1739287018-1osYLFjR2VkUUiuJ5JbakXjC78QWSBBI-0-beee4d6d9c7a8d386d3ee98b16af2a8d)
(3)S函数被控对象程序:chap1_3plant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_22_2.jpg?sign=1739287018-ycnKNJKTXSn0KeDxbkBpxQaRawKgPTMS-0-a516d8c628081a63e1b660e80581f0d7)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_1.jpg?sign=1739287018-oCR2UqUa2wmS6BdZRisIoog4bdVURKOC-0-a60ab45eac1133e22c526f7fce0d9514)
(4)作图程序:chap1_3plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_23_2.jpg?sign=1739287018-k79xFChknFaNEWUY5rFux0pAd65km4iT-0-946e94fcc361345c16fd31f306e0e1b2)
【仿真之四】 基于简化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=1739287018-12jyp54LWLJBWu8kWxmVUSHCvSACi8M7-0-ff061f53b9a059c84dde496a9240fe9f)
图1-5 基于简化S函数的PID控制正弦响应
〖仿真程序〗
(1)Simulink仿真主程序:chap1_3n.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_2.jpg?sign=1739287018-kcvUcWmoomNZO985CUGMJuhuknuLYpYM-0-a76ccdaef7a9cf083defa390b698f3e3)
(2)简化的S函数控制器程序:chap1_3ns.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_3.jpg?sign=1739287018-q01JrKUjj6ngRkDXr0N7LeDtfWVygyfL-0-c03e01c18379d0b6399aa61320ffdacc)
(3)简化S函数被控对象程序:chap1_3nplant.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_24_4.jpg?sign=1739287018-hkBlQQa91364EU5aBlhLWxPldmIbFhVA-0-2345793629c74c182668c5e5c010b843)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_1.jpg?sign=1739287018-ioPKzdllqccHvqBUIfkQ4nzFk98Pg3jX-0-5e42aba4c35b080622f1e86c43817ab5)
(4)作图程序:chap1_3nplot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_25_2.jpg?sign=1739287018-vSTxHoQbMTKg1zXlgr9ilQ2BMvPv3tLF-0-c9470c1c2fd9220676f32e8969f1d68c)