基于CAN总线的汽车空调动态负荷计算功能设计与实现
2020-04-02段礼邦孟宪霖巫江虹
段礼邦,孟宪霖,王 海,巫江虹
(华南理工大学机械与汽车工程学院,广东 广州 510641)
随着汽车技术和智能控制技术的发展,汽车搭载的系统越来越多,如防抱死系统、空气过滤系统、智能空调系统、自动驾驶系统等,用来实现各种功能。汽车智能空调系统可根据车内的实时冷、热负荷来调整变频压缩机、变频风机和节流阀等执行部件的动作,进而实现车内温度的调节,保证乘员的舒适性,同时让变频压缩机、变频风机等执行部件工作在最佳状态,尽可能地降低汽车空调的能耗[1]。
现阶段基于CAN总线设计的汽车空调在调节车内温度时,主要根据车辆的稳态冷、热负荷进行调节。本文设计了一款基于CAN总线的汽车空调智能控制软件——汽车空调动态热负荷计算软件,该软件基于C语言开发,通过对汽车外形、车外热环境及车内热环境进行建模,采用反应系数法,同时考虑车体外围护结构对热负荷传递的削减及延迟作用,利用各种车载传感器获得的数据,计算汽车行驶过程中在不同经纬度、不同车速、不同太阳照度下的动态热负荷,为汽车空调的选型、设计提供数据支持。
1 汽车空调动态热负荷模块硬件设计及工作原理介绍
1.1 汽车空调动态热负荷计算模块的硬件系统设计
汽车空调动态热负荷计算模块由带有液晶显示屏的增强型STM32F103单片机开发板、普通DMSTM-L单片机开发板以及CAN物理总线构成。其中,STM32F103单片机开发板作为主板, DMSTM-L单片机开发板作为副板,如图1所示,图中左侧的是主板,右侧是副板,两块单片机开发板上的CAN模块采用的芯片均为TJA1050。
图1 汽车空调动态热负荷计算模块
在STM32F103主板内写入汽车空调动态热负荷的计算程序以及CAN总线通讯程序;在DMSTM-L副板内写入传感器数据获取/保存程序以及CAN总线通讯程序。通过CAN总线,可以将动态热负荷计算模块的主副板与各类车载传感器、执行部件连接在一起,实现彼此之间的数据通讯。
CAN总线连接线采用的是普通物理线束,每个CAN模块有两个信号通道CAN-H和CAN-L,分别负责发送高电平信号和低电平信号,两个通道的高低电平可以组成稳定的差分信号,用于表示二进制0或1。正是通过传递这种由CAN-H与CAN-L两个通道形成的差分信号,来实现主、副板与各个传感设备、执行部件之间的数据通讯。
汽车空调动态热负荷计算模块中用到的传感器通过物理线束与副板连接,用于采集、计算车内热负荷所需要的温度、湿度、太阳辐射强度等数据。每个传感器相当于副板下的一个节点,副板通过发送相关的CAN信号指令来获取各个传感器数据。表1列出了汽车空调动态热负荷计算过程中用到的传感器。
表1 动态热负荷计算过程中用到的传感器
汽车空调系统使用的车载变频压缩机、变频风机、电子膨胀阀等执行部件则通过物理线束与主板连接。其中车载变频压缩机通过主板上CAN模块发送的变频指令来调节压缩机转速;变频风机通过主板上的I/O引脚发送脉冲信号并采用PWM脉宽调制方法来实现变频运转;电子膨胀阀则是通过主板上I/O引脚发送的2-2相励磁脉冲信号来实现开度控制。
1.2 汽车空调动态热负荷计算模块工作原理介绍
众所周知,在行驶过程中汽车行驶工况、外界环境和乘客人数的变化都会引起车内热负荷的变化,汽车空调动态热负荷计算模块在计算得到车内热负荷的变化量后,自动控制执行部件执行相关动作,调节车内温度。
具体调节过程如下:首先,热负荷计算模块的副板每隔一段时间通过CAN总线发送指令至车速传感器、车内外温度传感器、太阳辐射强度传感器、车辆GPS系统等电子设备,各传感设备收到由副板发送过来的指令后,返回当前实测的传感器数据给副板,并将数据保存在副板中,由此整个热负荷计算模块便可获得车速、车外大气温度、车内环境温度、太阳辐射强度、汽车行驶工况等实测数据;然后,主板启动汽车空调动态热负荷计算程序,调用副板中存储的传感器数据,计算当前时刻汽车空调的热负荷;最后,根据热负荷计算结果及预先设定的空调系统控制策略对变频压缩机、变频风机、电子膨胀阀等执行部件进行实时调节,调节信号由主板通过CAN总线发送至执行部件。
变频压缩机、变频风机、电子膨胀阀等执行部件收到执行命令以后,会参照在主板中预先设定的专家系统,将压缩机转速、风机转速、膨胀阀开度调节至合理状态[2]。在调节过程中,优先满足车内乘员舱的舒适性;在保证车内热负荷处于理想状态的前提下,对压缩机转速、风机转速和膨胀阀开度进行微调,直至空调系统功耗为局部最低工况的功耗,从而降低整个系统的功耗。
2 汽车空调动态热负荷计算软件
2.1 汽车空调动态热负荷计算软件介绍与移植
汽车空调热负荷计算软件是笔者所在团队自主开发的线下计算软件,用C语言编写,软件通过VS平台在PC上运行。
计算汽车整体动态热负荷时,软件将热负荷分成5类,分别是围护结构导热负荷、太阳透过车窗辐射入车厢热负荷、人员湿热负荷、空调新风热负荷和机械热负荷,将上述5类热负荷累加在一起便可得到汽车整体的热负荷。对各部分热负荷的计算是基于动态热负荷计算理论,并根据动态热负荷计算公式以及相关经验参数得出热负荷结果的。
软件在计算热负荷时所涉及的输入参数包括车体几何参数、车体围护结构性参数、当前车内外温湿度、车内乘客数量、当前车速等[3]。但是在实际计算过程中,需要人为将上述参数输入到PC中,然后才可以得到相应参数下的各类热负荷,因此该软件本身并不具有实时性。在使用STM32单片机实时计算汽车动态热负荷之前,需要先将基于VS平台的软件移植到STM32单片机中。本文中STM32单片机的程序编译环境是基于Keil V5,采用C语言编写。
由于单片机内部存储空间不如PC,因此在软件移植过程中需要将热负荷计算公式中涉及的部分复杂参数进行化简,尽可能用一个常量因子去替代原始公式中多个常量系数的运算结果。除此之外,移植过程中最重要的问题是实时获得以下参数:车速、车外大气温度、车内环境温度、太阳辐射强度、汽车行驶工况等。本文采用表1中的传感器来获得上述参数的实时数据,并将这些数据用于计算当前的热负荷。获取这部分数据的程序是基于传感器的特性自主编写的。
下面本文以温度获取程序为例来说明车内外温度数据获取与传递的程序实现过程。本文使用的温度传感器是DS18B20,该温度传感器属于数值型温度传感器,每个温度传感器都有全球唯一的激光ROM码,相当于温度传感器的代号,当热负荷计算模块副板中的程序给DS18B20发送读ROM指令后,DS18B20会自动返回一个64位的ROM码给副板。在获得各个DS18B20传感器的ROM后,副板发送ROM匹配指令,各温度传感器收到匹配指令后会将自身的ROM码与接收到的ROM进行对比,若ROM码相同,则传送实测的温度数据至副板中,若ROM码不同,则不发送温度数据。副板间断发送不同的ROM匹配指令,便可以得到不同的温度传感器实测数据。主板中的热负荷程序在计算热负荷时,向副板发送指令,副板收到指令后,将得到的传感器数据通过CAN总线按照一定顺序发送给主板。主板中的热负荷计算程序得到相关传感器参数以后,便可实时计算各部分汽车动态热负荷。然后将计算所得的实时热负荷与目标热负荷进行对比,再按照预先设定的控制策略来调节各执行部件的动作,便可实现车内温度的实时调节。
STM32单片机软件中的其他传感器数据获取方法与温度传感器类似,这部分工作均是在Keil V5环境下通过C代码编译完成。
计算热负荷过程中车体几何参数和车体围护结构物性参数对于具体的汽车来说是固定不变的,因此在程序移植过程中可以将其设定为常量,并固化在STM32单片机中。经过软件移植后,CAN总线上两节点进行汽车空调动态热负荷计算时的输入输出参数如图2所示。
图2 汽车空调动态热负荷计算输入输出参数
2.2 主副板CAN总线通讯协议及通讯流程
STM32F103单片机主板与DMSTM-L副板上搭载的CAN模块都具有32位ID,其中主板的ID设置为0x0000、副板的ID设置为0x0001。因为本文中CAN总线系统中仅有主副板两个节点,故不设置报文过滤ID,两个节点上的CAN收发器可以监听在CAN总线上传输的所有信号。主副板之间的CAN通讯波特率统一设定为500 kbit/s,采用Normal模式工作。
实际应用中,CAN总线物理层上可以设置多个节点,节点之间没有主从之分;各个节点之间都可以相互通讯,且通讯方式较为灵活。但是,汽车空调动态热负荷计算软件中,因为热负荷计算程序存放在STM32F103单片机主板中,在程序实际运行中,也只是由主板向副板发送指令,副板只是被动地传送数据给主板,所以可以人为地将主板设定为主节点,将副板设为从节点。主、副板间的CAN总线通讯流程如图3所示。
第1步,开启CAN总线系统。STM32F103单片机开发板主板和DMSTM-L副板初始化;
第2步,主板通过CAN总线向副板发送指令;
第3步,副板接收到指令后将汽车空调动态热负荷计算所需的各类实时数据拆分成组,并通过CAN总线数据帧发送回主板;
第4步,主板接收副板发送来的数据后,将数据传递给汽车空调动态热负荷计算程序。
3 空调系统动态热负荷实时计算试验
CAN总线通讯试验分为两个部分,分别是传感器参数获取与传递试验和主板计算动态热负荷试验。为了方便查看试验结果,在主板上安装了液晶显示屏幕,并通过编程把总线系统运行时主板上的各类数据实时显示在液晶屏上。
图3 主、副板CAN总线通讯流程
3.1 传感器参数获取与传递试验
试验步骤如下:1)将程序以及数据烧写进主板和副板;2)接通主板与副板电源并按下两板的复位键;3)按下主板KEY0键开启主副板之间的CAN通讯,副板开始向主板传送传感器实测数据;4)观察主板液晶屏幕上的数据并与预期结果对比。
程序运行后液晶显示屏上显示的数据有7个,分别是计算动态热负荷的时刻、车外环境温度、车外环境湿度、车内环境温度、车内环境湿度、车速以及每名乘客所需空调新风量。将这7个数据与实测值做对比可以判断传感器工作是否正常。
3.2 动态热负荷计算试验
主板接收完传感器数据后,启动程序计算汽车空调动态热负荷,并将结果显示在液晶屏上,如图4所示。图4的下半部分一共显示5列计算结果,分别对应5个时刻的汽车空调动态热负荷。每一列计算结果均由6行组成,从上至下依次为车体围护结构导热负荷、乘客热湿负荷、太阳辐射导热负荷、机械负荷、新风负荷以及空调总负荷。由于上述5个时刻试验车的乘客数量、车速以及行车角度不发生改变,故人员负荷、机械负荷与太阳辐射负荷的计算值不变。车外大气温度与湿度的变化导致车体围护结构导热负荷和新风负荷发生变化。
图4 主板接收数据显示
3.3 节点运行实时性分析
根据汽车空调动态热负荷的计算流程,计算程序首先从主板内存中读入试验车体的结构参数和物性参数并根据这些参数计算车体围护结构的反应系数序列,之后程序进入汽车空调动态热负荷的计算过程。热负荷计算所用时长是从主板向副板发出指令的时刻开始计算的,到主板上显示屏显示动态热负荷计算结果的时刻为止。
实测结果显示,热负荷计算所用时长为42 s,运行时间较长,导致节点的实时性不强。经过测试和分析,发现原软件计算车体围护结构的反应系数序列花费了大量的时间。实际上,同种型号汽车一经产出其围护结构反应系数就基本不发生改变,故实际应用时不需要将围护结构的计算程序烧写进单片机中,可以在线下计算出结果后,将其设定为常量存放在数组中。在热负荷计算时,由热负荷计算程序直接调用数组中相关常量,由此可以大大缩短主板处理数据的时间。试验测得,优化计算程序后的汽车动态热负荷计算时长由42 s缩短至24 s。
考虑到本文热负荷计算时长包括了主板驱动液晶显示屏所消耗的时间,如果去除这部分时间,那么实际的热负荷计算时长将小于24 s,而且在实际运用中无需一次计算5组不同时刻的动态热负荷,因此热负荷计算程序在计算某单一时刻的动态热负荷所花费的时间将远少于24 s,完全满足汽车动态热负荷计算的实时性要求。
4 结束语
汽车动态热负荷的计算过程较为复杂,多数热负荷计算软件只是一种线下计算工具,不具有实时性。本文采用STM32单片机实现了汽车空调动态热负荷的实时计算,并通过试验验证了其满足实时性要求。通过计算汽车空调系统动态热负荷可以调节汽车空调运行工况,在保证乘员舱舒适性的前提下尽量降低功耗,对汽车节能减排具有一定的现实意义。
本文中关于汽车空调动态热负荷的实时控制策略未作详细阐述,后续工作中可将动态热负荷的计算与热负荷的控制结合起来,以寻找最佳的控制策略。