5. LIN错误检测及限制
LIN 2.0规范声明,应当由从任务处理错误检测,且主任务的错误监控不是必需的。LIN 2.0规范不要求在一个LIN帧中处理多个错误,也不要求使用错误计数器。一旦在帧内遇到第一个错误,从任务将中止帧处理,直到检测到下一个中断-同步序列(在主任务传输的下一个标题中)。若记录总线错误属性设置为true,那么总线错误帧将记录至读取队列。若记录总线错误属性设置为false,ncWriteNet或ncWriteNetMult将返回错误。
LIN还可向网络提供错误报告。LIN 2.0规范定义了一个Response_Error状态位,其中,从设备需在其传输的一帧中向主设备报告。当从节点接收或传输的帧的响应字段中包含错误,该位设置完毕。通过从任务的已发布响应中传输后,该状态位就被清空。用于LIN的NI-CAN帧API无法对Response_Error状态位提供原生支持,但终端用户可在应用程序层轻松实现该功能。该过程将记录总线错误属性设置为1,允许在读取队列中记录总线错误帧。错误代码代表响应中的错误,应用程序可通过该代码,监控总线错误帧的读取。这时,应用程序将在局部变量中设置一个Response_Error状态位。应用程序可使用NI LIN响应输入帧类型,更新从响应队列中包含Response_Error状态字段的数据,并清空局部变量中的字段。
6. LIN睡眠和唤醒
LIN的特色是允许设备进入睡眠状态并节约用电。根据LIN 2.0规范,当主任务发送的诊断主要求帧(ID=60)首个数据字节等于0时,所有从任务必须进入睡眠模式。该特殊帧称为睡眠命令。若LIN的非活动时间大于4秒,从任务也将自动进入睡眠模式。用于LIN的NI-CAN帧API允许用户在应用程序层将LIN接口设置为睡眠模式,提供了极大的便利性。一旦接收到包含睡眠请求信息的完整帧,或表明总线非活动时间超过4秒的总线非活动帧,用户可设置LIN Sleep属性为TRUE,让LIN接口进入睡眠模式。
LIN还可唤醒总线上的设备。总线上的任何节点都可发起唤醒任务(不论是从节点还是主节点)。根据LIN 2.0规范,强制总线显性时间持续250 µs至5 ms可触发唤醒请求。每个从节点应当检测唤醒请求,并在100 ms内准备好处理标题。主节点也应当检测唤醒请求,并在从节点准备完毕时开始发送标题(在接收到唤醒请求的100 ms至150 ms内)。若主节点未在接收首个唤醒请求后的150 ms内发送标题,请求唤醒的从节点可能发起第二次唤醒请求(并再次等待150 ms)。若主节点仍无响应,从节点将发起第三次唤醒请求,并再次等待150 ms。若仍然无响应,从节点必须等待1.5秒,才可发起第四次唤醒请求。根据LIN 2.0规范,用于LIN的NI-CAN帧API允许执行唤醒,无论LIN接口作为主设备还是从设备运行。
7. 高级帧类型
LIN 2.0规范进一步将LIN帧分为6种类型:
1、无条件型
2、事件触发型
3、偶发型
4、诊断型
5、用户定义型
6、预留型
值得指出的是,不同帧类型之间的区别在于其传输方式的定时,或数据字节的内容。不论属于哪种类型,一个完整的LIN帧总是包含一个由主任务传输的标题和一个由从任务传输的响应。用于LIN的NI-CAN帧API可处理各种LIN指定帧类型。无条件帧类型最为常用。无条件帧可携带信号(数据),标识符位于0~59的区间内。
事件触发帧类型试尝试预留总线带宽,方法是在一个帧槽时间内从多个从节点请求一个无条件帧响应。
事件触发帧的ID位于0~59的范围内。若主节点从无条件帧对其发起查询,每个可能响应事件触发型标题ID的从节点将在首个数据字段载入其需要响应的受保护ID。事件触发帧的工作原理如下。主方在标题中写入一个事件触发ID。从方在数据更新时,只响应事件触发ID。
若仅有一个从方发布响应,主方将接受该响应,并在读取第一个数据字段后了解哪个从方(根据受保护的ID)发布了该响应。若有多个从方发布响应,将发生碰撞,主设备的从任务将报告总线错误。主设备将通过无条件帧从每个从方查询响应。
偶发帧尝试向LIN提供一些动态行为。偶发帧总是携带信号(数据),ID范围为0~59。当主任务知道帧内数据值(信号)已更新时,偶发帧的标题应当仅在其帧槽内发送。该要求使主设备的从任务成为偶发帧响应的标准发布者。
诊断帧的长度总是8数据字段,携带诊断或配置数据。对于主请求帧,其ID为60;对于从请求帧,其ID为61。用户定义帧的ID为62,可携带任意类型的信息。保留帧的ID为63,且必须在LIN 2.0簇内使用。
8. 推荐的PC LIN接口
NI-XNET LIN
NI-XNET产品线包括加速的CAN、LIN以及FlexRay接口;优化的驱动;易用的API;以及配置和调试工具。通过NI-XNET接口,用户可在NI LabVIEW、LabVIEW Real-Time和C/C++中更加快捷简单地开发应用程序,用于原型设计、仿真和测试CAN、LIN以及FlexRay网络。
NI-XNET PCI/PXI及C系列LIN接口还具备集成式LDF支持、硬件定时调度主任务以及帧和信号通信。
图4. 用于CAN、LIN和FlexRay的NI-XNET平台
了解更多关于NI-XNET CAN、LIN以及FlexRay接口的信息
NI USB LIN
图5. NI USB-8476 LIN接口
用户还可通过NI USB-8476 LIN接口与LIN设备进行通信。这是一种廉价、可移动的与LIN网络进行通信的方法。
评论
查看更多