APP下载

车载电源控制器标定软件设计

2020-06-22杨云露龚元明周建鹏

软件导刊 2020年5期
关键词:上位机CAN总线

杨云露 龚元明 周建鹏

摘 要:为提高电动汽车用电源控制器开发效率,利用VisualStudio开发基于CCP协议的上位机标定软件,自定义CCP控制命令并利用CCP driver编写下位机通信代码,同时在AltiumDesigner中绘制CAN通信电路图,完成上下位机之间通信模块软硬件設计,最后利用CANTest进一步验证收发数据的精确度。该上位机标定软件可实时监控并显示MOSFET内部温度、输入电压和输出电压、输入电流等数据。经大量实验测试结果表明,上下位机之间通信稳定可靠、传输速率快,可节约调试成本。

关键词:标定系统;CCP协议;CAN总线;上位机

DOI:10. 11907/rjdk. 191898 开放科学(资源服务)标识码(OSID):

中图分类号:TP319文献标识码:A 文章编号:1672-7800(2020)005-0146-05

0 引言

标定系统是产品开发中的关键工具之一,主要用于监控控制器实时工作参数,从而方便研发人员设计和测试产品。但整体来看,基于CCP协议的标定系统仍旧匮乏,绝大多数汽车标定系统是基于国外软件再进行小部分开发或直接采用国外标定产品。近年来,国内有部分高校自主研发了各具特色的标定软件,主要应用于整车控制器、电池管理系统BMS、发动机标定系统或变速器、ABS等。

例如,李雅博等[1]设计了一套基于CCP协议的标定系统,完成了对混合动力汽车(HEV)动力系统中多个ECU的标定工作;丁圣彦等[2]分析了CCP协议用于标定的工作机理,讨论了利用CANape进行基于CCP标定的实现方法;袁九宇[3]详细介绍了基于CCP协议标准的CAN总线测试校准技术,并分析了基于CCP协议的校准测试技术误差产生原因及处理方法;林志华等[4]采用Labview开发基于CCP协议的上位机标定监控软件,利用CCP driver实现上下位机间的通讯,用以采集发动机信号;Tang等[5]介绍了CCP协议基本原理、通信模式及ECU标定的工作模式,并基于CCP协议设计了一个ECU标定系统;Chen等[6]设计了一个基于CAN总线的汽车多功能监测系统,为运行中的汽车提供了一个数据采集和显示平台;Sung等[7]利用标定工具CANoe开发了一种ECU模拟器,通过在线标定工具实现虚拟ECU标定,提高标定系统开发效率;王健[8]针对具体车型,制定出整车控制策略,设计了适用于某款单片机系统的CCP驱动软件,通过实车标定试验,对控制器待标定参数进行标定;徐群杰等[9]设计了一种基于CAN总线的远程温湿度综合探测器,将采集到的数据传输到安卓客户端或其它终端;黄晓波、卢焱等[10-11]对上位机标定软件进行功能模块划分,在LabVIEW平台上完成了标定软件各模块的设计;文献[12]介绍了一个完整的CCP协议系统设计,包括ECU驱动器、计算机校准软件设计和传输机构改进,利用Visual Studio设计计算机校准软件,并提出了一种改进的传输机制,可获得更好的实时性能;文献[13-19]展示了近年来在线标定系统发展状况,主要聚焦于汽油发动机、柴油机及ESP其它电控单元参数标定监测,其原理均基于CCP协议开发上位机监测软件,并与标定系统进行匹配,实时修改RAM区域参数,从而提高匹配效率、减少开发周期,但大多研究是基于国外标定软件进行测试,独立制定协议并开发一套标定软件的实例较少。

本文设计的车载电源控制器标定系统,通过电压、温度、电流采集等外围信号电路,将采集到的信号利用A/D转换处理成微处理器MCU可识别的信号,然后利用MCU对车载电源控制器输入电压、输出电压及MOSFET内部温度等信号进行分析处理并存放至FLASH单元。上位机采用VisualStudio设计简洁高效的界面,方便用户操作。上位机与下位机通信采用CCP(CAN Calibration Protocol)协议,下位机ECU通过汽车线束接插件及DB9接头连接通讯模块USBCAN,从而实现ECU数据与上位机标定软件的数据通信。本文设计的基于CCP标定协议的上位机软件可直观地对车载电源控制器进行在线标定与通信数据实时监测。

