×
接口总线驱动 > 总线 > 详情

LIN及其在发动机风扇控制中的应用

发布时间:2020-05-24 发布时间:
|
  本地互联网(LIN)是一种低成本的串列通讯协议,主要用於汽车的分散式电子系统和基於网络的车辆概念中。本文主要介绍了LIN网络的发展及其技术特点,并以飞思卡尔的8位MCU为基础,介绍了实施LIN2.0在无刷直流电机(BLDC)发动机风扇控制中的应用。

一、车内网络方案比较

  新技术为车辆带来的众多改变之一就是电子零部件的不断增加,同时,带有多种传感器、执行器、电子控制器的高级控制系统也对车用通讯技术提出了巨大需求。显而易见,这些需求只能通过使用网络解决方案来满足。

  目前,能够满足成本、安全性和通讯速度需求的主要通讯标准有三种∶FlexRay、CAN(控制器局域网络)、LIN(本地互联网络)。这三种通讯标准在通讯速度和每个节点的成本方面的比较见图1。


图1∶主要汽车通讯协议

  1、FlexRay

  高速度(每通道高达10Mbps)、双通道、时间触发、强大的容错协议,设计用作骨干网。一般的目标应用是所谓的X-by-wire(线控)概念。其目的是通过电子信号传输来替代传统的制动踏板和制动器或方向盘和车轮之间的机械传动。

  2、CAN

  中等速度(最高1Mbps)、单通道、双线容错协议,目前不仅在汽车业,还在许多工业应用中广泛使用。CAN协议的目标应用可以包括电机控制、悬架控制和车内资讯娱乐功能。

  3、LIN

  低速(最高20kbps)、单线低成本协议,可用於终端节点应用。LIN的概念注定这种协议用於传感器/执行器中,一般用於低速通讯,即速度不是关键因素的应用中。

  图2是面向总线的汽车设计理念的一个例子。这种设计显示三种通讯协议的共存。


图2∶总线车概念

二、LIN

  如上所述,LIN是一种低成本的单线串列通讯介面。它基於通用的UART/SCI介面,可以20kbps的串列传输速率保证数据的可靠传输。LIN总线一般应用於集成装置,比如门、方向盘、座椅、温度控制和发动机冷却风扇等。在这些装置中,LIN网络对成本敏感的特性使其采用了一系列先进的机械电子装置,如智能传感器/执行器。此外,通过用数字编码代替模拟编码,机械电子装置可以轻松连接到车辆网络系统,并易於进行各种诊断和维修,包括系统的重新编程和更新。

  LIN协议的另一个主要特徵是从节点中可以自动完成同步而无需晶振或陶瓷振荡器。这一特性和基於SCI的通讯的简便性是任何LIN实施提供经济高效性的主要因素。

  1、操作基础

  LIN的操作概念基於一主多从的拓扑结构。在这种情况下,LIN集群(LIN 2.0版中LIN网络的同义词)包含一个主节点和几个(多达15个)从节点。


图3∶ 操作概念

  如图3所示,LIN节点实际上可以分成两个独立的部分∶主任务(Master task),负责决定何时传输哪个帧;从任务(Slave task),提供将通过LIN总线传输的数据,并允许通过节点从低功耗模式中唤醒LIN集群。

  典型的主节点包含主任务和从任务,而从节点只包含从任务。[page]

  2、帧的组成

  通过LIN总线传输的数据单位称为帧。每帧包含两个主要部分∶主任务提供的报头,从任务处理的响应。


图4∶LIN帧的组成

  报头包含以下几个部分∶

  (1)中断(Break)——至少13位长的LIN总线的主导状态,由主任务产生,包含每个LIN帧。

  (2)同步栏位(Synchronisation field)——数据值在0x55的位栏位,使从任务能与主时钟同步。

  (3)受保护的识别符(PID)——独特地定义消息内容但不定义接收方的位址。PID以一个6位长的识别符开始,後面跟有两个奇偶校验位。

  LIN帧的响应部分是节点的从任务提供的,可分为以下两部分∶

  (4)数据栏位——传输1到8个字节的数据。

  (5)检验和栏位——包含反向转化的8个字节总和,包括後续(Carry Over)数据字节。LIN帧的结构见图5。


