数据驱动建模和控制系统设计案例研究.pdf

上传人:tbuqq 文档编号:5000546 上传时间:2020-01-25 格式:PDF 页数:12 大小:1.18MB
返回 下载 相关 举报
数据驱动建模和控制系统设计案例研究.pdf_第1页
第1页 / 共12页
数据驱动建模和控制系统设计案例研究.pdf_第2页
第2页 / 共12页
数据驱动建模和控制系统设计案例研究.pdf_第3页
第3页 / 共12页
数据驱动建模和控制系统设计案例研究.pdf_第4页
第4页 / 共12页
数据驱动建模和控制系统设计案例研究.pdf_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数据驱动建模和控制系统设计案例研究.pdf》由会员分享,可在线阅读,更多相关《数据驱动建模和控制系统设计案例研究.pdf(12页珍藏版)》请在三一文库上搜索。

1、1 数据驱动建模和控制系统设计案例研究 Motor Control Case Study in Data-Driven Modeling and Control Design 迈斯沃克软件公司作者: PravallikaVinnakota 摘要: 本文以简单的直流电机控制系统为例,介绍如何从输入输出数据辨识对象模型,使用辨识的模型来设计控制器并予以实 施。工作流程包括以下步骤:采集数据,辨识线性和非线性对象模型,设计和仿真反馈控制器以及在嵌入式微处理器上实施这 些控制器以便实时测试。在物理原型或对象硬件上调节控制器可能造成不安全运行状态甚至损坏硬件。一种更可靠的方法是构 建一个对象模型并进行仿

2、真,在不同的运行条件下验证控制器,以便无风险地运行假设情景。当机理建模不可行时,备选方法 是通过对象的输入输出数据来开发模型。一个低阶的线性模型可能足以用来设计基本控制器。但较高性能的控制器的详细分析和 设计需要一个具有较高精度的模型,且可能是非线性模型。 直流电机:控制设计目标 物理系统是通过电机驱动连接到Arduino Uno 板卡上的一台直流电机(图 1)。我们想为这台电机设计一个用于跟踪参考位置的 反馈控制器。该控制器将基于电机位置参考数据生成合适的电压命令。此电压作用于电机时,会促使电机产生扭转电机轴的扭 矩。我们将使用电位计测量电机轴旋转的角度,然后将此角度反馈给控制器。 电机驱动

3、集成电路(IC) 增加了驱动电流并能够双向驱动电机。我们通过Arduino 板卡上的“模拟输入”引脚接收电机位置数 据,然后计算参考位置与实际位置(控制器输入)之间的误差。我们将一个电压命令(控制器输出)发送到板卡上的两个“模 拟输出”引脚,为PWM 信号。这些信号连接到驱动电路,为电机提供适当的驱动电流。 控制器必须保持系统稳定,并以最小的稳态误差和超调量提供快速参考跟踪。 图 1. 连接直流电机的Arduino 板卡 2 采集和处理数据 我们使用 Simulink 的一项功能将PC与 Arduino 板卡连接,该功能允许您生成一个可执行文件并在选定的硬件上运行。图2 为与 Arduino

4、硬件结合使用的Simulink 库。 要收集数据, Arduino 板卡会向电机发送电压命令并测量产生的电机角度。我们创建一个Simulink 模型来进行数据收集。 PC 机必须与 Arduino 板卡通信,发送电压命令并接收返回的角度数据。我们创建第二个模型来启用此通信。 将要在 Arduino Uno 板卡上运行的模型中 (图 3) ,MATLAB函数“ Voltage Command To Pins ”从串行端口读取电压命令, 并将命令传送给相应的引脚。我们使用串行通信协议来保证主机与Arduino 面板的通信。在CreateMessage子系统中,将从 板卡上其中一个模拟输入引脚中获取

5、的电机位置数据生成完整的串行消息。 图 3. 将要在 Arduino 板卡上运行的 Simulink 模型 我们通过选择“Tools”“Run on Target Hardware”“Run”从模型创建实时应用程序。然后可以使用将要在主机上运行 的模型(图4)采集输入 /输出数据。 图 2. Simulink 模块库:与 Arduino 目标硬件结合使用 图 4. 将要在主机上运行的模型 3 我们发送不同的电压来激励系统,然后记录相应的位置数据。仿真结束时,Simulink 中的信号记录功能将在工作间内创建 Simulink 数据集,这个时间序列对象包含了记录的所有信号。 接下来,我们为估计和