1 CCP协议

CCP协议是基于CAN总线的标定协议,主要定义两帧CAN报文,分别是命令接收对象CRO (Command Receive Object)与数据传输对象DTO(Data Transmission Object),CRO是主设备发送给从设备的命令,用来传递CMD命令代码和相关参数,实现主从设备间存储信息交换。当从机接收到一条CRO后,会返回一条数据发送对象DTO作为应答。CCP 协议共有28条命令代码。其中必选命令有11条,可选命令17条。每条命令中第一个字节是CMD代码,当从设备接收到CRO后,首先依据CMD解析主设备待执行的命令。CRO中第2个字节是命令计数器CTR统计CRO已发送的命令个数。其余6个字节为传输的数据参数,命令接收对象CRO结构如图1所示。数据传输对象DTO共有CRM(Command Return Message)、事件消息及DAQ-DTO 3种形式,其中CRM 是对主设备发送的CRO的响应,通常以OxFF开头;事件消息结构是当从设备发现内部出现错误时,自行向主设备发送错误信息报文;DAQ-DTO用于DAQ数据采集模式时的数据传送,由从设备按照程序设定的周期自动向主设备发送数据。DTO形式如表1所示。

2 标定系统结构

在标定系统中,主设备一次只能与一个从设备建立逻辑连接。主设备指标定工具,从设备是被标定的下位机。

车载电源控制器系统由下位机电源控制器ECU、通讯模块USBCAN与上位机标定软件3部分组成,ECU通过带有CAN接口的汽车线束接插件与CAN网络连接。USBCAN通讯模块负责PC端USB接口与ECU之间的数据转换和传输。上位机可实时显示车载电源控制器MOSFET的内部温度、输入电压和输出电压等参数。其中USBCAN通讯模块采用周立功USBCAN接口卡。标定系统硬件结构如图2所示。

本文采用VisualStudio进行上位机标定软件开发,通讯模块采用CAN接口卡实现上下位机USB数据流和CAN数据流转换,最大传输速率为1Mbps。ECU处理器采用Infineon XC2234L芯片,该芯片集成了MultiCAN控制器模块,收发芯片选用TLE6250G。在应用程序方面,周立功公司提供了一套Virtual CAN Interface(VCI)函數库,附带库里所有函数声明。相应开发接口文件包括ControlCAN.d11、ControlCAN.lib等,库函数从ControlCAN.d11中导出,在VisualStudio中可便捷地调用VCI函数库,从而完成标定软件程序开发。

3 硬件设计

在本文实验中,Infineon XC2234L微处理器内部集成 MultiCAN 控制器,CAN控制器与物理总线之间通过TLE6250 CAN收发器作为数据转换接口,可实现CAN控制器逻辑电平与CAN总线差分电平之间的转换。其数据收发过程是控制器发出 TTL电平信号给收发器,收发器将数据信号转化为CAN标准的差分信号,将控制器传来的数据转化为电信号并将其送入CAN总线上。总线输入输出端电压、电流与 MOS 管温度数据通过USBCAN接口卡与上位机进行通讯,上位机通过USBCAN读取数据,从而图形化、数字化地监控和显示输入输出端电压、电流和MOS管温度实时数据状态。此外,为抑制信号反射,在CAN总线两个端点处接有R19为120Ω的终端匹配电阻。CAN通信接口电路设计如图3所示。

4 软件设计

4.1 上层通信设计

上层通信为上层标定软件的通信,主要通过调用USBCAN接口卡动态链接库usbcan.dll函数得以实现[20]。在初始化USB转CAN接口时,需调用动态链接库VCI_InitCan()函数,对输入波特率、标识符位数及接收缓冲区等进行设置。在通信过程中,上位机向ECU发送CRO、ECU向上位机发送DTO及检测数据时均依靠usbcan.dll函数完成,其调用流程如图4所示,上位机标定界面如图5所示。该上位机可实时检测车载电源控制器的外部供电电压、负载电流、板内 MOSFET 管温度及负载输出端电压。并可通过参数设置控制电源控制器电压、电流与温度的安全范围,将数据固化到微处理器中,以此监测并保护车载电源控制器。

4.2 下层通信设计

下位机控制器ECU内部必须实现CAN驱动与CCP驱动集成,由于Infineon XC2234L微处理器芯片内嵌MultiCAN控制器,实现 CAN 驱动相对容易。CAN驱动程序(CAN Driver)封装了CCP协议所有帧的类型,主要由CAN初始化、CAN发送和CAN接收3部分组成。用于实现下位机控制器ECU的CAN通讯功能,是CAN总线数据传递基础及实现CCP协议命令收发的载体。CCP驱动程序(CCP Driver)解析并执行来自上位机的CCP命令,这是实现基于CCP协议标定系统的关键,用于解析来自CAN总线的CCP命令并采集数据发送至上位机标定软件,并更新ECU内RAM或FLASH中的各种标定数据,当下位机出现故障时,及时向上位机发送错误提示。

在本文车载电源控制器设计中,控制命令顺序为主设备与从设备的连接—车载电源控制器的手动控制—MOS 管的闭合与断开(或温度值采集、输入端电压采集、输出端采集)。其定义的控制命令如表2所示。

4.2.1 主设备与从设备连接

车载电源控制器上电时会自动运行主设备与从设备的连接命令,CRO指令为{0x01,CC_CONNECT,0x01,0x00,0x00,0x00,0x00,0x00}。

4.2.2 车载电源控制器自动控制与手动控制

在自动控制模式下,车载电源控制器可根据输入端电压、输出端电压、MOS管工作温度的综合判断,进行功率MOS管闭合和断开操作。在手动控制模式下,从机控制器可根据主机 CRO 命令,进行诸如功率MOS管控制、输入端电压、输出端电压及MOS管工作温度采集等操作。主端要实现电源控制器自动控制和手动控制,应顺次执行2个CCP 命令:①设置内存传输地址(CC_SET_MTA)。主端通过 CCP 协议设置内存传输地址命令(SET MTA),将基地址BaseAddr_strCMDControl_CCP = 0xC9A0 发送至电源控制器。实际发送:{0x02,CC_SET_MTA,0x00,0x00,0x A0,0x C9,0x00,0x00}。其中CCP_COMMAND[Num_SETMTA,4]= (byte)Addr为基地址低位,CCP_COMMAND[Num_SETMTA,5]= (byte)(Addr >> 8)为基地址高位;②设置自动控制与手动控制。主端通过CCP协议的数据下载命令(DNLOAD),实际发送:自动控制: {0x03,CC_DNLOAD,0x01,0x20 ,0x00,0x00,0x00,0x00},手动控制:{0x03,CC_DNLOAD, 0x01, 0x21,0x00,0x00,0x00,0x00}。其中CCP_COMMAND[Num_DLOAD, 2] = 0x01 : 表示命令的字节长度,CCP_COMMAND[Num_DLOAD, 3] = 0x20:表示自动控制,CCP_COMMAND[Num_DLOAD, 4] = 0x21 : 表示手动控制。

4.2.3 功率MOS管闭合与断开

功率 MOS 管闭合与断开也顺次执行2个CCP 命令:①设置内存传输地址。主端通过CCP协议的设置内存传输地址命令(SET MTA)将基地址 BaseAddr_strCMDControl_CCP = 0xC9A0发送至电源控制器;②设置自动控制和手动控制。主端通过CCP协议的数据下载命令(DNLOAD),自动控制:{0x03,CC_DNLOAD, 0x01, 0x 01 ,0x00,0x00,0x00,0x00},手动控制:{0x03,CC_DNLOAD, 0x01,0x02,0x00,0x00,0x00,0x00}。其中CCP_COMMAND[Num_DLOAD,2]=0x01:表示命令的字节长度,CCP_COMMAND[Num_DLOAD, 3] = 0x01:表示接通电压控制功率MOS管,CCP_COMMAND[Num_DLOAD, 4]=0x02:表示关断电压控制功率MOS管。

4.2.4 车载电源控制器工作温度采集

