| 编辑推荐: |
本文主要介绍了动力域控制器开发利器_AP Autosar+Simulink相关内容。希望对您的学习有所帮助。 本文来自于微信公众号新能源控制系统及MBD开发 ,由火龙果软件Alice编辑、推荐。
|
|
本文给大家讲解一些高端内容,域控制器的相关开发及控制,将域控制器,就绕不开AP
Autosar ,绕不开Simulink, 如果把原来在TC3xx上的模型,迁移到AP Autosar上,就成为大家的一致难题。本文就一起给大家唠唠AP
Autosar的那些事!
一:动力域控制器概述
之前的文章,讲解目前三电领域比较常用的CP Autosar如何与Simulink进行建模的耦合,但随着域控制器的发展,动力域控也逐渐向集中式发展,如下图所示:
从单个分布式控制,到集中式一体控制,BMS与MCU的控制算法逐步会部署到VCU,而我们目前的BMS/MCU会逐步变成采集终端与控制终端。
而终端控制多数以大算力芯片为主,而大算力芯片,运行都是Linux, QNX为主。在此类系统上,目前多数都是部署AP
Autosar,而AP Autosar 里面的进程,是从哪里来的呢?目前可以用Simullink进行生成,并进行联合部署,优化!如下图所示:
目前根据项目的经验,目前域控制中,已经完成部署在域控制器中功能如下所示,同时各个厂家都在以老鼠搬家的模式,把电机,电池相关控制逻辑逐步的迁移到动力域空气中。
1:动力系统管理(集成部分电机/发动机/变速箱控制)
根据驾驶需求和车辆状态,动态分配发动机、电动机或混合动力系统的扭矩输出,优化动力性能。
控制变速器的换挡逻辑,确保换挡平顺性和动力传递效率,同时支持多种驾驶模式(如经济模式、运动模式)。
精确控制内燃机的点火、喷油和气门正时,或电动机的电流、电压和转速,提升动力响应和能效。
2:能量管理与优化(集成部分BMS/热管理控制)
监控电池状态(如SOC、SOH),管理电池充放电过程,延长电池寿命,确保电池安全。
在制动或减速过程中,回收能量并存储到电池中,提升能源利用效率。
控制发动机、电动机、电池和电子元件的冷却与加热,确保系统在最佳温度范围内运行。
3:故障诊断与安全(三电系统故障诊断统一化)
实时监测动力系统的运行状态,及时发现并诊断故障,提供故障预警和保护措施。
确保动力域控制器在发生故障时仍能维持车辆的基本功能,防止事故发生,满足ASIL-C或ASIL-D安全等级要求。
4:通信与网关功能(与其它域的通讯控制)
支持CAN、CAN-FD、Gigabit Ethernet等通信协议,实现动力域控制器与其他域控制器(如底盘域、座舱域)之间的数据交互。
提供数据加密和安全通信机制,防止黑客攻击和数据泄露,确保车辆网络安全。
软件在线更新(执行端A/B备份SOTA)
支持动力域控制器的软件远程升级,修复漏洞、优化性能或增加新功能,延长产品生命周期。
5:驾驶策略与模式管理(集成部分四驱功能)
根据驾驶员的选择(如经济模式、运动模式、雪地模式),调整动力系统的响应特性和能量分配策略。
通过分析驾驶行为和路况信息,提前调整动力输出,提升驾驶体验和能效。
二:AP Autosar概述
因对大家对CP Autosar 都比较熟悉,故我们就用对比的手法,进行讲解啥是AP Autosar?
1:架构对比
-
CP (Classic Platform): 有明显的分层结构,模块之间存在上下层关系。
- AP (Adaptive Platform): 分为Foundation和Service两部分,这两部分内部没有上下层关系,而是基于服务(SOA)进行交互。
2:运行平台对比:
-
CP: 芯片算力一般低于1000DMIPs。
- AP: 芯片算力高于20000DMIPs。
- CP: 运行在8bit、16bit、32bit的微控制器(MCU)中,如英飞凌的TC3xx,瑞萨的RH850等。
- AP: 运行在64bit的高性能处理器(MPU)、CPU等中,如瑞萨的H3,英伟达的Xavier等,也可运行在虚拟硬件上。
3:操作系统对比: -
CP OS: 硬实时OS。
- AP OS: 软实时OS。
- CP OS: 使用OSEK OS标准,由CP AUTOSAR供应商开发,如EB、VECTOR等。
- AP OS: 使用POSIX OS标准,由专门的OS厂商开发,如eSOL的eMCOS、黑莓的QNX等。
4:软件架构设计对比: -
CP: 将与硬件相关的及通用系统功能定义为BSW模块,应用功能定义为独立的软件组件(SWC),SWC与BSW分离,BSW可配置且可重复使用,不开源。
- AP: 遵循面向服务的架构(SOA)设计范式,重用软件市场成熟组件,缩短开发周期,充分利用各种开源软件。
三:AP 开发的方法论
AP(Adaptive Platform,自适应平台)开发的核心方法论围绕模块化设计、面向服务的架构(SOA)、持续验证与迭代展开,旨在构建高灵活性、可扩展且符合AUTOSAR标准的汽车电子系统。以下是其核心方法论的详细说明,综述如下图所示:
1. 模块化与组件化设计
核心原则:
将系统拆分为独立的、可复用的软件组件(SWC),每个组件负责单一功能(如电机控制、电池管理),并通过标准接口与其他组件交互。
类比:
像乐高积木一样,每个组件(积木块)可独立开发、测试,并通过接口(积木接口)组合成完整系统。
优势:
降低开发复杂度,提升组件复用性,便于后续功能扩展或维护。
2. 面向服务的架构(SOA)
核心原则:
通过服务接口(Service Interface)实现组件间通信,支持动态发现、调用和组合服务,提升系统的灵活性和可扩展性。
示例:
电机控制服务通过SOME/IP接口调用电池管理服务的GetBatterySOC方法,获取电池电量信息。
关键概念:
服务提供者(Provider):实现服务功能(如电池状态查询)。
服务消费者(Consumer):调用服务(如电机控制请求电池状态)。
服务接口定义:使用ARXML(AUTOSAR XML)定义服务接口(如SOME/IP的Service
ID、Method ID)。
3. 持续验证与迭代开发
核心原则:
通过模型在环(MIL)、软件在环(SIL)、硬件在环(HIL)测试,持续验证系统功能、性能和安全性,确保符合AP
AUTOSAR标准。
工具支持: -
MIL测试:Simulink Test、dSPACE SystemDesk。
- SIL测试:vsomeip、FastDDS模拟环境。
- HIL测试:NI VeriStand、ETAS LA9。
关键流程: -
需求分析:明确系统需求(如功能安全ASIL-D、通信时延<10ms)。
- 模型开发:使用Simulink等工具开发功能模型,并生成ARXML接口定义。
- 代码生成:通过Embedded Coder生成符合AP AUTOSAR C++14/17标准的代码。
- 仿真测试:在MIL/SIL/HIL环境中验证系统功能,生成覆盖率报告(如语句覆盖率≥90%)。
- 部署与集成:将代码部署到AP AUTOSAR平台,验证服务间通信和时序。
4. 标准化与接口定义
核心原则:
严格遵循AP AUTOSAR标准,使用ARXML定义系统架构、组件接口和服务通信,确保系统兼容性和互操作性
示例:
在ARXML中定义电机控制服务的SOME/IP接口,明确SetTorque方法的请求和响应格式。
关键标准: -
AP AUTOSAR R21-11:定义服务接口、通信协议和执行模型。
- SOME/IP:用于服务间通信的协议,定义Service ID、Method ID和事件。
- ARA库:如ara::com(通信)、ara::exec(进程管理),提供标准化接口。
5. 性能优化与资源管理
核心原则:
通过进程模型、调度策略和资源分配,优化系统性能(如响应时间、吞吐量)和资源利用率(如CPU、内存)。
示例:
为电机控制服务分配高优先级进程,确保其在负载突变时仍能快速响应。
关键技术: -
进程模型:定义服务的进程名称、资源限制(如CPU亲和性、内存配额)。
- 调度策略:如实时优先级调度(RTOS)、时间触发调度(TTA)。
- 资源监控:使用ara::diag监控服务运行时的CPU、内存占用。
6. 团队协作与版本控制
核心原则:
通过版本控制、需求追踪和持续集成(CI),确保团队成员基于统一版本开发,提升协作效率。
示例:
在Git中创建分支开发新功能,通过Merge Request合并到主分支,并触发CI测试。
关键实践: -
版本控制:使用Git管理Simulink模型、ARXML文件和代码。
- 需求追踪:使用Simulink Requirements管理需求,确保功能可追溯至AP AUTOSAR规范。
- 持续集成(CI):通过Jenkins、GitLab CI自动化测试流程,生成覆盖率报告。
以下是针对AP(Adaptive Platform)应用开发流程的详细扩充版本,结合具体技术细节、工具链支持、最佳实践和验证步骤,为开发者提供可落地的指导框架。
四:AP应用开发流程详解
在Simulink与AP的联合开发验证过程中,需要的工具链及步骤如下所示:
1:服务接口定义与SOA通信配置
目标:基于AP AUTOSAR标准,定义服务接口及通信协议,确保组件间松耦合与动态交互。
步骤:
Step1:服务接口设计
- 方法(Method):如SetTorque(int torque)
- 字段(Field):如BatterySOC(只读)
- 事件组(EventGroup):如TemperatureWarning(事件通知)使用ARXML(AUTOSAR
XML)定义服务接口。
- 示例:
Step2: 通信协议配置 -
Vector DaVinci Configurator:图形化配置ARXML和SOME/IP参数。
- ETAS ISOLAR-A:验证ARXML是否符合AP AUTOSAR元模型。
- Service ID:如0x1234
- Method ID:如0x0001(对应SetTorque)
- 传输层:TCP/UDP(根据实时性需求)
- 选择SOME/IP作为通信协议。
Step3: 配置服务发现与路由 -
配置ara::com的Service Discovery机制,支持动态服务注册与查找。
- 示例:在Manifest文件中定义服务实例.
2. Simulink建模与端口映射
目标:在Simulink中实现功能模型,并将其端口与AP AUTOSAR接口绑定。
步骤:
Step1:功能建模
- 电机控制模型:输入为扭矩请求,输出为实际扭矩。
- 电池管理模型:输入为充放电电流,输出为SOC和温度。
- 使用Simulink模块(如Stateflow、MATLAB Function)实现逻辑算法。
Step2 : 端口映射
- 输入端口→ Client接口的Method调用参数
- 输出端口 → Server接口的Field或Method返回值
- 使用AUTOSAR Blockset将Simulink端口映射到ARXML定义的接口
Step3 : 操作步骤
- 在Simulink模型中添加AUTOSAR Interface模块。
- 选择ARXML文件中的服务接口(如MotorControlService)。
- 将模型端口(如TorqueRequest)绑定到接口参数(如SetTorque.torque)。
- 消息建模(可选)示例:BatteryStatus消息包含SOC(uint8)和Temperature(int16)字段。
- 若需消息通信(如SOME/IP信号),使用AUTOSAR Message模块定义信号格式。
3. Simulink逻辑算法建模
目标:在Simulink中实现核心控制逻辑,确保功能正确性与实时性。
步骤:
Step1: 算法设计
- 电机扭矩控制:根据目标扭矩和实际扭矩的误差,通过PID调节输出PWM信号。
- 电池SOC估算:基于安时积分法或卡尔曼滤波。
- 使用Simulink模块(如PID Controller、Lookup Table)实现控制算法。
Step2: 时序与调度
- 配置模型采样时间(如10ms),确保与AP AUTOSAR的调度策略对齐。
- 注意:AP AUTOSAR支持抢占式调度,需避免任务超时。
Step3: 模型验证
- 通过Model Advisor检查模型是否符合AP AUTOSAR规范(如数据类型、端口命名)。
- 使用Simulink Test编写测试用例,验证算法逻辑(如扭矩响应时间<50ms)。
4. AP代码配置与生成
目标:配置代码生成选项,生成符合AP AUTOSAR标准的C++代码。
步骤:
Step1: 代码生成配置
- System target file:autosar_adaptive.tlc
- Language:C++14/17
- AUTOSAR:勾选Generate AUTOSAR adaptive components
- 在Configuration Parameters中设置:
- 配置ARA库支持(如ara::com、ara::exec)。
Step2: Manifest文件生成
- 进程名称(如MotorControlProcess)
- 资源限制(如CPU亲和性、内存配额)
- 服务实例配置(如MotorControlInstance)
- 生成Manifest文件(如MotorControl.xml)
Step3: 代码生成与审查
- 是否包含ARA库的调用(如ara::com::MethodProxy)。
- 是否符合AP AUTOSAR的C++编码规范(如命名空间、异常处理)。
- 生成代码后,检查:
5. 生成可执行程序
目标:编译链接生成可在AP AUTOSAR平台上运行的ELF文件。
步骤:
Step1: 交叉编译
- 使用AP AUTOSAR工具链(如GCC for ARM Cortex-A)编译代码。
- 示例命令:
Step2: 链接依赖库 -
确保链接ARA库(如libara_com.so、libara_exec.so)和POSIX库(如libpthread.so)。
Step3: 静态分析 -
使用工具(如Coverity、Klocwork)检查代码缺陷(如内存泄漏、空指针解引用)。
6. AP应用部署
目标:将可执行程序部署到目标AP AUTOSAR平台,并验证功能。
步骤:
Step1: 部署准备
- 安装AP AUTOSAR运行时(如ARA库、POSIX PSE51)。
- 配置网络(如SOME/IP的IP地址和端口)。
- 准备目标平台(如Renesas R-Car H3、NVIDIA DRIVE AGX)。
Step2: 部署流程
Step3: 功能验证 -
服务间通信(如SOME/IP消息是否正确传输)。
- 实时性(如扭矩控制指令的响应时间)。
- 故障注入(如模拟电池过压,验证故障处理逻辑)。
- 使用AP AUTOSAR测试工具(如ETAS LA9、Vector CANoe)验证。
总结
通过以上流程,开发者可系统化地将Simulink模型部署到AP AUTOSAR平台,实现从功能设计到代码生成、部署和验证的全链条开发。其综述如下图所示:
同时需要注意的关键成功因素包括:
- 严格遵循AP AUTOSAR标准(如ARXML定义、SOME/IP配置)。
- 充分验证(MIL/SIL/HIL测试覆盖率≥90%)。
- 工具链整合(如MathWorks与Vector工具的协同)。
- 此流程适用于汽车电子领域的高安全性、高实时性应用(如自动驾驶、动力总成控制)。
五:AP/Simulink 实战经验分享
1:需求分析对齐问题
明确需求:确定功能需求(如扭矩控制、电池管理)和非功能需求(如功能安全ASIL等级、通信时延)。
示例:若需求为“扭矩控制响应时间<50ms”,需在模型和代码生成中配置采样时间≤10ms。:
2:AP AUTOSAR标准对齐
确保接口定义、通信协议(如SOME/IP)和代码风格符合AP AUTOSAR R21-11或更高版本。
工具:使用ETAS ISOLAR-A验证ARXML文件是否符合元模型。
3:接口映射错误问题
Simulink端口未正确绑定到ARXML接口,导致通信失败。
解决方案: -
检查AUTOSAR Interface模块的配置,确保端口名称与ARXML一致。
- 使用Vector DaVinci Configurator验证ARXML文件。
4:代码生成失败问题
代码生成时出现“未定义的ARA库”错误。
解决方案:
确保在Simulink的Configuration Parameters中正确配置ARA库路径。
检查工具链是否包含ARA库的头文件和链接库。
5:部署后服务未启动问题:
部署后,目标平台上服务进程未运行。
解决方案:
检查Manifest文件中的进程名称和可执行文件路径是否正确。
使用ps命令查看进程是否已启动,或检查日志文件(如/var/log/ara.log)。
备注—工具链与资源推荐:
|