6、验证准备收集到的数据。通过以下命令,我们将数据转换为iddata 对象,以便导入到System Identification Toolbox 中的 System Identification Tool 。 logsout logsout = Simulink.SimulationData.Dataset Package: Simulink.SimulationData Characteristics: Name: logsout Total Elements: 2 Elements: 1: Voltage 2: Angle -Use getElement to access elements

7、by index or name. -Use addElement or setElement to add or modify elements. Methods, Superclasses 4 u = logsout.getElement(1).Values.Data; y = logsout.getElement(2).Values.Data; bounds1 = iddata(y,u,0.01,InputName,Voltage,OutputName,Angle,. .InputUnit,V,OutputUnit,deg) Time domain data set with 1001

8、samples. Sample time: 0.01 seconds Outputs Unit (if specified) Angle deg Inputs Unit (if specified) Voltage V 我们将使用12 个数据集 。选择这些数据集用来确保充分激励系统并为模型验证提供充足数据。 从实验数据开发对象模型 使用系统辨识技术开发对象模型涉及模型精度和建模投入之间的权衡。模型越精确,投入的成本越高,计算的时间越 长。目标是要找到能充分捕获系统动态的最简单的模型。 我们遵循系统辨识的典型工作流程:首先估计一个简单线性系统,然后估计一个可以更精确表示电机和捕获非线性行为的更

9、详细的非线性模型。尽管线性模型可能足以满足大多数控制器设计的需要,但非线性模型使一系列工作点上的系统行为和控 制器设计的仿真更精确。 5 I II I 1 I 线性系统辨识 首先,我们使用iddata对象将对象的线性动态模型估为连续的传递函数。我们要为此次估计指定极点和零点的个数。 System Identification Toolbox 随后自动确定它们的位置,以最大限度地拟合选定的数据集。 执行以下命令来启动System Identification Tool ident 我们可以使用“Import Data”下拉菜单 (图5)将数据集从基本工作区导入到工具中。还可以对已导入的数据进行预

10、处理。 要启动估计,我们选择将用于辨识模型的工作数据和用来对照测试辨识模型的验证数据。开始时,我们可以使用相同的数 据集进行辨识和验证,然后使用其他数据集确认结果。图5 显示已导入数据集的System Identification Tool 。用于辨识的 数据集,即 数据集11,来自于为避免激励系统中的非线性而设计的实验。 图 5. 已导入数据的System identification Tool 现在我们可以辨识此数据的连续传递函数。在我们的示例中,我们辨识了一个2 个极点、无零点连续传递函数(图6) 图 6. 连续传递函数估算GUI 我们通过选中System Identification

11、Tool 中的 Model Output 框将辨识模型的仿真响应与实际测量的数据进行比较。辨识的线 性模型的响应与辨识数据之间的拟合度达到93.62%(图7) 6 为确保辨识的传递函数代表电机动态,我们必须对照一个独立的数据集进行验证。为进行验证,我们选择数据集12,其中 电机的线性运行作为我们的验证数据。我们获得了一个相当理想的拟合度(图8) 尽管不是完美拟合,但我们辨识的传递函数在捕获系统动态方面做得非常好。我们可以使用此传递函数设计系统的控制 器。 此外,我们还可以分析对象不确定性的影响。使用System Identification Toolbox 获取的模型不仅包含参数值,还包含表示

12、参 数不确定性的协方差矩阵。作为对模型可靠性的一种测量,计算的不确定性受影响系统的外部干扰、未建模动态和采集的数 据量的影响。我们可以通过在模型响应上绘制不确定性的影响来形象地表现不确定性。例如,我们可以生成辨识传递函数的 波特图,显示围绕额定响应的一个标准偏差置信(图9)。 图 7.辨识模型响应与辨识数据的比较图 图 8. 估算模型响应与验证数据的比较图 7 非线性系统辨识 使用从电机运行的线性区域收集的数据创建的电机动态线性模型对于设计有效的控制器十分有用。但是,此对象模型无法 捕获电机呈现的非线性行为。例如,数据集2 显示电机在大约100时响应饱和, 数据集3 显示电机对于小的电压没有响

