本文转载在我的微信公众号:古德曼汽车工业。公众号文章都会知识星球、知乎进行转载,请有兴趣的朋友可以关注我的微信公众号
原文地址:AVL-CRUISE纯电动仿真策略提高教程
前言
上期内容《AVL-CRUISE纯电动模型仿真策略》发布后,就有做仿真的同行朋友反应那个控制策略太简单了。【思想】开设这个订阅号的初衷就是为了把基础知识、技能介绍清楚,帮助想学习的朋友尽快入门,能够独立完成新能源控制策略的建模。
AVL推荐模型架构
上一期《AVL-CRUISE纯电动模型仿真策略》文章分析了AVL-CRUISE纯电动汽车仿真控制模型。控制逻辑本身没有什么问题,但是逻辑架构却存在不小问题。主要问题就是没有对逻辑进行划分,所有的逻辑都堆在ROOT层。有代码编写经验的朋友可以想象下,这就好比把所有的代码都写到main函数下。虽不影响策略的执行效果,但降低了逻辑策略的可读性,也对其他工程师的理解与维护照成麻烦。本期的内容将介绍一种AVL公司推荐的Simulink模型架构,帮助大家将模型进行合理的分层。
分层建模效果
上图就是根据推荐的架构对上期的控制策略进行划分的结果。下面先来介绍下具体的功能分层。
·信号输入检查
对输入Simulink的信号进行检查,例如:超出范围,无穷大;
统一所有输入信号的数据类型,全部转换为double;
·总线信号创建
通过Bus Creator将输入的信号组织成总线信号,并对每一个信号命名,后续调用的时候只需要通过Bus Selector对信号进行选取;
·通用计算模块
把一些可能会被后面模块用到的中间变量集中在这里计算,避免后面模块重复计算,造成逻辑的冗余;
·模式设计
仿真策略需要对每一个工况下动力总成中各部件的输出扭矩进行分配计算,也就是我们常说的能量管理策略。如上图为某混动车型的模式划分,有发动机直驱动、电机直驱、并联驱动等。具体每一个模式需要输出多少扭矩都在【模式设计】中进行计算与分配;
Stateflow
·状态切换
根据输入信号判断当前车辆所处的模式,例如:车速与制动踏板不为0,这两进入制动模式。在【状态切换】中,除了使用常见的Simulink的逻辑计算模块外还会使用到Stateflow插件。通过在Stateflow中创建不同的状态框,用连线的方式设定各模式状态切换的条件。从不同的模式中选择对应模式的控制信号进行输出。
·信号输出检查
对即将输出的控制信号多检查,过滤掉异常值的部分。例如,需求扭矩大于电机最大能力的,负荷率大于1的等等。
从模块的划分就能看出,主要核心就是【模式计算】与【状态切换】,这部分策略的开发需要花费大量的时间进行设计与调试,也是整个建模工作的重点与难点。
根据实际需求调整架构
AVL推荐的这个Simulink编程架构,虽然不一定是最好,但是非常适合初学者。实际应用中还可以对这个架构进行调整。
由于本例的输入信号比较少,数据复杂度也比较低,多分出来一层没有太大意义。所以将【信号检查】与【总线创建】这两个部分合并。在【通用计算】子系统中,对制动扭矩与制动器系数进行计算。
将原有的控制策略拆分成为【驱动模式】与【制动模式】,最后将结果汇聚成为总线传递到下一个子系统。
总结
本期使用的控制逻辑与上一期一致,所以不多做控制了逻辑的介绍。重点介绍如何对模型进行分层,提高模型的可读与可维护性,也方便模型的调试工作。当然本期也是为后面【并联】与【增程式】控制策略的介绍做知识储备。
相关AVL-CRUISE专题内容: