纯电动客车 CAN 通信上位机设计讨论 摘要:介绍开发 CAN 通信上位机时对报文自动解析的四种逻辑设计方法,并根据上位机前面板显示需求特点的不同,采纳中断法和多任务法进行 CAN 上位机的编程及进行应用举例。 关键词:纯电动客车;上位机;CAN 通信 CAN 总线是汽车领域目前应用最广泛的现场总线之一[1],也是纯电动客车各电气件最主要的通信方式。其通信协议是连接 CAN 报文与各电气件物理参数的纽带,一般由各车厂根据实际需求制定。人工直接解析 CAN 报文是一项费事又耗力的工作,而通过上位机软件解析则极大程度上解决了此问题,提高了工作效率,缩短了工程时间。基于此,本文采纳一种根据 CAN 协议自动解析报文并保存数据的方法,为纯电动客车开发上位机软件[2-3]。 1 上位机解析 CAN 报文的设计方法 1.1 软件程序的设计流程本上位机设计是基于 QtCreator4.3.1的接口库函数 ControlCAN.lib 和 NILabVIEW2024 的接口库函数ControlCAN.dll 二次开发而成[4-5]。接口库函数的基本处理流程如图 1 所示,该处理流程的底层函数结构如图 2 所示。软件设计过程中的基本处理流程应依次为打开设备→检测有无设备打开信息异常→清空缓冲区→复位 CAN→读取 CAN 缓冲区帧数→读取 CAN 内容→关闭设备[6]。在软件系统内,根据接口库函数二次开发的设计要求,结合纯电动客车 CAN 总线数据量大的特点,为了尽可能不使上位机丢帧,程序内部应将读取 CAN 报文程序[7]设为中断程序,即当收到 CAN 报文后,程序立即响应中断,读取 CAN 报文并呈递给程序设定参数,然后将报文解析出来,这样才能最大几率保证接收的 CAN 报文不丢失[8]。1.2 对报文自动解析的逻辑设计方法报文的自动解析过程是程序设计最重要的一环。根据 CAN 报文 SAEJ1939的规定[9],在纯电动客车上,从 CAN 总线接收到的报文数据帧为8 个字节,分别记为 BYTE1……BYTE7、BYTE8,该数据均为十六进制数。根据 CAN 通信协议[10],找到相应 ID 的报文,然后由协议中的比例和偏置解析出相应的物理数据。本上位机的数据解析设计使用以下几种方式。1.2.1 对报文的直接处理协议规定,需要解析的字节 BYTE。若比例为 x、偏置为 y,则解析出的结果 z 为(1)假设上位机收到 BMS 的报文[11]数据为{01,02,03,04,05,06,07,08},协议约定第 2 个字节为驾驶员制动踏板值,比例为 0.4%,偏置为 0,则当前驾驶员制...