目录
5.2.3.1 节点存储模型
5.2.3.2 从机节点 NAD 配置(SID:0xB0)
5.2.3.3 读取服务识别功能(SID:0xB2)
5.2.3.4 从机节点 PID 配置(SID:0xB7)
LIN 规范规定,每个逻辑节点都应该有 NAD(从机地址)。在网络运行期间,任意两个逻辑节点的 NAD 都必须不同,否则就会产生冲突。此外,每个逻辑节点都要能处理带有某些 PID 的帧。由此可见, NAD 和 PID 分别与逻辑节点建立了一种映射关系, LIN 规范把 NAD 和 PID 的这样一种组合称为逻辑节点的配置项(Configuration)。一个逻辑节点可以有一个以上的配置项,但在网络运行期间,每个逻辑节点只能有一个配置项有效。
配置功能是指 LIN 的主机节点能自动地给所有逻辑节点选择配置项,消除 NAD 和 PID 分配中存在的冲突,使网络正常工作。配置功能是确保各节点协调运作的内部功能,包含分配 NAD、分配 PID 等服务。配置功能通过传输层完成配置服务。
为了适应汽车行业的需要, LIN 规范定义配置功能的服务时,参照了 ISO 制定的 UDS(Unified Diagnostic Services,车辆统一诊断服务)标准和 OBD(On-board Diagnostic,车载自动诊断)标准。配置功能各项服务及其 SID 都是 ISO 标准的子集。
配置功能的工作模型与计算机局域网的“客户机-服务器”模型很相似,如图 5.4 所示。主机节点可以被视为客户机,逻辑节点被视为服务器。客户机首先向服务器发出服务请求,服务器依照请求执行操作,然后向客户机返回应答。
如图 5.5,节点存储模型
如同商品包装上的条形码,每个物理节点都有一个固定的编码,叫做 LIN 产品代号(LIN Product Identification)。产品代号是出厂时赋予的,除非修改产品,否则其内容不变。产品代号保存在不需要电源就能维持记录的地方,例如 ROM 或者非易失性存储器(Non-volatile Random Accessible Memory, NVRAM)。在进行配置服务时,从主机接收的产品代号必须和从机节点保存的产品代号一致,才能正常进行配置服务。
(厂商ID是一个16位的数字,最高位是0,由LIN协会规定)
(功能ID是一个16位数字,由各供应商规定)
(可变ID是一个8位的数字,用于区分同网络中相同功能的节点)
(产品代号保存在各节点的ROM中,不进行更改)
属性 | 通配符 |
NAD | 0x7F |
厂商ID | 0x7FFF |
功能ID | 0xFFFF |
NAD的通配符0x7F用来访问所有节点的地址。
厂商ID和功能ID可以代表所有未定义的厂商和功能。
(用法:读取服务识别功能0xB2时,通配符代替需要写入的厂商ID等,获取真正的厂商ID等)
另外,从机节点还可以有一个序列号,用于识别特殊的节点。序列号大小为 4 字节。
从机节点可以将配置信息保存起来,重启后调用保存的配置信息,而无需主机节点再次分配。
针对配置项的存储类型, LIN 规范定义了三种从机节点配置模型:
第一种,无配置节点,这种从机节点在重启后,自身没有配置项,每次重启都需要主机进行配置。
第二种,预配置节点,这种从机节点在重启后,调用预先设置的配置项。但是在主机重新对其进行配置后,不能存储新配置项。
第三种,全功能配置节点,这种从机节点可以保存主机对其的配置,并在重启后调用此配置。
(根据厂商ID,功能ID和可变ID重新设定NAD,解决节点地址重复问题)
有三种方法生成配置 NAD,如果初始 NAD 等于配置 NAD,那么不需要进行其他配置操作。如果配置 NAD需要从从机节点存储的保留配置中提取,需要调用 ld_set_configuration 进行配置,如果 NAD 需要变更,则需要主机发送配置 NAD 请求。
主机节点给从机节点分配 NAD 是通过 Assign NAD 服务完成的。首先主机节点向从机节点发送配置 NAD请求,如果从机节点配置成功,从机节点会应答。
分配 NAD 服务的 PDU 结构如表 5.7 所示
注意,应答时,仍然使用初始 NAD。
(上面的应答是肯定应答,否定应答RSID:0x7F)
每个从机节点有一个初始 NAD,初始 NAD 是从一个初始 NAD 列表中选择的。初始 NAD 列表是在编写节点性能文件(NCF)时设置的。 LIN 协议没有对生成初始 NAD 的具体方法进行限制。
(注意:SID:0xB1在LIN2.0协议以上已经过时了,一般用0xB7代替)
识别功能是指主机节点能够获取逻辑节点的信息,例如产品代号等。借助识别功能,主机节点和逻辑节点还可以实现一些自定义的操作。
识别功能与上面介绍的配置功能使用同样的工作模型,如图 5.4 所示。识别服务中,主机发送的请求 PDU 单元结构如表 5.10:
(对于1条报文最多可以设定4个ID,从而避免ID重复。比起LIN2.0的0xB1设定的时间更短)
从机节点各个帧的 PID,是主机进行分配的。通过分配 PID 列服务,主机一次最多可给从机节点分配 4 个帧的 PID。
分配 PID 列服务的 PDU 结构如表 5.8 所示: