数据驱动建模和控制系统设计案例研究Word下载.docx

上传人:b****4 文档编号:17340478 上传时间:2022-12-01 格式:DOCX 页数:10 大小:394.58KB
下载 相关 举报
数据驱动建模和控制系统设计案例研究Word下载.docx_第1页
第1页 / 共10页
数据驱动建模和控制系统设计案例研究Word下载.docx_第2页
第2页 / 共10页
数据驱动建模和控制系统设计案例研究Word下载.docx_第3页
第3页 / 共10页
数据驱动建模和控制系统设计案例研究Word下载.docx_第4页
第4页 / 共10页
数据驱动建模和控制系统设计案例研究Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数据驱动建模和控制系统设计案例研究Word下载.docx

《数据驱动建模和控制系统设计案例研究Word下载.docx》由会员分享,可在线阅读,更多相关《数据驱动建模和控制系统设计案例研究Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

数据驱动建模和控制系统设计案例研究Word下载.docx

我们将使用电位计测量电机轴旋转的角度,然后将此角度反馈给控制器。

图1.连接直流电机的Arduino板卡

电机驱动集成电路(IC)增加了驱动电流并能够双向驱动电机。

我们通过Arduino板卡上的“模拟输入”引脚接收电机位置数据,然后计算参考位置与实际位置(控制器输入)之间的误差。

我们将一个电压命令(控制器输出)发送到板卡上的两个“模拟输出”引脚,为PWM信号。

这些信号连接到驱动电路,为电机提供适当的驱动电流。

控制器必须保持系统稳定,并以最小的稳态误差和超调量提供快速参考跟踪。

采集和处理数据

我们使用Simulink的一项功能将PC与Arduino板卡连接,该功能允许您生成一个可执行文件并在选定的硬件上运行。

图2为与Arduino硬件结合使用的Simulink库。

图2.Simulink模块库:

与Arduino目标硬件结合使用

要收集数据,Arduino板卡会向电机发送电压命令并测量产生的电机角度。

我们创建一个Simulink模型来进行数据收集。

PC机必须与Arduino板卡通信,发送电压命令并接收返回的角度数据。

我们创建第二个模型来启用此通信。

将要在ArduinoUno板卡上运行的模型中(图3),MATLAB函数“VoltageCommandToPins”从串行端口读取电压命令,并将命令传送给相应的引脚。

我们使用串行通信协议来保证主机与Arduino面板的通信。

在CreateMessage子系统中,将从板卡上其中一个模拟输入引脚中获取的电机位置数据生成完整的串行消息。

 

图3.将要在Arduino板卡上运行的Simulink模型

我们通过选择“Tools”>

“RunonTargetHardware”>

“Run”从模型创建实时应用程序。

然后可以使用将要在主机上运行的模型(图4)采集输入/输出数据。

图4.将要在主机上运行的模型

我们发送不同的电压来激励系统,然后记录相应的位置数据。

仿真结束时,Simulink中的信号记录功能将在工作间内创建Simulink数据集,这个时间序列对象包含了记录的所有信号。

接下来,我们为估计和验证准备收集到的数据。

通过以下命令,我们将数据转换为iddata对象,以便导入到SystemIdentificationToolbox中的SystemIdentificationTool。

>

logsout

logsout=

Simulink.SimulationData.Dataset

Package:

Simulink.SimulationData

Characteristics:

Name:

'

logsout'

TotalElements:

2

Elements:

1:

Voltage'

2:

Angle'

-UsegetElementtoaccesselementsbyindexorname.

-UseaddElementorsetElementtoaddormodifyelements.

Methods,Superclasses

u=logsout.getElement

(1).Values.Data;

y=logsout.getElement

(2).Values.Data;

bounds1=iddata(y,u,0.01,'

InputName'

'

OutputName'

...

...'

InputUnit'

V'

OutputUnit'

deg'

Timedomaindatasetwith1001samples.

Sampletime:

0.01seconds

OutputsUnit(ifspecified)

Angledeg

InputsUnit(ifspecified)

VoltageV

我们将使用12个数据集。

选择这些数据集用来确保充分激励系统并为模型验证提供充足数据。

从实验数据开发对象模型

使用系统辨识技术开发对象模型涉及模型精度和建模投入之间的权衡。

模型越精确,投入的成本越高,计算的时间越长。

目标是要找到能充分捕获系统动态的最简单的模型。

我们遵循系统辨识的典型工作流程:

首先估计一个简单线性系统,然后估计一个可以更精确表示电机和捕获非线性行为的更详细的非线性模型。

尽管线性模型可能足以满足大多数控制器设计的需要,但非线性模型使一系列工作点上的系统行为和控制器设计的仿真更精确。

线性系统辨识

首先,我们使用iddata对象将对象的线性动态模型估为连续的传递函数。

我们要为此次估计指定极点和零点的个数。

SystemIdentificationToolbox随后自动确定它们的位置,以最大限度地拟合选定的数据集。

执行以下命令来启动SystemIdentificationTool

ident

我们可以使用“ImportData”下拉菜单(图5)将数据集从基本工作区导入到工具中。

还可以对已导入的数据进行预处理。

要启动估计,我们选择将用于辨识模型的工作数据和用来对照测试辨识模型的验证数据。

开始时,我们可以使用相同的数据集进行辨识和验证,然后使用其他数据集确认结果。

图5显示已导入数据集的SystemIdentificationTool。

用于辨识的数据集,即数据集11,来自于为避免激励系统中的非线性而设计的实验。

图5.已导入数据的SystemidentificationTool

III^I1I

现在我们可以辨识此数据的连续传递函数。

在我们的示例中,我们辨识了一个2个极点、无零点连续传递函数(图6)

图6.连续传递函数估算GUI

我们通过选中SystemIdentificationTool中的ModelOutput框将辨识模型的仿真响应与实际测量的数据进行比较。

辨识的线性模型的响应与辨识数据之间的拟合度达到93.62%(图7)

图7.辨识模型响应与辨识数据的比较图

为确保辨识的传递函数代表电机动态,我们必须对照一个独立的数据集进行验证。

为进行验证,我们选择数据集12,其中电机的线性运行作为我们的验证数据。

我们获得了一个相当理想的拟合度(图8)

图8.估算模型响应与验证数据的比较图

尽管不是完美拟合,但我们辨识的传递函数在捕获系统动态方面做得非常好。

我们可以使用此传递函数设计系统的控制器。

此外,我们还可以分析对象不确定性的影响。

使用SystemIdentificationToolbox获取的模型不仅包含参数值,还包含表示参数不确定性的协方差矩阵。

作为对模型可靠性的一种测量,计算的不确定性受影响系统的外部干扰、未建模动态和采集的数据量的影响。

我们可以通过在模型响应上绘制不确定性的影响来形象地表现不确定性。

例如,我们可以生成辨识传递函数的波特图,显示围绕额定响应的一个标准偏差置信(图9)。

图9.显示模型不确定性的辨识模型的波特图

非线性系统辨识

使用从电机运行的线性区域收集的数据创建的电机动态线性模型对于设计有效的控制器十分有用。

但是,此对象模型无法捕获电机呈现的非线性行为。

例如,数据集2显示电机在大约100°

时响应饱和,数据集3显示电机对于小的电压没有响应,可能是由于存在干摩擦的原因。

在本步骤中,我们将创建一个具有较高精度的直流电机模型。

为此,我们为直流电机辨识一个非线性模型。

仔细观察数据之后发现,响应的斜率改变与电压的改变并没有线性关系。

这种趋势体现了非线性、磁滞的行为。

非线性ARX(NLARX)模型提供了相当大的灵活性,使我们能够使用丰富的非线性函数(如小波网络和S型网络)捕获此类行为。

另外,这些模型允许我们整合使用自定义回归发现的系统非线性。

mergedD=merge(z7,z3,z6)

Timedomaindatasetcontaining3experiments.

ExperimentSamplesSampleTime

Exp154800.01

Exp29800.01

Exp39800.01

VoltageV

mergedV=merge(z1,z2,z4,z5,z8);

为了有效地构建NLARX模型,我们需要包含丰富的非线性信息的数据。

我们合并了三个数据集来创建辨识数据,合并了其他五个数据集来创建较大的、多实验的验证数据集。

非线性模型具有多个可调整的组分。

我们已在非线性函数中调整了模型阶次、延迟、非线性函数类型和单位,添加了代表饱和及死区行为的回归量。

数次迭代之后,我们选择一个采用带有并行线性函数的S型网络的模型结构,并使用回归量的一个子集作为其输入。

此模型的参数经过估算,实现了可能最佳的仿真结果(图10)。

图10.非线性ARX模型估计GUI

最终模型与辨识数据和验证数据出色拟合,拟合度>

90%。

此模型可以用于控制器设计以及分析和预测。

设计控制器

我们现在可以为较高精度的非线性模型设计一个PID控制器。

我们首先在一个感兴趣的工作点对辨识的非线性模型进行线性化,然后为此线性化模型设计控制器。

整定PID控制器,然后选择其参数(图11)。

图11.PID整定界面

我们还要查看此控制器在非线性模型上运行情况。

图12显示我们用来获取非线性ARX模型的仿真响应的Simulink模型。

图12.用于在辨识的非线性模型上测试控制器的Simulink模型

然后,我们比较60°

设定位置处的线性和非线性模型的闭环阶跃响应(图13)。

图13.非线性模型和线性模型阶跃响应的仿真比较图

在硬件上测试控制器

我们创建一个带有控制器的Simulink模型,然后利用Simulink对于部署模型至目标硬件的内在支持,将该模型运行在Arduino板卡上(图14)。

图14.在Arduino板卡上实施的带有控制器的模型。

子系统GetAngle从串行端口接收参考信号并将其转换为电机的目标角度。

直流电机子系统配置Arduino变卡与电机实体的接口

我们通过在某个特定工作点对辨识的非线性ARX模型进行线性化来设计控制器。

此控制器的结果显示,硬件响应与仿真结果十分接近(图15)。

图15.对使用线性化模型设计的控制器的阶跃仿真响应和硬件响应比较图

此外,我们还对控制器跟踪随机参考命令的性能进行测试。

我们发现,硬件跟踪性能同样十分接近于仿真期间获得的

性能(图16)。

图16.对使用估计的非线性模型设计的控制器,在仿真和硬件上的跟踪性能比较图

本示例虽然十分简单,但是抓住了数据驱动控制系统设计的基本步骤。

我们从给定的目标硬件收集输入/输出数据,然后使用SystemIdentificationToolbox构建系统模型。

我们介绍了如何创建较低和较高精度的模型,以及如何使用这些辨识模型设计控制器。

然后,我们在实际硬件上验证了控制器的性能。

QQ:

联系人:

李潇文

使用到的产品

了解更多

▪MATLAB

▪在目标硬件上运行Simulink模型

▪Simulink

▪数据驱动控制:

对象模型不可用时如何设计控制器

▪SimulinkControlDesign

▪让PID控制变得轻松

▪SystemIdentificationToolbox

▪视频:

数据驱动控制:

数据采集(4:

30)

系统识别(4:

13)

控制器设计和实施(6:

06)

请在

2013年发布92066v00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1