一种基于can总线的燃料电池汽车整车控制器监控系统的制作方法

文档序号:7599055阅读:124来源:国知局
专利名称:一种基于can总线的燃料电池汽车整车控制器监控系统的制作方法
技术领域
一种基于CAN总线的燃料电池汽车整车控制器监控系统,涉及工业现场监控技术领域,尤其适用于用移动终端如笔记本电脑对燃料电池汽车整车控制器高数据传输速率的现场进行实时监控及管理。
背景技术
燃料电池汽车采用分布式控制系统结构,各部件都具有独立的控制器,整车控制器对整个系统进行能量管理及各部件的协调控制。为满足系统数据交换量大,实时性、可靠性要求高的特点,整个分布式控制系统各控制器之间采用CAN总线进行通讯。
在整车控制器控制算法的调试、匹配标定过程中,需要对燃料电池汽车的工作状态、工作参数进行监控,以了解各部件的运行状况,有时还需要在试验现场直接对控制参数进行修改,程序结构上的变化还需重新将控制程序写入控制器,这就要求整车控制器有一个功能强大的监控系统配合工作。
整车控制器监控系统传统上都是基于RS-232串口通信协议开发的,串口通信在实车试验环境中存在着数据传输可靠性差、传输速率低等缺点,由于传输速率低造成控制器与上位机的SCI通讯任务重,限制了参数传输的数量。
监控系统的上位机部分一般采用VC、LabView等软件开发,支持笔记本电脑PCMCIA插槽的CAN通讯卡一般也带有相应的底层驱动程序。基于Matlab软件的上位机监控,可以利用其强大的数据处理、计算功能,对系统动态频率特性等进行分析,加快控制参数匹配标定过程,并与基于Matlab/Simulink环境的控制器控制算法的开发及其离线、实时仿真测试融为一体,加快整车控制器开发周期。但目前市场上各种PCMCIACAN通讯卡底层驱动程序均不直接支持Matlab环境,需对底层驱动程序进行重开发。

发明内容
本发明的目的在于针对目前整车控制器监控系统存在的上述问题,提供一种新的基于CAN总线的燃料电池汽车整车控制器监控系统,以满足燃料电池整车控制器开发的需要。
本发明所提出的基于CAN总线的燃料电池汽车整车控制器监控系统包括三个部分上位机、CAN卡及CAN总线和下位机,上位机所带的PCMCIA接口通过CAN卡,CAN总线与下位机的CAN接口相连。
所述上位机通过对PCMCIA CAN卡底层驱动程序的重开发,实现了基于Matlab软件平台对CAN总线通讯的控制,从而能够对燃料电池汽车整车CAN网络和整车控制器控制参数进行实时监测和数据存储;上位机通过发送请求字和控制参数地址的方式实现了对控制器控制参数的在线匹配标定,整车控制器通过所述的映射执行代码方式实现了基于CAN总线通讯的在线编程功能。
所述CAN卡对其底层驱动程序进行重开发,利用Matlab的C语言S-function函数功能在S-function函数中对原CAN卡动态连接库进行动态调用,并对底层驱动函数输入输出变量进行重新封装,使其符合Matlab的变量类型,生成新的动态链接库,从而实现了上位机Matlab监控程序对CAN卡底层驱动函数的间接调用。
所述的下位机是一个整车控制器,主要由控制器主芯片,Flash存储器和RAM存储器及相关电路组成,控制器主芯片的输出与Flash存储器和RAM存储器的输入相连。下位机整车控制器分配两个CAN数据缓冲区用于监控系统,每一个均可以独立生成中断,分别接收和发送上位机数据。
所述的整车控制器在线匹配标定和在线编程,上下位机均通过握手确认过程以防止误操作,并发送相应的请求字给下位机;在线匹配过程中,下位机根据接收到的控制参数绝对地址及数据长度,进行控制参数修改;在线编程过程中,下位机采用子函数映射的方法,先将实现编程功能的各子函数拷贝到RAM存储器中,通过计算相对地址得到各子函数的入口地址,再跳转至映射后的地址执行相应的指令,对Flash存储器先进行擦除,然后通过与上位机的CAN通讯将目标程序代码写入Flash中,程序写完握手确认后再跳转到Flash程序入口地址,控制器复位重新从Flash引导。
本发明运用CAN总线技术,结合Matlab软件平台实现了一种燃料电池汽车整车控制器监控系统,其上位机尤其可以使用但不限于移动终端(如笔记本电脑),可以实现高数据传输速率现场实时监控和管理,其主要效果有a)CAN总线传输速率高,容错性能好,燃料电池整车控制器监控系统抗干扰能力加强。
b)利用笔记本电脑进行监控时,应用场所灵活,便于上车试验调试。
c)利用了燃料电池汽车控制系统CAN网络通讯结构,对部件的参数直接从CAN网络接收,大大减轻了整车控制器的监控通讯负担。
d)基于CAN总线的在线匹配标定及在线编程,实现了整车控制算法试验现场的灵活调试。


