2、传输层通信
应用层发出的消息如果长度不超过单帧的容量,传输层会按单帧的格式交给协议层发送。传输层收到的单帧也会直接作为消息送往应用层;如果消息长度超过单帧的容量,传输层先要把消息拆分成首帧和续帧并排好次序,然后再交给协议层依次发送。反过来,协议层收到的首帧和续帧,传输层先要按照接收次序将其重组为消息,最后交给应用层处理。
LIN
传输层只能按顺序接收续帧。
LIN
传输层具备出错重传功能。
传输层由传输层 API 完成,参照“LIN 的API”。下表列出了传输层与 API 的对应关系,API 的内容参照“LIN 的API”。
![](https://i-blog.csdnimg.cn/blog_migrate/a90a9a04a0612f73460888a0eaf04a59.png)
二、LIN应用层
1、概述
LIN 应用层提供
信号处理、配置、识别和诊断
四项功能
。配置、识别和诊断功能又包含若干项目,称为服务(Service)
。为了区别,每项服务都有固定、唯一的服务代号
(Service ID
,
SID)
。下图
描述了
LIN
应用层及其关联。
![](https://i-blog.csdnimg.cn/blog_migrate/0999092eb8df91cc8974a626b3ac17de.png)
①
信号通过信号携带帧通信
②
配置服务通过传输层,以单帧的形式通信
③ 识别服务通过传输层,以单帧的形式通信
④ 基于信号的诊断服务
⑤ 诊断传输层,通过传输层通信,需要使用复帧的形式通信
⑥ 用户自定义的诊断
为便于理解本图,后文对每项功能都分别进行了详细描述并提出了工作模型的概念。
LIN 应用层的配置、识别和诊断都是针对
逻辑节点(Logical Node)
的。逻辑节点是能够对来自主机节点和/或诊断设备的服务请求作出响应的功能实体。
为了区别不同的逻辑节点,LIN 定义了 NAD(Node Address for Diagnose,诊断地址)
。第
1
章介绍了
物理节点(Physical Node)
、从机任务和接口
(Interface)
的概念。
对于一个物理节点来说,从机任务和接口对应着实现帧收发的软件和硬件实体,而逻辑节点则代表了配置、识别和诊断方面的能力。物理节点、从机任务以及接口是一一对应的,但是物理节点可以包括 1 个或者多个逻辑节点。
2、信号处理能力
信号处理功能是指应用层可以不经过传输层,直接从协议层获取或修改网络中的信号。这些信号由NCF(Node Capability File,节点性能文件)定义,既可以是工作参数(例如温度、压力的测量值、继电器的开合状态等),也可以是状态标志(例如某信号携带帧的收发状态)。
信号处理功能的工作模型如下图
所示。信号携带帧在
LIN
网络的节点之间传递,每个节点既可以是信号的发布者,也可以是信号的收听者。
![](https://i-blog.csdnimg.cn/blog_migrate/729c2e5b78052a07701c7a203322079b.png)
信号处理功能由核心 API 完成,参照“LIN 的API”。下表列出了信号处理功能与 API 的对应关系,API 的内容参照“LIN 的API”。
![](https://i-blog.csdnimg.cn/blog_migrate/e0deb07056e08ffc751b0c88ba62d00c.png)
3、配置功能
LIN 规范规定,每个逻辑节点都应该有 NAD。在网络运行期间,任意两个逻辑节点的 NAD 都必须不同,否则就会产生冲突。
此外,
每个逻辑节点都要能处理带有某些 PID 的帧
。由此可见,
NAD
和
PID
分别与逻辑节点建立了一种映射关系,LIN
规范把
NAD
和
PID
的这样一种组合称为逻辑节点的配置项
(Configuration)
。一个逻辑节点可以有一个以上的配置项,但在网络运行期间,每个逻辑节点只能有一个配置项有效。
配置功能是指 LIN 的主机节点能自动地给所有逻辑节点选择配置项,消除 NAD 和 PID 分配中存在的冲突,使网络正常工作。配置功能是确保各节点协调运作的内部功能,包含分配 NAD、分配 PID 等服务。配置功能通过传输层完成配置服务。
为了适应汽车行业的需要,LIN
规范定义配置功能的服务时,参照了
ISO
制定的
UDS(Unified Diagnostic Services,车辆统一诊断服务
)
标准
(
参照参考资料
[7])
和
OBD(On-board Diagnostic
,车载自动诊断
)
标准
。
配置功能各项服务及其 SID 都是 ISO 15765 标准的子集
。
配置功能的工作模型与计算机局域网的“
客户机
-
服务器
”
模型很相似,如下图
所示。主机节点可以被视为客户机,逻辑节点被视为服务器。客户机首先向服务器发出服务请求,服务器依照请求执行操作,然后向客户机返回应答。
![](https://i-blog.csdnimg.cn/blog_migrate/f8330bc03d4527df5fa44e2c655240ae.png)
3.1、节点存储模型
![](https://i-blog.csdnimg.cn/blog_migrate/862a7e83f522f4c87bb32db422b01f04.png)
如同商品包装上的条形码,每个物理节点都有一个固定的编码,叫做 LIN
产品代号
(LIN Product Identification)。产品代号是出厂时赋予的,除非修改产品,否则其内容不变。产品代号保存在不需要电源就能维持记录的地方,例如 ROM
或者非易失性存储器(Non-volatile Random Accessible Memory,NVRAM)。在进行配置服务时,从主机接收的产品代号必须和从机节点保存的产品代号一致,才能正常进行配置服务。
下表为LIN产品代号的存储格式:
另外,从机节点还可以有一个序列号,用于识别特殊的节点。序列号大小为 4
字节。
从机节点可以将配置信息保存起来,重启后调用保存的配置信息,而无需主机节点再次分配。
针对配置项的存储类型,LIN
规范定义了三种从机节点配置模型:
第一种,无配置节点,这种从机节点在重启后,自身没有配置项,每次重启都需要主机进行配置。
第二种,预配置节点,这种从机节点在重启后,调用预先设置的配置项。但是在主机重新对其进行配置后,不能存储新配置项。
第三种,全功能配置节点,这种从机节点可以保存主机对其的配置,并在重启后调用此配置。
![](https://i-blog.csdnimg.cn/blog_migrate/0bd6a8b5144d1dc7ef474a73feae8262.png)
3.2 从机节点 NAD 配置
有三种方法生成配置 NAD
,如果初始
NAD
等于配置
NAD
,那么不需要进行其他配置操作。如果配置
NAD需要从从机节点存储的保留配置中提取,需要调用 ld_set_configuration
进行配置,如果
NAD
需要变更,则需要主机发送配置 NAD
请求。
![](https://i-blog.csdnimg.cn/blog_migrate/fe6301a908d09d63e433e5f5676cc8f6.png)
主机节点给从机节点分配 NAD
是通过
Assign NAD
服务完成的。首先主机节点向从机节点发送配置
NAD请求,如果从机节点配置成功,从机节点会应答。
分配 NAD 服务的 PDU 结构如下表所示:
注意,应答时,仍然使用初始 NAD。
每个从机节点有一个初始 NAD
,初始
NAD
是从一个初始
NAD
列表中选择的。初始
NAD
列表是在编写节点性能文件(NCF
)时设置的。
LIN
协议没有对生成初始
NAD
的具体方法进行限制。
3.3、从机节点 PID 配置
从机节点各个帧的 PID
,是主机进行分配的。通过分配
PID
列服务,主机一次最多可给从机节点分配
4
个帧的 PID
。
分配
PID
列服务的
PDU
结构如下表
所示:
其中,消息字节段的第一字节是开始帧索引,表示分配第一个帧的排列号。从机节点中各帧的排列顺序是 按照节点性能文件(NCF)和 LIN 描述文件(LDF)中定义的顺序定义的。第一帧的索引编号是 0。后续四个字节是给从机节点分配的 PID。如果分配的 PID 值为 0,表示对应的信号携带帧无效。如果分配的 PID 值为 0xFF,表示保持对应帧的 PID 不变。
3.4 其它服务
除了对从机节点 NAD
和
PID
的配置,
LIN
规范还定义了其他配置服务,如条件变更
NAD
,数据导入,保存配置。配置功能由配置与识别 API
完成。下
表
列出了配置服务与
API
的对应关系
。
4、识别功能
识别功能是指主机节点能够获取逻辑节点的信息,例如产品代号等。借助识别功能,主机节点和逻辑节点还可以实现一些自定义的操作。
识别功能与上面介绍的配置功能使用同样的工作模型,如下图
所示。
识别服务中,主机发送的请求 PDU
单元结构如下表
:
![](https://i-blog.csdnimg.cn/blog_migrate/93e6408336fcf37991c14a2b09f5c499.png)
其中,从机根据目标 ID 的值来回应相应的信息。目标 ID 指定的相关信息如表 5.11:
![](https://i-blog.csdnimg.cn/blog_migrate/6b854153b276589830c80b755d1dc154.png)
识别功能由识别
API
完成,参照 “LIN 的API”
。表
5.12
列出了识别服务与
API
的对应关系
。
![](https://i-blog.csdnimg.cn/blog_migrate/03e81add01fb26207363eaa9af02ddad.png)
5、诊断功能
诊断功能是指 LIN
网络之外的诊断设备可以直接连接
LIN
的主机节点,或者通过外部的其它网络
(
例如 ISO11898 定义的
CAN
网络
)
连接主机节点,连接后,诊断设备可以按规定的诊断协议
(
例如 ISO15765 规范
)
与
LIN
的逻辑节点通讯。与配置功能相比,诊断功能是
LIN
网络作为一个整体对外呈现的可配置、可访问的属性。为了适应汽车行业的需要,
LIN 规范定义诊断服务时,参照了 ISO 制定的 UDS 标准和 OBD 标准。LIN 诊断功能是以上两个标准的子集,相同服务的 SID 也相同。
诊断功能的工作模型如下图
所示,它是配置功能工作模型的扩展。主机节点在此扮演了一个
“
网关
”
的角色,在诊断设备和 LIN
网络之间传递服务请求和应答。
![](https://i-blog.csdnimg.cn/blog_migrate/97c19091ca4c7685674266bb50174404.png)
诊断功能的实用意义可以用一个例子来说明:假设采用 LIN
子网的车门连接在底盘
CAN
网络上,诊断车门故障时,只需要把 OBD
设备连接于车载计算机的
CAN 接口即可,而不需要拆下车门;确定车门故障点后,拆下车门维修完毕,只需把 OBD 设备连接于车门的 CAN 接口,就能确认门是否已被修好,而不需要事先把车门装回。
一般而言,节点的计算能力与成本成正比。应用层的四项功能中,
只有诊断功能可以根据具体产品而灵活裁减,其余的功能都是固定而且必须的。
诊断功能的可裁减性体现在两方面:实现方式以及支持的服务种类,这些都是直接影响着节点计算负荷的因素。
5.1 诊断方式
LIN 网络有三种方式来实现诊断功能,它们的差别在于传输层的复杂度,因为拆分
/
重组需要一定的计算量,这些方式如下表 5.13
所示,另外可参考图
5.2
。
5.2 诊断类型(Diagnostic Class)
逻辑节点功能越复杂,支持的服务越多,对逻辑节点的计算能力要求就越高。
依据诊断服务的数量,
LIN 规范划分出三种不同的诊断类型——I 类、II 类和 III 类,
适用于不同条件的逻辑节点。
I 类最低,III 类最高,较高类型完全包含较低类型的功能。
I 类是所有诊断类型的公共部分,提供信号处理、识别、配置功能,诊断功能采用表
5.13 中的方式 A,这也是每个逻辑节点必备的服务。
II 类节点增加了 UDS 定义的识别服务(注 1),诊断方式一般采用表 5.13 中的方式 B。
III 类节点相比 II 类节点,又增加了 UDS 定义的部分其它服务,此外,还增加了通过 LIN 总线在线升级的功能。
注:
1.
请注意区别
UDS
定义的识别服务与
5.2.4
描述的识别服务。
诊断类型的关联如图
5.8
所示。