当前位置: 观测器 >> 观测器资源 >> 基于MWORKSSysplorer电子
1前言
MWORKS是面向数字工程的新一代科学计算与系统建模仿真平台,可提供机械、电子、液压、控制、热、信息等多领域统一物理建模以及电子控制器建模仿真环境。往期文章《基于MWORKS.Sysplorer的电子控制器应用案例——永磁同步电机FOC算法建模》以及《MWORKS.Sysplorer基于数据字典管理模型参数应用案例》介绍了永磁同步电机控制器模型在MWORKS.Sysplorer中基本的建模仿真与数据字典绑定等能力。本篇内容将着重讲述代码生成配置功能以及电机控制过程。
MWORKS.Sysplorer嵌入式代码生成器产生的代码具有以下特点:
代码生成选项配置自由度高,支持用户自定义风格;
生成的代码可读性强,用户能够轻易识别并集成模型对应的主要函数;
生成的代码运行效率高,不产生冗余的代码;
生成的代码易于集成,用户不需要修改生成的代码,可直接用于工程。
△FOC控制器从建模到实机测试
2代码生成配置
MWORKS.Sysplorer的仿真页面向用户提供代码配置与代码生成选项,经过仿真验证以及数据字典绑定等操作之后,在保证模型仿真无误的情况下可以配置属于用户的嵌入式代码。本节将逐一介绍代码配置界面中相关选项页面的功能。
△嵌入式代码配置及生成按钮位置
△代码配置选项
2.1代码平台
代码平台页面首先支持用户自定义代码生成路径,方便用户自行管理生成的文件。其次为用户提供适配不同平台标准的选项,以便于用户生成匹配对应芯片规则的代码,在“数据位数”框中给用户显示出不同类型字节的长度,从而降低用户手动修改代码的频率。在此页面,用户还能够设置字节序来配置自身习惯以及原子长度来减少硬件占用内存。
△代码平台选项页
2.2代码替换
代码替换页面提供用户自定义修改数据类型的“字符串”以便适用用户代码编写的习惯或标准,其中也提供了不同的库函数标准。用户可以取消勾选“替换类型”选项直接使用MWORKS.Sysplorer中提供的默认类型。
△代码替换选项页及案例
2.3代码设计
代码设计页面首先为用户提供不同类型的代码生成文件组织结构;其次,在命名规范中此页面提供不同类型或变量字符串最大长度的设置来规范化生成的代码;在最后的运算符中,提供逻辑运算与位运算两种方式。
△代码设计选项页
△不同文件组织对应生成文件结构
2.4代码定制
代码定制页面能够让用户选择是否需要开启数据类型溢出保护以及数据除零保护等功能。在展开部分中,用户可以在不同代码段的前后插入自定义的代码以便于用户添加部分自定义代码,允许插入的段包括include、macro、type、global_variable_declare、global_variable_define、function_declare以及function_define。这些字段前后以及每个段内的单个实例前后都可以插入用户自定义代码。使用此功能需要用户自身对于生成代码构成原理和需求有比较深刻的理解。
△代码定制选项页
2.5代码优化
代码优化选项页提供用户自定义设置主要函数的名称、循环开展阈值定义,以及生成代码优化目标配置。模型入口函数命名主要方便用户在生成的代码中识别和定位它们,从而在后续软件集成工作中方便地调用这些函数。在MWORKS.Sysplorer所搭建的控制算法模型生成的代码中,有2个主要函数,分别是initial初始化函数以及step阶跃函数。用户可以根据使用需求和自身习惯自定义其函数名,勾选“带有模型名前缀”,生成的代码中两个函数则会以模型名为前缀。
△代码优化选项页
3嵌入式代码结构
MWORKS.Sysplorer生成的嵌入式代码主要以头文件momodel.h以及源文件momodel.c构成。其中头文件中都包含了代码的宏定义、类型别名、数据字典全局变量声明以及函数声明。源文件中含有部分宏定义、数据结构定义、全局变量初始化以及所有函数定义。清晰的结构分层使用户能够快速理解模型生成代码的构成,掌握模型生成代码的分段和联系。
△头文件结构
△源文件结构
4代码集成与实机应用
电机的三相电流信号由MCU上的ADC模块采集,电源电压、d轴q轴按照用户设定的数据作为代码生成的源文件中算法函数(Dostep)的输入数据,通过生成的代码逻辑计算得到各路PWM波高低电平的计数值并写入到Timer模块的寄存器中,以便控制各路PWM信号的高低电平时间,最终达到驱动电机的效果。
△电机控制结构
此外可以使用串口将MCU每个控制周期数据发送至电脑端,由MWORKS.Sysplorer绘制图像以便监测最终结果。
△实时数据回传图
通过监测代码生成中阶跃函数耗时证明阶跃函数在系统时钟MHz的MCU上耗时为32.5us,完全满足us的电流采样周期即电机控制周期,最终达到驱动电机的效果。
5外设驱动封装
MWORKS.Sysplorer支持使用控制策略模型库中的外部函数编辑器Ccaller将MCU外设驱动封装为拖拽式模块供控制器模型使用以及联合仿真,实现软件驱动模块化的技术路线。各大半导体供应商都可以加入MWORKS.Sysplorer平台做出驱动模型库,使更多工程师以及广大高校师生通过图形化界面以及模块对应参数对话框配置,以更高效的方式了解以及学习使用各个厂商的MCU。
△Timer模块应用至FOC
6总结
本篇主要介绍并展示了MWORKS.Sysplorer嵌入式代码生成设置以及代码生成结构,包括代码集成以及电机驱动的过程。主要体现了代码可读性强、易于集成以及运行效率高的特点,结合《基于MWORKS.Sysplorer的电子控制器应用案例——永磁同步电机FOC算法建模》以及《MWORKS.Sysplorer基于数据字典管理模型参数应用案例》两篇文章所提到MWORKS.Sysplorer嵌入式代码生成器功能,展示了永磁同步电机从算法建模到实机运行的全流程。
综上所述,MWORKS平台基于其强大的多领域统一物理建模仿基础,已经衍生出控制算法建模仿真和代码生成工具能力,本篇的解决方案可以直接拓展应用至家用电器、汽车电子、无人机、机器人等包含电子控制器的产品设计与研发中,提高用户实现从产品设计的早期验证到最终代码生成的全流程效率,用数字化研发取代传统软件工程基于“文档+手写代码”的开发模式,形成新一代高效工程生态链。