纯电动汽车和混合动力汽车是新能源汽车产业发展的重要方向,同时,泛亚“电动化、智能化、网联化、数字化”战略的提出,使得未来车载汽车电子电气架构系统的开发越来越复杂。汽车开放系统架构 AUTOSAR 代表的层次化、模块化、平台化技术则是汽车电子软件开发的重要趋势。在电动汽车的三大电控系统中(电机控制、电池管理、整车控制),电机控制作为核心之一,其软件架构的研究设计对于汽车电控系统的开发有重要意义。本报告以电动汽车用驱动电机作为研究对象,以 AUTOSAR 开发架构为基础,对电机驱动控制系统软件架构设计与开发进。
一、电动汽车的电机控制软件基于 AUTOSAR开发的意义
在电动汽车的三大电控单元中,电机驱动控制作为其中的核心,其性能高低对汽车动力性和操纵性有直接的影响。和传统电机调速系统和伺服电机系统相比较,车用驱动电机系统的开发除了高功率密度、宽调速范围等性能需求外,对于安全性和可靠性也有着更高的要求。提高车用电机控制软件的可复用性,增强系统软件的可配置性,改善系统软件的可靠性与稳定性对于车用电机控制系统开发有着重要意义。
二、旋变解码研究
对于电机矢量控制而言,往往需要获取电机的转子位置角度,角度的测量常用的方法有磁性编码器、光电码盘、电涡流传感器和旋转变压器等。其中,磁编码器是基于磁阻效应或霍尔效应的轴角传感器,输出信号是基于转子位置的正余弦函数,其结构简单鲁棒性强,不受潮湿环境影响,但受高温和气隙限制;光电码盘体积小,分辨率高,抗电磁干扰能力强,但转速受限,最高可测转速在 3000rpm 左右;电涡流传感器灵敏度高,响应速度快,受环境影响较小,但其精度有限;旋转变压器可靠性高,不同环境适应能力强,不受温度和振动等因素影响,因此广泛应用于电梯、雷达、机载仪器等伺服系统和工业自动化领域。
旋转变压器输出一组包含转子位置信息的正余弦信号,需要对此信号进行适当的处理,才能得到相应的转子位置。对于旋转变压器输出模拟信号的处理可以由专用的集成电路将其转换为数字信号,即 RDC电路,又称为旋变解码芯片,目前常见的有美国 AD公司的 AD2S(AD2S1210)系列芯片以及日本多摩川公司的 AU6802系列芯片,它们可以产生激励信号发送给旋变的激励绕组,然后将返回绕组的模拟信号处理得到转子位置信号,以编码器或 SPI 等形式输出。除此之外,还有一种方法是利用 DSP和外围调理电路产生激励信号并对旋变输出的信号进行调制、滤波等处理以及角度辨识算法得到转子位置信号。采用 DSP 对角度信号处理省去了专用的解码芯片,极大地降低了开发成本。
常见的角度辨识算法有反三角函数法、标定查表法、基于锁相环的角度跟踪观测器法。其中,反三角函数法实现简单,但引入了一个除法,一个反正切运算,占用资源较多,而且不能利用整个输出信号的波形;标定查表法需要利用传感器对旋变信号标定,将旋变输出信号对应的角度值存储起来,以供查表使用;基于锁相环的角度跟踪观测器法包含二阶角度观测器和三阶角度观测器,二阶角度观测器法具有一定的滤波作用,提高抗干扰能力,能够同时估算出电机的转子位置和转速值。当转速变化(升降速)时,二阶观测器解算出的转子位置角会有稳态误差,采用三阶角度观测器具有更好的瞬态检测性能,常用于电机启动加速时的转子位置观测。
三、基于 AUTOSAR 的电机驱动控制系统开发
本节主要研究AUTOSAR 标准对电机控制系统软件进行软件分层,包括应用层、基础软件层和实时运行环境。其中,应用层通过MATLAB/Simulink 搭建电机控制模型并生成软件代码,基础软件层通过调用英飞凌底层驱动软件包编程实现外设功能模块驱动,实时运行环境通过自定义接口函数实现不同软件层之间的数据交流和服务调用。
传统的电机控制,尤其在自动化领域,软件开发分层不明显,软件和硬件之间的嵌套关系耦合严重,这就使得软件在开发过程中一旦遇到问题和缺陷,难以确定问题产生的原因在于硬件驱动程序还是软件算法设计,影响软件开发效率,提高开发成本,同样也会使软件存在潜在的风险。AUTOSAR 是以软件分层和模块划分的方式实现软硬件分离的汽车开放式架构标准,将系统软件架构划分为应用软件层(APP)、基础软件层(BSW)和实时运行环境层(RTE)。如下图所示:
在电机控制系统中,与电机控制功能相关的电机控制算法、电机状态检测、安全监控等功能可作为应用程序与 AUTOSAR 架构中的应用软件层相对应,应用软件层中又将不同的功能模块以软件组件 SWC的形式进行封装,便于设计者的进一步开发。基础软件层对应于与电机控制相关的如控制器外设驱动、通信服务和中断服务等,将控制器硬件功能以模块化进行封装,有利于其在不用硬件平台间的移植。应用软件层与基础软件层之间的数据交流和服务调用则是通过实时运行环境层实现,RTE 相当于虚拟功能总线,使得开发者在设计应用软件时可以不必考虑底层硬件和通信网络,专注于功能软件的设计。下图为本文对电动汽车驱动电机 ECU 软件架构的分层设计。下文将在此架构的基础之上对每层软件进行详细设计。
四、应用层软件设计(ASW)
应用层软件是电机控制算法及其安全监控等功能的具体实现,需要先确定系统的输入和输出数据,系统所包含的软件组件 SWC 及其系统约束等。本系统的 ECU 即为电机控制器,并且根据相应功能可将其软件组件划分为:电机控制算法 SWC、数据解算 SWC、安全监控功能 SWC等软件组件,如图 2.3 所示,同时需要确定各软件组件的数据输入和输出以及软件组件之间的数据交流和服务调用。在应用软件层 APP 中,软件组件划分的目的是通过功能模块划分减少耦合,有利于系统软件的更新与升级。
完成各个软件组件设计后,需要设计其中的运行实体RE(Runnable Entity),运行实体是软件组件的最小代码片段,是软件组件功能的具体实现。其中,数据解算软件组件 SWC中,输入数据包括从基础软件层获得的电流采样、转子位置传感器信号等,需要通过电流计算、转速和转子位置解算的运行实体 RE 得到相应的电机相电流、转速和转子位置等信号。
电机控制算法SWC包含电机控制策略,本文采用的电机控制算法为磁场矢量定向控制FOC(Field Oriented Control,FOC),控制框图如图 2.4 所示,将此框图进行功能划分不同层次,分别与应用层 APP、基础软件层 BSW 和实时运行环境层 RTE 的分层架构相对应。可以看出,分层架构的划分实现了电机控制软硬件的分离,使得软件开发者可以专注于系统软件设计而无需考虑硬件相关问题。安全监控 SWC 则是针对电机过流保护、过温保护、转子位置监测等运行实体的设计。后续若需要进行功能的添加和升级只需要对相应的软件组件和运行实体进行添加和修改即可,从而可以避免由于软件之间交叉耦合带来的复杂性问题。
应用软件层的设计是利用 Matlab/Simulink 环境建模,按照所设计的软件组件及其运行实体搭建模型,利用 Simulink/Configuration Parameters-Code Generation 进行相应配置生成软件代码,然后可在 Tasking 编译器中将相应的代码文件添加到系统工程中。
五、基础软件层设计(BSW)
基础软件层向应用层软件提供基础设施服务,包括外设驱动服务、内存管理服务、通信服务等,是连接应用层与微控制器之间的桥梁。本系统为驱动电机控制系统,其基础软件层结构框图如图 2.5 所示,包含外设驱动、服务和通信等。其中,外设驱动是将微控制器的各个功能外设进行封装,供开发者调用,如与电机控制相关的 PWM 驱动、ADC 驱动、CAN 驱动、IO驱动等;服务包括存储服务以及与系统服务相关的看门狗、定时器等;另外还包含与数据通信相关的通信协议的设计等。
本文以英飞凌 AURIX 系列三核单片机 TC297 为硬件开发平台,基于英飞凌底层驱动软件对系统基础软件层进行相关开发与设计。其中,AURIX 系列芯片是英飞凌推出的满足汽车行业标准(如 AUTOSAR 标准、ISO26262)的高性能 32 位微控制器,集成三个 CPU 内核,主频 300MHz,可应用于汽车发动机控制、电动/混合动力汽车、底盘、制动系统、电动助力转向系统和先进辅助驾驶系统等各类场合。本文选用的 TC297 单片机具有丰富的外设资源和强大的数据处理能力,完全可以满足车用电机控制需求。
系统与电机控制相关的控制器外设模块包括 CCU6、GTM、ADC、GPIO、ASCLIN等,主要用于实现 PWM 驱动、AD 采样、IO 信号输入输出、通信等功能。其中,CCU6是一个具有特定应用模式的16位高分辨率捕获和比较单元,主要用于AC驱动控制。特殊操作模式支持使用霍尔传感器或反电动势检测的无刷DC电机。
此外,支持多相电机的块整流和控制机制。它也支持同步启动几个定时器,这是包含多个CCU6模块的设备的一个重要特性。
永磁同步电机的控制需要六路 PWM波来驱动三相逆变器,则可以利用定时器 CCU6 的多路定时器T12输出模块生成三相六路中心对称的 PWM 波。另外,为满足三相电流的同步采样,还需一个定时器作为同步触发信号 Trigger 来触发 AD 采样,这样CCU6 模块一共需要T12、T13两个定时器。
VADC 模数转换模块包含 8 个独立的转换单元,每个转换单元含有 8 个输入采样通道,AD采样转换时间小于 1μs。在电机控制中,三相电流需进行同步采样,而 VADC 模块的同步转换功能可支持多达四个采样通道的同步转换。因此,可利用 VADC 的转换单元进行同步采样转换,以实现电机相电流的同步采样。同时,AD 采样频率也要与 PWM 频率一致,采用硬件触发 AD采样可以降低软件开销,减轻 CPU 负载率,则可利用上文 T13设计中预留的 Trigger作为触发信号触发 AD 采样。
底层驱动软件为 TC297 各个外设功能模块的寄存器配置以结构体和功能函数的形式进行封装,从一个定时器到三相驱动 PWM 波的产生,都可以通过手动编写寄存器实现,把相关 PWM输出的寄存器配置以结构体和功能函数的形式进行封装,供开发者调用,通过调用 CCU6 模块PWM 配置的结构体和函数,并将相关参数赋值,如频率、死区时间、互补通道对数等,即可完成对电机控制所需的 PWM 波配置。在进行 AD 电流采样配置时,利用 VADC 模块初始化函数可实现对 AD 采样的转换单元和采样通道的初始化配置,包括与电流采样相关的同步转换通道的设置以及 AD 采样结果中断的设置。
我们将旋转变压器的解码工作封装成一个CDD模块,主要处理旋变解码芯片的反馈数据结算工作。
6、基运行时环境设计(RTE)
在完成了应用层软件和基础软件层的设计之后,需在实时运行环境层定义相关接口函数,实现应用层软件组件之间以及应用层与基础软件层之间数据的传输与调用。首先需要明确应用层软件的输入输出数据以及定义相应的数据类型,各个软件组件的输入输出相关数据均列出,在 Matlab/Simulink 搭建模型后,生成的程序代码则将输入输出数据以结构体形式封装;基础软件层中的输入输出数据则是在底层软件中相关结构体进行定义。完成各软件层数据定义后,在中断服务程序中将相应输入输出数据进行赋值即可实现应用层与基础软件层之间的数据传输。
其中,应用层软件通过在 Matlab/Simulink 中搭建各个运行实体模型并完成相关仿真测试,进行代码生成,基础软件层利用底层驱动软件驱动进行设计实现对各个外设驱动初始化,并且包含对通信协议和中断服务等进行相应配置;数据通信和服务调用通过在实时运行环境层定义相关接口函数实现。通过上述方法完成基于 AUTOSAR 电机控制软件的具体设计实现。最后,将各层软件导入 Tasking 开发环境中,并在编译器中对所有程序进行集成编译、链接生成可执行文件,将生成的可执行文件添加到调试软件 劳特巴赫/UDE 中对软件进行调试、分析,根据分析结果可对软件进一步优化。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删