汽车电子笔记之:基于AUTOSAR的电机控制器架构设计

目录

1、概述

2、AUTOSAR设计

2.1、SWC设计

2.2、PORT设计

2.3、Runnable设计

2.4、电机控制器OS实现


1、概述

        电机控制器应用层的软件架构较为复杂,主要包括PMSM(Permanent-MagnetSynchronous Motor)的矢量控制算法。根据PMSM的控制算法,对算法中的软件功能进行分析,将其划分为若干个软件模块,即可得到电机控制器的软件架构,并按照上述方法创建软件架构所需使用的各个软件组件。几个主要的软件组件及其功能见下表。

         根据所设计的电机控制器的功能,完成各个软件组件之间通信端口的设计,将各个软件组件连接起来,即可得到软件架构,如下图所示。这里的软件架构只是一个框架,对控制器算法的功能模块进行了划分,对其软件组件之间的通信内容进行了定义,但是软件组件内部并没有具体的功能。电机控制器的软件架构通过DaVinci Developer工具进行设计配置;在进行设计时,首先需要明确每个软件模块的功能作用选择合适的软件组件类型;而由于软件组件之间需要进行通信,因此需要给软件组件添加合适的通信端口,明确是S/R 还是 C/S端口,或是其他类型的端口,以及通信使用的数据类型;而最后需要对每个软件组件进行相关的功能设计,创建软件的功能实现最小单元--Runnable,实现电机控制器的预期功能。

 设计步骤

2、AUTOSAR设计

2.1、SWC设计

        在DaVinci Developer中,提供了一个库(Library),库中包含各种应用组件类型、数据类型、通信端口和常量等设计软件架构所需的元素。在Application Component Types上右击,即可创建软件组件,如下图所示。

         软件组件主要有Composition(组合)和Atomic(原子)两种类型,这是AUTOSAR规范中规定的软件组件类型。Composition是一个逻辑上的集合,可以将某些以实现特定功能的联系较为紧密软件组件放入同一个Composition中,便于开发。Atomic类型的软件组件又可分为如下图所示的几种类型,其中,Application用于应用软件算法的执行,SensorActuator主要用于传感器和执行器相关功能的软件,这两种类型的软件组件足以应付大部分的使用场景。

2.2、PORT设计

         由于各个软件组件之间要进行数据的交互,因此需要对这些软件组件进行通信端口(Port)的设计。在之前所示的库中,右击Application Port Interfaces,可以新建 S/R 端口接口。以用于电流控制的软件组件MDCC的发送端口为例,在Interface中,可以新建多个数据元素(Data Element),如下图所示。需要注意每个数据元素都要有相应的数据类型。

         当为软件组件添加通信端口时,所添加的端口为 Port Prototype,是以 Port Interface 为模板创建的。在软件组件上右击,即可新建端口,如下图所示。点击新建发送端口(SenderPrototype),会弹出如下下图所示的对话框,列出了所有的Interface,在这里选择相应的Interface,即可完成端口和接口的关联。

2.3、Runnable设计

        为了实现软件组件具体的功能,需要向其中分配功能实现的最小单元——可运行实体,也即Runnable,Runnable需要被映射到操作系统的Task中。点击软件组件,在中间的运行实体列表处即可进行 Runnable 的配置,如下图所示。

         Runnable 由 RTE事件触发,其触发形式有多种,例如初始化触发、周期事件、数据收发相关事件和操作调用事件等,如下图所示。常用的为周期与初始化Runnable。

         软件组件MDCC用于电流闭环控制,其中的Runnable 为 DoCurCtr,该 Runnable 的功能为计算出控制电压,得到三相导通时间,需要每100 us(PWM周期)触发一次,因此选择周期性触发。下表中列出了电机控制器软件架构中部分软件组件所包含的一些运行实体名称及其对应功能。MDFM为故障管理相关模块,包含母线电压过压和欠压判断、电机超速、过温判断等Runnable。

