《LIN协议企业培训资料讲解课件.ppt》由会员分享,可在线阅读,更多相关《LIN协议企业培训资料讲解课件.ppt(119页珍藏版)》请在三一办公上搜索。
1、LIN 2.1规范,2012-03-09,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范应用程序层规范节点能力语言规范配置语言规范,概述,Overview,概述,典型车载网络分布,概述,车用总线分级,LIN(Local Interconnect Network)协会成立于1998年成立时的主要成员:5家整车厂:Audi,BMW,DaimlerChrysler,Volvo,VW1家半导体制造商:Motorola1家工具提供商:Mentor Graphics目前的主要成员:5家整车厂:Audi,BMW,DaimlerChrysler,Volvo,VW1家半导体制造商:Freescale
2、1家工具提供商:Mentor Graphics主要目的:LIN总线的主要目的在于提供一种低成本的车用总线,从而形成对CAN总线的补充。LIN总线已经广泛地被世界上的大多数汽车公司以及零配件厂商所接受,有望成为公认的A类网络标准。,概述,LIN总线的起源,概述,功能简单,实时性低成本低传感器/执行器级的总线基于UART数据格式、主从结构、单线12V串行通信开放、不需要使用费和版税,LIN总线概念,概述,LIN 1.1 1999年7月,底特律SAE大会包括3部分协议规范配置语言规范API规范LIN 1.22000年11月LIN 1.32002年11月增加了物理层规范,LIN协议版本(1/2),LI
3、N 1.2,LIN 1.3,概述,LIN 2.0 2003年9月适应当代和未来汽车工业发展趋势为了实现节点的“即插即用”增加了诊断规范和节点能力语言规范LIN 2.12006年11月目标是改进LIN 2.0规范的理解力增加了传输层规范和节点配置规范形成了8个子规范,LIN 1.1,LIN 1.2,LIN 1.3,LIN 2.0,LIN 2.1,LIN协议版本(2/2),概述,LIN规范组成(1/2),LIN物理层规范描述了LIN总线的物理层,包括位传输速率,时钟容错范围等LIN协议规范描述了LIN总线的数据链路层LIN诊断和配置规范描述了如何在数据链路层之上提供诊断信息和节点配置服务LIN应用
4、程序接口(API)描述了网络和应用程序之间的接口,包括诊断模块LIN配置语言规范(LDF)介绍了LIN配置文件的格式。LIN配置文件用于配置整个网络,并作为OEM和不同网络节点的供应商之间的通用接口,同时可作为开发和分析工具的一个输入。LIN节点能力描述语言规范(NCF)介绍了描述从机节点的语言格式,LIN集群设计工具可以使用NCF文件自动地生成LIN描述文件,概述,LIN规范组成(2/2),LIN传输层规范描述了传输最高能达到4095个字节数据的方法LIN诊断规范描述了从机节点所支持的诊断服务类型,诊断服务都使用传输层,概述,串行通信线间干扰小,节省线束,传输距离长单线传输单线,总线电压12
5、V最高速率20Kbit/s满足车身上大部分的应用需求单主多从结构不存在冲突,无需仲裁基于通用UART/SCI的低成本接口硬件几乎所有MCU有具备LIN总线的硬件基础从节点无须晶振或陶瓷震荡器就可以实现同步利用报头里的同步场实现同步,大幅度降低成本,LIN总线的特点(1/2),概述,LIN总线的特点(2/2),可计算的信号传输的延迟时间网络通信可预期性 可灵活的增加或减少从节点无需改变其他节点的硬件电路 一条总线最多可连接16个节点由总线电气特性决定 支持多包报文传输基于ISO15765-2的传输层规范 支持诊断功能支持ISO14229的诊断服务,概述,LIN网络拓扑结构,一个LIN网络由一个主
6、任务,若干个从任务组成 主节点既有主任务又有从任务 从节点只包含从任务 主任务负责决定总线上的报文,从任务提供每一帧的数据,概述,LIN报文帧,通信原理:主任务发送报头,从任务用响应来补充报头形成完整的报文。系统灵活性:可以自由地增减从节点,而不需要改变其它从节点的软件和硬件报文传输:报文的内容由ID来定义(跟CAN相似)广播:所有节点都能够同时地接受和响应总线上的帧,概述,LIN总线上可以传输两类数据信号报文信号位于帧的数据场中,以数字或数组的形式出现同一种信号在相同ID的报文数据场中的位置总是固定的诊断报文诊断报文由两个保留ID来传输,用来传输节点的诊断信息,数据传输,概述,负责调度网络各
7、报文发送的顺序为每帧报文分配发送时隙(slot)发送时隙:报文可以被发送的时间不同报文的发送时隙可能不同调度表在网络系统设计阶段确定调度表使得LIN通信具有可预测性,调度表,概述,主任务可以拥有多个调度表,并在不同的调度表之间切换增加通信的灵活性,切换调度表,决策,大纲,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范应用程序层规范节点能力语言规范配置语言规范,协议规范,Protocol Specification,协议规范,显性间隔,同步场,响应间隔,标识符场,数据场,校验和场,报头(Header),响应(Response),间隔界定,间隔场,字节间隔,D0,D1,Dn,帧的结构(
8、Frame Sturcture),字节间隔位于每个字节之间,响应间隔位于报头与响应之间留给MCU足够的处理时间帧长度可能增长最小值可以是0,协议规范,字节场(Byte Field),报头(Header),响应(Response),D1,Dn,D0,基于SCI的通信格式发送一个字节需要10个位时间(TBIT),协议规范,间隔场(Break Field),表示一帧报文的起始,由主节点发出间隔信号至少由13个显性位组成,间隔界定符至少由1个隐性位组成间隔场是唯一一个不符合字节场格式的场从节点需要检测到至少连续11个显性位才认为是间隔信号,协议规范,同步场(Sync Break Field),确保所有
9、从节点使用与主节点相同的波特率发送和接收数据一个字节,结构固定:0X55,协议规范,标识符场(Identifier Field),标识符场,报头(Header),响应(Response),D0,D1,Dn,帧ID的范围从0到63(Ox3f)奇偶校验符(Parity)P0,P1,协议规范,数据场(Data Field),数据场长度1到8个字节低字节先发,低位先发如果某一信号长度超过1个字节,采用低位在前的方式发送(小端),协议规范,校验和场(Checksum Field)(1/2),用于校验接收的数据是否正确(1个字节)经典校验(Classic Checksum)仅校验数据场(1.3)增强校验(
10、Enhance Checksum)校验标识符场与数据场内容(2.0)标识符为0 x3C(60)和0 x3D(61)的帧只能使用经典校验,协议规范,校验和场(Checksum Field)(2/2),翻转八位和(inverted eight bit sum)例:Data=0 x4A,0 x55,0 x93,0 xE5Checksum=0 xE6,帧长度(Frame Length),最小帧长度THEADER_NOMINAL=34*TBITTRESPONSE_NOMINAL=10*(NDATA+1)*TBITTFRAME_NOMINAL=THEADER_NOMINAL+TRESPONSE_NOMIN
11、AL最大帧长度THEADER_MAX=1.4*THEADER_NOMINALTRESPONSE_MAX=1.4*TRESPONSE_NOMINALTFRAME_MAX=THEADER_MAX+TRESPONSE_MAX,协议规范,协议规范,帧类型(Frame Type),事件触发帧,零星帧,保留帧,诊断帧,自定义帧,无条件帧,协议规范,无条件帧(Unconditional Frame),标识符(ID)为0到59(0 x3b)标准LIN帧类型,用于周期通信主任务发出报头,相应的从任务对报头提供响应帧。所有节点接收三种情况,协议规范,事件触发帧(Event Triggered Frame)(1/2
12、),目的:增强了LIN总线的响应能力,避免为了很少发生的事件,而对从节点进行轮询,从而浪费了大量的带宽传输一个或多个无条件帧的数据场,标识符:059(0 x3B)事件触发帧必须有一个独立的ID,该ID与多个无条件帧的ID相关联 这些无条件帧必须满足以下条件:有相同的长度;相同的校验和模型;首个数据字节不带信号在事件触发帧时隙内发送帧头,只有当相关联的无条件帧内有信号被更新时,相关联的无条件帧的生产者才发送帧响应帧响应的第一个数据字节等于PID,即响应最多可以传输7个字节的数据帧响应可由多个节点发送,当有多个节点在同一帧时隙内响应报头时会发生冲突,发生冲突时切换到“冲突解决调度表”,之后再切换回
13、到原来的调度表,协议规范,事件触发帧(Event Triggered Frame)(2/2),假设与事件触发帧0 x10相关联的两个普通帧,如果只有一个节点响应事件触发帧的报头,如果同时有多个节点响应事件触发帧的报头,切换调度表,进行轮询,协议规范,零星帧/偶发帧(Sporadic Frame),一个或多个无条件帧共享一个帧时隙只发送信号报文,标识符:059(0 x3b)当且仅当其中的某个无条件帧有信号被更新时,主节点才发送该帧的帧头。其发布者对帧头发送响应若有多个无条件帧在同一时刻有信号被更新,则主节点根据这些无条件帧的优先级裁定发送顺序若没有无条件帧需要发送,则时隙保持空白,诊断帧用来传输
14、诊断或配置信息,包含8个字节数据。标识符60(0 x3c):主请求帧;(首个数据字节标明具体的从节点),也用于“Go-toSleep”指令61(0 x3d):从响应帧传输方式:,协议规范,诊断帧(Diagnostic Frame),主节点,从节点,协议规范,保留帧(Reserved Frame),用户自定义帧(User-defined frame)标识符:62(0 x3e)可以传输任何信息(由用户自定义)保留帧(Reserved frame)标识符:63(0 x3f)在LIN 2.1中未对保留帧进行定义,协议规范,调度表(Schedule Table),调度表可以保证总线永远不会过载,同时还可
15、以保证信号的周期性。LIN总线最小时间单位是时基(Tbase)。调度表中用来发送一帧报文的时间称为帧时隙(Frame_Slot),帧时隙必须是时基的整数倍,调度表是由帧时隙组成的。TFrame_Slot=Tbase*n偏移(jitter)是指一帧报文实际开始发送的时刻与帧时隙起点的时间差。TFrame_Slot jitter+TFrame_Maximum,协议规范,任务行为模型(Task Behavior Model)(1/2),主任务行为模型,协议规范,任务行为模型(Task Behavior Model)(2/2),从任务行为模型,协议规范,网络管理(Network Management)
16、,初始化,初始化结束(100ms),接收到睡眠命令或,总线空闲410s,接收到唤醒信号或内部唤醒请求,Reset/Wakeup,从节点状态转换表,协议规范,睡眠(Go To Sleep),主节点可以发送一帧ID为60(0 x3c),第一个字节为0 x00其余全为0 xFF的主请求帧来使处于工作状态的从节点进入睡眠。这帧报文称为睡眠指令。从节点在接到睡眠指令之后,也可以选择不进入睡眠状态而继续工作,这根据应用层程序而定。当总线空闲4到10秒的时候,所有从节点自动进入睡眠状态。注:空闲的定义是没有显性位和隐性位之间的转换。LIN1.x 版本,从节点必须等25,000个位时间,协议规范,唤醒(Wak
17、e Up)(1/2),在一个处于睡眠状态的LIN网络中,任何一个节点都可以发送唤醒信号唤醒信号是一个250us(在20Kbit/s波特率)到5ms(在1Kbit/s波特率)的显性电平(5个位)每一个从节点都需要 检测唤醒信号 当检测到唤醒信号之后,在100ms以内完成初始化工作当从节点发出唤醒信号之后150ms,主节点仍未发送报头时,从节点可以再次发送唤醒信号。当连续发送了3次唤醒信号之后如果主节点仍未发送报头,从节点要至少等待1.5秒以后才可以发送第四次唤醒信号,网络管理唤醒,唤醒过程,协议规范,状态管理(Status Management),状态管理的目的是用来发现工作状态中总线上产生的错
18、误,response error,Interpretation,每一个从节点必须通过状态管理帧发送response error 信号(一个位长),当在响应帧中检测到错误时,这个信号由从节点的驱动器自动设定,发送完状态管理帧之后又将该位清除。,主节点接收状态信息位并识别从节点状态:,大纲,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范应用程序层规范节点能力语言规范配置语言规范,物理层规范,Physical Layer Specification,物理层规范,位速率容差(Bit Rate Tolerance),相对于标称位速率,相对于主节点位速率,物理层规范,位定时(Bit Timin
19、g),所有从节点的位定时必须以主节点的位定时为参考同步过程TBIT=(T1-T0)/8,T0,T1,物理层规范,位采样定时(Bit Sample Timing),EBS=Early bit sample(前采样)LBS=Lastest bit sample(后采样)tEBS=7/16 TBIT tLBS=10/16 TBIT tBFStBFS=1/16 TBIT采样点在EBS和LBS之间,物理层规范,总线收发器(Line Driver/Reciever),Tx通过集电极开路电路连到总线,Rx与总线之间有施密特触发器收发器内部有30K上拉电阻,如果作为主节点使用,必须外接1K上拉电阻上拉电阻与电
20、源之间有二极管保护,防止在电源掉电的情况下总线电平被拉低,物理层规范,信号规范(Signal Specification),VBAT:818VVSUP=VBAT-Vdiode显性位(dominant)逻辑0发送:总线电平80%VSUP接收:总线电平60%VSUP,20%,80%,物理层规范,总线特性(Line Characteristics)(1/2),物理层规范,总线特性(Line Characteristics)(2/2),问题假设总线速率为20K,网络中有11个从节点,总线长度40米,主节点、从节点的电阻和电容均为标准值,总线的电容也为标准值。总线特性如何?解答CBUS=22011220
21、 40100=6640pFRBUS=1 30 30 30=0.75K=CBUS RBUS=4.98 s经过计算总线的时间常数为 4.98 s,物理层规范,容错性能(Performance During Fault Modes),电源或地线断路单个节点电源或地线断路,不影响剩余网络通信排除故障后,节点可重新参与网络通信总线与电源或地线短路总线通信可能无法进行,但ECU不可被损坏排除故障后,总线恢复正常通信,大纲,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范应用程序层规范节点能力语言规范配置语言规范,传输层规范,Transport Layer Specification,传输层规范,
22、概述(Overview),传输层应用对象 诊断报文传输层功能传输层位于应用层与数据链路层之间,完成应用层的报文与数据链路层的帧之间的相互转换。实现超过8个字节的数据传输,最多可达到4095个字节传输,传输层规范,PDU打包数据单元(Packet Data Unit)一个PDU可以是一个完整的报文,也可以是一个完整报文的一部分,由多个PDU来组成一个完整的报文。请求:从客户端(如测试仪,主节点)发出的报文响应:从服务器端(如主节点,从节点)发出的报文,PDU结构(PDU Stucture)(1/2),传输层规范,PDU类型单帧(SF):只用一个PDU传输报文首帧(FF):多PDU传输时,被发送的
23、首个PDU后续帧(CF):多PDU传输时,在首PDU发送后,紧接着发送的PDU,PDU结构(PDU Stucture)(2/2),传输层规范,NAD(Node Address),NAD 从节点地址(Node Address)睡眠指令:0物理地址:0 x010 x7D访问一个特定节点功能地址:0 x7E访问所有从节点(只在诊断报文中使用)从节点不允许响应(不允许用在节点配置)广播地址:0 x7F访问所有从节点(广播发送)从节点不响应(推荐)用户自定义:0 x800 xFF,传输层规范,PCI 协议控制信息(Protocol Control Information)PCI包含PDU的类型、编号和报
24、文的有效数据长度等信息包编号:在多个PDU组成的报文中,在每个连续帧CF中必须加入包编号,第一个CF的包编号是1,第二个CF的包编号是2以此类推,如果包编号超过15则重新从0开始计数,PCI(Protocol Control Information),传输层规范,LEN(Length),LEN 帧长度(Length)只存在于多PDU报文的第一帧中(FF中)表示报文的有效数据长度的低8位,有效数据长度的高4位在PCI的低4位中由于要发送SID和RSID,所以有效数据长度=数据总长度+1,传输层规范,SID和RSID(Service ID&Response Service ID),SID(Serv
25、ice Identifier)服务标识符,在请求帧中发送0-0 xAF和0 xB8-0 xFE表示诊断,0 xB0-0 xB7表示节点配置RSID(Response Service Identifier)对应于SID的响应服务标识符,在响应帧中发送RSID=SID+0 x40,传输层规范,单帧传输(Singal Frame Transmission),单帧传输有效数据长度少于六个字节(包括SID)功能寻址(0 x7E)只能用单帧传输,0 x3C,诊断设备,主节点,请求,SF,0 x3C,0 x3D,请求,响应,SF,SF,从节点,传输层规范,多帧传输(Multiple Frame Transm
26、ission),多帧传输74095字节(包括SID)起始于FF,后续多条CF,0 x3C,0 x3C,诊断工具,主节点,FF,FF,CF,0 x3C,CF,FC,CF,CF,0 x3C,0 x3D,诊断工具,主节点,请求,FF,FF,FC,0 x3D,CF,CF,从节点,从节点,传输层规范,时间限制(Timing Contraint)(1/2),发送时间限制N_As最大超时1000ms,传输层规范,时间限制(Timing Contraint)(2/2),接收时间限制N_Cr最大超时1000ms(N_Cs+N_As)(0.9*N_Cr timeout),传输层规范,Length_SF6忽略该报文
27、Length_FFBufferSize中止接收报文节点处于发送状态,接收到SF或FF(NAD0 x7E)中止发送报文,开始接收新报文CF编号错误放弃之前所接收的CF与FFAs时间超时中止发送报文Cr时间超时放弃所接收的报文,错误处理(Fault Handling),大纲,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范应用程序层规范节点能力语言规范配置语言规范,节点配置和标识规范,Node configuration and Identification Specification,节点配置和标识规范,介绍(Introduction),目的避免网络NAD或PID冲突 网络引入新节点可
28、能导致NAD或Product ID冲突配置内容NADProduct ID服务标识符(SID)0 xB00 xB7节点配置只能用单帧通信,节点配置和标识规范,LIN产品标识(LIN Production Identification),标识了节点的供应商和功能类似于条形码供应商ID是一个16位的数字,最高位是0,由LIN协会规定功能ID是一个16位的数字,由各供应商规定变量ID是一个8位的数字,用于区分同网络中相同功能的节点PID保存在各节点的ROM中,不进行更改序列号(Serial Number),高字节,低字节,D4,D3,D2,D1,节点配置和标识规范,通配符(Wildcards),NAD
29、的通配符0 x7F用来访问所有节点的地址供应商ID和功能ID可以代表所有未定义的供应商与功能,节点配置和标识规范,与配置相关的服务(Service Associated with Configuration),服务标识符(SID)0 xB00 xB7节点配置只能用单帧通信,节点配置和标识规范,分配NAD服务(Assign NAD),NAD列表,初始NAD值,NAD设置值,初始化选择,网络分配,分配从节点NAD服务(Assign NAD,0 xB0)网络分配NAD实例主节点首先发送0 xB0服务主请求帧(0 x3C)主节点然后发送从请求帧(0 x3D),如从节点修改NAD成功,从节点发送响应,节
30、点配置和标识规范,根据条件改变NAD服务(Conditional Change NAD)(1/2),根据条件改变NAD服务(Conditional Change NAD,0 xB3)主节点首先发送0 xB3服务主请求帧(0 x3C)从节点收到请求后分4步走:1.提取BYTE位对应产品标识中的字节2.将该字节与INVERT中的字节逐位异或3.将异或的结果与MASK中的字节逐位与4.如果最后的结果是0,就将NAD改变为新NAD然后发送从请求帧(0 x3D),如有从节点满足条件并修改成功,则发送响应,节点配置和标识规范,根据条件改变NAD服务(Conditional Change NAD)(2/2)
31、,主节点,从节点,BYTEN,根据条件改变NAD服务,MASK,INVERT,0,根据条件改变NAD服务实例假设网络中有2个未知NAD的节点,主节点只知道它们的功能ID需要根据他们的功能ID给他们分配新的NAD现在决定给功能ID的BIT0为1的节点分配NAD为1,给BIT1为1的节点分配NAD为2以下两条服务可以实现该功能:,新NAD,发送响应,节点配置和标识规范,保存配置服务(Save Configuration),保存设置服务(Save Configuration,0 xB6)主节点首先发送0 xB6服务主请求帧(0 x3C)从节点将当前配置保存入FLASH中,并响应从请求帧(0 x3D)
32、,主节点,从节点,保存配置服务,发送响应,保存配置,节点配置和标识规范,设置帧ID服务(Assign Frame ID),设置帧ID服务(Assign Frame ID,0 xB1)(LIN 2.0)主节点首先发送0 xB1服务主请求帧(0 x3C)从节点将messageID更改为PID,并响应从请求帧(0 x3D),主节点,从节点,设置帧ID服务,发送响应,Message ID,PID,读取服务(Read by Identifier,0 xB2)主节点首先发送0 xB6服务主请求帧(0 x3C)从节点根据id发送响应数据,并响应从请求帧(0 x3D)如果无法读取,则发送否定响应,节点配置和标
33、识规范,LIN节点模型,读取服务(Read by Identifier)(1/2),主节点,从节点,读取服务,发送响应,不同identifer对应不同含义,响应形式也不同,节点配置和标识规范,读取服务(Read by Identifier)(2/2),大纲,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范配置语言规范,诊断规范,Diagnostic Specification,诊断规范,什么是诊断?,诊断定义,诊断设备直接连接到LIN总线是否可行?结论:诊断报文与LIN调度表的报文产生冲突,不可行,诊断规范,诊断方式(1/2),LIN,诊断设备,主节点,从节点,从节点,LIN,LIN
34、,LIN,LIN,诊断规范,诊断方式(2/2),诊断设备,CAN,CAN,LIN,LIN,LIN,从节点,从节点,主节点,LIN诊断必须依然由主节点来调度,诊断规范,两种诊断方式(Diagnostic Methods)(1/2),第一种方式:诊断设备连接到主干网主节点作为网关从节点存储故障代码(DTC)主节点转发请求与响应适用于所有诊断服务,LIN,诊断设备,主节点,从节点,从节点,LIN,LIN,LIN,CAN,CAN,(网关),诊断规范,两种诊断方式(Diagnostic Methods)(2/2),第二种方式:从节点将故障信号发送到主节点(基于信号)主节点将各故障信号处理、存储为故障代码
35、(DTC)诊断设备请求故障代码主节点发送故障代码,LIN,诊断设备,主节点,从节点,从节点,LIN,LIN,LIN,CAN,CAN,(网关),故障信号,故障信号,诊断规范,诊断级别(Diagnostic Class)(1/3),从节点根据自身的特点和需要,诊断功能分为3个级别诊断级别 1从节点主要由简单元件组成(如传感器等),故障都由主节点来读取、分析处理和保存只支持Unsegmented 诊断诊断服务仅限于节点配置,诊断规范,诊断级别 2和诊断级别1的节点类似,故障同样由主节点来读取、分析处理和保存支持Unsegmented诊断和Segmented诊断必须要支持ISO 14229-15诊断服
36、务必须支持节点标识符服务,诊断级别(Diagnostic Class)(2/3),诊断规范,诊断级别 3诊断级别3的节点是具有较强应用功能的节点,除了基本的节点配置服务以外,还支持ISO 14229-1的其他诊断服务诊断级别3的节点具有内部故障存储设备,有些还支持在线刷写,需要完整的boot-loader工具和相应的诊断服务去实现支持Unsegmented诊断和Segmented诊断必须要支持ISO 14229-15诊断服务具有内部故障存储ECU程序支持Flash在线刷写,诊断级别(Diagnostic Class)(3/3),诊断规范,诊断级别总结(Summary of Diagnostic
37、 Class)(1/2),诊断规范,诊断级别总结(Summary of Diagnostic Class)(2/2),诊断规范,主请求调度表单时隙只有主请求帧从响应调度表单时隙只有从响应帧,诊断调度表(Diagnostic Schedule),诊断规范,0 x3C,诊断设备,主节点,请求,诊断调度模式(Diagnostic Schedule Modes),0 x3D,0 x3D,0 x3D,响应,诊断调度模式,两种诊断调度模式 交叉诊断模式 纯诊断模式,master,slave,从节点,诊断规范,交叉诊断模式(Diagnostics Interleaved Mode),交叉诊断模式默认模式不终
38、止常规通信,诊断规范,纯诊断模式(Diagnostics Only Mode),纯诊断模式可选模式终止常规通信,单帧传输,多帧传输(数据来自主节点),多帧传输(数据来自从节点),诊断规范,从节点诊断时间限制(Slave Diagnostic Timing Requirements),STmin 从节点响应两条诊断帧之间的最小时间P2 从节点从接到主请求帧到发送从响应帧的响应部分之间的最短时间 50msSTmin,大纲,概述协议规范物理层规范传输层规范节点配置和标识规范诊断规范配置语言规范,配置语言规范,LDF,LIN Description File,配置语言规范,LDF在LIN开发流程中(L
39、DF in LIN Workflow),数据库是什么?,配置语言规范,LIN数据库构成(Composition of LIN database),需要在数据库中定义些什么?,配置语言规范,LIN描述文件定义(LIN Description File Definition),LIN描述文件定义全局定义节点定义参与节点定义节点属性定义节点构成定义信号定义帧定义调度表定义附加信息信号编码类型信号表示类型,配置语言规范,创建自己的数据库Just do it!,配置语言规范,我的第一个数据库(My first database),LIN_description_file;LIN_protocol_ver
40、sion=2.0;LIN_language_version=2.0;LIN_speed=9.6 kbps;NodesMaster:Mymaster,10 ms,0 ms;Slaves:Myslave;SignalsMy_first_signal:1,0,Mymaster,Myslave;FramesMyframe:1,Mymaster,1 My_first_signal,0;Schedule_tablesMyscheduletable Myframe delay 20 ms;,LIN 协议版本号LIN 配置语言版本号LIN 总线速率,节点定义主节点,时基,抖动从节点,信号定义信号:长度,初始值
41、,发送节点,接受节点,帧定义帧:ID,发送节点,长度信号列表,起始位,调度表定义调度表帧列表,时隙长度,配置语言规范,验证(Vertify),在CANoe中验证Great,I See it!,配置语言规范,进阶(Advance),尝试着给数据库增加新元素第一步,建立一个更复杂的系统NodesMaster:Mymaster,10 ms,0 ms;Slaves:Myslave1,Myslave2;SignalsMy_signal1:1,0,Mymaster,Myslave1;My_signal2:1,0,Mymaster,Myslave2;My_signal3:1,0,Mymaster,Mysla
42、ve1,Myslave2;My_signal4:2,0,Myslave1,Mymaster;My_signal5:2,0,Myslave2,Mymaster;,FramesMyframe1:11,Mymaster,2 My_signal1,0;My_signal2,1;Myframe2:12,Mymaster,1 My_signal3,0;Myframe3:13,Myslave1,1 My_signal4,3;Myframe4:14,Myslave2,1 My_signal5,2;Schedule_tablesMyscheduletable Myframe1 delay 20 ms;Myfra
43、me2 delay 20 ms;Myframe3 delay 20 ms;Myframe4 delay 20 ms;,现在我们的数据库有了:1个主节点,2个从节点 5个信号 4个帧 1个4时隙的调度表,配置语言规范,验证(Vertify),在CANoe中验证It becomes better!,配置语言规范,事件触发帧和零星帧(ETF&Sporadic frame),为数据库来点调味料!增加事件触发帧和零星帧,Sporadic_frames MySporadicFrame:Myframe1,Myframe2;/将Myframe1和Myframe2关联成零星帧,注意!它们必须/都由Master发
44、送Schedule_tables NormalTable MySporadicFrame delay 20 ms;/在调度表中放入零星帧即可!,Event_triggered_frames ETF_Myframes:ETFCollisionResolving,58,Myframe3,Myframe4;/将Myframe3和Myframe4关联成事件触发帧ETF_MyframesSchedule_tables NormalTable ETF_Myframes delay 20 ms;/在调度表中只需放入ETF_Myframes即可!ETFCollisionResolving Myframe3 d
45、elay 20 ms;Myframe4 delay 20 ms;/万一发生冲突了,就执行这个解决ETF冲突调度表!,数据库中有形有色!,配置语言规范,验证(Vertify),思考在Trace窗口中为什么出现错误?为什么没有零星帧?,配置语言规范,诊断(Diagnostic)(1/3),上帝说:“要有诊断”于是就有了诊断!给数据库添加诊断功能Diagnostic_signals MasterReqB0:8,0;MasterReqB1:8,0;MasterReqB2:8,0;MasterReqB3:8,0;MasterReqB4:8,0;MasterReqB5:8,0;MasterReqB6:8,
46、0;MasterReqB7:8,0;SlaveRespB0:8,0;SlaveRespB1:8,0;SlaveRespB2:8,0;SlaveRespB3:8,0;SlaveRespB4:8,0;SlaveRespB5:8,0;SlaveRespB6:8,0;SlaveRespB7:8,0;,Diagnostic_frames MasterReq:0 x3c MasterReqB0,0;MasterReqB1,8;MasterReqB2,16;MasterReqB3,24;MasterReqB4,32;MasterReqB5,40;MasterReqB6,48;MasterReqB7,56;S
47、laveResp:0 x3d SlaveRespB0,0;SlaveRespB1,8;SlaveRespB2,16;SlaveRespB3,24;SlaveRespB4,32;SlaveRespB5,40;SlaveRespB6,48;SlaveRespB7,56;,诊断信号的定义,诊断帧的定义,配置语言规范,诊断(Diagnostic)(2/3),每个节点都有独有的节点属性Node_attributes Myslave1 LIN_protocol=2.0;configured_NAD=0 x2;initial_NAD=0 xa;product_id=0 x1e,0 x1,0;response
48、_error=Myslave1Error;P2_min=100 ms;ST_min=20 ms;N_As_timeout=1000 ms;N_Cr_timeout=1000 ms;configurable_frames Myframe3=0 x01;ETF_Myframes=0 x02;,这些是它的条形码,可以通过assign frame id服务来配置它的帧ID,配置语言规范,诊断(Diagnostic)(3/3),把诊断帧放进调度表里去第一种实现方法:Schedule_tables MyDiag1 MasterReq delay 20 ms;SlaveResp delay 20 ms;,第
49、二种实现方法:Schedule_tables MyDiag1 AssignNAD 0 xa,0 x4,0 x1e,0 x1 delay 20 ms;SlaveResp delay 20 ms;AssignFrameId Myslave1,Myframe3 delay 20 ms;SlaveResp delay 20 ms;,在数据库中直接定义具体诊断服务,应用层不调用API函数,留下诊断调度表,让应用层去调用诊断API函数,配置语言规范,诊断(Diagnostic)(3/3),把诊断帧放进调度表里去,第二种实现方法:Schedule_tables MyDiag1 AssignNAD 0 xa,
50、0 x4,0 x1e,0 x1 delay 20 ms;SlaveResp delay 20 ms;AssignFrameId Myslave1,Myframe3 delay 20 ms;SlaveResp delay 20 ms;,在数据库中直接定义具体诊断服务,应用层不调用API函数,留下诊断调度表,让应用层去调用诊断API函数,配置语言规范,验证(Vertify),总线上出现了诊断帧!可以随意配置节点了,配置语言规范,附:常用的节点配置函数,配置语言规范,信号编码类型和信号表示,看不懂这信号是什么意思?信号编码类型和信号表示,Signal_representation Mysignal_