发 帖  
[讨论] 电机控制开发中基于模型的设计
2018-6-21 11:50:12  814 电机控制
分享
硬件平台
电机控制开发中基于模型的设计,需要先考虑目标硬件。硬件平台由一个电机驱动、一个3相永磁电机和一台装有MATLAB、Simulink和IAR Embedded Workbench的个人电脑构成。图1为硬件平台,图2为功能框图,从这两个图可看出电机驱动的特点。电源板在顶部,控制板在底部。电源的输入端为通用型HD线,通过一个整流器连接着一个升压PFC转换器。

DC总线通过一个380V DC控制,馈入一个标准的3相逆变器。该逆变器有6个IGBT,额定电压为600V,连续相位电流为5A RMS。电源模块的输出通过一个三相永磁电机与装在轴上的一个编码器相连。作为控制器的反馈,可以获得编码器提供的相位电流、DC总线电压和电机位置。

控制板上装着处理器,为个人电脑提供通信接口,而且由于该控制板涉及高压,因此,所有东西都是完全隔离的。处理器为ADSP-CM40x,面向电机控制应用。

该处理器基于ARM CORTEX M4内核,支持单精度浮点运算,工作频率为240mHz。内核通过384kb SRAM存储器进行连接,该存储器中同时保存数据和程序。RAM模块容量足够大,可以容纳整个电机控制应用,而且能以全时钟速率执行代码,无任何等待周期,换言之,代码和存储器均以240mHz运行。

处理器还拥有2MB的闪存,可以用来引导SRAM,或者也可以直接从闪存执行代码。为了加快执行速度,还配备了16kB的缓存。作为模拟子系统,处理器有两个16位ADC,精度为14位。转换时间为380ns,这意味着,采样和转换16个通道只需3µs。

为了减轻内核的负载,器件配有硬件加速器。提到SINC滤波器,借助该滤波器,可以对来自Σ-Δ转换器的数据流进行解调处理,而无需使用任何外部器件,最多可以支持4个Σ-Δ转换器。减轻处理器负担的另一功能是20个DMA通道,这些通道完全独立于内核工作,不会窃取任何时钟周期。

图1 硬件平台结构


图2 功能框图
图3 基于模型的设计框图

图4 开发应用时经历的各个环节

PWM模块可为最多12个相位提供K5信号,最后,还有完整的通信接口组合,包括I2C、UART、SPI、SPORT、以太网、CAN和USB。

基于模型的设计

基于模型的设计是一种系统设计和实现方法。借助基于模型的设计,用户可以更加轻松地明确需求。基于模型的设计以系统建模和仿真概念为基础,其目标是在设计过程的初始发现和纠正错误。基于模型的设计框图如图3所示。
那么,为什么要使用基于模型的设计?基于模型的设计可为多种目标平台生成代码,还可在整个设计过程中实现持续验证,从而使开发风险降至最低,加快开发过程,为最终产品带来最高的品质保障。

为了展示基于模型的设计在开发过程中的作用,先来看看一个传统的设计过程,在这种设计过程中,先是需求,这通常是一份纸质文档,然后进入设计阶段,其后是实现阶段,最后是测试阶段。

在许多情况下,这一组序列任务,上个阶段结束,下个阶段才可以开始,每个阶段都可能由不同部门完成,这些部门可能位于不同地区,甚至不同国家。同时还要注意,该设计过程未形成闭环,无法针对需求进行验证,也无法保证最终阶段进行的测试与前面阶段进行的任何测试是相关联的。

同时,如果需求随时间而变化,则没有相应的机制来保证这些变化能进入系统设计的其余部分。对于像电机控制一样的多域系统来说,该传统设计方法的不足就放大了,因此,硬件、软件和机械组件都有自己的设计流程,都需要进行整合,作为一个系统正常运行。如果把系统测试留到最后再进行,则错误的发现和修复不但成本高昂,而且十分费时。

传统设计流程对应高昂的代价。例如,如果需求错误在测试阶段才发现,其修复成本要比在需求确定阶段发现高出50倍。类似地,对于设计和编码错误,发现得越早,其修复成本就越低。

为了在设计过程初期发现和修复错误,为了从整体上提高设计过程的效率,接下来将考察基于模型的设计。以研究和需求为基础,为系统开发一个多域模型。让该模型成为可执行技术规格,可以在各团队中使用,这样,所有人都以相同的设计源为基础开展工作。只需在Simulink中点击播放按钮,就可以在早期针对需求验证您的技术规格,并修复需求中的任何问题。

这里用来在仿真中针对需求验证系统设计的测试与您在整个设计过程中使用的测试是相同的。一旦在仿真中对设计感到满意,就可以生成代码,以在目标平台上运行设计。把代码生成纳入基于模型的设计,这可以消除手动编码错误,可实现连续工作流程,完全可以追溯到需求,而在传统手动编码方法中,这是不可能实现的。

从系统模型生成代码,还可以确保需求随时间可能发生的任何变化都能自动进入代码,再也不用人工查看源代码,不用确定哪些代码需要更改,不用担心会带来额外错误,不必一次性使全部代码运行于处理器上。

