基于ARM和QNX的电动汽车虚拟仪表系统设计

2021-09-27 01:40汤春球曾豪杰邓飞宇
数字制造科学 2021年3期
关键词:仪表应用程序总线

汤春球,曾豪杰,邓飞宇

(武汉理工大学 机电工程学院,湖北 武汉 430070)

汽车仪表作为驾驶员了解汽车行车信息的窗口,其显示的准确性和可靠性直接关系到行车安全。新能源汽车较传统的燃油汽车相比,电气设备更多,因此电动汽车仪表信息显示更加丰富,显示模式更加多样化并具备良好的HMI(human machine interface)交互能力[1]。目前,单处理器的汽车虚拟仪表存在启动时间长,抗电磁干扰能力弱等问题。针对以上问题,笔者提出了一种双处理器车载虚拟仪表设计方案,主MPU(micro processor unit)采用基于ARM(advanced RISC machines) CORTEX-A9内核MX6SOLO处理器来进行复杂的图形处理,辅助MCU(micro controller unit)采用32位的NXP S32K146作为主控芯片的微控制器主要进行数据通信,并以目前安全性和实时性最好的QNX(quick unix)作为嵌入式系统,以汽车领域专用的UI(user interface)设计工具Kanzi进行仪表的图形界面开发。该虚拟仪表系统将数据通信和图形处理分离,增强了系统的干扰能力。且后期系统维护,只需更换UI资源,就能获取新的主题风格。

1 系统方案

1.1 系统总体方案设计

虚拟仪表系统工作原理是:通过CAN(controller area network)总线实时采集汽车的各种数据,包括汽车运行的转速、车速、胎压信息、电池信息和里程等信息,然后经MCU进行数据处理,将正确的信息显示在虚拟仪表盘上。根据仪表系统的工作原理,可将仪表总成分为3个主要模块:数据采集、数据处理和液晶显示[2]。

(1)信号采集模块。汽车上的信号包括CAN总线信号和各种硬线信号,将采集到的信号经过信号转换单元转换成处理器易读的数字信号。

(2)数据处理模块。将采集到的数据经辅助MCU和主MCU处理后进行保存,方便后续液晶显示和声光报警。

(3)液晶显示模块。经过解析、分析处理后的数据在液晶仪表面板上进行分区域显示,主要显示内容有:当前速度、电池电量、时间、日期、行驶里程、报警信息等;当系统判定某项数据为异常信息时,通过智能语音和警告指示灯等方式进行预警,提醒驾驶员进行处理[3]。

1.2 硬件方案设计

某汽车公司设计的一款纯电动汽车虚拟仪表,采用双处理器协同工作。主MPU采用基于ARM CORTEX-A9内核的IMX6SOLO处理器,运行速率高达1.2 GHz,内部集成2D和3D图形处理器,动画运行速度流畅,图像处理速度快。辅助MCU采用32位的NXP S32K146作为主控芯片,负责电源管理、整车CAN信号和硬线信息接收管理。硬件部分还包括电源管理模块、CAN通信模块、预警模块和液晶显示模块,显示屏采用10.25寸,分辨率为1 920×720 px的非触摸屏。仪表的硬件框图如图1所示。图中,LVDS(low-voltage differential signalling)为低电压差分信号;UART(universal asynchronous receiver/trnsmitter)为通用异步收发传输器。

图1 系统硬件框图

1.3 CAN通信协议

控制器局域网是一种串行通信协议,能有效支持分布式控制和实时控制的串行通信网络。电动汽车网络通信结构示意图如图2所示。

图2 电动汽车网络通信结构示意图

CAN总线结构从上到下依次是CAN控制器、CAN收发器、CAN数据传递终端。CAN总线上节点发送数据是以报文的形式广播给所有节点,且多节点发送数据,优先级低主动退出发送。

由于电动汽车并没有标准的通信协议,一直是主流主机厂自己制定,基本的思路是在SAE-J1939[4-5]的基础上,根据需求做出调整。电动汽车CAN总线系统由于电气设备多,因此需要对应用层部分参数重新定义。

(1)优先级。将重要的结点信息设置更高报文优先级,保证重要的报文信息刷新频率高。

(2)节点地址。电动汽车新增的节点包括整车控制器、汽车动力管理系统、电机控制器等。

(3)参数组定义。同一个设备内完成不同功能构成参数组,将刷新频率接近的参数放在一个参数组内进行发送能提高总线的利用率。

1.4 软件设计方案

所设计的虚拟仪表系统采用分布式嵌入式实时操作系统QNX作为操作系统,在QNX系统平台下开发虚拟仪表的驱动程序和应用程序,采用Kanzi进行仪表的界面设计。调用系统的接口函数将采集到的CAN信号和各种硬线信号进行解析,经处理系统内核进行处理判断,将正确有用的信息进行显示,异常数据进行预警并存储。系统软件流程如图3所示。

图3 系统软件流程图

仪表软件设计采用模块化成熟设计方案,软件总体框架采用MVC(module view controler)三层架构,View层接收用户的操作以及通过刷新页面的方式反馈客户;Controller处理View层发送的消息做逻辑处理,并向Module层获取View层所需的数据;Module层负责缓存当前页面的数据,并响应View层的数据请求,同时也负责在数据需要更新或者数据不全的情况下向其他地方获取数据(底层、文件、PPS(protocal and parameters selection)、网络等渠道)。整个仪表软件部分主要由上层应用软件和下层驱动软件部分组成[6]。驱动部分主要负责完成系统的初始化、CAN总线信号和硬线信号接收处理;应用程序部分主要完成复杂的逻辑处理[7],数据更新,UI显示,系统任务的调配,故障的判断及预警。

