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