从系列:验证、验证和测试电池管理系统
奇拉格·帕特尔,马修斯
本视频演示如何使用Simulink金宝app®、Simscape™、Si金宝appmulink Real-Time™和Speedgoat实时系统,以执行硬件在环(HIL)模拟,以验证和测试电池管理系统(BMS)。针对所有操作和故障场景测试一个实际的BMS是非常耗时的,您可能会发现在所有情况下执行BMS是很困难的。使用Simulink和Simscape进行系统级建模,金宝app可以模拟BMS控制算法和电池组模型的行为。从这个系统模型,您可以从控制算法和电池组模型生成C代码,然后您可以分别部署到一个微控制器和一个HIL实时系统。
观看此视频时,您将了解如何:
[人力资源部]
在本节中,我们将更深入地了解电池管理系统的硬件在环测试。
需要对蓄电池管理系统进行广泛的端到端测试,包括所有可能的故障情况,以确保系统按预期运行。
对电池管理系统进行这种类型的测试是非常耗时的。例如,在开始测试充电模式功能之前,必须将电池组放电到适当的充电状态。
测试一个典型电动汽车电池组的完整充放电循环需要数小时。当我们包括温度、电荷状态和其他参数的不同操作条件时,我们谈论的是几天的测试值。
此外,再现设计问题和故障条件可能很困难,并且涉及安全考虑。
在使用实际单元进行测试时,实现测试自动化、测试排序和报告生成可能非常昂贵,需要大量资源,特别是涉及许多测试设备时。
最终系统集成测试和功能测试需要使用实际电池组进行广泛测试。但对每一次软件修订或设计迭代进行这种类型的测试是没有意义的。
在您的设计迭代中实现高置信度的一种方法是针对模拟电池组测试BMS控制器和电子设备。这种根据模拟对象模型实时测试真实控制器的方法称为“硬件在环”测试。
在HIL测试中,我们从电池组的工厂模型开始。这是您可能用于在桌面模拟中测试BMS算法的模型。
接下来,我们从电池模型生成C代码,并编译成实时应用程序,由专用实时目标计算机实时部署和执行。
此目标计算机必须具有所需的外围设备,以便将数值转换为物理信号,如电池电压和温度。我们将实时计算机的外围设备和BMS控制器连接起来进行闭环测试。
通过将实际电池组更换为可编程电池组,我们现在可以更高效、更安全地执行软件和电子设备的端到端测试。
现在,在我们可以对BMS控制器进行HIL测试之前,我们需要注意的事情很少。
首先,我们需要按照BMS控制器要求的步长实时运行大型细胞网络模型。
对于最常见的电池应用,BMS算法在100Hz到500Hz之间执行。因此,在1kHz下实时执行我们的电池厂模型对于HIL测试来说已经足够了。如果您的电池组串联的电池少于50个,则实现所需的步进时间是很简单的。
第二个挑战与硬件有关。因为我们想要模拟电池的电气行为,所以我们需要有办法产生隔离电压,并且能够像实际电池一样,以串联或并联配置连接它们。此外,还需要温度传感器仿真和故障仿真。
为了了解如何在Simulink中解决第一个挑战,让我们看一个示例模型。金宝app
这里,我们有一个电池模型,有16个电池模块,每个模块有6个电池串联,总共有96个电池串联。每个电池单元块模拟电气和热行为。我们使用可控电流源对电池组进行充电和放电。最后,测量单个电池的电压、温度、电池组电流和电池组电压,并将其发送至BMS控制器。
从桌面模拟到实时测试的第一步是选择正确的固定步长解算器。这通常是一个迭代过程,我们不会在本次网络研讨会中详细介绍。
相反,我建议您访问这个主题为“使用Simscape实时模拟物理系统”的专门网络研讨会。
按照本次网络研讨会中描述的步骤,我们已经为Simscape网络选择了一个Local-Solver,并确定了一致性迭代次数为1。这些求解器设置产生1mS步长的预期结果。
我们还注意到,对于某些拓扑,“分区”解算器通过降低模拟的计算成本来提高性能。这有助于提高桌面模拟和实时测试的模拟速度。分区解算器将连接的Simscape网络的整个方程组转换为通过非线性函数连接的几个较小的切换线性方程组。由于计算多个较小方程组的解比计算一个较大方程组的解更有效,因此计算成本降低。金宝搏官方网站
现在,解算器名称“分区”可能会导致一些混淆。很明显,分区解算器不会对模型进行分区。分区解算器将不允许您拆分模型并在多核处理器上运行。还有其他方法可以实现这一点。Simulink Real Time默认情况下会尽可能自动利用多核处理器。金宝app
接下来,让我们继续实时执行我们的电池模型。
为了节省时间,我已经通过单击Build按钮将应用程序构建并部署到目标计算机。在目标对象中,我们可以注意到部署到目标机器上的应用程序的名称、应用程序状态、采样时间和其他有用的调试信息。
让我们开始在目标计算机上执行应用程序。在模拟过程中,我们可以观察我们感兴趣的信号并调整参数。
这个模拟只有10秒长。一旦结束,我们可以检查目标计算机是否能够在期望的1毫秒的采样时间内执行模型。
通过检查目标对象,我们可以注意到在模型执行期间没有报告CPU过载,最大任务执行时间(TET)在1毫秒之内。这为我们未来的车型增长提供了足够的空间。
当您在模型中添加更多的复杂性和细节时,您很可能无法仅通过选择正确的求解器来实现所需的采样时间。在这种情况下,具体到电池建模,你有更多的选择,你可以考虑。
第一个选项是选择电池组的右侧变体。在这里,您可以注意到,通过选择保真度较低的变体,您可以轻松地将任务执行时间缩短10倍。
另一个选项是选择电池单元的低阶动力学。这也有助于显著缩短任务执行时间。性能的提高来自于保真度的降低。
现在,如果您的模型复杂度较低,或者串联的电池单元数小于50,则很有可能不必进行任何此类优化即可实现任务执行时间小于1毫秒的目标。
如前所述,为BMS应用程序进行HIL测试的第二个重要方面是模拟传感器信号和传感器故障。
为了模拟电池电压,Speedgoat提供了电池模拟器卡IO991-06。每个电池模拟器卡提供6个隔离通道。每个通道可以提供高达7V的电压,这使我们能够模拟不同的细胞化学反应。此外,每个通道的源极最高可达300 mA,而汇极最高可达100 mA。此外,多个I/O模块可以串联或并联组合,以达到所需的功率水平。
除了电池电压仿真,我们还需要温度传感器仿真卡和故障插入卡来完成BMS HIL设置。Speedgoat为温度传感器模拟器卡和故障插入提供了各种选项。
在我们的演示中,我们仅将IO991用于电池电压模拟。
现在,让我们看一个BMS半实物仿真测试的现场演示。
我们从一个测试模型开始,该模型允许我们模拟电池单元并生成故障场景。
在这个测试模型中,我们有一个小电池组,6个电池串联在一起。为了模拟故障,我们添加了一个开关,它允许我们短接两个电池端子,而不会产生任何实际的物理后果,并测试控制器的响应。我们使用切换开关块以交互方式注入故障。
受控电流源块通过滑块模拟充电或放电电流。为了对电池进行诊断,我们测量了两个电池端子之间的电压。
测量的电池电压值被输入IO991模块,IO991模块将这些数值转换为与单个电池相关的电气隔离电压。
IO991-06卡的输出端子连接到你在背景中看到的电子板,它对电池电压进行物理测量,并将信息传递给BMS控制器,在这种情况下,BMS控制器是德州仪器的控制器板。
BMS控制器对电池电压进行诊断,并在发生过、欠压故障或两端短路时产生故障状态。在这种情况下,BMS控制器在发生任何故障时打开LED,并在数字输出端口上输出其状态。
我们使用IO133的数字输入端口从BMS控制器读取故障状态,以检查控制器逻辑是否按照要求执行。
现在,让我们继续连接到目标机器。
在实时执行这个模型时,我们可以将电流一直改变到10安培来检查任何过压故障或-10安培来检查控制器的任何欠压故障。
我们还没看出任何错误。当我们注入短路故障时,我们可以立即注意到控制板上的LED发光,也可以看到模型中的Lamp从绿色变成红色,说明控制器有故障。
让我们在模拟数据检查器中查看整个实验的结果。我们可以注意到由于电流的变化而引起的电池电压的微小变化。当我们触发故障时,其中一个电池电压明显下降,并看到故障状态的相应变化。
在本演示中,我们演示了如何创建大型系统级模型以快速设计和测试BMS算法,来自不同领域(如电气、软件和热力)的工程师可以使用Simulink作为通用设计平台进行协作。我们还讨论了实时运行大型电池模型进行硬件在环测试的不同方法。最后,我们演示了如何为BMS应用程序设置HIL测试,以及它如何帮助您在电池管理系统的设计中获得更多信心。金宝app
您还可以从以下列表中选择网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。