驱动部分由系统内部驱动和外部设备驱动组成:系统内核驱动,CAN总线驱动,A/D转换驱动、语音驱动和液晶显示器显示驱动。

应用程序处理复杂的系统任务主要包括:系统管理,数据采集和信号转换,繁杂的数据处理,UI显示,系统异常的声光报警。整个程序采用多进程和多线程的方式来共享系统资源,进程间通过QNX的PPS通信机制完成进程间的数据交换。仪表界面显示部分由以下子线程同步运行:方控线程、声光报警线程、串口线程等。负责完成相应的功能任务,提高系统资源的利用率。

1.5 UI设计

UI设计师使用Kanzi Stadio完成UI界面设计,能所见所得地展示UI效果,并生成了KZB资源包给软件工程师使用,可用Kanzi Engine读取界面效果,添加数据和逻辑代码。这种工作模式使得UI设计师不用考虑软件工程是否能实现界面效果,软件工程师也容易理解UI设计师意图,减少了二者工作的依赖,提高了工作效率。同时Kanzi也具有良好的跨平台性。使用Kanzi Studio设计仪表界面如图4所示。

图4 系统界面效果图

为仪表界面添加逻辑代码和数据,Kanzi可以通过Kanzi Studio 中的触发器和状态机来实现简单的逻辑,复杂的逻辑则使用执行脚本和C++API来添加。采用Kanzi Engine API方式为仪表界面添加逻辑功能代码的方法为:

(1)使用Kanzi Engine加载生成界面的二进制文件。由于本应用程序最终部署在QNX系统环境下,首先在Windows下构建,然后使用Kanzi构建脚本指向适用于Windows的QNX工具链来构建应用程序。当使用Visual Studio来创建Kanzi工程时,首先调用onConfigure()配置应用程序。

(2)访问 Kanzi Studio工程中创建的内容。创建一个预设件节点列表,添加每个小组件,在应用程序类的成员变量中创建并存储。在onConfigure函数后添加 onProjectLoaded() 函数。并将函数置于 onProjectLoaded() 内,Kanzi 会在加载应用程序后调用该函数。

(3)从文件系统加载图像。在ProgrammerTutorialApplication中,为 WidgetDescription 结构创建构造函数,它定义小组件名称、图标和描述,设置小组件数量,并定义小组件描述数组。

(4)为各个小组件和组件面板添加交互。在ProgrammerTutorialApplication类中的 onProjectLoaded() 函数,实现小组件的时间处理程序,部分代码实现如下:

virtual void onProjectLoaded() KZ_OVERRIDE

{ //为 Back button 添加处理程序

m_backButton->addMessageHandler(Button3D::PressedMessage, bind(&Programmer Tutorial Application::onBackButtonClicked,this, placeholders::_1));

}//组件的绑定

2 系统的总体评价

整个仪表的性能指标主要从实时性和稳定性进行评价。双处理器嵌入式仪表系统较单处理器嵌入式系统而言,既能进行复杂的数据处理又能保证系统的快速启动。笔者所设计的虚拟仪表系统主处理器采用基于ARM内核的IMX6作为微处理器,内置图形处理器,支持3D加速引擎,具备高速视频信号输入输出处理功能。辅助MCU采用单片机作为处理器,主要负责数据通信,利用单片机功耗小,响应速度快等优势来控制仪表系统的快速启动。此外双处理器还具有抗电磁能力强的优势,有效防止液晶产生黑屏的现象[8]。双MCU比单MCU方案可靠性和稳定性更高。

QNX的微内核[9]具有精确的故障隔离和恢复功能。中断响应延时作为衡量一个嵌入式系统的重要性能指标,在相同的硬件条件下,QNX系统的中断[10]延时为3.3~4.4 μs,具有明显的实时性优势。据相关统计测算如果Linux响应延时大约为1 s的话, 那么QNX则低至约0.000 008 s。完全满足高级辅助驾驶系统、HUD(head up display)抬头显示、第五代液晶虚拟仪表系统和其它有功能性安全需求的车载应用程序日益增长的需求。

通过USB、CAN和上位机来模拟CAN数据的收发过程,打开调试工具,完成相关参数配置,设置波特率,按时间间隔模拟实车数据的收发过程,经过24 h测试实验,仪表能正常接收并实时精确显示电控信号、车速、转速、电池等报文信号,同时最快开机时间为3 s,满足快速启动要求。

3 结论

笔者设计的基于双处理器的汽车虚拟仪表,采用嵌入式图形库开发,运用3D图形显示技术,其实时性、快速启动以及精确显示均满足设计要求,解决了单处理器启动慢,抗干扰能力弱的问题,同时3D显示效果更加炫酷,具备一定的科技感。整个仪表系统软件分层明确,各层之间耦合度较低,因此极大地提高了软件的开发效率。

猜你喜欢
仪表应用程序总线
浙江中控自动化仪表有限公司
浙江中控自动化仪表有限公司
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
一种基于CAN总线的误码测试方法
奔驰E260车行驶过程中仪表灯熄灭
宝马745Li车制动灯常亮且组合仪表上多个故障灯点亮
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计
宝马F02车总线系统