图1是燃料电池整车控制器监控系统结构示意图。
图2是上位机Matlab监控程序的开发流程。
图3是在线编程原理示意图。
图4是Flash编程函数映射方式示意图。
具体实施例方式
下面结合附图对本发明具体实施做进一步说明。
图1所示为燃料电池整车控制器监控系统结构示意图。上位机是一台具有PCMCIA口的笔记本电脑,通过PCMCIA CAN卡与整车控制器及整车CAN网络相连,所述CAN卡型号可为ICPCM-CO。控制器主芯片优选为MC68376单片机,它具有一路CAN,直接与CAN总线相连,其CAN模块有16个接收发送数据缓冲区,每一个均可以独立生成中断,其中分配两个CAN数据缓冲区用于监控系统,分别接收和发送上位机数据,接收数据由中断服务子函数完成,发送缓冲区每个控制周期均向CAN总线发送控制参数,两个CAN数据帧ID的优先级别设置应比燃料电池汽车控制系统中其它所有部件节点的优先级别低,以保证监控系统不与整车实时控制冲突。扩展的Flash只读存储器芯片可为两片AM29F040。
上位机Matlab软件虽然支持通过API函数对C语言动态链接库的调用,但只能对具有简单输入、输出参数的函数进行调用,而不支持对具有复杂结构体函数的调用,利用Matlab的S-function函数功能进行底层驱动函数的重开发,可实现CAN卡缓冲区数据的间接调用,S-function实现步骤如下a)调用CAN卡底层驱动动态链接库,将底层驱动函数载入,得到动态链接库中各子函数的句柄,通过句柄实现对子函数的调用。
下面例子获得CAN接收数据子函数的句柄typedef int(*_ICPCM_SendCANMessage)(CANBUFFER*buffer);hDLL=LoadLibrary(″icpcm_wdm.dll″);ICPCM_GetCANMessages=(_ICPCM_GetCANMessages)GetProcAddress(hDLL,″ICPCM_GetCANMessages″);b)对CAN初始化、接收、发送CAN数据等子函数进行重开发,进行输入输出变量的重新封装,使其符合Matlab环境下的变量类型。
下面例子对CAN接收数据子函数进行重开发_declspec(dllexport)mxArray*ReadMsg(int len)//返回数据为Matlab数组类型{ CANBUFFER canmsg[MAX_READ_MESSAGES];//CANBUFFER为结构体数据类型int result,i,j,dims[]={1,0};unsigned char*templ;mxArray*temp;result=ICPCM_GetCANMessages(canmsg,MAX_READ_MESSAGES);dims[1]=26*result;temp=mxCreateNumericArray(2,dims,mxUINT8_CLASS,mxREAL);//建立可变长度数组temp1=&canmsg;
memcpy(mxGetPr(temp),temp1,result*26*sizeof(unsigned char));//将原始CAN数据拷贝到Matlab数组中return temp;}c)用S-function编译重新封装之后的底层驱动程序,生成Matlab环境下可直接调用的动态链接库。
mex canmonitor.c;上位机Matlab监控程序的开发流程如图2所示,上位机在Matlab中利用loadlibrary函数载入动态链接库,利用calllib函数即可对所有动态库子函数进行调用,对CAN进行初始化设置,如格式、波特率等,如果是实时监控模式,上位机通过查询方式接收CAN卡数据缓冲区中数据,并利用Matlab的GUI图形编程功能,对控制参数及整车CAN网络进行实时监测显示,如果是在线编程和在线匹配标定模式,将与下位机配合工作。监控结束时,利用unloadlibrary函数卸载动态链接库。
图3所示为在线编程原理示意图,整车控制器检查整车钥匙位置,如果处于关状态,表明整车处于停止状态,可以进行控制程序的修改,下位机CAN监控接收数据缓冲区打开中断,以响应上位机在线编程的请求。编程开锁有一个上下位机握手过程,以防止误操作,保证下位机在线编程的代码不被意外的激活。通常下位机的应用程序都是在Flash ROM里执行的,在编程过程中采用子函数映射的方法,如图4所示,将在线编程所需的功能函数代码拷贝到RAM中,通过计算相对地址得到各子函数在RAM中的入口地址,再跳转至映射后的地址执行相应的指令,进行Flash编程。Flash编程过程中,上位机每个编程循环里读取一行目标代码,获取代码地址并且完成解码后,通过CAN总线发送给下位机。下位机控制器接收到编程结束数据帧后,跳转到Flash程序入口地址,控制器复位重新从Flash引导。
在线匹配标定过程中,上下位机通过与以上相似的握手确认过程后,上位机开始发送信息,其CAN数据帧的定义为前两个字节为Flash绝对地址、第三个字节为数据长度,剩下为数据。下位机根据接收到的数据对控制参数相应存储器地址进行在线数据修改。
权利要求
1.一种基于CAN总线的燃料电池汽车整车控制器监控系统,其特征在于所述的整车控制器监控系统包括三个部分上位机、CAN卡及CAN总线和下位机,上位机所带的PCMCIA接口通过CAN卡,CAN总线与下位机的CAN接口相连。
2.根据权利要求1所述的燃料电池汽车整车控制器监控系统,其特征在于上位机通过发送请求字和控制参数地址的方式实现对控制器控制参数的在线匹配标定;整车控制器通过映射执行代码方式实现基于CAN总线通讯的在线编程功能。
3.根据权利要求1所述的燃料电池汽车整车控制器监控系统,其特征在于所述CAN卡的底层驱动程序利用Matlab的C语言S-function函数功能在S-function函数中对原CAN卡动态连接库进行动态调用,并对底层驱动函数输入输出变量进行重新封装,使其符合Matlab的变量类型,生成新的动态链接库,实现上位机Matlab监控程序对CAN卡底层驱动函数的间接调用。
4.根据权利要求1所述的燃料电池汽车整车控制器监控系统,所述的下位机是一个整车控制器,主要由控制器主芯片,Flash存储器和RAM存储器及相关电路组成,控制器主芯片的输出与Flash存储器和RAM存储器的输入相连。
全文摘要
一种基于CAN总线的燃料电池汽车整车控制器监控系统,尤其适用于用移动终端如笔记本电脑对燃料电池汽车整车控制器高数据传输速率现场进行实时监控及管理。系统包括三个部分上位机、CAN卡及CAN总线和下位机,上位机的PCMCIA接口通过CAN卡,CAN总线与下位机的CAN接口相连,上位机发送请求字和控制参数地址对控制器控制参数在线匹配标定;下位机整车控制器通过映射执行代码实现CAN总线通讯的在线编程。本发明运用CAN总线技术,结合Matlab软件平台可以实现高数据传输速率现场实时监控和管理,系统减轻了整车控制器的监控通讯负担,抗干扰能力加强,应用场所灵活,实现了整车控制算法试验现场的灵活调试。
文档编号H04L12/40GK1606286SQ200410088818
公开日2005年4月13日 申请日期2004年11月5日 优先权日2004年11月5日
发明者何彬, 李建秋, 贾要勤, 欧阳明高 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1