用于汽车网络开发的局域互联网LIN总线详解文档格式.docx
《用于汽车网络开发的局域互联网LIN总线详解文档格式.docx》由会员分享,可在线阅读,更多相关《用于汽车网络开发的局域互联网LIN总线详解文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
![用于汽车网络开发的局域互联网LIN总线详解文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/16/78ce8049-d62c-42dc-806b-2cf55b3f978c/78ce8049-d62c-42dc-806b-2cf55b3f978c1.gif)
ID表示特定的消息地址,而非目标。
接收并解码ID后,从方开始消息响应,该消息响应包含1至8字节的数据以及一个8位校验和。
主方控制消息帧的排序,该排序在调度中是固定的。
用户可按需改变该调度。
LIN标准更新过多个版本。
1.3版本最终确定了字节层通信。
2.0和2.1版本新增了更多消息规范和服务,但仍与LIN1.3版本的字节层兼容。
功能
NIUSBLIN是否支持
LIN1.3
支持
LIN2.0
支持1
增强的校验和
现成的从节点概念
NCF格式
诊断及从节点配置
字节数组
LIN2.1
新从节点配置服务
从方诊断(I-III类)
功能寻址
解析表
API对该功能不提供原生支持,但用户依然可实现该功能。
表1.LIN1.3、2.0及2.1版本对比
2.LIN帧格式
LIN总线是一种轮询总线,带有一个主设备和一个或多个从设备。
主设备同时包含一个主任务和一个从任务。
每个从设备仅包含一个从任务。
LIN总线上的通信完全由主设备上的主任务控制。
LIN总线上传输的基本单位是帧,每帧又分为标题和响应。
标题总是通过主节点传输,包含3个不同的字段:
中断、同步(sync)及标识符(ID)。
响应通过从任务传输,可位于主节点或从节点中,包含一个数据载荷及一个校验和。
通常,主任务通过传输标题,在循环中轮询每个从任务。
该标题包含一个中断-同步-ID序列。
启动LIN之前,每个从任务被配置为根据接收到的标题ID向总线发布数据或从总线订阅数据。
一旦收到标题,每个从任务将验证ID校验,并检查ID,以决定选择发布或订阅。
若从任务需要发布响应,将向总线传输1至8数据字节,后接1个校验和字节。
若从任务需要订阅,将从总线读取数据载荷和校验和字节,并采取适当的内部动作。
对于标准从至主通信,主方广播标识符至网络,仅有一个从方响应数据载荷。
主至从通信伴随着一个主节点中的独立从任务。
该任务自我接收发布至总线的全部数据,并以独立从节点的方式响应。
为了传输数据字节,主方必须首先根据需要传输的数据值,升级其内部从任务的响应。
接着,主方将发布合适的帧标题,内部从任务传输其数据载荷至总线。
图2.LIN消息帧
1.中断
每个LIN帧都以中断作为开始,包含13个显性位(额定),后接一个1位(额定)隐性中断分隔符。
中断的作用是将帧的开始通知给总线上的所有节点。
2.同步
同步字段是主任务在标题中传输的第二个字段。
同步被定义为字符x55。
同步字段允许进行自动波特率检测的从设备测量波特率周期,并调节其内部波特率,与总线进行同步。
3.ID
ID字段是主任务在标题中传输的最后一个字段。
该字段识别网络上的每条消息,并最终决定由网络中的哪些节点接收或响应每个传输。
所有从任务连续监听ID字段、验证其校验,并决定其是否是该特定标识符的发布者或订阅者。
LIN总线一共能提供64个ID。
ID0~59用于信号携带(数据)帧,60和61用于携带诊断数据,62预留给用户自定义扩展,63预留给未来协议升级。
ID作为一个受保护的ID字节通过总线传输,低6位包含原始ID,高2位包含校验。
受保护的ID(7:
6)
受保护的
ID(5:
0)
P
(1)
P(0)
ID
(1)^ID(3)^ID(4)^ID(5)
ID(0)^ID
(1)^ID
(2)^ID(4)
0–63
表2.校验计算方法
4.数据字节
从任务在响应中传输数据字节字段。
该字段包含1至8字节的载荷数据字节。
5.校验和
从任务在响应中传输校验和字段。
LIN总线采用2个校验和算法之一,以计算8位校验和字段中的值。
经典校验和的计算方法是单独累加数据字节,而增强校验和的计算方法则是累加数据字节及受保护的ID。
LIN2.0规范将校验和的计算过程定义为:
累加所有值,且当总和大于等于256时减去255(与modulo-255或modulo-256不同)。
根据LIN2.0标准,经典校验和用于LIN1.3从节点,而增强校验和用于LIN2.0从节点。
该规范进一步规定,ID60~63应该总是使用经典校验和。
NILIN接口允许设置校验和类型为经典或增强。
默认设置为经典。
根据LIN2.0规范,无论如何设置校验和属性,ID60~63总是使用经典校验和。
图3显示了主任务标题和从任务响应如何组合成一个完整的LIN帧。
图3.创建LIN帧
3.LIN总线定时
由于LIN总线是轮询总线,处理每帧分配的额定时间槽如下:
THeader_Nominal=34*TBit
TResponse_Nominal=10*(NData+1)*TBit
TFrame_Nominal=THeader_Nominal+TResponse_Nominal
处理每帧分配的最大时间槽如下:
THeader_Maximum=14*THeader_Nominal
TResponse_Maximum=1.4*TResponse_Nominal
TFrame_Maximum=THeader_Maximum+TResponse_Maximum
4.LIN拓扑结构及行为
LIN总线连接一个主设备(节点)和一个或多个从设备(节点),成为一个LIN簇。
对应的功能文件描述了该节点的行为。
节点功能文件输入系统定义工具,生成LIN描述文件(LDF),描述整个簇的行为。
系统生成器解析LDF,自动生成目标节点中的特定行为。
此时,按照LDF中指定的方式,主节点主任务开始在总线上传输标题,簇中的所有从任务(包括主节点自己的从任务)开始响应。
总体来说,LDF用于配置及创建LIN簇的调度行为。
例如,LDF定义了波特率、主任务传输标题时的顺序及时间延迟,以及响应时每个从任务的行为。
NILIN硬件及用于LIN的NI-CAN帧API无法为LDF提供原生的完整支持,即用户无法下载调度行为至硬件。
但是,硬件提供了访问总线的底层支持(写入标题及发布或订阅作为响应),用户可在应用程序层创建调度行为。
正如在NILIN响应输入帧类型的描述中所说,NILIN硬件采用响应队列存储从任务响应。
响应队列保留64个响应,与每个为LIN指定的(最多64个)ID一一对应。
这将确保LIN接口的从任务可在LIN规范规定的响应时间内响应标题。
用于LIN的NI-CAN帧API可通过一种稳健的方式完成与LIN总线的底层交互。
终端用户可使用基本功能,开发复杂应用程序,包括分析及原型化LIN网络。
用于LIN的NI-CAN帧API无法为LIN诊断或配置、LDF或调度表提供原生支持。
但是,用户可在采用用于LIN的NI-CAN帧API的应用程序中实现这些任务。
5.LIN错误检测及限制
LIN2.0规范声明,应当由从任务处理错误检测,且主任务的错误监控不是必需的。
LIN2.0规范不要求在一个LIN帧中处理多个错误,也不要求使用错误计数器。
一旦在帧内遇到第一个错误,从任务将中止帧处理,直到检测到下一个中断-同步序列(在主任务传输的下一个标题中)。
若记录总线错误属性设置为true,那么总线错误帧将记录至读取队列。
若记录总线错误属性设置为false,ncWriteNet或ncWriteNetMult将返回错误。
LIN还可向网络提供错误报告。
LIN2.0规范定义了一个Response_Error状态位,其中,从设备需在其传输的一帧中向主设备报告。
当从节点接收或传输的帧的响应字段中包含错误,该位设置完毕。
通过从任务的已发布响应中传输后,该状态位就被清空。
用于LIN的NI-CAN帧API无法对Response_Error状态位提供原生支持,但终端用户可在应用程序层轻松实现该功能。
该过程将记录总线错误属性设置为1,允许在读取队列中记录总线错误帧。
错误代码代表响应中的错误,应用程序可通过该代码,监控总线错误帧的读取。
这时,应用程序将在局部变量中设置一个Response_Error状态位。
应用程序可使用NILIN响应输入帧类型,更新从响应队列中包含Response_Error状态字段的数据,并清空局部变量中的字段。
6.LIN睡眠和唤醒
LIN的特色是允许设备进入睡眠状态并节约用电。
根据LIN2.0规范,当主任务发送的诊断主要求帧(ID=60)首个数据字节等于0时,所有从任务必须进入睡眠模式。
该特殊帧称为睡眠命令。
若LIN的非活动时间大于4秒,从任务也将自动进入睡眠模式。
用于LIN的NI-CAN帧API允许用户在应用程序层将LIN接口设置为睡眠模式,提供了极大的便利性。
一旦接收到包含睡眠请求信息的完整帧,或表明总线非活动时间超过4秒的总线非活动帧,用户可设置LINSleep属性为TRUE,让LIN接口进入睡眠模式。
LIN还可唤醒总线上的设备。
总线上的任何节点都可发起唤醒任务(不论是从节点还是主节点)。
根据LIN2.0规范,强制总线显性时间持续250µ
s至5ms可触发唤醒请求。
每个从节点应当检测唤醒请求,并在100ms内准备好处理标题。
主节点也应当检测唤醒请求,并在从节点准备完毕时开始发送标题(在接收到唤醒请求的100ms至150ms内)。
若主节点未在接收首个唤醒请求后的150ms内发送标题,请求唤醒的从节点可能发起第二次唤醒请求(并再次等待150ms)。
若主节点仍无响应,从节点将发起第三次唤醒请求,并再次等待150ms。
若仍然无响应,从节点必须等待1.5秒,才可发起第四次唤醒请求。
根据LIN2.0规范,用于LIN的NI-CAN帧API允许执行唤醒,无论LIN接口作为主设备还是从设备运行。
7.高级帧类型
LIN2.0规范进一步将LIN帧分为6种类型:
1、无条件型
2、事件触发型
3、偶发型
4、诊断型
5、用户定义型
6、预留型
值得指出的是,不同帧类型之间的区别在于其传输方式的定时,或数据字节的内容。
不论属于哪种类型,一个完整的LIN帧总是包含一个由主任务传输的标题和一个由从任务传输的响应。
用于LIN的NI-C