lin总线可以控制几个节点_汽车上除了CAN通讯还有另外一种总线你需要知道
本文首發自微信公眾號“汽車技術館”!
在前幾天的一篇關于UDS診斷的文章中給大家提到了LIN的UDS實現標準,原文鏈接如下:
李大人:UDS(ISO14229)診斷協議-LIN?zhuanlan.zhihu.com有不少的朋友在后臺留言說還不太清楚LIN總線是個啥,在沒有了解LIN總線之前理解基于UDS的實現著實有點困難,所以今天這篇文章給大家分享一下LIN通訊。
什么是LIN總線?
LIN是Local Interconnect Network的縮寫,翻譯成中文就是局域互聯網絡。大家應該知道CAN是Controller Area Network 的縮寫,翻譯成中文就是控制局域網絡。其實,說白了,兩個都是局域網絡,只是兩個通訊的機制有所不同而已。
那么有朋友可能會問了,既然都是局域網絡,為什么有了CAN還需要LIN呢,這里需要補充一點知識,CAN的出現時間是20世紀的八十年代,而LIN的出現則到了二十世紀末,所以LIN的出現是明顯晚于CAN的,那么LIN為什么會出現呢?這就要主要歸因于LIN的成本優勢了,LIN的通訊雖然不如CAN 那么高端,但是它的價格明顯低于CAN,而在整車的一些應用中則不需要CAN這么復雜的通訊方式,比如車燈,車門,一些簡單的傳感器和執行器,那么使用LIN就是一種很好的選擇,所以LIN才有了廣泛的應用。
LIN通訊的信號結構是什么樣的?
前面一部分我們提到了LIN類似于CAN也是局域網絡,局域網絡通訊就需要信號,LIN的信號結構是怎么樣的呢?
了解過CAN通訊的朋友應該知道,通訊是基于幀的,LIN也不例外,也是基于幀的通訊,LIN的幀結構如下:
一個完整的LIN幀包含以下幾個部分:
同步間隔段
同步間隔段至少是由13位的顯性電平組成,由于幀中的所有間隙或者總線空閑時總線均保持隱性電平狀態。所以同步間隔段可以標志一個幀的開始。其中同步間隔段的間隔符至少為1位隱性電平。
同步段
LIN同步以下降沿為判斷標志,采用字節0x55(01010101b)進行同步。在從機節點上可以不采用高精度的時鐘,由此帶來的偏差,需要通過同步段來進行調整。
受保護的ID-即PID
受保護的ID的前6位叫做幀的ID,加上兩個奇偶校驗碼后稱作受保護的ID。幀ID的取值范圍為0x00~0x3f總共64個,幀ID標識了幀的類別和目的地。從機任務會根據幀頭ID作出反應(接收/發送/忽略應答)。其中P0與P1效驗如下:
很多初次了解LIN通訊的朋友很容易搞混這里提到的PID的概念,因為一般在通訊中定義的都是frameID,而不是PID,尤其典型的就是LIN的描述文件LDF中,定義的每一幀信號都是frameID,不會定義PID,一下子就會讓很多人把這兩個概念搞混。當然,從我們給大家分享的內容可以看出,frameID和PID是存在一一對應的關系的,PID只是需要frameID通過算法加上第七位和第八位的數據之后組成的新字節的數值。只有前六位是留給frameID定義的,所以這就是為什么frameID的范圍只能到63的原因,六位能表示的最大值只有64啊!
有的朋友可能會問了,既然frameID和PID存在一一對應的關系,為什么還需兩個數值呢,像CAN通訊一樣使用一個CANID不就可以了嗎?大家知道在通訊的領域里面,一個很重要的要求就是安全,CAN通訊為什么使用雙絞線,因為雙絞線的差分信號可以相互檢查,確保信號傳輸的準確性,如果不是為了這種目的其實CAN單線也可以完成,無非就是把0和1在總線上表示出來,一條總線的高低電平就夠了,所以之所以雙線也是為了信息的準確性和可靠性。對于LIN來說,就真的是單線的了,單線傳輸就很容易會受到干擾,把低電平弄成高的了,把高電平弄成低的了,是有可能會發生的,所以大家看到PID是如何生成的,是把frameID的各個位進行于運算得來的,如果某一位出現了問題,那么算出的PID和原來的就不一樣了,這樣就會發現出現了問題,所以它叫PID,受保護的ID。
數據段
數據段可以包含1-8個字節,其中包含有兩種數據類型,信號(singal)和診斷消息(diagnostic messages)。信號由信號攜帶幀傳遞,診斷消息由診斷幀傳遞。
校驗和段
校驗和段是為了對幀傳輸內容進行校驗。效驗分為標準型效驗與增強型效驗。采用標準型還是增強型是由主機節點管理,目前的LIN通訊協議最新的是2.2A版本,在LIN2.0以上的通訊中,通訊使用的全部都是增強型校驗,而診斷幀使用的則是標準型校驗。而LIN2.0以下的版本中,所有的使用的都是標準型校驗。
標準型校驗是在計算校驗和段的時候使用的計算數據只包含數據段的數據,根據數據段的定義可能是2、4、6、8個字節。
舉例來說:校驗和 = DATA0 + DATA1 +DATA2 +......+DATA7;
增強型校驗是在計算校驗和段的時候使用的計算數據不止包含數據段的數據還包含PID的數據。
舉例來說:校驗和 = DATA0 + DATA1 +DATA2 +......+DATA7 +PID;
因為校驗和只有一個字節,所以計算校驗和時超過八位的數據高位去除。
LIN通訊的時候是如何工作的?
上面我們介紹了LIN的幀結構,有了幀結構后邊我們就要給大家說一說總線怎么通訊起來了,LIN的通訊是基于調度的,何為調度?就是必須要有一個總的協調者,這個協調者需要管理整個LIN總線的通訊情況,而它就是主節點——一個LIN通訊中不可或缺的角色。
在一個LIN的幀結構中都包含一個frameID,這個frameID只有主節點可以發出,從節點雖然被定義了frameID,但是這個frameID永遠都不會由自己發出,定義的目的只是讓從節點知道,如果總線上出現了這個frameID就要知道這是自己的,這個時候需要自己做出響應,只要主節點不發送自己對應的frameID,自己永遠不要響應。
既然這樣那就好說了,主節點只要通過frameID的發送秩序來控制總線的通訊就可以了,主節點發出frameID一般分為兩類
第一類:frameID后邊跟著數據,這種幀一般都屬于控制幀,用來給從節點發送控制信號的,從節點接收到這樣的frameID的時候需要處理的是把總線的數據讀取回來,針對響應的數據進行處理;
如下:
第二類:單純的frameID,后邊沒有數據,這樣的幀一般都是響應frameID,是需要從節點根據總線的framID進行響應,當從節點監測到總線出現自己的frameID時,需要把自己需要響應的數據發送到總線上去,讓主節點可以從總線讀取到自己想要的數據。
既然有這樣的機制,主節點想要調度所有的節點的時候,只要循環的發送不同的frameID就可以了,如下圖所示:
LIN通訊有哪些特點?
低成本:基于通用UART 接口幾乎所有微控制器都具備LIN 必需的硬件;
極少的信號線即可實現國際標準ISO9141 規定;
傳輸速率最高可達20Kbit/s,一般才有19.2K;
單主控器/多從設備模式無需仲裁機制;
從節點不需晶振或陶瓷震蕩器就能實現自同步,節省了從設備的硬件成本;
保證信號傳輸的延遲時間;
不需要改變LIN 從節點的硬件和軟件就可以在網絡上增加節點;
通常一個LIN 網絡上節點數目小于12 個共有64 個標志符;
關于LIN總線今天就說這么多,有些東西還沒有涉及到,擔心篇幅太長不太便于大家的閱讀,后續再寫一篇文章進行后續的分享,還會包含的內容有:LIN的診斷幀、LDF文件的定義、常用的LIN通訊工具、LIN的測試等等。有興趣的朋友可以在互動區留言!
總結
以上是生活随笔為你收集整理的lin总线可以控制几个节点_汽车上除了CAN通讯还有另外一种总线你需要知道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react循环key值_React源码揭
- 下一篇: 销售流程图_每天一个流程图制作——销售发