图5∶LIN帧结构

  在LIN帧的响应部分传输的数据内容有三种类型∶

  (1)信号——响应的数据栏位中包含的梯状值或字节阵列。在这种情况下,帧的ID必须在0x00和0x3B之间。注意,数据段中信号的位置对带有相同PID的帧来说是固定的。

  (2)诊断资讯——用来传输诊断或配置数据。这些信息总是8位元长,并带有预留的ID号。0x3C ID用於主请求,而0x3D用於从响应。

  (3)保留资讯——可用於用户定义的扩展名 (这种情况下ID等於0x3E)或预留用於未来的协议改进(ID设为0x3F)。

  主任务对报头的传输基於集群的时间表。时间表规定了传送帧的顺序,以及当前和下一个帧之间的间隔。由於时间表的数量从理论上讲没有限制,所以可以定义几个不同的时间表来满足集群运行的不同需求。时间表概念是一个机制,有助於确保网络不会过载,并确保有保证的数据传输。

  3、网络管理

  LIN中的网络管理只指集群唤醒和休眠(go-to-sleep)流程。所有其他网络管理功能,如配置检测或自我保护(limp hom)管理都由应用完成。

  若想使所有从节点均进入低功耗模式,主节点会发出第一个数据字节为零的主请求(MasterRequest)帧。此帧就是休眠命令。从节点软件负责处理正确进入低功耗模式所需的所有步骤。此外,如果LIN总线处於非活动状态超过25000位时间(在使用LIN 2.0规范的情况下为超过4秒),从节点也应该自动进入低功耗模式。

  为了唤醒休眠的LIN集群,任何节点都可以发出唤醒命令。唤醒请求是通过迫使总线进入250ms到5ms的主导状态发出的。每个从节点都可以检测到唤醒请求,并准备好接收100ms之内的总线命令。

  LIN节点功率管理状态图见图6。


