概述
1 概述
MWORKS.Sysplorer 是一款由同元软控完全自主研发的多领域统一建模仿真软件,它不仅能够实现从控制器建模、模型仿真、生成嵌入式 C 代码的全流程支撑,还可结合其强大的物理建模能力,满足控制器与被控对象在同一环境下的建模和仿真需求,支持将被控对象部署到实时机以及将控制器模型生成嵌入式 C 代码以帮助用户集成到微控制器(Micro-controller unit,MCU)中。
基于上述场景,本文以永磁同步电机(Permanent-magnet synchronous motor,PMSM)这样一个多变量、强耦合、非线性和变参数的复杂对象作为被控目标,叙述从建立不需要位置传感器的磁场定向控制(Field-oriented control,FOC)控制器模型到最终实机测试的开发流程(图 1),具体包括:
- 在 Sysplorer 中建立基于滑膜观测器的无感磁场定向控制算法模型,仿真验证控制器模型的有效性;
- 成嵌入式 C 代码集成到 MCU ;
- 实机测试。
结果表明:
- 在 MWORKS.Sysplorer 平台上使用基于模型的设计方法(Model Based Design,MBD) 可以轻松搭建复杂的控制器模型;
- 控制器与物理被控对象模型在同平台仿真,无需繁琐配置;
- 生成高效的 C 代码:无感 FOC 控制器模型生成的 C 代码在 168MHz 的 MCU 上耗时 32.5 微秒;
此外,MWORKS.Sysplorer 还可以实现将物理被控对象模型生成 C 代码部署到 MCU ,我公司已有这方面落地案例。
图1 FOC 控制器模型从建模到实机测试
2 FOC 控制器建模与仿真
本文所建立的 FOC 控制器模型包括 Clarke 变换、Park 变换、反 Park 变换、基于正交锁相环的滑膜观测器、电流 PI 控制和 SVPWM 模块,各模块由加减乘除运算、三角函数运算、积分、比例积分以及延迟环节等基本模块(图 2)构建 ,最终的控制器结构如(图 3)。
建模过程在 Sysplorer 中以图形化方式进行,通过对图形元素的拖拽、连接与组合即可构建目标模型,即便是复杂的模型也具有清晰明了的结构、层次和流程,并能通过交互式的操作修改模型参数,从而方便后期调整维护。
由于篇幅有限,本文仅以 Clark 变换和 SVPWM 介绍根据原理和方程建立模型的过程。
图2 FOC 控制器模型中常用基本模块
图3 FOC 控制器模型结构图
2.1 Clarke 变换建模
Clarke 变换是将自然坐标系中的矢量变换到 静止坐标系中的过程,对于三相 PMSM,自然坐标系就是由三组线圈绕组构成的 ABC 坐标系,它与等效后的
静止坐标系关系如(图 4)。
图4 自然坐标系与静止坐标系
给三相电机的三个绕组供电后每个绕组中均会形成各自的电流向量,将三个电流向量合成并等效到 静止坐标系中的的基本方程为:
基于上述方程在 MWORKS.Sysplorer 中建立相应的模型如(图 5)。
图5 Clarke 模型
2.2 SVPWM 建模
SVPWM 的理论基础是平均值等效原理,即在一个控制周期内通过对基本电压矢量加以组合,使其平均值与期望电压矢量相等。其中基本电压矢量是指给电机 A、B、C 三相线圈分别接电源的正或负极而形成的电压矢量,其组合共对应 6 个非零矢量和两个零矢量,非零矢量如(图 6)。
图6 各非零矢量在静止坐标系中的位置
在每个控制周期中,首先由转子位置观测器计算得出转子位置,进而由反 Park 变换计算出期望的电压矢量 ,最后由 SVPWM 模块选择出与
相邻的两个非零矢量,进而计算两个非零矢量以及两个零矢量应当作用的时间以达到与
等效的效果,其计算原理表达式如下:
其中 为控制周期、
、
为与期望电压矢量
相邻的两个非零电压矢量、
、
为各相应非零电压矢量在一个控制周期内作用的时间总和。
如下图,假设期望电压矢量 如图,则由
的位置可知其应由
和
来合成,则需要计算
和
:
图7 由 和
合成
原理示意图
其中 和
两个零矢量未在图中画出。由上图可知,设
在
轴和
轴上的分量分别为
和
,则:
令
则有
根据 和
计算三路 PWM 周期:
其中 、
、
分别为控制三相线圈通断的 PWM 波的半周期高电平计数值。
上述两组方程相应的模型 “C1” 为:
图8 SVPWM 的子模型 “C1”
最后添加根据 和
计算扇区的算法模型 “Sector” 、其余 5 个扇区的算法模型 “C2” 到 “C6” 以及根据扇区选择结果的结果选择器 “selector” 构成 SVPWM 算法的核心。
2.3 FOC 控制器模型
在 Clarke 变换、Park 变换、反 Park 变换、基于正交锁相环的滑膜观测器、电流 PI 控制和 SVPWM 模型全部建好后,根据各模块间的数据流向建立完整的 FOC 控制器模型,如(图 9)。
图9 FOC 控制器算法模型
2.4 模型仿真与验证
完成 FOC 控制器模型后需要验证模型的有效性并进行相关的调试工作,相比于在 MCU 上调试 C 代码,在模型中调试既能快速清晰的定位需要观察的变量、修改参数,更能通过观察波形对比、分析数据,从而定位并修正存在的问题,直至模型输出符合预期。
由于 FOC 控制器模型只包含算法,在实际应用时,其输出值会被直接写入 PWM 模块的计数寄存器中,因此在模型仿真与验证阶段需要添加 PWM 发生器模型(图 10中的 “switcher1” 模块),它负责根据各路 PWM 计数值和仿真时间输出六路布尔量以控制六臂全桥电路。
此外,物理模型包括电源、六臂全桥电路,电流传感器、PMSM 电机和负载模型。由于本例仅做测试,因此电机模型的一些参数根据估算值给定,本例在此环节也仅验证 FOC 控制器模型的正确性。
根据实机测试中的场景,整个模型采用欧拉求解算法,FOC 控制器模型的采样周期设定为 0.1 毫秒,其余模型采样周期设定为 0.005 毫秒。控制器的 Q 轴参考电流由分段函数给定,其波形如(图 11)中的黑色折线,其余曲线为 FOC 控制器模型的三路 PWM 计数值的输出波形,可以确定 FOC 控制器模型是正确的(本例中仅使用了电流环,因此减速动态性能较低)。
图10 FOC 控制器闭环仿真模型
图11 FOC 控制器模型闭环仿真曲线
3 嵌入式代码生成
显然,图形化的 FOC 控制器模型需要生成 C 代码才能在 MCU 中运行,并且生成的 C 代码还需要能够与外设驱动等代码进行数据交互。因此在嵌入式代码生成过程中使用了数据字典工具,从而将模型中的部分信号生成为 C 代码中的全局变量。
3.1 使用数据字典
数据字典可以对模型中的数据对象进行统一管理,并规定这些数据对象在生成代码中的表现形式,使所建立的模型能够高效地转换为可读性高的嵌入式通用 C 代码,便于用户集成到自己的目标硬件上执行。
数据字典的应用提供三点便捷:
- 自动数据绑定
- 数据增删改查
- 数据平坦化统一管理
此外,数据字典还能够自动完成模型中数据信息的分类。通常数据字典将模型中的数据信息分为参数、信号和常数:
参数:一般情况下在仿真运行过程中不变,可以根据需要标定的数据。
(通常为需要手动设置的某些调试常量。)
信号:模型中根级输入输出端口的变量,其值由系统计算得到。
(通常只需要给定初始值和范围。)
常数:指一些恒定不变的物理常量。
(比如重力加速度、万有引力常数、圆周率等,通常生成常数或宏。)
如(图 9),左侧 6 个蓝色实心三角形表示 6 个输入,右侧 4 个空心三角形表示 4 个输出。在 MCU 的每个控制周期中需要首先为输入赋值,然后运行模型生成的 C 代码,最后根据 4 个输出执行其它流程。为此,比较方便的一个方法是将这 10 个变量生成全局变量,而这正是 Sysplorer “数据字典”的主要功能之一。
如(图 12),在隶属于模型的数据字典中可以通过“批量绑定”快速的添加多个输入输出变量,也可以通过“新增”功能单个添加某个变量,为变量指定别名、设定初值并将 “storage type” 设定为 “ExportedGlobal” ,则各对象相应的变量将在生成的嵌入式 C 代码中体现为全局变量。
综上,数据字典除了可以帮助用户在代码集成中与其它 C 代码进行数据交互外,还可以实现在 C 代码层面修改、调试模型参数和变量。
图12 Sysplorer 中的“数据字典”功能
图13 数据字典中的“常数”、“信号”与“参数”
3.2 生成嵌入式代码
在“代码生成”选项中控制模型生成的 C 代码,包括各类数据长度、自定义数据类型关键字( int8_t表示char )等。生成的头文件和源文件部分内容如(图 15)和(图 16)。
图14 代码生成选项
图15 生成的头文件部分内容
图 16 生成的源文件部分内容
4 集成测试
4.1 集成代码
电机的三相电流值信号由 ADC 模块采集,而电源电压、d 轴和q 轴电流按需手动在程序中指定,这些数据作为(图16)中的 FOC-DoStep() 函数(以下简称 step() 函数)的输入数据,step() 函数计算得到的各路 PWM 高电平的计数值将被写入到 Timer 模块的寄存器中以控制各路 PWM 信号的高电平时间。此外,为了观察测试数据,在 MCU 中使用串口将每个控制周期的关键数据发送到电脑端,然后由 Sysplorer 绘制曲线。
图17 电机控制主要硬件及程序结构图
图18 代码集成主要步骤
4.2 系统测试
使用 Sysplorer 将 MCU 通过串口发来的数据绘制成曲线(图 19),其中 q 轴参考电流随时间的变化(图 19 中的黑色折线)由 MCU 中的程序控制,相应的转速变化如(图 19 )中红色曲线。此外,绿、橙、蓝三色曲线组成的大片阴影区域为三路 PWM 的高电平计数值整体变化趋势。(本例中仅使用了电流环,因此减速动态性能较低)
分别选取电机启动过程、加速过程和减速过程的区域进行放大如(图 20、图 21、图 22)。
图19 实机测试回传数据曲线图
图20 启动过程
图21 加速过程
图22 减速过程
为了测试 FOC 控制器模型生成的 C 代码在 MCU 中运行时所消耗的时间,集成 FOC 控制器模型 C 代码时,在调用 step() 函数前后添加翻转 MCU 的某个 Pin 脚电平的代码,然后用示波器监测引脚电平,结果表明 step() 函数在系统时钟为 168MHz 的 MCU 上的耗时为 32.5 微秒,完全满足 100 微秒控制周期的需求。
图23 step() 函数耗时波形图
5 总结
本文主要体现的 MWORKS.Sysplorer 平台的亮点包括:
- 建立控制器模型和涵盖机、电、液、热等多领域的物理模型,实现统一平台仿真及通用实时仿真 C 代码生成;
- 建立控制策略模型并生成针对 MCU 的高效嵌入式 C 代码,实机运行耗时达到微秒级;
- 面向电子控制器产品及半实物实时仿真均有落地案例。
综上,在家用电器、汽车电子、无人机、机器人等包含控制器(特别是用于控制复杂物理被控对象的控制器)的产品设计与研发过程中,MWORKS.Sysplorer 平台结合其强大的物理建模能力能加速控制器模型的参数调试过程、缩短产品的测试周期、降低试验成本,实现从产品设计的早期验证到最终 C 代码生成的全流程覆盖,这些特性将有助于加速取代传统基于“软件工程+文档+代码”的开发模式。
最后
以上就是粗心西装为你收集整理的应用案例 | 基于 MWORKS 的 PMSM 电机控制算法设计及应用的全部内容,希望文章能够帮你解决应用案例 | 基于 MWORKS 的 PMSM 电机控制算法设计及应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复