基于Simulink的NXP S32K电池管理系统算法部署金宝app
概述
电池管理系统(BMS)支持电动汽车、电网电力存储系统和其他电池驱动金宝app设备中电池组的安全高效运行。
本次网络研讨会展示了如何使用Simulink和Embedde金宝appd Coder为BMS算法生成C代码,并将其部署到NXP S32K微控制器上。从基于卡尔曼滤波器的荷电状态(SoC)和在Simulink中建模的单元平衡算法开始,我们将使用Embedded Coder为NXP微控制器生成优化的代码。金宝app代码生成工作流将以使用NXP基于模型的设计工具箱为特色,该工具箱提供了集成开发环境和工具链,用于配置和生成所有必要的软件,以在NXP mcu上执行复杂的应用程序。此外,基于模型的设计工具箱包括一个Simulink嵌入式目标,用于NXP mcu和外围设备块和驱动程序金宝app。
突出了
- 在Simulink中模拟电池荷电状态(SoC)和电池平衡算法金宝app
- 生成优化的,生产就绪的代码与嵌入式编码器
- 使用NXP基于模型的设计工具箱将代码部署到NXP S32K微控制器
关于主讲人
齐拉格·帕特尔,MathWorks
Chirag Patel与控制系统设计工程师合作,简化从桌面模拟到实时测试和硬件在环(HIL)测试的过渡。加入MathWorks之前,Chirag在Lucid Motors工作,在那里他领导了采用基于模型的电动动力系统设计和电池管理算法的工作。他拥有堪萨斯州威奇托州立大学控制系统硕士学位。
马里乌斯·安德烈,NXP
Marius Andrei于2017年加入NXP,致力于NXP汽车产品基于模型的设计软件解决方案开发。金宝搏官方网站下载188bet金宝搏Marius毕业于罗马尼亚布加勒斯特Politehnica大学,获得高级计算机体系结构硕士学位。
大家好,欢迎参加本次Simulink关于在NXP S32K上部署电池管理系统算法的网络研讨会。金宝app我叫齐拉格·帕特尔。我是数学方面的应用工程师。在这个角色中,我帮助控制系统工程师从桌面模拟过渡到实时测试。
大家好,我叫马吕斯·安德烈。我是恩智浦半导体的软件工程师。我为NXP交付的模型和工具箱设计和开发了Simul金宝appink模块。让我快速演示一下我们计划在本次网络研讨会中介绍的内容。
我们在Simulink环境下设计了BMS算法,然后使用嵌入式编码器生成代码。金宝app电池管理系统仪表板,显示了运行在S32K微控制器上的BMS算法的行为。他的仪表盘,已创建使用免费master。该系统由S32K 142单片机和MC33772B电池控制器组成。
为了快速测试BMS算法,我们使用了六单元仿真板。用这个模拟器,我们可以操纵电池电压和拾取电流。当我们将电池电压增加到阈值以上时,我们可以看到过电压下降变得活跃,并错误地过渡到虚假状态。在本次网络研讨会中,我们将演示如何建立这样的测试环境,并介绍煨煮在BMS算法设计初期所起的关键作用。
在我们进入细节之前,让我们先了解一下我们正在解决的挑战是什么。塔拉,你在加入Mathworks之前在BMS项目工作。现在的角色是,你和一直从事BMS工作的工程师交谈,你告诉我们BMS工程师面临的一些常见问题以及你从这次经历中学到了什么。
是的,绝对是马吕斯,所以在加入mathworks之前,我致力于设计和实现更好的管理系统算法,并将它们应用到嵌入式硬件上。现在在mathworks,我一直在与从事各种BMS和应用程序的客户进行交互。我的大部分工作是与嵌入式软件和电气工程师打交道。
这些嵌入式工程师需要有关电池属性和特性的信息来开发BMS算法,为此他们依赖于内部电池专家或电池供应商。除了核心的BMS软件和硬件工程师,您还有机械和热工程师作为扩展团队的一部分。这些工程师为整个电池组设计整体机械包装和热管理系统。
这里的关键挑战是如何在这些工程师小组之间翻译和传递关键信息,而不会有任何信息丢失和翻译错误。来自不同领域的工程师,更喜欢在自己的设计环境中工作,并主要向不同的经理报告。这可能导致他们之间缺乏信息流,减少协作和低效的工作流程。
第二个挑战与过度依赖基于硬件的BMS算法测试的长迭代周期有关。大多数工程师在硬件上测试BMS算法,使用实际的电池或整组电池。使用这种测试方法,需要更长的时间来检测错误,有时,您无法测试所有的场景。通常这种端到端的硬件加软件测试由测试工程师完成或全部完成
不同的群体。这将导致延迟向软件开发人员提供反馈,从而导致更长的迭代周期。
现在,让我提一下促成这次网络研讨会的另一个挑战。它是关于设备驱动程序代码和应用层代码之间的软件集成,正如Marius在前面的演示中所展示的,BMS应用程序软件可以使用类似的方法独立于硬件进行设计和验证。但是,我们需要将应用层代码的输入和输出与设备驱动程序代码连接起来。例如,从电池控制器读取电池的电压和温度释放。
应用程序层代码的集成,无论是手写的还是起源于设备驱动程序代码,都是一个手动过程。此设备驱动程序代码是特定于硬件的,需要详细了解所选的嵌入式平台和通信协议。当我在BMS项目中工作时,这是我需要帮助来更好地集成软件和自动化部分部署的领域。在与其他BMS工程师交谈时,我发现我并不孤单。
所以我向专家寻求帮助,这成了主要原因。我和Marius去年开始合作,从那时起,Marius和他在NXP的团队开发了解决方案,可以帮助BMS工程师应对这一挑战。金宝搏官方网站我们这次网络研讨会的目标是讨论和演示数学和恩智浦解决方案如何帮助解决这些挑战。金宝搏官方网站
这是我们今天网络研讨会的议程。首先,Marius将帮助我们理解BMS体系结构以及不同的硬件部件是如何协同工作的。接下来,我将回顾常用的BMS算法设计和Simulink,以及我们如何在不需要硬件或在设计阶段使用仿真彻底测金宝app试它们。
接下来,Marius将展示如何从这个模型生成目标优化的c代码,与设备驱动程序代码接口,并部署在NXP et cetra MCU上使用。一旦代码部署,我们将测试和代码在开放模式下使用NXP free master在MCU上实时执行。最后,我们将在我们的网站上列出mathworks和NXP的所有相关资源,以帮助您开始您的BMS项目。所以Marius,请解释一下电池管理系统的关键部分以及它们之间是如何相互作用的。
当然,是一家。典型的电池组由串联或并联的电池组组成,以匹配所需的电压,并损害我们的容量。常规微控制器不可能直接测量电池电压等关键参数。这就要求在主MCU和电池组之间有一个额外的电路调用模拟前端。针对单元数的具体场景和背后的提示,讨论了BMS体系结构。
让我们从小型电池组开始,比如24或48伏。在MC33771BSPI的目标是7至14个单元串联的电池组。MC33772BSPI的目标从3到6个单元串联。电池控制器是否对电池电压、电流和温度等重要值进行监控?
他们还能够被动的细胞平衡和检测。然后将电池单元的信息传输到微控制器单元到经典的电池外围接口。在本例中,我们使用了基于ARM cortex M4F的s32k142单片机,主单片机运行BMS算法,将单元控制器传递的所有测量结果放在一起。
BMS算法除了执行监控任务外,还执行状态判断、导体管理和隔离监控。从后面,它还执行四个检测和恢复。它还监视键值是否低于安全限制。另一个关键任务是电池管理
系统是细胞的平衡。主要的MCU因为平衡想要控制器,BSPI,但如果BMS算法需要管理由超过14个单元组成的挫折怎么办?
当电池组由大量电池单元串联组成时,例如,96个电池单元,我们必须将电池组分成更小的模块。对于每个模块,我们使用单独的电池控制器来监控电池电压和温度,但这种方法存在电气问题。其中一个模块的负极与前一个模块的正极具有相同的电势。
为了克服这一电气问题,我们使用了一种称为TPL的高速差分隔离通信。转换我们的物理层,在菊花链拓扑中断开每个模块的所有单元控制器。现在主MCU连接到雏菊链道歉到MC33664收发器。该收发器物理层转换器将单片机、SPI数据库转换为推比特信息并将其传输到TPL总线网络。
BMS算法独立于AFE与主MCU之间的通信。与BMS算法唯一不同的设置是单元格号。正如你所看到的,当你谈论BMS架构时,主要组件是,电池组,模拟前端和主MCU。下面Chirag将向我们展示如何在Simulink中设计BMS算法。金宝app
谢谢你,Marius,这是一个顶级的Simulink电池管理系统模型。金宝app左边的子系统块表示我们想要部署到微控制器上的所有BMS算法。为了测试这一算法,我们开发了一个详细的电池组模型,由右边的子系统块表示。在我们详细研究每个子系统之前,让我们快速看看电池组在典型汽车用例中的模拟结果。
在这里,我们以75% SOC的电池组电量开始模拟。然后我们开始驾驶一段时间,当电池SOC下降时,我们停止驾驶,给电池组充电,直到它几乎满容量。在驱动阶段的最后,当几个工资足够低时,我们将放电电流限制在一个较低的阈值,以防止欠bool债务情况。
现在,在给蓄电池充电的同时,我们遵循恒流恒压俗称的CCCV充电方法。此外,我们需要监测电池组中出现的任何不平衡,并执行所需的电池平衡。包中的不平衡导致了很多原因,包括细胞老化不均匀或细胞温度分布不均匀,如图所示。
正如您所看到的,这个单一的模拟帮助我们评估最常见的BMS算法,如电流极限计算、状态机转换、电荷状态估计、电池平衡以及这些算法之间的交互。软件开发人员可以开发许多不同的测试场景,并验证模拟桌面的软件逻辑。小比特设计方法允许他们进行快速设计迭代,而无需进行昂贵的硬件测试。
更重要的是,由于BMS的仿真,可以被电气工程师用来评估电池组与充电器和电源逆变器的相互作用。此外,热工程师可以使用相同的模型来研究热管理系统的有效性。他们可以与软件工程师合作,帮助开发不同的热管理技术,以支持电池组的快速充电,而不影响电池组的长期安全和健康。金宝app
现在让我们来看看如何组装电池组的模型。在这里,我们创建了一个小型电池组,使用Simscape electric的电池块将六个电池串联在一起。这些电池相互交换热量,底部的6号电池在一侧是绝缘的,所以没有热量可以交换
向那个方向消散,顶部的1号电池与环境温度相连。因此导致更快的热量传递到定罪。
这种对称的热布局是我们在模拟过程中看到细胞温度差异很大的主要原因。现在,让我们看看每个电池块是如何参数化的,以便模型与实际电池的动态和虐待行为相匹配。开路电压、端子距离等关键参数随电荷状态和温度的变化而变化。
如果可用,此数据可以从cell datasheet中导入,否则您可以通过在受控环境中执行单元测试来获得此关系。此外,我们可以添加方程或参数来定义容量随时间的衰减。我们还可以通过为充电或放电动态选择适当的时间常数来调整块保真度。要了解更多关于电池建模和自我描述的知识,请访问mathworks网站上的电池建模页面。现在,
让我们快速了解一下BMS算法。这是我们在这个例子中实现的所有算法的顶级模型。在基于最终应用程序的项目中,您可能拥有比这里看到的更多的软件组件。从左边开始,第一个软件组件计算放电和充电电流限制。我们使用这个基于最小电池电压和电池内部电阻的公式来计算极限电流。查找表用于计算基于温度的内容。
最后,我们取所有极限中最小的一个作为最后的放电恭维。类似的逻辑应用于计算充电电流限制,其中我们使用最大电池电压而不是最小电池电压。转到BMS状态机,我们有专门的软件组件来管理整个电池组的不同运行状态,包括检测和承包商管理。
我们使用状态流来模拟不同的状态以及它们之间的转换条件。SOC估计是BMS中最受关注的算法之一。由于电荷状态不能直接测量,我们必须利用其他可用的测量方法,如电流、温度和电压,来估计它在给定时间的值。有不同的技术和算法可用于估计电池组的电荷状态。
计算SOC的一种简单方法是将模式随时间的变化进行积分,然后除以计算机的总容量。这种技术叫做普通计数,它很容易实现。但是,它会累积任何影响测量或时间的错误,从而导致糟糕的估计。此外,这种技术不能从初始条件下的错误中恢复。第二种SOC估计方法基于扩展的公共特征。该技术使用精确的温度和电池模型作为输入,预测几天的内部状态,包括充电状态。
它使用电池电压的测量作为反馈来修正其对终端电压和其他状态的预测。在这个过程中,它的估计关联为它的状态之一。普通滤波器基状态估计算法性能更好,并且随着时间的推移自我纠正,即使初始条件存在错误。
现在让我们看看单元平衡软件组件。电池平衡是必需的,以确保所有电池页都在指定的公差范围内,通常为5至10毫伏。电池电压数字或充电状态的任何不平衡都会有效地降低电池组的可用容量。在状态流中实现了单元均衡算法。当最大电池电压与最小电池电压之差变大,且运行条件合适时,我们开始平衡电池组。
没有执行单元平衡的标准算法。在我们的例子中,我们为所有终端电压高于目标范围中点的单元激活平衡。选择
平衡寄存器和称重时间取决于电池组的大小及其最终应用。例如,在现场使用中期望有多大的单元不平衡,以及完成单元平衡的可用时间。
要了解更多关于这些算法的知识,请参考Mathworks网站上的这四部分视频系列。这些视频也可以在YouTube上找到。现在,我将邀请Marius向我们展示如何在NXP S32K MCU上部署这些算法。
谢谢你,齐拉格。让我向您展示汽车问题可用的软件开发工具。c代码可以直接在MATLAB仿真环境下生成、构建和部署。代码检测到的外围设备是在NXP之上生成的,任何网站上都可以免费获得密钥。如果用户需要揭穿生成的代码,可以使用S32设计工作室。
在今天的演示中,我们使用了一个基于模型的S32K1设计工具箱。如果你还没有安装我们的工具箱,它可以在网站上免费获得,当然,在MATLAB的项目资源管理器中。一旦安装完毕,所有工具箱块都可以在Simulink库浏览器中使用。金宝app我们的工具箱附带了对汽车单元应用层工作的支持,金宝app以及大多数S32K外设和优化的汽车数学和电机控制库中的各种示例。
电池管理系统块可在外部设备类别中获得。这些模块允许用户直接在Simulink中访问NXP电池单元控制器的所有功能。金宝app我们选择将BMS算法与战略工具箱集成,方法是将其精确地放置在模型的中间,就像使用黑盒一样。我们将电池控制器从硬件读取的数值输入到电池管理系统算法中。
算法输出可用于平衡单元或发送信息,例如SOC报告到其他问题。模型顶部的模块只用于配置MCU[听不清]。它们生成的代码只在初始化期间执行。让我向您展示如何设置模型以生成S32K的代码。首先,需要在模型中添加一个S32K通信块。是为S32K微控制器生成代码的所有模型的强制块。
我们在网络研讨会开始时向你们展示的演示,一次是在S32K1评估板上。该工具箱支持所有S32K1金宝app微控制器家族的代码生成。例如,如果我必须在S32K144上运行这个模型,我只需要更改存储转储中的控制器。我就不再详细讲了。我只想提一下,您可以选择使用GCC、AAR或Gregor的两个可用基因之一来构建生成的代码。
S32K与NC3372B通过SPI协议通信。因此,需要一个SPI配置块来配置用于数据传输的外围实例。在上面,我们选择要配置为数据组的主要单片机SPIPs,并选择。现在,有趣的部分来了。电池单元控制器的模型配置块称为MC3377XP配置。第一个配置,设置电池单元控制器的数量和每个单元的数量。
典型的协议最多可以处理15个设备,而SPI只能容纳一个设备。Estab指的是SPI转介配置。此SPI实例下拉列表仅显示已添加到模型中的SPI块的实例号。第二个驱动程序初始化SPI传输,所以这里需要设置芯片选择。“为BCC设置SPI为主按钮”执行SPI配置块中的所有SPI设置。库存指定哪个是用于硬复位的关键引脚。其他GPIO事件可以使用中断块处理。
在封装设置中,用户可以输入NTC热敏电阻的特性和分流寄存器值。这些设置将用于从原始值到公共单位的软件转换。DPA协议使用两个SPI实例。其中一个用于发送数据,配置为主,而另一个用于接收数据,配置为从。
MC3377XP获取值块返回伏特、安培和摄氏度的值。电流和温度的结果是基于MC3377XP配置块中指定的设置进行软件转换的。使用Get原始值块,用户也可以访问原始值。
让我们打开这个块,看看我们有什么选项。控制器ID选择哪个单元控制器执行测量。在SPI的情况下,它需要设置为1。如果选中了请求CID的开始转换命令,生成的代码将向请求的CID发送开始转换命令。将等待转换完成,然后返回值除了主要功能,大多数块提供当前操作的状态值。状态值在帮助页面中描述。
MC3377XP家族的特点是每个单元单独平衡电流高达3亿。启用此功能时,必须使用单元平衡设置单个块。这为每个单元平衡设置了舞台,并设置了它的计时器。定时器值需要以分钟为单位设置,0表示30秒。在测量电池电压时,平衡过程必须暂停。这些只是NXP工具箱中提供的几个模块。
如果您想了解更多关于我们的区块或有任何问题,您可以在NXP社区页面上与我们联系。此页面直接连接到开发团队,因此您将获得最好的支持。金宝app我还应该提到,在这里,一个免费的基础指南与免费电机控制课程和电池管理系统块的介绍一起可用。
现在,我们已经生成了代码并放置了目标,我们将使用FreeMaster监视和调优正在运行的应用程序。FreeMaster有两个主要组件,一个是主机用户界面中的嵌入式应用程序,另一个是主机界面。FreeMaster提供了一些有用的工具,如可变速率,瞄准镜和录音机。还有一个类似FreeMaster的版本,允许用户在基于web的环境中创建独特的仪表板。为了在嵌入式应用程序中启用FreeMaster,需要在主信令模式中添加FreeMaster配置块。此块提供了用于主机和目标之间数据传输的外围设备。在这个例子中,我们将使用单词one。所述串行实例具有与用于信号转换器的评估板相关的接收机和传输片。
现在,让我们转向电池管理系统FreeMaster仪表板。这个仪表盘是使用FreeMaster灯建造的。第一个面板显示电池组的关键信息。在左手边,总结标签显示了电荷状态,电压,电流的值。而在右手边,你可以看到的演变包,电流和电压。由BMS算法提供的第四种状态实时显示在屏幕底部,同时显示向前的历史记录。
Cells Pack显示了关于电压、温度和平衡的每个单元的图形。图中显示的值的变化,为每个细胞提供了品种合作。顾名思义,BMS原始数据显示每个电池的电压、温度和平衡。系统配置选项卡允许用户设置连接参数。
这两种选项都允许直接在浏览器或FreeMaster应用程序中运行这些仪表板。除了连接参数,用户还可以调整一些BMS设置和测量单位,甚至可以选择深色或浅色模板。如果你想开始使用
在我们的项目和设计用户仪表板中,就像我们刚刚展示的那样,我强烈建议观看FreeMaster的四部分网络系列。
到目前为止,我们只提到了恩智浦社区,这是您可以直接与恩智浦工程师见面的地方之一。本次网络研讨会中使用的NXP电池控制器和其他控制器可在我们网站上的管理部分获得。您可以访问完整的增强、应用程序说明、情况说明书和其他工具或软件。但如果你想开发自己的电池管理系统应用程序,你可以开始使用我们的开发世界之一。随附用户手册,指导您如何将其与S32K评估板连接,并准备好运行。该代码由MATLAB和Simulink生成。金宝app您可能还会发现,看看可用的NXP BMS参考设计也很有趣。
现在,让我列出MathWorks拥有的一些资源,以帮助您更多地了解这个主题。正如我前面提到的,MathWorks网站上的最佳重塑解决方案页面是一个很好的开始。它列出了虚拟管理系统的所有资源,包括白皮书、技术文章和客户成功案例。我还应该指出,本次网络研讨会中使用的模型可以在File Exchange上下载。请参阅标题为“设计和测试组合电池管理算法”的提交。此外,还有一个关于如何使用快艇集成解决方案运行电池管理系统循环测试的网络研讨会。这允许你在闭环中测试VMS软件和硬件,而不需要真正的[听不清]。
总之,我们以解决开发和测试VMS算法的一些独特挑战为目标开始了这次演示。我们展示了VMS算法的桌面模拟可以帮助您理解不同算法之间的交互。你可以用详细的[听不清]模型在闭环模式下测试这些算法。这有助于您在设计阶段的早期更好地理解和交流电气混乱和软件性能。
接下来,Marius向我们展示了如何使用NXP[听不清]和电池模拟器在硬件上交互式地测试算法。简单而集成的工作流程帮助软件工程师在没有实际电池的情况下在硬件上快速测试他们的设计。
最后,我们使用NXP基于模型的设计工具箱解决软件集成挑战,该工具箱为S23K mcu、电池控制器和通信协议的所有相关功能提供设备驱动程序块。这大大减少了手动集成设备驱动程序代码与应用层代码的开销。我们希望本次网络研讨会中讨论的特性和功能将帮助您加速BMS项目的开发。谢谢你!
了解更多
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。