邱美涵,王晓琳,卞 皓
(南京航空航天大学自动化学院,南京 210016)
随着新能源汽车产业的快速发展,越来越多的功能需求如安全可靠性、环境友好性、智能舒适性和汽车本身的性能(如动力性、操纵性等)被集成在汽车上,这些功能集成所需的控制单元越来越多,增加了整车控制系统开发的复杂度,并且不同的控制单元之间可能存在耦合,传统的开发流程难以满足软件可靠性要求。各大汽车厂商对软件的开发都有自己的标准,不同的开发平台使软硬件在集成时不兼容,造成开发成本增加,可移植性差,同时还可能由于兼容性问题导致软件存在潜在的风险。为了解决这些问题,全球汽车厂商、零部件供应商和半导体与软件开发公司联合推出了汽车开放系统架构标准AUTOSAR(automotive open system architecture)。其目标是为汽车电子软件的开发提供一个开放式架构和标准,以提高产品在不同汽车平台的可扩展性、软件的安全可靠性、可移植性与实用性和整个产品生命周期的可维护性,是汽车行业发展的一次重大变革。
在电动汽车的3大电控单元(电机控制、电池管理、整车控制)中,驱动电机控制作为其中的重中之重,其性能的优劣直接影响汽车的动力性和操纵性。与传统调速电机系统和伺服电机系统不同,车用驱动电机系统的开发除了高功率密度、宽调速范围等性能需求外,对于安全性和可靠性也有更高的要求。目前,国内外对于提高车用电机控制可靠性的研究除了各种电机本体设计和容错控制策略之外[1-7],还侧重于对高性能的电机ECU(electronic control unit)软件系统的开发。因此,研究基于AUTOSAR分层架构的电机驱动控制器软件的开发显得尤为重要。
从AUTOSAR的发展阶段来看,AUTOSAR标准基本已经达到成熟水平[8-11],并逐渐投入汽车电控系统软件研发中,如基于AUTOSAR的汽车底盘控制系统的开发应用[12],整车电子电气架构的设计[13],汽车外光灯模块的开发[14],汽车电子诊断系统的开发[15]和AUTOSAR底层通信软件SPI(serial peripheral interface)的研究与开发[16]等。对于电机控制系统,文献[17]中基于AUTOSAR方法对电机助力转向系统的软件组件进行开发,并在Matlab/Simulink中进行模型在环仿真验证。文献[18]中设计开发出基于AUTOSAR的永磁同步电机控制系统软件和硬件控制器,并利用硬件在环设备模拟电机实际运行工况进行仿真验证。文献[19]中基于AUTOSAR标准对电机ECU控制软件进行研究和设计,主要完成了对控制软件开发中应用层软件组件和运行实体的设计、算法库层和基础软件层的设计,并以英飞凌TC1767处理器作为开发平台对软件性能进行实验验证。同济大学在2016年开发出国内首例基于英飞凌TC275和Vector AUTOSAR的电机控制器原型机,主要侧重于开发符合AUTOSAR 4.0.3规范的电机控制器基础软件和部分应用层软件。
本文中以AUTOSAR分层次、模块化的设计思想为基础,对电机软件控制系统架构进行设计,将其划分为不同的功能模块和软件层次,包括应用软件层、基础软件层和实时运行环境层,它们之间通过功能总线实现数据通信和服务调用,同时,利用Matlab/Simulink和底层驱动软件iLLD(low level driver)对各软件层和功能模块进行了详细设计,各单元之间独立开发,互不耦合,这种开发方式使开发者可专注于相应功能模块和软件层次的开发,便于软件在不同平台的扩展和开发效率的提高。最后以Infineon TC275三核单片机为硬件开发平台,以永磁同步电机为控制对象,将所开发的软件应用于样机实验,完成了电机的静态和动态测试。
传统的电机控制软件开发分层不明显,软件和硬件之间存在嵌套关系,如图1(a)所示,这使软件在开发过程中一旦遇到问题和缺陷,难以确定问题产生的原因是硬件驱动程序还是软件算法设计,影响软件开发效率,提高开发成本,同样也会使软件存在潜在的风险。因此须对软件开发架构进行重新规划设计来提高软件可靠性与系统开发效率。而AUTOSAR就是以软件分层和模块划分的方式实现软硬件分离的汽车开放式架构标准,如图1(b)所示,它将系统软件架构划分为应用软件层(application layer, APP)、基础软件层(basic software, BSW)和实时运行环境层(runtime environment,RTE)。
图1 传统和标准化的软件开发模式
在电机控制系统中,与电机控制功能相关的电机控制算法、电机状态检测和安全监控等功能可作为应用程序与AUTOSAR架构中的应用软件层相对应,应用软件层中又将不同的功能模块以软件组件SWC(software component)的形式进行封装,便于设计者的进一步开发。基础软件层对应于与电机控制相关的如控制器外设驱动、通信服务和中断服务等,将控制器硬件功能以模块化进行封装,有利于其在不同硬件平台间的移植。应用层与基础软件层之间的数据交流和服务调用则通过实时运行环境层实现,RTE相当于虚拟功能总线,使开发者在设计应用软件时不必考虑底层硬件和通信网络而专注于功能软件的设计。图2为本文对电动汽车驱动电机ECU软件架构的分层设计。下面将在此架构的基础上对每层软件进行详细设计。
图2 电机控制软件分层架构
应用层软件是电机控制及安全监控等功能的具体实现,须先确定系统的输入和输出数据、系统所包含的软件组件SWC及其系统约束等。本系统的ECU即为电机控制器,并且根据相应功能可将其软件组件划分为电机控制算法SWC、数据解算SWC和安全监控功能SWC等软件组件,如图3所示,同时,须确定各软件组件的数据输入和输出、软件组件之间的数据交流和服务调用。在应用软件层APP中,软件组件划分的目的是将系统模块化,减少模块间耦合,抽象出系统各模块间的数据流和服务调用关系,同时也有利于系统软件的更新和升级。
图3 应用层软件组件结构框图
完成各个软件组件设计后,须设计其中的运行实体RE(runnable entity),运行实体是软件组件的最小代码片段,是软件组件功能的具体实现。其中,数据解算软件组件SWC中,输入数据包括从基础软件层获得的电流采样和转子位置传感器信号等,须通过电流计算、转速和转子位置解算的运行实体RE才能得到相应的电机电流、转速和转子位置等信号。电机控制算法SWC包含电机控制策略,本文中采用的电机控制算法为磁场矢量定向控制FOC(field oriented control),控制框图如图4所示,将此框图进行功能划分,不同层次以不同颜色标出,分别与应用层APP、基础软件层BSW和实时运行环境层RTE的分层架构相对应。可以看出,分层架构的划分实现了电机控制软硬件的分离,使软件开发者可专注于系统软件设计而无须考虑硬件相关问题。安全监控SWC则是针对电机过流保护和过温保护等运行实体的设计。后续若须进行功能的添加和升级只须对相应的软件组件和运行实体进行添加和修改即可。应用软件层的设计是利用Matlab/Simulink环境建模,按照所设计的软件组件和其运行实体搭建模型,利用Simulink/Configuration Parameters-Code Generation进行相应配置生成软件代码,然后可在HighTec编译器中将相应的代码文件添加到系统工程中。
基础软件层为应用层软件提供基础设施服务,包括外设驱动、内存管理和通信服务等,是连接应用层与微控制器之间的桥梁。本系统的基础软件层结构框图如图5所示,包含外设驱动、服务和通信等。其中,外设驱动是将微控制器各个功能外设进行封装,供开发者调用,如PWM驱动、ADC驱动、CAN驱动和IO驱动等;服务包括存储服务和与系统服务相关的看门狗和定时器等;另外还包含与数据通信相关的通信协议的设计等。
本文中以英飞凌AURIX三核单片机TC275为硬件开发平台,基于iLLD底层驱动软件对系统基础软件层进行相关开发与设计。系统基于TC275单片机的硬件控制框图如图6所示。与电机控制相关的控制器外设模块包括GTM,ADC,GPIO和ASCLIN等,主要用于实现PWM驱动、AD采样、IO信号输入输出和通信等功能。
图4 电机矢量控制算法框图
图5 基础软件结构框图
图6 基于TC275的系统硬件控制框图
底层驱动软件iLLD为TC275各个外设功能模块的寄存器配置以结构体和功能函数的形式进行封装,从一个简单的定时器到三相驱动PWM波的产生,都可利用iLLD进行函数调用完成相关程序设计,这样避免了开发人员直接对寄存器进行配置,既可提高开发效率,也可保证程序的可读性与可靠性。
在完成了应用层软件和基础软件层的设计后,须在实时运行环境层定义相关接口函数,实现应用层软件组件之间和应用层与基础软件层之间数据的传输与调用。首先须明确应用层软件的输入输出数据和定义相应的数据类型,如图3所示,各个SWC的相关数据均列出,在利用Matlab/Simulink搭建模型后,生成的程序代码则将输入输出数据以结构体形式封装;基础软件层中的输入输出数据则根据iLLD中相关功能函数进行定义。完成各软件层数据定义后,在中断服务程序中将相应输入输出数据进行赋值即可实现应用层与基础软件层之间的数据传输。
以上是对系统架构设计的详细介绍,图7为系统软件架构具体实现的示意图。其中,应用层软件通过在Matlab/Simulink中搭建模型完成相关仿真测试并进行代码生成,基础软件层利用底层驱动软件进行辅助设计以实现对各个外设驱动初始化,并包含对通信协议和中断服务等进行相应配置;数据通信和调用通过在实时运行环境层定义相关接口函数实现。通过上述方法完成基于AUTOSAR电机控制软件的具体设计实现。
最后,在HighTec编译器中对所有程序进行集成编译、链接,生成可执行文件并添加到调试软件UDE中,对软件进行调试、分析,根据分析结果可对软件进一步优化。
为验证基于AUTOSAR开发的电机控制软件的可行性,本文中将所设计的软件程序应用于车用永磁同步电机的硬件平台中,并进行相关实验。本实验所采用的测试电机功率为8kW,电机极对数为4对,母线电压为144V。测试平台如图8所示,图9为基于英飞凌TC275的电机驱动控制器。
图7 软件架构具体实现示意图
图8 测试平台测功机 电机
实验包括静态测试和动态测试两部分,静态实验测试电机的静态工作点。结果表明,电机可正常运行,其空载运行转速为2 500r/min,当给定转速为2 000r/min时,输出转矩可达35N·m。图10为电机测试效率云图,可以看出,该电机控制系统的效率最高可达94%。
图9 电机控制器
图10 电机测试效率云图
动态实验主要测试电机的转矩和转速的响应特性。转速响应特性测试时,保持电机转矩为30N·m,将电机给定转速从1 000提高到2 000r/min,再从2 000下降到1 000r/min,观察电机转速变化情况,结果如图11和图12所示。图中给出了转速给定曲线n∗、实际转速n和转矩曲线Te,结果表明,电机转速可在较短时间内达到给定转速。转矩响应特性测试时,给定电机转速为1 500r/min,将负载转矩从0提升到30N·m,再从30N·m下降至0,测试电机转矩响应特性,结果如图13和图14所示。图中给出了转矩给定曲线Te∗、实际转矩响应曲线Te和转速波形n,可以看出,实际转矩能快速跟踪给定转矩。
图11 电机转速响应(1 000-2 000r/min)
图12 电机转速响应(2 000-1 000r/min)
图13 电机转矩响应(0-30N·m)
图14 电机转矩响应(30N·m-0)
本文中以AUTOSAR分层次、模块化的设计思想为基础,对电机软件控制系统架构进行设计,将其划分为不同的功能模块和软件层次,包括应用软件层、基础软件层和实时运行环境层,它们之间通过功能总线实现数据通信和服务调用;并利用Matlab/Simulink和底层驱动软件对各软件层和功能模块进行了详细设计;再以英飞凌TC275三核单片机为硬件开发平台,以永磁同步电机为控制对象,将所开发软件应用于样机实验,测试结果表明,该电机控制软件可实现对永磁同步电机的控制,且具有良好的转速和转矩调节能力。基于软件的分层架构开发可以提高系统软件开发的灵活性、可配置性和代码复用率,有利于软件的升级和更新,对提高电动汽车驱动电机软件的可靠性和开发效率有着重要意义。