跟着新颖汽气车上集成的ECU越来越众,整车搜集戒来越庞杂。诊断通讯动作车载搜集中的一个苛重功用,开采周期和难度也连接添补。为了降低软件的复用率和可移植性
跟着新颖汽气车上集成的ECU越来越众,整车搜集戒来越庞杂。诊断通讯动作车载搜集中的一个苛重功用,开采周期和难度也连接添补。为了降低软件的复用率和可移植性,缩短开采周期,环球汽车创制商、零部件供应商、半导体供应商及器械供应商联合拟定了 AUTOSAR轨范。AUTOSAR轨范的主题是剥离 ECU 软件开采对硬件的依赖,为此它将软件分为运用层软件组件(SW Component)、底子软件包(Basic Software)和运转时境遇(RTE),AUTOSAR轨范如图1所示。
本文正在深化酌量 AUTOSAR轨范的安排思思和软件体例后,参照AUTOSAR 轨范街推举的诊断通讯架构,开采了一个基于CAN 总线的、具有通用性和可移植性的诊断通讯公约栈。
为了杀青搜集通讯编制开采的轨范化,国际轨范构制(ISO)拟定了 OSI模子。这个模子把搜集通讯分为7个使命层,诀别是物理层、数据链途层、搜集层、传输层、会话层、示意层和运用层。
ISO正在自后拟定的诊断通讯公约中,如 ISO15765、ISO14229、ISO15031,也根据 OS模子对诊断通讯举行了分层,并工具体的诊断通讯公约对每层做了详尽的划定。跟着诊断通讯公约的连接完备,依然酿成一套完备的诊断通讯架构(睹表 1)。
凭据运用周围的分别,诊断通讯分为2种∶ 一种是与排放无闭的诊断,叫巩固型诊断,即UDS诊断;一种是与排放相干的诊断,叫OBD诊断。
古代的诊断通讯公约栈的开采,根基都是根据诊断公约中OST模子来创设全体架构的。但诊断通讯的OST模子并没有正在全体功用的开采上供给参考,这就导致分别的汽车创制商根据各自的软件开采轨范开采出各自专用的诊断通讯软件,个中有的诊断通讯软件正在诊断运用层直接操作硬件,这些都形成汽车诊断通讯软件缺乏通用性和可移植性。
公约栈的硬件平台凭据选用的芯片、毗连的体例及全体的结构而异,但根蒂道理都是相同的,CAN局限器是硬件的主题,通过分别的CAN收发器接到分别的CAN总线上。
底子软件的微局限器笼统层首要治理硬件的底层驱动题目,对应正在诊断通讯公约栈中是CAN驱动层。当将诊断通讯公约栈移植到其他硬件平台上,只需对 CAN 驱动做相应的更改,上层软件则能够所有复用。
ECU笼统层,也叫硬件笼统层,首要治理上层软件和硬件驱动之间的接口题目,对应正在诊断通讯公约栈中是CAN接口层。CAN接口层笼统了CAN局限器的地点和ECU的硬件结构,供给了一种平等拜候总线通道的机制而无需酌量这些局限器的物理地点。
供职层用于给运用序次供给可用的供职,正在诊断通讯公约栈里通过3个方针杀青∶CAN传输层、Pdu途由层和 DCM 层。CAN 传输层首要治理众帧传输的题目,结束数据的打包和重组。Pdu 途由层是酌量到车载搜集中有众种通讯体例共存,杀青分别通讯数据的中转,能够对上层屏障通讯体例的细节。
DCM是供职层,也是一共诊断通讯公约栈的主题。DCM 处分诊断仪发送来的供职哀告音讯,然后推行相应的操作,结尾返回反响音讯给诊断仪,一共进程涉及诊断会话的拘束、诊断供职的调整及诊断供职的推行。
本文采用 freescale 高职能芯片 MC9S12XEQ512 的开采板动作诊断通讯公约栈开采和测试的硬件平台,该芯片内部集成5个援助 CAN 20B 轨范的 CAN局限器,与之配套的 CAN 收发器采用 82C250 芯片。
本文开采的诊断通讯公约栈,采取杀青UDS诊断供职, OBD供职会正在自此举行扩展。一共公约栈的开采采用由下往上的体例,DCM以下的模块动作根基CAN通讯软件一同开采,DCM动作诊断运用层孤独开采。起初拟定代码文献机闭,然后诀别举行根基CAN通讯软件的数据传输、通讯形式局限和功夫拘束功用的开采,结尾举行 DCM层诊断供职处分功用的开采。
AUTOSAR 的模块化思思很大水平上再现正在代码文献机闭的类型上。正在AUTOSAR 轨范里,诊断通讯是动作一个完备的汽车电控编制的子编制举行开采的。诊断通讯公约栈中的子模块不但会移用各自的头文献,也会移用 ECU 级另外头文献,以是正在包管代码的编制性的同时,也导致代码机闭较为宏壮庞杂。本文旨正在孤独杀青诊断通讯的功用,所以对代码机闭做了必然的简化,一共诊断通讯公约栈的代码文献机闭如图2所示。
个中,Can_GeneralTypesh界说了通用 CAN公约栈底层模块的数据类型。ComStack_Typesh界说了与正在线通讯模块 Com 相干的数据类型,首要是数据公约单位。Std_Typesh界说了 Autosar轨范专有的数据类型,如版本音信和少许形态形式的宏界说。每个子模块都有若干c 文献,首要界说仅限于本模块利用的数据类型、常量和函数。每个用子模块名称定名的头文献xxxh界说本模块中被外部援用的数据类型、变量和供职。xxx_Cfgh 界说了模块正在预编译阶段用于装备的数据。xxx_Cbkh 和用 2 个模块名称定名的xxx1_xxx2h 声理解某模块被低层模块移用的回调函数。xxx_Typesh 界说模块专用数据类型。
数据传输功用是根基通讯软件的主题功用。本文为一共模块开采了数据传输接口,用于数据的收发、处分和体式转换。
一共诊断通讯公约栈的数据传输进程如下; 当总线上罕睹据发送过来时,起初过程 CAN 局限器硬件过滤,即举行标识只符的立室过滤。若是通过过滤,CAN驱动将通过停止或轮询间的体例触发 read () 操作取出 CAN 局限器硬件回收缓冲区的数据,然后移用 Canlf RxIndication ()将数据传达至 CAN接口层,CAN 接口通过查问标识符列表对数据举行软件过滤后,再移用上层的 xxx _Rxlndication ()进一步处分和传达数据,结尾通过 Dcm __RxIndication ()将数据传达到 DCM层。当发送数据时,高层模块通过按序移用低层模块的 xxx _Transmit()将数据往底层传达,结尾通过 Can_Write()将数据写入 CAN局限器的发送缓冲区,数据再凭据传送缓冲优先级按序发送到总线上,低层模块告捷发送数据后通过返回 xxx Tx/confirm/iation()见告上层模块。
正在 AUTOSAR 轨范中,CAN通讯公约栈的硬件能够蕴涵众个 CAN局限器,但联合由统一个CAN驱动拘束。CAN驱动是公约栈内里独一能够直接拜候和操作硬件的模块,它通过分拨给每个CAN 局限器的 ID 获取对它们的拜候。本文只采用了一个 CAN局限器,用于杀青ECU 和诊断编制正在简单搜集中的通讯。
CAN驱动和上层模块的音信交互都要过程 CAN 接口层来传达。CAN 接口 层和驱动层之间的数据传输服从 ISO11898-1 公约,对应于 OSI模子中的数据链途层,首要治理数据帧体式,杀青轨范帧和扩展帧的收发,数据单位体式为 L-PDU。
单帧传输时,CAN接口层直接和 PduR 层举行音信交互。AUTOSAR 为 PduR 与其他模块之间的数据换取界说了一个交互层,PduR 通过查问 I-PDU 标识符列表对数据举行途由采取,数据体式为I-PDU。
众帧传输时,CAN接口层和 PduR 层之间需求 CAN传输层来举行数据的打包和拆包。CAN传输层和 PduR 层之间仍服从交互层。CAN 接口层和 CAN传输层之间的数据传输服从 ISO15765-2,对应于OSI模子中的搜集层,首要结束寻址和众帧传输的局限,数据体式为 N-PDU。
当使命要求爆发改动时,如 ECU 上电和断电,各模块的形态或形式会自愿举行转换。当通讯需求改动时,需求主动切换形式,为此本文开采了—系列接口函数,首要用于切换通讯波特率、CAN局限器形态、PDU通道形式。
UDS的少许诊断供职如 link control条件能够切换通讯波特率,以满意与分别诊断仪的通讯。正在 CAN 驱动层开采了 Can_SetBaudrate()设立波特率,入口参数是主意波特率的ID,波特率ID的选用参照 ISO14229-1。
CAN局限器有4种形态∶ UNINIT,此时 CAN局限器未初化;STOPPED,此时 CAN局限器初始化,但不参预总线; STARTED,此时CAN局限器能够寻常使命;SLEEP,此时 CAN局限器歇眠以低落能耗,但能够被事情叫醒。CAN局限器形态正在分别的通讯要求下举行切换,联合由 CAN 接口层拘束,经由驱动层杀青。
为了能够凭据需求改动通讯信道的收发形式,本文正在CAN接口层开采了功用函数 Canlf_SetPduMode ()用于杀青L-PDU 信道4个形态的切换∶ CANIF OFFLINE,此时不举行通讯; CANIF PASSIVE,此时只回收不发送数据; CANIF_ACTIVE,此时只发送不回收数据;CANIF_ON- LINE,此时举行寻常的数据收发。形态机如图4所示。
正在 CAN接口层与 CAN传输层举行众帧传输时,为了防备因总线负载过高或等候功夫过长导致诊断通讯遗失干系,本文服从 ISO156765-2 中对搜集层准时的划定,开采了 CAN传输层函数 CanTp_MainFunciton()对通讯的功夫参数举行局限,首要参数有 N As、N_Bs、NAr、N_Br、 N_Cr和 STM-min。
个中,STM-min决断接连帧的发送间隔,由回收方通过流控帧发给发送方,其他的功夫参数都有各自的准时器,若是爆发超时,准时器溢出,陈诉缺点。假设与 ECU 举行诊断通讯的诊断仪的内部公约栈也是基于 AUTOSAR 架构举行开采的。
DCM 模块对一个诊断供职的处分,起初需求实时对供职哀告音讯举行回收,其次需求对供职哀告音讯举行验证,结尾推行有用诊断供职哀告的操作。本文对应以上条件,为 DCM模块诀别开采了3个子模块∶ DSL、DSD、DSP。
DSL 直接与 PduR 举行数据换取,结束供职哀告音讯的回收和供职反响音讯的发送。当回收到 DiagnosticSession-Control(10 hex) 供职时,DSL 凭据哀告切换诊断会话形式,并返回诊断会话的准时参数,如发送供职哀告音讯的一方收到供职反响音讯的功夫间隔 P2CAN Client,用于设定现时会话形式下运用层的超机缘制。当回收到 SecurityAc- cess (27 hex) 供职时,DSL返回种子,然后再收到对方发来的密钥并验证,决断是否绽放和平权限。诊断仪为了连结毗连,会周期性生地发来TesterPresent 供职,DSL 回收后将复位 session timeout timer 以支撑现时会话形式,以后不再将该供职发给 DSD 做进一步处分。
DSD 模块起初担任验证供职哀告音讯的有用性。网罗查验供职标识符是否正在援助的供职列内外,查验现时会话形式、和平权限和ECU形态是否援助该供职,查验供职子功用和参数体式是否准确。若是发觉音讯无效,则返回对应的否认反响码。若是哀告音讯通过有用性验证,DSD将通过诊断供职列表索引到 DSP 模块对该诊断哀告的推行函数。
DSP 模块担任推行供职哀告的操作,此时需求 DSP 模块和诊断通讯软件除外的模块举行交互。当供职哀告音讯哀告的是读取或拔除挫折音信,DSP 需求拜候 DEM模块; 当哀告数据上传下载或读取数据流时,DSP需求拜候memory stack。当哀告输入输出局限时,DSP需求通过 DCM_Send/ ReceiveSignal ()接入RTE来获取对 SW组件的拜候。
本文借助于自立搭修的挫折诊断测试平台对开采的诊断通讯公约栈举行功用和公约的验证。诊断设置采用自立开采的PC式挫折诊断编制,该编制运转正在部分电脑上,然后通过自立开采的 VCl(车辆通讯接口)接入车载诊断搜集中,从而和挂载正在统一搜集中的ECU举行诊断通讯,此时开采的诊断通讯公约栈依然烧入 ECU中。测试平台如图5所示。
本文参考 ISO15765-3 供给的非易失性内存再编程音讯流程的例子,制定丁了一套ECU 改革进程测试计划,用于测试公约栈的根基通讯和诊断供职处分功用。正在诊断通讯搜集中,诊断仪称作客户端,ECU称作供职器。采用轨范的 11 位 OBD CAN id,参考ISO15765-4,装备客户端的物理哀告 CAN ID为770,供职器的物理反响 CAN ID为 778,哀告音讯的 CAN 帧的无效数据填充 55hex,反响音讯的填充 AA hex(如图6所示)。
采用 PC 挫折诊断编制的数据监听功用举行测试。正在举行诊断通讯之前,PC挫折诊断编制起初要对VCL举行装备,网罗设定通讯波特率为500kb/s,通过复位结束装备。
一共 ECU 改革测试流程如下; 诊断会话局限- 切换到编程会线);和平拜候 -获取种子(0x27 01)、发送密钥(Ox27 02);例程局限 -拔除内存 (Ox31 01FF 00);哀告下载 (0x34);传输数据(0x36);哀告退出传输(Ox37);例程局限一查验编程依赖性 (Ox31 01 FF 01);E-CU复位-硬件复位(Ox11 01)。酌量本文测试采用手动体例发送供职哀告,难以做到周期性发送诊断仪正在线供职,为此屏障了 ECU 的断仪正在线请青求超时缺点功用。按序发送以上诊断供职,每发送一个诊断r请青求音讯,立时收到ECUJ返从来的反响音讯,每条音讯有 8个数据字节,首字节为有用数据个数,然后诀别为反响供职标只符、子功用和数据参数。通过以上测试讲明,开采的诊断通讯公约栈具有根基的通讯功用而且能够准确反响诊断哀告,一共进程相符公约条件。