Lin总线
Lin总线是CAN总线网络的低成本补充(具有更少的线束和更便宜的节点);
Lin总线通常由充当网关的Lin主机(主节点)和最多16个从节点构成;
Lin用例:舒适总线,动力总线,发动机(小型电机,冷却风扇电机等)等。
Lin节点通常捆绑在集群中,每个节点都有一个与CAN总线连接的主节点:
Lin总线工作原理:主节点循环通过每个从节点,发送信息请求,每个从节点在轮询时响应数据;
Lin总线消息帧:通常由一个报头和一个响应组成;
报头:
Sync Break Field (SBF) aka Break(Break):最小长度为13+1(通常为18+2),Break字段充当总线上所有Lin从节点的”帧开始“通知;
Sync:具有预定义值0x55(0101 0101),该结构允许Lin节点确定上升/下降之间的时间,从而确定主节点使用的波特率,让每个节点保持同步;
ID:标识符,用作发送每条Lin消息要与哪些节点对报文做出反应的标识符;
Parity:奇偶校验位(2个),用于确定从设备ID字段的有效性==》并进行:
1、忽略后续数据传输;2、监听从另一个节点传来的数据;3、响应头部发布数据。
响应:
Data:当一个Lin从节点被主节点轮询时,它通过发送2,4或8个字节的数据来响应;数据长度可以自定义,但通常与ID范围有关:
ID | 字节 |
---|---|
0~31 | 2 |
32~47 | 4 |
48~63 | 8 |
CheckSum:校验和字段,和CAN类似,确保Lin帧有效性;经典的8位校验和仅基于对数据字节求和(Lin 1.3),增强的校验和还包括标识符字段(Lin 2.0);
特殊:由于Lin从节点一般性能不佳,所以会出现延迟,为了缓解情况==》可以选择添加字节间空间;此外,在报头和响应之间,还有一个响应空间,允许从节点有足够的时间对主节点的报头做出反应:
帧类型:
ID | 类型 | 描述 |
---|---|---|
0~59 | 无条件帧 | 周期性广播特定信息,不需要请求 |
0~59 | 事件触发帧 | 发生特定事件时触发,例:传感器等 |
0~59 | 间歇帧(零星帧) | 没有按照固定时间间隔进行发送,没有特定的触发条件 |
60~61 | 诊断帧 | 主机从从机读取诊断信息;60:主机请求;61:从机响应 |
62 | 用户自定义帧 | 可以包含任何类型的帧 |
63 | 保留帧 |
大部分的通信都是通过无条件帧完成的。
配置文件(NCF)与描述文件(LDF):为了实现快速设置Lin总线网络,Lin节点都带有节点配置文件NCF,详细描述Lin节点功能;
OEM会将这些节点的NCF文件组合成一个集群文件==》Lin描述文件LDF==》主节点根据LDF设置和管理Lin集群;
Lin描述文件LDF解码:
类似于CAN总线解码:
字段 | 描述 |
---|---|
ID | 标识符 |
Name | 名称 |
Start bit | 起始位 |
Length | 长度 |
Endianness | 字节序,大端序/小端序 |
Scale | 比例因子,比例缩放 |
Offset | 偏移 |
Unix/Min/Max | 数值型信号,可能需要知道最小值,最大值以及在Unix时间戳中的解释方式 |
LDF文件例:
LIN {
Name = "MyLINNetwork";
Version = "1.0";
Nodes {
Node1 {
NAD = 0x01;
Supplier = "CompanyA";
Function = "ECU1";
}
Node2 {
NAD = 0x02;
Supplier = "CompanyB";
Function = "ECU2";
}
}
Frames {
Frame1 {
Name = "Frame1";
ID = 0x100;
Length = 8;
Publisher = Node1;
Subscribers = Node2;
CycleTime = 10ms;
Signals {
Signal1 {
Name = "Signal1";
StartBit = 0;
Length = 16;
Endianness = LittleEndian;
Scale = 0.1;
Offset = -100;
Min = -1000;
Max = 1000;
}
}
}
Frame2 {
Name = "Frame2";
ID = 0x200;
Length = 4;
Publisher = Node2;
Subscribers = Node1;
CycleTime = 20ms;
Signals {
Signal2 {
Name = "Signal2";
StartBit = 0;
Length = 8;
Endianness = BigEndian;
Scale = 1;
Offset = 0;
Min = 0;
Max = 255;
}
}
}
}
}
描述了一个名为MyLINNetwork的Lin网络,包含两个节点Node1和Node2和两个帧Frame1和Frame2,每个节点都有唯一的Node Address(NAD)和供应商/功能信息;每个帧也有其详细信息。
当你获得了一个LDF文件或NCF文件时,可以采用以下解析器对其进行解析:
#Ldfparser
https://github.com/c4deszes/ldfparser
#Ldf-parser
https://github.com/TrippW/LDF-Parser
#NCF-parser
https://github.com/TrippW/NCF-Parser