主端任务是实现电源控制器工作温度采集,按顺序执行 2个CCP 命令:①设置内存传输地址(CC_SET_MTA)。主端通过 CCP 协议的设置内存传输地址命令(SET MTA),将工作温度值的地址 0xC808 发送至电源控制器,实际发送:{0x02,CC_SET_MTA,0x00,0x00,0x08 ,0xC8,0x00,0x00};②工作温度采集。主端通过 CCP协议的数据上载命令(UPLOAD)。实际发送:{0x04,CC_UPLOAD,0x02,0x00,0x00,0x00,0x00,0x00},其中CCP_COMMAND[Num_DLOAD, 2] = 0x02 : 表示上传的字节长度,电源控制器向主端发回的DTO格式为:{0x FF,CC_UPLOAD ,0x00, 0x XX ,0x XX, 0x 00 ,0x00,0x00} 温度实际值计算公式Temp_Value = (float)Byte2Toshort( DTO[3] +DTO[4]*256 ) /100.0f - 128.0f。

4.2.5 车载电源控制器输入电压采集

主端任务是采集电源控制器输入电压,顺次进行 2个 CCP 命令:①设置内存传输地址(CC_SET_MTA)。主端通过 CCP 协议的设置内存传输地址命令(SET MTA)将输入电压值的地址 0xC800 发送至电源控制器;②输入电压的采集。主端通过CCP协议的数据上载命令(UPLOAD)。实际发送:{0x04,CC_UPLOAD,0x02,0x00,0x00,0x00,0x00,0x00}。

电源控制器向主端发回的DTO格式为:{0x FF, CC_UPLOAD ,0x00, 0xXX ,0xXX, 0x00,0x00,0x00},输入电压值计算公式Vin_RealValue= (float)Byte2Toshort( DTO[3] + DTO[4]*256 ) /100.0f。

4.2.6 车载电源控制器输出电压采集

主端任务是采集电源控制器输入电压,应顺序进行以下2个CCP命令:① 设置内存传输地址(CC_SET_MTA)。主端通过CCP协议的设置内存传输地址命令(SET MTA)将输出电压值地址 0xC802 发送至电源控制器;②输出电压采集。主端通过 CCP 协议数据上载命令(UPLOAD)。實际发送:{0x04,CC_UPLOAD,0x022 ,0x00,0x00,0x00,0x00,0x00},电源控制器向主端发回的DTO格式为:{0xFF, CC_UPLOAD ,0x00, 0x XX ,0x XX, 0x 00 ,0x00,0x00},输出电压值计算公式Vout_RealValue=(float)Byte2Toshort( DTO[3] + DTO[4]*256 ) /100.0f。

5 实验测试

5.1 现场测试

控制器ECU通过汽车线束接插件、USBCAN接口卡与上位机进行通信。ECU上电之后,通过CAN总线发送报文,当上位机监测到输入端电压过高时,ECU可自动断开输入和输出通断状态,并在上位机端进行实时监测显示。当检测到温度超过一定值时,ECU可进行热关断,起到保护MOS管的作用。实时检测车载电源控制器外部供电电压、负载电流、板内MOS管温度及负载输出端电压,并可通过设置电源控制器电压参数、电流与温度的安全范围,将数据固化到XC2234L芯片中,以此监测和保护车载电源控制器。实验测试表明,该上位机与ECU数据通讯稳定可靠、传输速率快,且上位机可对MOS管内部温度、输入电压和输出电压的数据进行实时监控、参数标定及参数固化等功能,满足了车载电源控制器标定试验要求。

5.2 数据通信测试

为进一步对比上位机数据采集功能模块中实时数据准确性与精确度,利用周立功CANTest助手监测CAN总线通讯数据。首先设置设备索引号、通道号与波特率(500Kbps),与控制器程序设置保持一致,确定后启动CAN模块。帧格式选择数据帧,帧类型为扩展帧,帧ID为0x00000001,设置CRO为01 AA时,表示闭合命令,此时车载电源控制器ECU,返回01 FF,即表示响应闭合命令,CRO为02 AA时,表示断开命令,ECU此时返回02 FF,即表示响应断开命令,CRO为03 AA时,表示参数监测命令,ECU此时返回03+7个字节(输入电压(mV)+输出电压(mV)+温度(℃))的工作参数,低字节在前,高字节在后,由此可计算出输入电压(mV)、输出电压(mV)以及温度(℃)值,并与设计的上位机监测到的值进行比较。例如实验中的03 1e 2d f0 00 9b 00 00,表示输入电压(mV)= 1e 2d,化为十进制11550(mV),即输入电压(mV)为11.55V,以相同方式计算输出电压(mV),温度(℃)=00 9b,化为十进制155,依据公式(float)Byte2Toshort(DTO[3] +DTO[4]*256) /100.0f - 128.0f得温度(℃)值为155-128=27℃,与上位机监测到的数值一致。