这样一来,可以分阶段实施设计工作,使数据回馈进MatLab和Simulink,以便对目标上的运行情况进行连续验证。流程的最后阶段是集成,把代码部署到独立系统或仪表仪器中,以便对参数进行调谐,或者发现硬件问题。由于从技术规格的制定到实现有一条连续的路径,因此,同时还可以实现各种认证和标准规定。

换个角度来看,对于嵌入式系统的开发,所有开发阶段都要以制定自己的可执行技术规格为基础。设计仿真,允许进行快速“假设”分析,减少构建成本高昂的原型的需要。比手动编码相比,自动代码生成可以减少手动编码错误,缩短在芯片上实现想法的时间,还能自动处理技术规格的更新。

可以在设计时进行测试,在修复代价较小、难度较低的设计初期发现错误,在整个设计过程中,确保您的最终产品始终符合技术规格。

如何将基于模型的设计用于电机控制应用的开发当中?图4从宏观上展示了在开发应用时将经历的各个环节。先从对计划建模开始。对于我们而言,这表示对电机、负载、电源电子等建模。然后是接口建模,包括传感器、器件驱动器等,其后是控制器建模,在我们的例子中,这就是3相永磁电机的磁场定向控制。

图5为MBD法的步骤。该模型用于调试算法,调谐参数,进行稳定性分析等。


图5 MBD法的步骤框图


图6 驱动系统反馈和控制框图

所有这些都是在个人电脑平台上完成的。这里不需要访问嵌入式硬件,只需要了解硬件,但不必访问物理硬件。一旦对性能感到满意,则可用自动代码生成功能,就可以得到模型的C代码,可以将该代码部署到嵌入式目标上。值得注意的是,只需要部署了控制算法,电机和逆变器都用实际器件代替了。接下来,最后一步是验证结果符合预期,例如,把实际测量值与仿真结果进行比较。因此,建模是基于模型的设计不可或缺的一部分。

因此,这里有个关键问题。何为好模型?首先,需要了解想模拟的是什么。举例来说,如果感兴趣的是速度环的控制动态,则在模型中纳入逆变器的xxx特性可能并不值得称道。这样做会使模型偏离您的实际目的,因为,其速度会非常慢。另外,由于实际方式将被部署到嵌入式平台,因此,模型应支持自动代码生成。

如果想部署到支持单精度浮点运算的处理器上,则开发采用双精度浮点运算的模型并非一个好的选择。最后,库的使用是必不可少的。如果您必须一切从头开始,工作量是惊人的,模型的质量可能不如预想的高,并且如果使用库,就有可能跨平台重用模型。

因此,在限定模型范围时,必须了解代码开发工具的优缺点。对于某些任务,MatLab SimuLink就是非常强大的工具,但对于其他任务,传统的C代码实现方式反而更加有效。如果需要进行折衷,那么,系统的哪一部分应该使用基于模型的设计,哪一部分应该使用传统设计方法?

MathWorks环境,其优势在于微分方程求解、进行时域仿真以及数据和结果的可视化呈现等。MathWorks环境的弱项在于特定目标设置方面,比如,寄存器设置、系统资源管理、存储器分配和中断等。

但是,如果来了解一下传统设计方法的优缺点,这里以IAR系统为例,情况则完全相反。使用C代码的优势在于,可以方便、有效地访问特定控制器硬件,以及寄存器的设置、系统资源的处理和时间的安排等。C代码的不足则体现在实时控制算法、调试和数据的可视化测试等方面。

好消息是,这两种环境具有良好的互补性。如果选择在MatLab Simulink中实现模型控制算法,在C代码中实现特定目标控制,则可兼得二者的优势。

在一定程度上,SimuLink生成的代码是因硬件架构而异的。SimuLink知道我们在为ARM M系列控制器创建代码,知道这类控制器支持单精度浮点运算。

然而,SimuLink并不知道嵌入式目标的外设,不知道需要操作哪些寄存器以获得某些功能。但SimuLink会加入该硬件接口层。基本而言,该接口层将通用C代码关联到使用器件驱动器的嵌入式平台。硬件接口层是在传统嵌入式工作台中,用手写C代码开发的,在这张幻灯片上,显示为IAR系统。最后,得到一个在MatLab SimuLink中开发的独立于平台的器件,以及以手写C代码实现的、因平台而异的器件。

然而,SimuLink并不知道嵌入式目标的外设,不知道需要操作哪些寄存器以获得某些功能。但SimuLink会加入该硬件接口层。基本而言,该接口层将通用C代码关联到使用器件驱动器的嵌入式平台。硬件接口层是在传统嵌入式工作台中,用手写C代码开发的。最后,得到一个在MatLab SimuLink中开发的独立于平台的器件,以及以手写C代码实现的、因平台而异的器件。

通过使用器件驱动器,将控制算法与嵌入式目标关联了起来。然而,还缺少一个关键要素。对于基于模型的设计,其核心是能够离线模拟设计,无需访问目标平台。器件驱动器与嵌入式平台高度相关——它们负责处理寄存器设置、中断服务、存储器分配等任务。
事实上,并不希望把这些东西带到SimuLink中,而只希望SimuLink去处理独立于平台的任务。相反,为器件驱动器创建一个功能模型,模仿与控制算法相关的行为,功能模型为仿真和调试提供了方便,从控制算法角度来看,器件驱动器的具体类型并不重要。

