构建MBD仿真模型和状态机

1 模型仿真与实际应用之间的区别
mbd(model-based design,基于模型的设计)是通过模型生成代码的,所有我们有必要弄清楚模型仿真与实际应用之间的区别。
仿真模型与实际应用之间的区别本质上是理论与实践之间的差别,其中的差别可以说是两个完全不同的话题。
这里又给大家更新三篇与电机控制实践相关的文章。它们是由nxp的工程师编写的电机控制应用笔记,可以在nxp官网找到,也可以在对话框中回复关键词“ nxp应用笔记 ”,即可收到相应资源。
这三篇应用笔记分别是:
3-phase sensorless pmsm motor control kit with s32k1443-phase sensorless bldc motor control kit with s32k1443-phase sensorless single-shunt current-sensing pmsm motor control kit with magniv mc9s12zvm
*nxp电机控制应用笔记 * - from autombd
前两篇分别以pmsm和bldc为主题,介绍如何实现无感foc控制;第三篇讲的是单电阻无感控制方案,实现的也是foc算法,软件实现上是有一些区别的,也要复杂一些。
tips :第三篇是基于magniv mc9s12zvm的,而不是s32k144,参考这篇文章时,主要学习的是单电阻电机控制方案,这个方案也是完全可以移植到s32k1xx系列上的。
无感控制比有感控制要复杂,将无感的方案稍加改造就可以做出有感的控制方案,所以这三篇应用笔记是很有实践参考价值的。
这三篇应用笔记给的都是 纯代码开发的方案 ,即介绍了工程实践中如何从数学原理一步一步实现电机控制,主要内容包括:
电机控制数学原理电流、电压采样输入和驱动输出mcu模块资源的使用底层驱动配置和初始化电机控制软件架构(状态机、电机控制库、mcat等)下面的这个框图可以较为全面的展示 第1~4点在电机控制中的实际体现 :系统从外部硬件(电机、逆变器、预驱芯片)起,经过信号采集,再到mcu的外设模块(白色方块),再到底层驱动(sdk driver/橙色方块),然后进入到foc的软件算法部分(绿色方块),而foc的输出经底层驱动、再到外设模块(ftm模块)输出到预驱芯片,从而实现控制。第5点则是调度上述过程的状态机,关于第5点后文会更一步的讲解。
*nxp电机控制软硬件框图 * - from nxp
从这五点我们就能引出我们要讨论的问题: 模型仿真与实际应用之间的区别到底有哪些 ?
简单的说,模型仿真只能触及上述的第1点;如果对建模有更深入的研究,第2点也能做仿真,这部分实际上和硬件电路设计有关,所以很少有在模型仿真中考虑这一点;第3、4、5点就是完全的非理论了,与嵌入式、编程和芯片有较强的关联,是实实在在的实践过程。
所以,在袁雷的《现代永磁同步电机控制原理及matlab仿真》中是完全不包括第2~5点的内容的。
以电流采样电阻为例,实际应用场景中,为了测量电流信号的方向,一般会对采样电阻进行偏置处理。nxp开发的devkit驱动板相电流采样电阻为例,其电路设计如下图所示:
*devkit驱动板相电流采样电阻 * - from nxp
可以看到,偏置电压为参考电压的一半,所以最终输入到芯片adc的电压是以偏置电压为中心对称的。
根据大于偏置电压还是小于偏置电压,可以判定电流是正方向还是负方向。所以在信号处理中还需要将这个偏置电压减去。
关于电流采样,还有布置方式的不同,常见的采样电阻布置方式有以下这些:
三电阻下桥臂采样/相电流采样双电阻下桥臂采样/相电流采样单电阻母线采样tips :这里列举了常见采样电阻布置方式,一般应用中下桥臂采样较多,相电流采样多用于高性能、高效率电机控制的场合,而单电阻母线采样是成本最低,但采样方式最复杂的。
不同的布置方式,采集的电流是不同的,而控制算法是需要全部的三相电流的。三个采样电阻可以直接得到三相电流信号,如何通过一个电阻或者两个电阻得到三相电流数据,也是有方法的。
双电阻相对来说较为简单,根据 三相电流和为零 ,可以直接求解出第三相电流。单电阻采样的场景要复杂很多,具体可以参考 上述的第三篇应用笔记 。
以上关于电流采样的所有方法,在模型仿真中都没有考虑,只是一根信号线连接到控制器 ,这就是理论仿真和实践的巨大区别所在,如下图所示(摘自袁雷的《现代永......仿真》):
*仿真模型示例 * - from 袁雷
tips :因为我们要使用mbd的开发方法,所以这里不再深入详细展开讲其他的区别,以后有需要的地方再做提示,有兴趣的读者可以自行参阅上述三篇nxp的应用笔记。
当我们了解了所有理论与实践之间的区别,辅以嵌入式开发和编程的基础,一个简单的电机控制项目就可以实现。
即使是一个产品级的电机控制软件,也只是再补充通信、故障诊断、功能安全等其他需求的功能。复杂度可能会高很多,但开发和设计的本质框架就是这样的。
2 mbd拉近模型仿真****与实际应用之间的距离
如果要更加严谨地说,上面讨论的也只是电机控制算法部分的工程实践。一个完整的产品应用,硬件设计和 软件设计 。硬件设计可以交给硬件工程师,我们把重点放在软件设计上。
上面三篇应用笔记中提到的电机控制实现方案,是属于软件设计的一部分。传统的开发中,就需要将选定的电机控制方案 转化为一行行的代码 ,这就又涉及到数学(理论)到编程语言(实践)之间的转换。入门门槛高,同时效率也较低。
tips :以我自己的经历为例,上述应用笔记内容的代码实现过程,我是完整的走过一遍的。我从对嵌入式一无所知,到学习嵌入式的基本模块和开发方法,再到能写一些基本的嵌入式代码,花费了3个月的时间,然后又花了差不多1个月的时间,才实现了一个简单的电机控制嵌入式程序。这还是我对电机控制理论有了足够的基础之后的开发效率。
但利用mbd的开发方法,我们可以大大简化这一步骤。模型我们是比较容易得到的, 利用模型直接生成代码,能有效地缩近理论和实践直接的距离 。更多mbd相关的内容,请参考本公众号 前面几期内容 ,或者在对话框中回复关键词“ mbd入门 ”。
*mbd的开发流程 * - from st
如果读了上述三篇应用笔记,就可以发现,嵌入式软件设计很多是可以通过建模的方式实现的。这里简单的把软件设计分为五类,它的软硬件层级如下图所示(软件为虚线框部分):
*电机软硬件层级示例 * - from autombd
下面是这五类软件关于mbd建模实现的分析:
底层驱动 ,mcu、硬件电路强相关底层驱动是和芯片和硬件电路设计紧密相关的,比如硬件引脚(pin脚、外设、端口等)使用的不一样,底层驱动的配置也就不一样了。
原则上底层驱动是可以通过芯片厂商提供的mbd硬件支持包来实现的,但从灵活性和效率的角度来说,目前建议通过专门的底层驱动配置工具来配置底层驱动,例如nxp适用于s32k1系列的配置工具processor expert。
数字信号处理 ,硬件电路弱相关数字信号处理(digital signal processing,dsp)是将真实世界中的物理量(模拟量,例如电流、电压等)转换为控制器需要的量的过程。
还是以电流采样为例,在前文给的电流采样电路基础上,adc读到的电压实际上是一个12 bit的整数,需要将其进行偏置消除以及物理量转换等操作,有必要的话会需要进行滤波处理。
可以看到,这个过程和硬件电路设计有一定的联系,硬件设计的不一样,处理的细节可能存在一定的差异。但基本的信号处理方法是相通的,例如滤波器、积分、微分、移位运算、逻辑运算等。
这一过程是可以通过建模的方式实现,并且信号处理越复杂,模型的优势就更明显,毕竟模型很容易搭建,代码写起来就很费劲了。
所以我们可以把软件设计中的这一部分纳入到mbd中,通过建模的方式自动生成代码。
电机控制算法 ,硬件电路弱相关数据信号处理后,将得到的数据传递到电机控制算法中。控制算法中一般包括坐标变换、pi控制器、foc、svpwm等环节。电机控制算法会得到一个控制输出量,一般是三相的占空比。
这些环节使用simulink内置的模块,或者使用芯片厂商提供的mbd硬件支持包,是可以很方便快捷的实现的。这部分如果要编写代码,对初学者来说,甚至对有一定编程基础的人来说,都算是不小的挑战。
此外建模可以很方便地调整控制算法的结构,开发初期这是很常见的。手写代码的话,每一次调整结构就需要重复工作一遍,效率很低。
因此电机控制算法部分是很适合通过建模生成代码来实现的。
这里解释一下电机控制算法****为什么是硬件电路弱相关 。一般来说,通用的电机控制算法是可以做到与硬件电路无关的。
但在某些场景下,例如有的芯片具有硬件加速模块,或者使用一些特殊的控制算法(无感和有感就有硬件上的差异),可能会影响控制算法的执行,所以电机控制算法和硬件有一定的关联。
状态机 ,与硬件电路无关状态机是与硬件电路完全无关的,而且在simulink中提供的****stateflow是专门用于状态控制建模的工具 ,用它开发状态机效率可以提高一个档次。所以状态机使用mbd来实现也是毫无问题的。
其他软件 ,例如通信、失效检查等,暂时我们不考虑这部分内容从上面的分析来看,除开底层驱动,其他软件部分均可以通过mbd建模的方式实现,并且能大大提高效率。
下图是较为常见的v型开发流程,参考这个流程就可以开发一个基于mbd的电机控制软件。
*v型开发流程 * - from st

HASH算法加密芯片的工作原理及其在STM32 MCU上的应用
pcb接线端子类型
芯片设计中的功耗估计与优化技术
平台型芯片企业翱捷科技发布2022年第一季度报告
华为荣耀Note8与小米5s plus对比哪个好?哪个更适合入手?
构建MBD仿真模型和状态机
Google已删除了被Joker恶意软件感染的17个应用程序
基于AT89C55单片机和PCA82C250实现分布式通信网络的设计
基于STM32F103C8T6单片机的智能疫苗箱
安徽十三五:新能源发展战略规划
Model 3连续两月成为月度销量冠军,或在八月或九月超越日产聆风
MIUI8.2能否赶上互联网手机的下半场
腾讯黑鲨游戏手机3正式开售 全方位卓越引领游戏手机风潮
浅谈电动势和电压之间的差异
Intel将部分芯片外包给台积电 看上后者3nm工艺
【技术分享】"喂狗",也要讲究方法
阻旋料位开关有哪些特点,它的工作原理是什么
物联网会给电子零部件带来什么
哪款蓝牙耳机值得推荐?4款音质好的蓝牙耳机推荐
基于Docker Compose部署RabbitMQ的经验分享