6 结语

本文针对上位机标定系统开发提供了一种思路,对于部分电控单元标定可独立制定协议并采用合适的软件开发上位机,满足产品测试需求。本文利用VisualStudio开发基于CCP协议的上位机标定软件,经大量实验验证该软件可稳定运行,具有传输速率快、精确度高、安全可靠的优点,可节约车载电源控制器调试成本,极大提高开发效率。尽管本文开发的上位机简单方便,但仅可满足车载电源控制器类产品测试需求,针对复杂数据采集与参数实时监测,还需进一步研究和开发。

参考文献:

[1] 李雅博,张俊智,甘海云,等.  基于CCP协议的HEV用ECU标定系统设计[J]. 汽车工程,2004(4):375-378.

[2] 丁圣彦,罗峰,孙泽昌.  基于CCP协议利用CANape进行电控单元标定[J]. 电子技术应用,2005(12):5-7+10.

[3] 袁九宇. 基于CCP协议标准的CAN总线测试校准技术[J]. 上海标准化,2006(3):21-27.

[4] 林志华,王东亮,王银辉,等. 基于CCP协议的电控发动机监控标定系统开发[J]. 汽车科技,2011(2):54-58.

[5] TANG L,?XIE L,?WANG M W. Calibration system development of electronically controlled engine based on CCP[J].  Advanced Materials Research, 2012,383-390: 175-182.

[6] CHEN?P R, CEN?M, HE Y G, et al. Design and implement of calibration monitored control system based on CCP[J].  Advanced Materials Research,2012, 660-665:466-467.

[7] SUNG W P,CHEN R. Developing a communication between calibration tool and electronic control unit based on CCP Protocol[J]. Applied Mechanics and Materials,2014,496-500:1591-1594.

[8] 王健.  基于CCP協议的整车控制器标定研究[D]. 长春:吉林大学,2015.

[9] 徐群杰. 基于CCP协议直喷汽油机上下位机标定软件开发[D]. 长春:吉林大学,2015.

[10] 黄晓波.  基于ASAM标准的发动机通用远程标定系统的设计与实现[D]. 杭州:浙江大学,2016.

[11] 卢焱,张凤登.  基于CAN总线的无线温湿度测量仪[J]. 软件导刊,2018,17(2):86-88+92.

[12] CHANG X,LUO F. CAN calibration system design and transfer mechanism optimization[C]. ?2016 12th International Conference on Natural Computation, Fuzzy Systems and Knowledge Discovery (ICNC-FSKD),2016: 766-771.

[13] 张成伟,龚元明. 基于CCP协议的发动机电控单元匹配标定[J]. 电子设计工程,2014,22(6):79-81.

[14] 余彬彬,许飞云,龚松青. 基于CCP协议的电控柴油机数据采集系统设计[J]. 现代车用动力,2016(1):16-20+45.

[15] 杨攀.  基于CCP协议的ESP在线标定系统的研究[D]. 长春:吉林大学,2016.

[16] 毕栋,周海鹰,王思山.  基于CCP协议的PID参数自动标定系统设计[J]. 湖北汽车工业学院学报,2016,30(4):33-38.

[17] 倪春燕.  基于CCP协议的测量标定系统研究与实现[D]. 武汉:武汉理工大学,2017.

[18] 王振帅,陈明,李超超.  基于LabVIEW的PID水温控制系统[J].  软件导刊, 2018, 17(3): 139-141.

[19] 广州周立功单片机发展有限公司.  CAN-bus通用测试软件及接口函数库使用手册[Z].  广州:广州周立功单片机发展有限公司,2004.

(责任编辑:江 艳)

猜你喜欢

上位机CAN总线
基于嵌入式的汽车辅助制动系统研究