图6∶LIN节点功率管理

  4、LIN评估

  1996年,沃尔沃和Volcano通讯(VCT)为Volvo S80系列开发了一种基於UART/SCI的协议,即Volcano Lite。此协议是车辆通讯系统不可缺少的组成部分。1997年,摩托罗拉公司与沃尔沃和沃尔沃通讯合作,帮助它们改进Volcano Lite协议以满足各种不同需求(比如无需晶振的从设备自动同步),并制定可以支援各种半导体产品的开放标准。1998年12月,Audi、BMW、Daimler Chrysler和VW也加入进来,由此形成了LIN协会(http://www.lin-subbus.org)。

  LIN 1.0版於1999年7月发布,并受到一些汽车公司使用的VLIT总线的严重影响。LIN标准在2000年经过两次更新,从而产生LIN1.2版本。

  2002年11月,LIN协会颁布LIN1.3版标准,主要对物理层进行修改,提高了节点之间的相容性。

  当前的标准版本即LIN2.0,是2003年9月发布的。由於LIN2.0版是现行标准,所以本文主要介绍此版本。

  由於Audi、BMW、Daimler Chrysler、VW、Porsche和VCT汽车公司在实施过程中发现了一些问题,所以,LIN的新版本目前正在制定当中。2005年5月,VCT被Mentor Graphics (http://www.mentor.com)收购,成为一个大公司的组成部分,因而能持续支持和开发VCT的完整产品线。

  5、LIN 2.0规范包

  LIN规范2.0版反映了LIN协会指出的发展趋势。它还包括了SAE J2602 Task Force提供的资讯,尤其是在现有从节点的使用方面。LIN2.0规范包包含以下部分∶

  (1)LIN物理层规范∶描述了物理层,包括比特率、时钟容限(clock tolrerance)等。

  (2)LIN协议规范∶描述了LIN的数据链路层。

  (3)LIN API规范∶描述了网络和应用程式之间的介面,包括配置和诊断层。

  (4)LIN配置语言规范∶描述了LIN说明档的句法和语义,此说明档用於配置完整的网络,并作为开发和分析工具的输入资讯。

  (5)LIN诊断和配置规范∶描述了可部署在数据链层上,为诊断消息和节点配置提供资讯的服务。

  (6)LIN节点功能语言规范∶定义了用来描述现有从节点的格式。这些从节点可与即插即用工具一同使用,以自动创建LIN描述档。[page]

  图7中的LIN开发工作流程显示了LIN 2.0规范包的各个部分如何组成一个整体。


图7∶VCT LIN开发工作流程

  LIN 2.0和LIN1.3规范包可以在http://www.lin-subbus.org上注册後免费订购。

  通过比较LIN1.3和LIN 2.0规范包,我们可以看到两个最重要的改变就是对配置和诊断的标准化支援,以及规定的节点能力档。它们的目标都是简化现有节点的使用。其他重要的改变包括∶

  (1)LIN API(LIN规范包的一部分)是所有用C语言编程的节点所必需的。

  (2)增加了改进型校验和(LIN2.0的校验和还包括PID字节)。

  (3)增加了节点配置命令。

  (4)标准化和必备的LIN产品识别符(供应商ID/功能ID/版本ID)是配置的一部分。

  (5)增加了诊断和诊断API。

  (6)定义了新的帧和信号类型,从而可以使用零星的帧和字节阵列信号。

  (7)增加了必需的响应错误(Response_error)从状态监控。

  (8)将休眠(goto_sleep)和唤醒(wake_up)信号分离。

  (9)规范中增加了自动比特率检测。

  LIN2.0是LIN 1.3的扩展集,因此LIN2.0主节点可以处理包含LIN 1.3和/或LIN 2.0从节点的集群。自然,一些LIN2.0的特殊特性(包括增强的校验和、重新配置和诊断等)不能从LIN1.3从节点中请求。但是,LIN2.0从节点不能与LIN1.3主节点一同运行(因为LIN2.0从节点需要配置)。

  6、SAE J2602 LIN工作组

  SAE J2602的目标是通过满足LIN2.0的模糊、矛盾或可选的要求来提高网络中不同LIN设备之间的可互操作性和可交互能力。J2602的规定与LIN2.0规范的主要不同之处包括∶

  (1)串列传输速率固定在10.417Kbps。

  (2)由於斜率针对固定的串列传输速率进行了优化,可以实现更好的EMC。

  (3)不推荐从节点之间的通讯。

  (4)不允许基於事件的消息。

  (5)除了休眠和有目标的复位(Sleep and Targeted Reset)外,所有配置和诊断服务都是可选的。

  SAEJ2602还提出了LIN2.0中没有的其他要求(如容错操作、网络拓扑和内置的标准化报告等)。一般来说,SAEJ2606的设计考虑了实施定制从节点的长期目标,而LIN2.0假设使用基於MCU的实施。因此,J2602期望通过定制从节点来进一步节约成本。

  7、LIN驱动器实施

  根据目标MCU提供的功能,可以采用几种LIN驱动器实施策略。

  对於没有UART模块的MCU,需要位元响应(Bit-Bang)解决方案,使用一个定时器和两个通用IO引脚将UART功能构建到软件中。主要优势是没有UART的MCU一般是最便宜的处理器。另一方面,这样的CPU使用非常精密,需要为每个字节都发送中断请求。最後,这种解决方案与基於UART的解决方案相比一般需要更多内存,比如,在飞思卡尔68HC908QY器件中就可以找到这类LIN驱动器。

  带有标准的UART(SCI)模块的MCU一般意味著驱动器的软件安装更加简单,但另一方面,UART模块会增加最终解决方案的MCU成本。与需要位元响应(Bit-Bang)解决方案相比,这种解决方案的优势在於CPU的负荷更低,因为基於LIN通讯的中断只对接收到的每个字节进行。

  LIN优化UART模块的MCU是减少驱动器软件部分而增加功能/特性的下一个步骤。飞思卡尔68HC908EY或68HC908GR设备中采用的增强型SCI模块提供串列传输速率调节和仲裁模块选项,无需额外的定时器就能测量输入信号(对LIN同步消息有用)。另一方面,这种方法可能会增加最终设计的成本。

  最後一点,也是很重要的一点,理想的解决方案应使用LIN专用的UART模块。飞思卡尔MCU(如68HC908QL设备)的SLIC(LIN从介面控制器)模块就是一个范例。与标准的UART解决方案相比,这种解决方案的成本和复杂性更高,并且要求实施SLIC优化的驱动器。另一方面,SLIC提供如下功能∶自动同步、自动串列传输速率调整、与上述任何解决方案相比中断数大大减少、自动校验和的生成与验证。因此,它允许将MCU专用於用户应用。

  此外,还有一种非常有趣的解决方案是将所有与LIN有关的计算转移到支持LIN的协处理器模块上。飞思卡尔的MC9S12X系列采用了这种方案。这些产品配备有完全独立於核心的X-gate RISC协处理器,可将整个LIN通讯负载从CPU核心中释放,从而保证CPU在所有时间内都可用於用户应用。[page]

三、LIN2.0应用实例

  如前所述,LIN通讯协议设计用於汽车传感器和执行器应用。但是,其使用并不限於这些领域。此处介绍的支持LIN的无刷直流电机(BLDC)发动机风扇控制应用就是LIN应用於其他领域的一个实例。

  无刷直流电机(BLDC)在汽车应用中越来越常见,主要用在空调控制和发动机冷却风扇中。与有刷直流电机相比,无刷直流电机(BLDC)使用电子交换,而不是机械交换器,因此能提高整个系统的可靠性和效率。并且,由於无刷直流电机(BLDC)转子可产生转子磁通量,能够实现更高的机电转换效率。

  支援LIN的无刷直流电机(BLDC)发动机风扇控制应用在闭环、支援PWM的无刷直流电机(BLDC)应用中采用LIN2.0通讯协议。无刷直流电机(BLDC)由霍尔传感器驱动,用於转子位置检测,并且,应用中还嵌入了电流和过压检测功能。此应用的主要部分见图8。


图8∶支援LIN的无刷直流电机(BLDC)发动机风扇控制

  如图所示,支持LIN的无刷直流电机(BLDC)发动机风扇控制硬体设计非常简单,包含四个部分∶

  (1)发动机风扇控制LIN主节点——为LIN集群提供所需的风扇速度资讯,以及运行/停止命令和错误跟踪。

  (2)MC68HC908QB8 LIN开发包——是一个LIN从节点,处理的无刷直流电机(BLDC)控制功能,并为集群提供实际风扇转速资讯和风扇运行/错误状态信息。评估板的LIN开发包系列(EVB)是开发者轻松开发他们各自基於LIN的项目而无需关注硬体开发的一种方法。目前,这些评估板可用於飞思卡尔半导体的各种8/16位MCU∶从非常小型、便宜的MC68HC908QY4 MCU到功能强大的MC68HC908S12C32。在本应用中,我们选择了MC68HC908QB8,它是低成本、小型的8位元MCU系列的一员。

  (3)MC33395 EVB——用於功率设计。飞思卡尔半导体的评估板概念不只限於这种基於MCU的板,还包括基於飞思卡尔SMARTMOS系列的评估板。MC33395 EVB非常适合各种12V的电机控制应用,包括零交叉和背EMF(zero crossing and back EMF)无刷直流电机(BLDC)转子位置检测方法,使用户可以轻松使用先进的电机控制程式。

  (4)无刷直流电机(BLDC)风扇——这种应用使用EBM-Papst W3G300-EQ22-90轴向风扇。

  以下是发动机风扇系统的功能。主节点发送有关要求的无刷直流电机(BLDC)负载循环、开/关命令和复位信号(用来清除从节点上的电流过高和过压信号)的信息。所需的速度可以直接在主板上设置,也可以通过高级CAN总线发送给主节点。从节点为主节点提供实际无刷直流电机(BLDC)速度、电流过大和电压过高标。

  将LIN2.0链接增加到“独立”发动机风扇中的第一步是创建集群消息策略。它完整描述了集群中不同设备之间的通讯。它包括所有帧的一个列表,带有定义的帧ID、帧发行者和用户以及数据栏位内容(包括信号结构)。为集群创建一份日程表也非常重要。这些都应该包含在LIN描述档(*.ldf)中,它的结构由LIN规范包(LIN配置语言说明)规定。

  对於项目的软件部分,Volcano LIN目标包(LTP)用作LIN 2.0驱动器。这种工具可以从集群LDF档中生成LIN特定的C代码文件。然後,这些档被直接添加到用户编译器/链接器中,以在项目中增加LIN链接程式。因此,应用开发人员只需编写用户的特定程式而无需花时间来开发与LIN通讯有关的程式。图9是飞思卡尔提供的支援LIN的无刷直流电机(BLDC)发动机风扇控制应用的真实图片。


图9∶支援LIN的BLDC发动机风扇控制的实现
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何判断一帧数据收完