13、 应,可能是由于存在干摩擦的原因。 在本步骤中,我们将创建一个具有较高精度的直流电机模型。为此,我们为直流电机辨识一个非线性模型。仔细观察数据 之后发现,响应的斜率改变与电压的改变并没有线性关系。这种趋势体现了非线性、磁滞的行为。非线性ARX (NLARX) 模型提供了相当大的灵活性,使我们能够使用丰富的非线性函数(如小波网络和S 型网络)捕获此类行为。另外,这些模 型允许我们整合使用自定义回归发现的系统非线性。 图 9. 显示模型不确定性的辨识模型的波特图 8 为了有效地构建NLARX 模型,我们需要包含丰富的非线性信息的数据。我们合并了三个数据集来创建辨识数据 ,合并了 其他五个数据集来创

14、建较大的、多实验的验证数据集 。 非线性模型具有多个可调整的组分。我们已在非线性函数中调整了模型阶次、延迟、非线性函数类型和单位,添加了代表 饱和及死区行为的回归量。数次迭代之后,我们选择一个采用带有并行线性函数的S 型网络的模型结构,并使用回归量的 一个子集作为其输入。此模型的参数经过估算,实现了可能最佳的仿真结果(图10)。 mergedD = merge(z7,z3,z6) Time domain data set containing 3 experiments. Experiment Samples Sample Time Exp1 5480 0.01 Exp2 980 0.01 E

15、xp3 980 0.01 Outputs Unit (if specified) Angle deg Inputs Unit (if specified) Voltage V mergedV = merge(z1,z2,z4,z5,z8); 9 最终模型与辨识数据和验证数据出色拟合,拟合度90%。此模型可以用于控制器设计以及分析和预测。 设计控制器 我们现在可以为较高精度的非线性模型设计一个PID 控制器。我们首先在一个感兴趣的工作点对辨识的非线性模型进行 线性化,然后为此线性化模型设计控制器。 整定 PID 控制器,然后选择其参数(图11)。 图 11. PID 整定界面 我们还要查看此控制

16、器在非线性模型上运行情况。图12 显示我们用来获取非线性ARX 模型的仿真响应的Simulink 模 型。 图 10. 非线性 ARX 模型估计 GUI 图 12. 用于在辨识的非线性模型上测试控制器的Simulink 模型 10 然后,我们比较60设定位置处的线性和非线性模型的闭环阶跃响应(图13)。 在硬件上测试控制器 我们创建一个带有控制器的Simulink 模型,然后利用Simulink 对于部署模型至目标硬件的内在支持,将该模型运行 在 Arduino 板卡上(图14)。 我们通过在某个特定工作点对辨识的非线性ARX 模型进行线性化来设计控制器。此控制器的结果显示,硬件响应与仿 真结

17、果十分接近(图15)。 图 13. 非线性模型和线性模型阶跃响应的仿真比较图 图 14. 在 Arduino 板卡上实施的带有控制器的模型。子系统Get Angle 从串行端口接收参考信号并将其转换为电机的目标角度。 直流电机子系统配置Arduino 变卡与电机实体的接口 11 ? 2013 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See for a list of additional trademarks.Other product or brand

18、 names may be trademarks or registered trademarks of their respective holders. 此外,我们还对控制器跟踪随机参考命令的性能进行测试。我们发现,硬件跟踪性能同样十分接近于仿真期间获得的 性能(图16)。 本示例虽然十分简单,但是抓住了数据驱动控制系统设计的基本步骤。我们从给定的目标硬件收集输入/输出数据, 然后使用System Identification Toolbox 构建系统模型。我们介绍了如何创建较低和较高精度的模型,以及如何使用 这些辨识模型设计控制器。然后,我们在实际硬件上验证了控制器的性能。 QQ:联系人

19、:李潇文 图 15. 对使用线性化模型设计的控制器的阶跃仿真响应和硬件响应比较图 图 16. 对使用估计的非线性模型设计的控制器,在仿真和硬件上的跟踪性能比较图 12 ? 2013 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See for a list of additional trademarks.Other product or brand names may be trademarks or registered trademarks of their respective holders. 2013 年发布 92066v00 使用到的产品了解更多 ? MATLAB ? 在目标硬件上运行Simulink 模型 ? Simulink ? 数据驱动控制:对象模型不可用时如何设计控制器 ? Simulink Control Design? 让 PID 控制变得轻松 ? System Identification Toolbox ? 视频: 数据驱动控制:数据采集(4:30) ? 视频: 数据驱动控制:系统识别(4:13) ? 视频: 数据驱动控制:控制器设计和实施(6:06) 请在

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1