资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
基于 WindML语言的虚拟仪表设计摘要: 随着计算机技术的不断发展,全电车辆自动化领域对综合电子信息系统的虚拟仪表显示的要求越来越高。用户希望拥有稳定的性能、友好的界面、丰富的监测功能、特定的控制功能和优良的性能价格比。在研究了多种综合电子信息系统的基础上,本文开发了一种基于 CAN 总线车辆综合电子系统中的虚拟仪表终端,并详细介绍了其在基于 VxWorks 系统下使用 WindML 包的软件开发。该系统在实际工程中得到应用,并取得了良好的效果。关键词:全电车辆;车辆综合电子系统;虚拟仪表; VxWorks;WindML1系统中虚拟仪表的设计方案在全电战斗车辆中,虚拟仪表作为综合电子信息系统的重要组成部分,代替现有机电仪表,并可以实现定位导航信息、故障诊断信息、地理信息、态势信息、时间统一信息、环境信息等的显示;同时,作为网络中的节点和不同子网间的网关,可以实现各个功能设备之间,车长、炮长、驾驶员之间信息的交互和共享。虚拟仪表和各个功能模块一起以总线网络实现信息的共享和协调控制,从而实现信息系统以至整车的数字化、网络化和自动化。1.1虚拟仪表的主要功能本虚拟仪表位于基于 CAN 总线的车辆综合电子信息系统中,即作为驾驶员主控显示装置,同时也是指挥火控 CAN 总线子网和车辆测控 CAN 总线子网的网关。虚拟仪表主要完成的任务是:对各测控模块向车辆测控 CAN 总线子网发送的所有报文进行筛选,并且对有效的报文进行分析和判断,提取需要的数据信息,此后以图形图像的方式将结果显示在 LCD屏上,在检测到报警信息或遇到突发情况时显示警示信息。同时,与车长计算机进行通信,传递车速、燃油量、供电状况、车辆的异常情况等车况,并显示车长调度指挥信息。虚拟显示模块基本构架如图 (1)所示:虚拟仪表控制单元(车辆测控主控制器)虚拟仪表车辆测控 CAN 总线指挥火控 CAN 总线图(1)1.2虚拟仪表的组成虚拟仪表硬件由控制单元(计算机) 、CAN 接口卡、视频采集卡、显示终端组成,其软件基于 VxWorks 操作系统设计,主要完成对 CAN 控制器的操作、接收报文的处理和虚拟仪表面板设计等工作,其中图形界面通过 WindRiver 公司的 WindML 库实现。2VxWorks操作系统下虚拟仪表软件设计2.1通信协议系统采用CAN2.0总线进行数据通信,以500kbps的波特率和标准帧格式SFF(Standard Frame Formats)进行报文传递。按照SFF的格式规定,ID号(报文标示位或信息识别码)为11位。 1CAN控制器的接收缓冲区一旦收到报文,就会产生消息。消息处理函数将根据报文进行分支处理。2.2软件设计2.2.1 任务调度实时嵌入式操作系统VxWorks提供的多任务机制中对任务的控制,采用了优先级抢占和轮转调度机制,充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。同时,VxWorks还提供了丰富的任务间的通信机制。该系统中任务与任务之间总是共享一块缓存,属于一种生产者和消费者的关系,因此选择了用一对互斥信号量来完成任务间的互斥和同步。同时根据实时性对任务的要求不同,对生产者和消费者的等待策略(不等、定时等、永久等待)也各不相同。这样既能保证数据流的正确性和连续性,又不至于让系统中的大多数任务处于空闲状态,保证了系统的高效和准确。在任务设计的过程中,遵循以下针对实时设计的规范与评估标准:任务划分符合H.Gomma原则;任务占用的代码体要么被终止,要么死循环;任务要自杀,不要他杀;避免破坏程序设计结构化; ISR要短、精、直接硬相关,不调用可能阻塞中断的系统服务;避免死锁。2.2.2 接收报文的处理对于每个测控模块发送来的报文,软件设计时都分别编写了相应的处理子程序。在每个子程序中,都根据对应测控模块的数据包的格式来提取各自需求的信息,并指定相应的显示形式。2.2.3 查错纠错处理在完成以上基本设计任务之后还需考虑 CAN 控制器通信出错的情况以提高系统的稳定性。CAN 控制器在报文的收发过程中可能会出现 5 种类型的错误:位出错、填充出错、循环冗余码出错、报文格式出错和应答出错,而在某些情况下主机也会要求复位 CAN 总线控制器,甚至需要对 CAN 控制器进行重新初始化。可以通过读取 CAN 控制器的出错计数器值进而查询出错捕捉码来获取详细的错误信息,再根据具体的错误类型进行相应的纠错处理。2.2.4 虚拟仪表显示设计虚拟仪表图形界面采用 WindML 设计。WindML(Wind Media Library) 是基于 VxWorks的多媒体应用的支持链接库。主要提供了对芯片、输入、输出设备、音频、视频、帧缓冲器等的开放的应用程序接口(API)。为在 VxWorks 操作系统下开发的软件提供基本图形、视频和音频方面的操作。由于其可以在 VxWorks 操作系统上以较低的系统开销实现丰富多彩的图形界面,并有较高的灵活度和较大的自由度。因此, 本系统选用 WindML 来作图形界面设计。下面是该虚拟仪表软件中的几个难点,现在此做一讨论。2.2.4.1 双缓存利用 WindML 提供的双缓存技术可以方便的实现虚拟仪表指针的重绘工作。当应用程序在绘制虚拟仪表时,可以先将图像绘制到后台缓冲区中,绘制结束后可以通过交换缓冲区,将后台缓冲区已经绘制好的图像直接送到前台缓冲区中,由系统显示功能完成屏幕的显示,此时应用程序已经开始在后台缓冲区中绘制下一幅图像了。如此循环反复,屏幕上总可以显示已经绘制好的图像,而看不到绘制的步骤,另一方面也提高了系统的效率,从而实现虚拟仪表指针的变化的连续效果。在这个过程中,绘制虚拟仪表的关键步骤是交换前台与后台的缓冲区,主要的程序代码如下:int pageIndex = 0;UGL_PAGE_ID page2;UGL_PAGE_ID page1;page0 = UGL_PAGE_ZERO_ID;page1 = uglPageCreate(devId);uglPageDrawSet(devId, page1);while(1) /* 绘制图形 */if (pageIndex = 0)uglPageVisibleSet(devId, page1);uglPageDrawSet(devId, page0); pageIndex = 1;elseuglPageVisibleSet(devId, page0);uglPageDrawSet(devId, page1);pageIndex = 0;uglPageDrawSet(devId, page0);uglPageVisibleSet(devId, page0);uglPageDestroy(devId, page1);2.2.4.2 输入设备WindML 支持键盘及鼠标等输入设备,用来实现人机的交互功能。程序中对键盘事件用查询方式进行采样,如果有按键按下则根据按键的扫描码转入不同的分支程序进行处理。主要的程序代码如下:UGL_EVENT event;UGL_FOREVERif (uglEventGet (qId, &event, sizeof (event), 140 )!= UGL_STATUS_Q_EMPTY) if (event.header.type = UGL_EVENT_TYPE_KEYBOARD)UGL_INPUT_EVENT * pInputEvent = (UGL_INPUT_EVENT *)if (pInputEvent-header.type = UGL_EVENT_TYPE_KEYBOARD &pInputEvent-modifiers & UGL_KEYBOARD_KEYDOWN) switch (pInputEvent-type.keyboard.key)case UGL_UNI_F1:;case UGL_UNI_F2:; 2.2.4.3 中文显示WindML 本身不支持中文, 而在国内的应用场合, 图形界面中不能显示中文往往是不符合要求的。由于虚拟仪表中所要显示的汉字有限,可以采用调用画单色位图的方法解决。主要的程序代码如下:UGL_MDIB transMdib; UGL_DDB_ID testBitmap;UGL_UINT8 word = 0x41,0x00,0x21,0x00,0x31,0x00,0x21,0xFC,0x02,0x20,0x02,0x20,0xF4,0x20,0x10,0x20,0x17,0xFE,0x10,0x20,0x10,0x20,0x10,0x20,0x14,0x20,0x18,0x20,0x10,0x20,0x00,0x20;/* 汉字点阵 16*16 */transMdib.width = transMdib.stride = transMdib.height = 16;transMdib.pImage = word;uglBackgroundColorSet(gc, colorTableWHITE.uglColor); uglForegroundColorSet(gc, colorTableBLACK.uglColor); testBitmap = uglMonoBitmapCreate(devId, &transMdib, UGL_DIB_INIT_DATA, 0, UGL_NULL);uglBitmapBlt(gc, testBitmap,0,0,15,15, UGL_DEFAULT_ID, 600, 10);3 结束语基于 CAN 总线的全电车辆综合电子信息系统和虚拟仪表已经实现车载运行,目前进入跑车实验,显示屏可以在车辆不同的状态下显示不同的工矿参数及报警信号,个个参数可以根据需要通过按键自由切换,仪表的读数一目了然,可读性好,读数精度高,并且容易升级、扩展。参考文献:1 WindRiverSystem,Inc. VxWorks Programmers GuideM.WindRiver. 5.4. 19992 WindRiverSystem, Inc. UGL Programmers GuideM.WindRiver. 2.0. 20003李方敏. VxWorks 高级程序设计M.北京:清华大学出版社. 2004.54邬宽明. CAN 总线原理和应用系统设计M.北京:北京航空航天大学出版社. 1996.11
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号