电机控制系统的组件,如图6所示。右侧是一个三相永磁电机,搭载一个馈回到控制算法的精密传感器。有一个带相位电流测量、DC总线电流和电压测量的功率逆变器,最后是控制算法本身。算法是由速度环、电流环、磁场对齐和PWM发生器件构成的。

这些就是需要模拟的器件,蓝色框是我们将部署到嵌入式目标的器件。

现在,我们就来看看SimuLink中的实际实现方式。这里,我们看到的是整个系统的宏观示意图。

图7展示的是主要元件的框图。黄色高亮部分是功率逆变器和电机模型,蓝色高亮部分是测量系统模型,器件驱动器模型,以及将控制器与硬件关联起来的所有器件,红色高亮部分是控制算法本身。因此,可以对该系统进行仿真,并与MatLab SimuLink中的所有分析和调试工具配合使用。当您对设计感到满意时,就可以用自动代码生成功能将模型部署到目标上。

图7 AC电机算法(磁场定向控制)

生成的代码与器件驱动器和应用需要的其他代码一起编译,最终结果是一个可执行文件,可以在嵌入式目标上运行。
AC电机算法(磁场定向控制)如图7所示,使用的控制算法是对三相永磁电机的磁场ANT控制。在右侧的这里,是电机和测量相位电流、转轴位置,这些信号馈回到控制算法中。使用Clarke和Park变换,将三相电流转换成代表扭矩和通量组分(也称为Id和Iq)的DC量。为此,用测得的转轴角度和三角函数来计算角度的正弦和余弦。基于该转轴角度,算出转轴速度,并将其作为速度控制器的反馈。

有了这些模型,就可以在MatLab中进行完整的系统仿真,采用所有下列调试选项,比如,SimuLink范围,代码和脚本调试以及数据分析。

调试和数据分析不在本期在线研讨会的范围之内,这里提到的例子只是众多选项中的一小部分。需要记住的关键点是,可以对远程控制应用进行系统仿真。

因此,一旦对系统性能感到满意,就可以针对嵌入式目标自动生成代码。系统的任意部分都可以构建到C代码中。其方法是,右击含有该算法的子系统,并选择构建子系统。然后,自动生成的代码将被导入到IAR嵌入式工作台中,并与器件驱动器、系统设置和应用代码等一起进行构建。结果是一个可执行文件,可以运行在嵌入式目标上。

总结一下整个工作流程,在MathWorks环境中,我们开发了控制算法,我们使用了电机控制功能,器件驱动器的功能模型,我们导入了一些传统C代码,我们还用到了ARM库。借助自动代码生成功能,我们获得了C代码,这些代码被导入到IAR嵌入式工作台中,在这里,代码与系统资源设置、时间排程、应用代码和器件驱动器的实际实现方式关联起来。
最后,得到一个可执行文件,把这个文件部署到嵌入式目标上。

要运行目标,可以使用MatLab图形用户界面。通过该界面,可以向目标发送命令,比如子命令,还可以配置变量和目标。另外,图形用户界面充当一个接口,可以在电机运行时将数据传回MatLab SimuLink。

在电机运行时,会监控占空比、相位电流和转轴角度,所有这一切都是实时发生的,把数据实时传回MatLab SimuLink。

电机控制系统有多个控制环,它们有着不同的动态情况。例如,电流环的时间常数比速度环的时间常数小得多。通常,最好选择与环路动态特性相匹配的采样速率。在系统中,使用了两个采样域,一个运行于10kHz的速率下,图8中显示为黄色,另一个运行于1kHz的速率下,这里显示为蓝色。速率10kHz用于电流控制,1kHz用于速度控制。


图8 采样域

总结

基于模型设计的两个关键特点是建模和自动代码生成。需要注意的关键点如下:
•基于模型的设计
-系统建模和仿真
-自动代码生成
•电机控制系统建模
-电子/机械
-接口
-控制算法
•将通用C代码连接到嵌入式目标
-使用不同的环境
-设备驱动
•调试与测试
•离线
-实时

在SimuLink中,可以指定子系统的执行速率。自动生成的代码可以处理时间排程,并且提供了一个必须 调用的接口函数,这就是系统的基础速率。在例子中,基础速率为10kHz。
基于模型的设计能有效缩短上市时间、提高产品质量。


1
2018-6-21 11:50:12   评论
5 个讨论
如果有图会更好
2018-6-21 13:02:56 评论

举报

谢谢楼主的分享。。。。
2018-6-25 08:29:54 评论

举报

谢谢分享,学习学习了
2018-6-25 09:50:33 评论

举报

感谢分享
2018-6-29 15:54:49 评论

举报


谢谢分享,学习学习了
2018-7-11 14:56:40 评论

举报

高级模式
您需要登录后才可以回帖 登录 | 注册

发表新帖
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表