技术文章和通讯

电机控制和Arduino:一个案例研究在数据驱动建模和控制的设计

由Pravallika Vinnakota MathWorks


优化物理原型或植物上的控制器硬件可能会导致不安全的操作条件和损害硬件。更可靠的方法是建立一个植物模型并模拟验证控制器运行在不同的操作条件,假定场景没有风险的。

当采用基于建模不可行,另一种是开发从投入产出模型的测量。一个低阶线性模型设计一个基本控制器的可能就足够了。详细的分析和设计的高性能控制器需要高保真和可能的非线性模型。

使用一个简单的控制系统对直流电机为例,本文展示了如何识别植物从输入输出数据模型,使用所确定的模型设计控制器,实现它。工作流程包括以下步骤:获取数据,识别线性和非线性植物模型,设计和模拟反馈控制器,实现这些控制器对嵌入式处理器的实时测试。

在这个例子中使用的模型和脚本是可用的下载

直流电机:控制设计目标

物理系统是直流电机连接到一个Arduino®Uno董事会通过马达驱动器(图1)。我们想要设计一个反馈控制器电机跟踪参考位置。控制器将生成适当的电压命令基于电动机位置参考数据。当应用于电机,这个电压会使电机产生转矩,电机轴。我们将使用一个电位计来测量电机轴的旋转的角度,并养活这个角回控制器。

图1所示。Arduino电路板连接到直流电机。

电机驱动集成电路(IC)增加当前的能力,可以在两个方向上驱动电动机。我们收到马达位置数据通过一个模拟输入销Arduino董事会和计算参考和实际数据之间的误差(控制器的输入)。我们发送一个电压命令(控制器输出)两个模拟输出插脚董事会作为PWM信号。这些信号是美联储的驱动器集成电路为电动机提供了适当的驱动电流。

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

获取和处理数据

我们连接主机PC Arduino电路板使用仿真软件金宝app®功能,让您在选择硬件上生成一个可执行文件并运行它。图2显示了模型库与Arduino硬件使金宝app用。

图2。金宝app使用仿真软件块库:目标Arduino硬件。

收集数据,Arduino董事会将发送命令电机电压和测量电动机的角度。我们创建一个仿真软件模型金宝app,使数据收集。主机必须与Arduino板回发送电压命令和接收角的数据。我们创建第二个模型来启用这个沟通。

在模型中,将运行在Arduino Uno板(图3),MATLAB®功能块电压命令别针从串口读取和线路电压命令到适当的针。我们使用串行通信协议使主机与Arduino电路板进行通信。在CreateMessage生成子系统,一个完整的连续消息从电动机的位置获得的数据从一个模拟输入插脚。

图3。金宝app仿真软件模型,将运行在Arduino董事会。

我们创建一个实时应用程序的模型选择工具> > Run运行在目标硬件。我们然后准备收购的使用模型的输入/输出数据在主机上运行(图4)。

图4。模型,该模型将在主机上运行。

我们发送不同激励电压概要文件系统,并记录和日志数据对应的位置。最后模拟、仿真软件的信号记录功能将在工作区中创建一个模型数据集对象包含所有记录的信号时间序列对象。金宝app

接下来,我们收集到的数据准备评估和验证。使用下面的命令,我们将数据转换成iddata对象导入到系统辨识工具箱™系统识别工具。

> > logsoutlogsout = 金宝appSimulink.SimulationData。数据集包:仿真软件。金宝appSimulationData特点:名字:“logsout”总元素:2元素:1:“电压”2:‘角’用getElement通过索引来访问元素或名字。用addElement或setElement添加或修改元素。方法,父类> > u = logsout.getElement .Values.Data (1);> > y = logsout.getElement (2) .Values.Data;> > bounds1 = iddata (y, u, 0.01,“InputName”,“电压”,‘OutputName’,‘角’,……‘InputUnit’,‘V’,‘OutputUnit’,‘度’)时域与1001个样本数据集。样品时间:0.01秒(如果指定了的话)角度输入输出单元(如果指定了的话)电压V

我们会处理12个数据集。这些数据集选择,以确保适当的励磁系统,并提供足够的数据进行模型验证。

发展植物模型与实验数据

使用系统辨识技术开发植物模型涉及到权衡模型保真度和建模工作。更精确的模型,高成本的努力和计算时间。我们的目标是找到最简单的模型,将充分捕捉的动态系统。

我们遵循的典型工作流系统识别:我们先估计一个简单的线性系统,然后估计更详细的非线性模型,更准确的表示电机和捕获的非线性行为。而线性模型可以满足大多数控制器设计应用程序,一个非线性模型可以更准确的模拟系统行为和控制器设计的一系列操作点。

线性系统辨识

使用iddata对象,我们首先估计植物作为一个连续时间的线性动态模型传递函数。估计,我们指定极点和零点的数量。系统辨识工具箱然后自动确定它们的位置来最大化适合所选择的数据集。

我们通过执行启动系统识别工具

> >鉴别

我们可以将数据集导入基工作区使用导入数据的工具下拉菜单(图5)。我们也可以选择预处理导入的数据。开始评估过程中,我们选择工作的数据将被用来估计模型和验证数据估计的模型将受到考验。我们可以使用相同的数据集评估和验证最初,然后使用其他数据集来确认我们的结果。图5显示了系统识别工具导入的数据集。估计的数据集,数据集11来自一个实验旨在避免令人兴奋的非线性系统。