2.4、电机控制器OS实现

         在 DaVinci Configurator中,可以进行电机控制器基础软件部分的配置,包括 OS、通信等。由于本例 PMSM控制算法中的运行实体繁多,因篇幅所限,本节只简要阐述 OSApplication, Task的特性以及它们与各Runnable之间的相互关系。下图所示为与整个OS相关的通用属性,包括其可剪裁类、硬件所使用的CPU数量、调度类型是非抢占抑或全抢占、编译器类型,以及一些API函数。本例中,使用SC3的操作系统,且单片机的 CPU数量为 3(TC275)。

        在OS的钩子函数(Hook Routines)配置界面下图中,可以使能操作系统所需的一些Hook函数。其中,Startup Hook程序在操作系统的启动阶段被调用,也即在调用StartOS()之后和启动第一个任务之前;当操作系统中的函数返回的错误码不为 E_OK或者操作系统内部错误被检测时,Error Hook被调用;而Shutdown Hook在调用ShutdownOS()期间被调用。

         Protection Hook 在出现保护错误时被调用,如果将 SHUTDOWM 使能,则 ProtectionHook 会返回一个PRO_SHUTDOWN在OS Configuration配置界面,右击OS Applications,选择“Add”,可以添加OS Application,如下图所示。每个OS Application有各自的任务、中断、Alarm、计数器和调度表。由于该操作系统运行在三核的TC275上,因此需要通过Core Assignment来将该OSApplication与CPU关联。如果此OS Application是受信任的,则需要使能Trusted选项。

         在某个特定的OS Application下,右击Task,可以进行任务的创建。操作系统中任务的相关属性包括其调度方式(非抢占/全抢占)、优先级、任务类型(基本任务/扩展任务)、堆栈大小以及是否自启动等。以空闲任务Idle Task为例,具体内容如下图所示。

         如果任务的调度方式为全抢占式,那么,较低优先级的任务在运行状态下,若较高优先级的任务被激活,则调度程序将调度较高优先级的任务运行。任务堆栈大小的设置需要考虑该任务的复杂情况,确保不会溢出。空闲任务是AUTOSAR操作系统中规定的,每个OS Application都需要有一个空闲任务,该类型任务的优先级最低,且需要使能Task is Idle Task此时,OS Application和Task的基本框架已经搭建完毕,但是,Task中没有具体的任务代码。因此,需要将Runnable添加到相关的Task 中,如下图所示。

 至此,完成了电机控制器操作系统的实现,具体的任务分配如下列三图所示。

        至此 完成了电机控制器应用层软件架构配置和基础软件层的配置,接下来就是生成相应代码集成到编译器中。集成完代码后生成可执行文件,烧录到相应的硬件平台中,电机控制器的软件也就完成了。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
基于AUTOSAR汽车开放系统架构)规范的车用电机控制软件开发是一种现代化的方法,它包括系统架构设计、软件设计、软件开发和系统测试等过程。 首先,系统架构设计是一个关键步骤,它需要根据车用电机控制系统的整体架构设计开发控制的软件。这一步骤通常包括软件组件定义、系统接口定义和通信定义等。软件组件定义是指将系统分解为若干个可重用的软件组件,每个组件都能够处理某个特定的功能。系统接口定义则是指各个软件组件之间的接口约定,以保证可重用性和模块化。 其次,软件设计是基于系统架构设计以及功能需求开展的工作。它通常涉及到组件的算法设计、状态机设计和调度设计等。算法设计是指将功能需求转化为软件实现,并将其封装在一个可重用的软件组件中。状态机设计则是对组件的状态机行为建模,以决定执行顺序和过渡条件。调度设计则是为软件组件分配CPU时间和优先级等确定执行顺序。 第三,软件开发是基于设计文档进行的编码工作,编码过程中需要遵循AUTOSAR规范中的编码标准和质量标准。 最后,系统测试是为了验证软件是否符合功能规格要求,具有足够的性能和可靠性等。测试方法范围广泛,包括单元测试、集成测试、功能测试和压力测试等。 综上所述,基于AUTOSAR规范的车用电机控制软件开发流程是复杂的,但它能够保证软件的高可重用性、模块化和可扩展性,从而大大提高了车用电机控制系统的可靠性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑从东方起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值