随着现代电子技术的不断发展和电子技术在系统中的不断应用,汽车的各种性能都得到了极大的改善。现代驾乘人员对汽车各个方面的要求越来越高,如视野性、方便性、舒适性和娱乐性等。
新的控制功能随汽车级别的提升不断增加,如中央门锁、灯光控制、玻璃升降、后视镜调节、天窗控制、座椅调节和点火延时控制等。传统的控制系统多采用继电器和独立模式控制,这使得车内线束过多且布线复杂,从而造成了严重的电磁干扰,使系统的可靠性下降。CAN/技术的应用,取代了传统的线束,使信息交换变得安全、迅捷、高效。
汽车中CAN (Controller Area Network)主要用于车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。各控制单元使用特定的总线技术来实现数字/模拟信号在中央控制单元和执行器件、传感器之间的传输。每一个状态或事件的传输都有专门的通道。为了将信息从中央控制单元传输到各子单元,每一个子单元都应该有通用、标准的开放式接口。控制执行器件和传感器模块对于传输速率要求不是很高,比如后视镜定位。所有这些低速率的模块都不需要使用CAN总线,而可选择一种相比CAN总线来说价格更低廉而有效的方式——LIN总线。
LIN(Local Interconnect Network)是一种用于汽车中分布式电子系统的新型低成本串行通信网络。它由汽车厂商开发,专门应用于低端系统,作为CAN的辅助网络或子网络。在不需要CAN总线的带宽和多功能的场合,比如智能传感器和制动装置之间的通信,使用LIN总线可以大大节省成本。
目前,高/低速CAN和J1850总线已经成为标准的车用网络总线。这些总线速度极高,具有高抗电磁干扰性和高传输可靠性等优越的性能,但价格也较高。大量的车身和安全性能方面的应用对车用网络总线的性能要求并不太高,只需要一种性价比更高的标准车用网络总线,而LIN总线正好可以满足这一需求。因此,目前LIN总线技术正被越来越广泛的应用到车身电子中。
本文将结合汽车系统,介绍LIN总线技术在其中的应用。本文首先介绍的是基于C167CS微控制器和智能功率器件的灯光控制模块的总体功能设计,然后对于LIN总线技术在汽车智能灯控系统中的具体实施应用,包括LIN总线模块的硬件接口电路设计和软件设计做了深入的研究。
1 灯控模块设计
本文基于英飞凌C167CS微控制器及智能功率器件设计了汽车灯光控制模块,如图1、2所示,微控制器采用英飞凌的C167CS-LM(外扩 Flash)。子模块1用于控制所有功率器件的开关动作,同时对系统状态进行定时监控,并提供合适的反馈信号。反馈信号反映了车灯的故障状态,子模块1通过LIN总线将故障诊断信息传输到子模块2。子模块2接收来自于子模块1的故障诊断信息,并通过液晶周期地显示。子模块2同时还处理来自于仪表盘的车灯控制信息,通过LIN总线传输到子模块1,然后子模块1根据仪表盘信息作用于相应的功率器件,实现对车灯的开关设置。
系统通过采用LIN总线技术,实现了两个控制模块之间车灯信息的实时传输。LIN总线硬件接口电路应用英飞凌公司的TLE6258总线LIN收发器,它作为介于协议控制器和物理总线之间的接口,特别适于在汽车和工业应用中的LIN系统中驱动总线。TLE6258还提供空闲工作模式以减少电流消耗,具有短路保护和过温保护等保护功能。
子模块1中大量采用了英飞凌智能功率器件,其中BTS724和BTS716是电源MOSFET高位开关(漏极与电源相连),带电荷泵、输入的参考地与 CMOS兼容以及诊断反馈,而BTS443和BTS134是单通道FET功率管,也称为低位开关(源极与电源相连),高位开关和低位开关都内嵌保护功能。负载可以是阻性负载、感性负载或容性负载,最适用于带高浪涌电流的负载,如灯等,从而取代了传统的继电器、熔断器和离散电路的传统汽车灯光控制方法,避免了采用太多的分立元件,减小了模块体积,同时提高了模块的EMC特性。该模块具有短路保护、过载保护、电流限制、过温关断、过压保护、电源反接保护、掉地与欠压保护和静电保护等保护功能。
2 LIN总线简介
LIN总线是一种串行通信网络,可以将开关、显示器、传感器和执行器等简单控制设备连接起来,主要用于汽车中的分布式电子控制系统。LIN采用单主机/多从机的总线拓扑结构(没有总线仲裁),仅使用一根12V信号总线。主节点包含主任务和从任务,从节点只包含从任务。它不需要专门的片上通讯模块,采用标准串行通信接口USART,速率可达20kbps,总线长度不大于40m。LIN总线作为一种辅助的总线网络,在不需要CAN总线的优越性能的场合,相比于 CAN总线具有更高的性价比。
它有如下几个方面的优点。
#p#副标题#e#● LIN是一种低端网络系统,可提供简单的网络解决方案,支持网络节点的互操作性,大大减少了系统安装、调试和接线的成本和时间。
● LIN的通信量小、配置灵活,采用单线连接及单主机/多从机的通信结构(无需总线仲裁),可保证低端设备及电子控制单元简便、快捷的实时通信。
● 通过主机节点可将LIN与上层网络(如CAN)相连接,实现LIN的子总线辅助通信功能,从而优化网络结构,提高网络效率和可靠性。
● LIN的协议是开放的,任何组织和个人无需支付费用即可获取。
LIN规范包括三个主要部分:LIN协议规范部分(说明LIN的物理层和数据链路层)、LIN配置语言部分(说明LIN配置文件的格式)和LIN API部分(说明网络与应用程序间的接口)。
LIN协议的通信机制和帧结构如图3所示,LIN网络中的每个节点都有一个从任务模块,主节点还包含一个主任务模块。帧头由主任务发出,包括同步间隙、同步场和信息标识符。所有节点中的从任务(包括主节点)对信息标识符进行滤波,并发回数据场和校验场。字节场采用SCI/UART串行数据格式。
3 技术在系统中的应用
汽车灯光控制模块的控制实际上是根据车灯的状态信息及驾驶员对车灯状态的要求来实现的。车灯的状态信息主要是故障信息的反馈,驾驶员对车灯状态的要求通过仪表盘的车灯按钮来传递。本汽车灯光控制模块为了便于整车安装,分成两个子模块,如图4所示。子模块1负责根据仪表盘车灯按钮的状态控制功率器件开关动作,同时监控车灯状态,提供反馈信号,并根据反馈信号判断车灯的故障状态。子模块2负责采集仪表盘车灯按钮信息,同时用LCD显示出目前车灯的故障状态信息。
下面对汽车智能灯控模块控制思想及LIN总线技术在其中的应用做出具体分析:在系统启动并进行初始化以后,子模块1开始启动一个定时器,实现周期性地对数字量诊断输出的车灯和模拟电流传感器诊断输出的车灯进行检测(检测不同智能开关向微控制器反馈的数字和模拟故障信号),对于出现故障的车灯信息,通过 LIN总线传输到子模块2。传输信息包括故障车灯的名称、故障车灯所在的诊断组(数字量诊断组或模拟量诊断组)和故障状态(断路或短路等)。子模块1同时亦接收来自于子模块2的仪表盘的车灯按钮扫描信息,该信息包含了驾驶员对于车灯状态的要求(开通或关断)。然后结合诊断结果及仪表盘的扫描结果,决定是否打开车灯或关闭车灯。子模块2通过LIN总线接收子模块1传输过来的车灯的故障诊断信息,周期性的通过LCD进行显示。同时亦周期性的扫描仪表盘的按钮状态,并通过LIN总线传输到子模块1。
本汽车灯光控制模块作为车身低端网络,传输数据量小,对传输快速性要求不高,20kBaud完全可以满足系统对传输速率的要求。相比于具有更多优良性能而价格也更高昂的CAN总线,LIN总线成本较低,容易在UART中实现,并具有较好的容故障能力和传输可靠性。在综合考虑总线的硬件与软件成本和总线的可靠性之后,选择LIN总线实现灯控模块内部两个子模块间的数据传输,而CAN总线则用于灯控模块与车身内部其他ECU之间的通信。
3.1 LIN总线硬件接口电路
LIN总线硬件接口电路如图5所示,该模块分为主节点和从节点两个单元。供电电源电路采用英飞凌TLE4278电压调节器实现,输入Vi为12V,输出 Vq为5V。收发器采用英飞凌TLE 6258系列LIN总线收发器。从安全角度考虑,主节点电路在电源引脚和总线间以及总线和参考地之间分别连接1kΩ电阻和1nF电容,以保证总线信号在显性电平和隐性电平间切换时有合适的时间延迟。
TLE 6258是单线收发器,适用于LIN协议,与LIN规范1.2兼容,发送速率可达20kbps,功率消耗低,且具有短路保护和过温保护等功能,特别适于作为汽车和工业应用,且可用于标准的ISO9141系统。为了减小电流损耗,TLE 6258提供了一种空闲模式。在空闲模式下,TLE 6258退出总线活动,既不接收也不发送数据,电流降到最低,从而达到减小电流损耗的目的。TLE 6258在正常工作模式和空闲模式之间的切换过程如图6所示,在正常工作模式下,通过对ENN置1进入空闲模式。在空闲模式下,通过在总线上发送唤醒帧,可把主机或从机从空闲模式唤醒,返回到正常工作模式。进入正常工作模式后,ENN变为0,释放RxD为传输数据状态。
3.2 LIN总线通讯软件设计
LIN软件基于几个状态机制和功能块,状态机制通过串行接口的中断调用,在程序中用nTRANSCEIVER_STATUS表示每个状态。主机任务发送同步间隔场(Synch Break Field)、同步场(Synch Field)和标识符场,如果从机在总线上检测到匹配的标识符,它会接收或发送数据到总线(这里假设数据字节是8个,主机为接收数据,从机为发送数据,也可定义为主机发送数据,从机接收数据)。以下(1)~(3)为主机任务,(4)~(13)为从机任务。
#p#副标题#e#(1)发送同步间隔场;
(2)接收同步间隔场和发送同步场;
(3)接收同步场和产生/发送ID域;
(4)接收ID域(报文过滤),拷贝数据到缓冲器(LIN transfer buffer) 并发送第一个数据字节;
(5)接收第一个数据字节和发送第二个数据字节;
(6)接收第二个数据字节和发送第三个数据字节;
(7)接收第三个数据字节和发送第四个数据字节;
(8)接收第四个数据字节和发送第五个数据字节;
(9)接收第五个数据字节和发送第六个数据字节;
(10)接收第六个数据字节和发送第七个数据字节;
(11)接收第七个数据字节和发送第八个数据字节;
(12)接收第八个数据字节和计算/发送校验和域;
(13)接收校验和域。
为了传输模块中所需要的信息,定义了7个字节变量a0、a1、a2、a3、a4、a5和a6,用于存储车灯故障状态信息;另外还定义了两个字节变量key_result0和key_result1,用于存储仪表盘的车灯按钮扫描信息。
车灯故障状态信息的定义分为数字量诊断组和模拟量诊断组:数字量诊断组包括驻车灯、示警灯和尾灯等20盏灯;模拟量诊断组包括前照灯、雾灯等6盏灯。每盏灯的故障状态有三种情况,用两个“位”来表示:正常状态(DIAG_OK),用“00”表示;断路状态(DIAG_OPEN_LOAD),用“01”表示;过载状态(DIAG_OVERLOAD),用“10”表示。例如,左驻车灯用a2的低两位表示,定义为static sbit parklightfrontleft_lowbit=a2^0、static sbit parklightfrontleft_highbit=a2^1;a2^1=0,a2^0=1,则表示驻车灯处于断路故障状态。如此推算,模拟量诊断组 6盏车灯,故障状态信息需要占用12位,我们用字节存储器a0和a1表示;数字量诊断组20盏车灯,故障状态信息需要占用40位,我们用字节存储器a2、 a3、a4、a5和a6表示。车灯故障状态信息共计7字节,采用字节数为8的报文帧格式传输,第8个字节用0补齐。
仪表盘车灯按钮共计16个开关量,每个开关量有两种状态,用一个“位”表示:按钮关断,用“1”表示;按钮打开,用“0”表示。我们用两个字节存储器key_result0和key_result1存储按钮信息,报文帧含有两个字节的数据量。
发送数据字节过程如图7所示。以发送车灯故障状态信息为例,这个状态机制用于把数据字节发送到总线上去,ID被定义为发送ID(SEND_ID)。
子状态及相应的收发器状态如下。
子状态1~8:节点用于发送数据字节 接收中断 LIN_vRxd_Interrupt;
子状态9:节点用于发送数据字节 接收中断 LIN_vRxd_Interrupt;
子状态10:校验和域已经被正确接收 接收中断 LIN_vRxd_Interrupt。
其中,子状态1接收中断中调用功能函数UCB_Txd,该函数获取用户数据存储的首地址。
接收数据字节过程如图8所示。以接收仪表盘车灯按钮信息为例,这个状态机制用于接收来自总线的数据,ID被定义为接收ID(REC_ID)。
子状态及相应的收发器状态如下。
子状态1:节点用于接收数据字节 接收中断 LIN_vRxd_Interrupt ;
子状态2:节点用于接收数据字节 接收中断 LIN_vRxd_Interrupt;
子状态3:节点用于接收数据字节 接收中断 LIN_vRxd_Interrupt;
子状态4:节点用于接收数据字节 接收中断 LIN_vRxd_Interrupt。
其中,子状态4接收中断中调用功能函数UCB_Rxd,该函数将接收到的数据存储入用户缓冲器。
结论
本文结合汽车智能灯控系统,对于技术在汽车智能灯控系统中的具体实施应用,包括LIN总线模块的硬件接口电路设计和软件设计做了深入研究。实验证实:LIN总线凭借其结构简单、配置灵活、性价比高等方面的独特优势,不仅能够满足汽车智能灯光控制系统对数据信息传输的要求,而且节省成本,完全达到了期望的性能、价格要求,具有广阔的应用前景。
2024-11-01
2024-10-31
2024-10-31
2024-11-04
2024-11-01
2024-10-30
评论
加载更多