图5。系统识别工具与数据导入。

我们现在可以估计这个数据的连续传递函数。在我们的示例中,我们估计2-pole,没有零,连续时间传递函数(图6)。

图6。连续传递函数估计GUI。

我们比较的模拟响应估计模型与测量数据通过检查模型输出箱系统中识别工具。之间的配合响应估计线性模型和估计的数据是93.62%(图7)。

图7。情节比较估计模型响应和估计数据。

确保估计传递函数代表了汽车动力学,我们必须验证它与一个独立的数据集。为此我们选择数据集12,线性马达运行验证数据。我们实现一个合理准确的配合(图8)。

图8。情节比较与验证数据估计模型的响应。

虽然并不完美,传递函数,我们发现很好地捕捉的动态系统。我们可以使用这个系统的传递函数来设计一个控制器。

我们也可以分析植物的不确定性的影响。模型不仅与系统辨识工具箱包含信息获取与名义参数值有关,还与参数封装的不确定性参数协方差矩阵。测量的可靠性模型,计算不确定性是受到外部干扰影响系统的影响,未建模动态,收集的数据的数量。我们可以通过绘制可视化的不确定性对模型的影响的反应。例如,我们可以生成传递函数估计的波德图显示1标准差信心绑定在标称响应(图9)。

图9。估计模型的波德图显示模型的不确定性。

非线性系统辨识

线性的汽车动力学模型,由使用收集的数据从一个线性区域的操作,设计一个有效的控制器是很有用的。然而,这种植物模型不能捕获运动所展现出来的非线性行为。例如,数据集2显示电机饱和烃的反应约为100°,和数据集3显示电机正电压响应小,也许由于干摩擦。

在这一步中,我们将创建一个高保真的直流电机模型。要做到这一点,我们估计一个直流电机的非线性模型。仔细观察的数据显示,响应的斜率的变化不是线性相关的电压的变化。这一趋势表明,非线性,hysteresis-like行为。非线性ARX (NLARX)模型提供相当大的灵活性,使我们能够捕捉到这种行为使用一组丰富的非线性函数,如小波和乙状结肠网络。此外,这些模型让我们把我们发现的关于系统非线性使用自定义的解释。

NLARX建模是有效的,我们需要丰富的非线性信息的数据。我们合并三个数据集来创建估计的数据。我们五个数据集来创建一个更大的合并,multi-experiment,验证数据集

> > mergedD =合并(z7、z3 z6)时间域数据集包含3实验。实验样品样本时间Exp1 5480 0.01 Exp2 980 0.01 980年Exp3 0.01输出单位(如果指定了的话)角度输入单位(如果指定了的话)电压V> > mergedV =合并(z1、z2 z4, z5 z8等车型后)亨里克·菲克斯;

非线性模型有各种可调节组件。我们调整了模型订单,延迟,类型的非线性函数,非线性函数和单位的数量。我们添加了解释变量表示饱和和死区行为。若干次迭代后,我们选择了一个模型结构,采用乙状结肠网络并行线性函数和解释变量的子集作为它的输入。该模型的参数估计来实现最好的仿真结果(图10)。

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

由此产生的模型有一个优秀的适合> 90%的评估数据和验证数据。该模型可用于控制器设计进行分析和预测。

设计控制器

现在我们已经准备好设计PID控制器的高保真非线性模型。我们估计非线性模型线性化操作感兴趣的点,然后为这个线性化模型设计控制器。

我们调整PID控制器,然后选择它的参数(图11)。

图11。PID调谐器接口。

我们也看看这个控制器执行的非线性模型。图12显示了仿真软件模型,我们使用获得的金宝app模拟响应非线性ARX模型。

图12。金宝app测试控制器的仿真软件模型估计的非线性模型。

然后,我们比较了线性化和非线性模型闭环60°的一步反应所需的参考位置(图13)。

图13。阶跃响应图比较模拟响应的非线性和线性化模型。

测试控制器硬件

我们创建一个仿真软件模型金宝app的控制器,并将其Arduino Uno董事会使用仿真软件对模型部署到目标的内置支持硬件(图14)。金宝app

图14。模型与控制器上实现Arduino电路板。子系统得到角从串口接收参考信号并将其转换为所需的电机的角。直流电机子系统配置Arduino电路板接口的物理运动。

我们设计了一个控制器通过线性化非线性ARX模型估计某些操作点。这个控制器的结果表明,硬件响应非常接近的仿真结果(图15)。

图15。情节比较仿真和硬件反应一步参考使用线性化模型设计的控制器。

我们也测试了控制器跟踪随机引用命令。我们看到硬件期间获得的跟踪性能也非常接近模拟(图16)。

图16。情节比较跟踪性能的仿真和硬件控制器设计使用估计的非线性模型。

这个例子中,虽然简单,捕获数据驱动控制的基本步骤。我们从一个给定的输入/输出数据收集硬件目标和系统辨识工具箱用于构建系统的模型。我们展示如何创建模型和更高的保真度和较低的使用这些估计模型设计控制器。然后,我们验证了我们的实际硬件控制器的性能。

2013 - 92066 v00出版

查看相关文章的能力

为相关行业观点文章