5. LIN錯誤檢測及限制
LIN 2.0規(guī)范聲明,應(yīng)當(dāng)由從任務(wù)處理錯誤檢測,且主任務(wù)的錯誤監(jiān)控不是必需的。LIN 2.0規(guī)范不要求在一個LIN幀中處理多個錯誤,也不要求使用錯誤計(jì)數(shù)器。一旦在幀內(nèi)遇到第一個錯誤,從任務(wù)將中止幀處理,直到檢測到下一個中斷-同步序列(在主任務(wù)傳輸?shù)南乱粋€標(biāo)題中)。若記錄總線錯誤屬性設(shè)置為true,那么總線錯誤幀將記錄至讀取隊(duì)列。若記錄總線錯誤屬性設(shè)置為false,ncWriteNet或ncWriteNetMult將返回錯誤。
LIN還可向網(wǎng)絡(luò)提供錯誤報告。LIN 2.0規(guī)范定義了一個Response_Error狀態(tài)位,其中,從設(shè)備需在其傳輸?shù)囊粠邢蛑髟O(shè)備報告。當(dāng)從節(jié)點(diǎn)接收或傳輸?shù)膸捻憫?yīng)字段中包含錯誤,該位設(shè)置完畢。通過從任務(wù)的已發(fā)布響應(yīng)中傳輸后,該狀態(tài)位就被清空。用于LIN的NI-CAN幀API無法對Response_Error狀態(tài)位提供原生支持,但終端用戶可在應(yīng)用程序?qū)虞p松實(shí)現(xiàn)該功能。該過程將記錄總線錯誤屬性設(shè)置為1,允許在讀取隊(duì)列中記錄總線錯誤幀。錯誤代碼代表響應(yīng)中的錯誤,應(yīng)用程序可通過該代碼,監(jiān)控總線錯誤幀的讀取。這時,應(yīng)用程序?qū)⒃诰植孔兞恐性O(shè)置一個Response_Error狀態(tài)位。應(yīng)用程序可使用NI LIN響應(yīng)輸入幀類型,更新從響應(yīng)隊(duì)列中包含Response_Error狀態(tài)字段的數(shù)據(jù),并清空局部變量中的字段。
6. LIN睡眠和喚醒
LIN的特色是允許設(shè)備進(jìn)入睡眠狀態(tài)并節(jié)約用電。根據(jù)LIN 2.0規(guī)范,當(dāng)主任務(wù)發(fā)送的診斷主要求幀(ID=60)首個數(shù)據(jù)字節(jié)等于0時,所有從任務(wù)必須進(jìn)入睡眠模式。該特殊幀稱為睡眠命令。若LIN的非活動時間大于4秒,從任務(wù)也將自動進(jìn)入睡眠模式。用于LIN的NI-CAN幀API允許用戶在應(yīng)用程序?qū)訉IN接口設(shè)置為睡眠模式,提供了極大的便利性。一旦接收到包含睡眠請求信息的完整幀,或表明總線非活動時間超過4秒的總線非活動幀,用戶可設(shè)置LIN Sleep屬性為TRUE,讓LIN接口進(jìn)入睡眠模式。
LIN還可喚醒總線上的設(shè)備??偩€上的任何節(jié)點(diǎn)都可發(fā)起喚醒任務(wù)(不論是從節(jié)點(diǎn)還是主節(jié)點(diǎn))。根據(jù)LIN 2.0規(guī)范,強(qiáng)制總線顯性時間持續(xù)250 μs至5 ms可觸發(fā)喚醒請求。每個從節(jié)點(diǎn)應(yīng)當(dāng)檢測喚醒請求,并在100 ms內(nèi)準(zhǔn)備好處理標(biāo)題。主節(jié)點(diǎn)也應(yīng)當(dāng)檢測喚醒請求,并在從節(jié)點(diǎn)準(zhǔn)備完畢時開始發(fā)送標(biāo)題(在接收到喚醒請求的100 ms至150 ms內(nèi))。若主節(jié)點(diǎn)未在接收首個喚醒請求后的150 ms內(nèi)發(fā)送標(biāo)題,請求喚醒的從節(jié)點(diǎn)可能發(fā)起第二次喚醒請求(并再次等待150 ms)。若主節(jié)點(diǎn)仍無響應(yīng),從節(jié)點(diǎn)將發(fā)起第三次喚醒請求,并再次等待150 ms。若仍然無響應(yīng),從節(jié)點(diǎn)必須等待1.5秒,才可發(fā)起第四次喚醒請求。根據(jù)LIN 2.0規(guī)范,用于LIN的NI-CAN幀API允許執(zhí)行喚醒,無論LIN接口作為主設(shè)備還是從設(shè)備運(yùn)行。
7. 高級幀類型
LIN 2.0規(guī)范進(jìn)一步將LIN幀分為6種類型:
1、無條件型
2、事件觸發(fā)型
3、偶發(fā)型
4、診斷型
5、用戶定義型
6、預(yù)留型
值得指出的是,不同幀類型之間的區(qū)別在于其傳輸方式的定時,或數(shù)據(jù)字節(jié)的內(nèi)容。不論屬于哪種類型,一個完整的LIN幀總是包含一個由主任務(wù)傳輸?shù)臉?biāo)題和一個由從任務(wù)傳輸?shù)捻憫?yīng)。用于LIN的NI-CAN幀API可處理各種LIN指定幀類型。無條件幀類型最為常用。無條件幀可攜帶信號(數(shù)據(jù)),標(biāo)識符位于0~59的區(qū)間內(nèi)。
事件觸發(fā)幀類型試嘗試預(yù)留總線帶寬,方法是在一個幀槽時間內(nèi)從多個從節(jié)點(diǎn)請求一個無條件幀響應(yīng)。
事件觸發(fā)幀的ID位于0~59的范圍內(nèi)。若主節(jié)點(diǎn)從無條件幀對其發(fā)起查詢,每個可能響應(yīng)事件觸發(fā)型標(biāo)題ID的從節(jié)點(diǎn)將在首個數(shù)據(jù)字段載入其需要響應(yīng)的受保護(hù)ID。事件觸發(fā)幀的工作原理如下。主方在標(biāo)題中寫入一個事件觸發(fā)ID。從方在數(shù)據(jù)更新時,只響應(yīng)事件觸發(fā)ID。
若僅有一個從方發(fā)布響應(yīng),主方將接受該響應(yīng),并在讀取第一個數(shù)據(jù)字段后了解哪個從方(根據(jù)受保護(hù)的ID)發(fā)布了該響應(yīng)。若有多個從方發(fā)布響應(yīng),將發(fā)生碰撞,主設(shè)備的從任務(wù)將報告總線錯誤。主設(shè)備將通過無條件幀從每個從方查詢響應(yīng)。
偶發(fā)幀嘗試向LIN提供一些動態(tài)行為。偶發(fā)幀總是攜帶信號(數(shù)據(jù)),ID范圍為0~59。當(dāng)主任務(wù)知道幀內(nèi)數(shù)據(jù)值(信號)已更新時,偶發(fā)幀的標(biāo)題應(yīng)當(dāng)僅在其幀槽內(nèi)發(fā)送。該要求使主設(shè)備的從任務(wù)成為偶發(fā)幀響應(yīng)的標(biāo)準(zhǔn)發(fā)布者。
診斷幀的長度總是8數(shù)據(jù)字段,攜帶診斷或配置數(shù)據(jù)。對于主請求幀,其ID為60;對于從請求幀,其ID為61。用戶定義幀的ID為62,可攜帶任意類型的信息。保留幀的ID為63,且必須在LIN 2.0簇內(nèi)使用。
8. 推薦的PC LIN接口
NI-XNET LIN
NI-XNET產(chǎn)品線包括加速的CAN、LIN以及FlexRay接口;優(yōu)化的驅(qū)動;易用的API;以及配置和調(diào)試工具。通過NI-XNET接口,用戶可在NI LabVIEW、LabVIEW Real-Time和C/C++中更加快捷簡單地開發(fā)應(yīng)用程序,用于原型設(shè)計(jì)、仿真和測試CAN、LIN以及FlexRay網(wǎng)絡(luò)。
NI-XNET PCI/PXI及C系列LIN接口還具備集成式LDF支持、硬件定時調(diào)度主任務(wù)以及幀和信號通信。
?
?
圖4. 用于CAN、LIN和FlexRay的NI-XNET平臺
了解更多關(guān)于NI-XNET CAN、LIN以及FlexRay接口的信息
NI USB LIN
?
圖5. NI USB-8476 LIN接口
用戶還可通過NI?USB-8476 LIN接口與LIN設(shè)備進(jìn)行通信。這是一種廉價、可移動的與LIN網(wǎng)絡(luò)進(jìn)行通信的方法。 ?
評論