<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應用 > 【CAN高階】帶您認識ISO11898-4:時間觸發(fā)通訊

          【CAN高階】帶您認識ISO11898-4:時間觸發(fā)通訊

          作者:ZLG致遠電子 時間:2018-04-04 來源:電子產(chǎn)品世界 收藏

            總線通訊發(fā)展的過程中,為了兼容實時操作系統(tǒng),是否也有與之對應的實時通訊網(wǎng)絡協(xié)議呢?

          本文引用地址:http://www.ex-cimer.com/article/201804/377933.htm

            ISO11898之前3個部分的解讀提高了對傳統(tǒng)網(wǎng)絡的理解,無論是高速還是低速CAN,亦或者是最基礎(chǔ)的物理層定義都進行了詳細的闡述。傳統(tǒng)的CAN網(wǎng)絡總線通訊基本都是事件觸發(fā)的,當同時有許多信息需要傳輸時可能會造成總線過載,為了避免這種現(xiàn)象,傳統(tǒng)CAN網(wǎng)絡采用仲裁機制按信息優(yōu)先級進行傳輸。

              

            圖 1 新能源汽車CAN總線透視圖

            顯然,傳統(tǒng)分布式的CAN網(wǎng)絡如果能用于實時操作系統(tǒng)(基于時間觸發(fā)調(diào)度而非事件觸發(fā)),對于系統(tǒng)的兼容性和綜合集成性將大有提高,但問題是我們?nèi)绾尾拍軐⒉⒎峭瑯幼駨臅r間調(diào)度的兩者結(jié)合起來呢?

            一、時間觸發(fā)CAN

            1、概述

            時間觸發(fā)CAN是建立在標準CAN上的高層協(xié)議,它會對網(wǎng)絡中所有節(jié)點通訊進行同步調(diào)度,也就是每個節(jié)點在一個固定的時間里發(fā)送信息,這樣就不用再對信息進行優(yōu)先級仲裁,由于每個節(jié)點分配到的時間是固定的,所以還可以預判整個網(wǎng)絡的延遲時間。

            2、要實現(xiàn)這樣的時間觸發(fā)CAN通訊有兩種方式

            方式一:用于周期信息傳輸;

            方式二:支持全局系統(tǒng)時間傳輸。

            3、幾個重要概念

            基本周期:兩個參照幀之間的時間被稱為一個基本周期,基本周期由數(shù)個時間窗組成;

            參照幀:開始一個基本周期的數(shù)據(jù)幀,為網(wǎng)絡提供一個全局時間,其作用就好像格林尼治時間之于世界時間一樣,用以同步所有節(jié)點的時間;

            時間窗:系統(tǒng)矩陣里為傳輸信息分配的時間段,包括仲裁時間窗、自由時間窗和專用時間窗,見圖2。

              

            圖 2 一個周期內(nèi)的數(shù)個時間窗

            所謂的時間觸發(fā)就是上面已經(jīng)分配好的的數(shù)據(jù)從左到右按順序發(fā)送,下面介紹一下這三種時間窗

            專用時間窗(Exclusive Windows):用來傳輸特殊的周期信息,這些消息不會參與總線競爭,是置身事外的一個記錄員角色;

            仲裁時間窗(Arbitrating Windows):CAN節(jié)點在總線不是空閑的時候是不能傳輸消息的,而在時間觸發(fā)CAN的仲裁時間窗里可以安排網(wǎng)路內(nèi)的幾個節(jié)點同時發(fā)送報文,不過沒有重發(fā)功能;

            自由時間窗(Free Windows):保留用作系統(tǒng)擴展,可以配置成增加節(jié)點的仲裁時間窗或?qū)S脮r間窗,相當于機動部隊;

              

            圖 3 系統(tǒng)矩陣

            上圖的系統(tǒng)矩陣有4個基本周期,一個基本周期可由不同類型、長度的時間窗組成,矩陣的縱列也叫做傳輸陣,傳輸陣里的時間窗有相同的長度但是可以擁有不同類型。

            二、接收和發(fā)送

            明確完了概念,我們接下來了解時間觸發(fā)CAN是如何接收和發(fā)送信息的。

            1、信息的發(fā)送

            2、信息發(fā)送

            在時間觸發(fā)CAN網(wǎng)絡里,節(jié)點發(fā)送的信息由信息發(fā)送控制。信息發(fā)送會顯示信息是由系統(tǒng)矩陣里面的哪個時間窗以及怎么來進行傳輸?shù)摹?/p>

            所以信息發(fā)送觸發(fā)器有多個功能組,一是信息正確性判斷,二是發(fā)送的時間標示,三是判斷傳輸陣里的發(fā)送位置,四是重發(fā)因數(shù),一個信息發(fā)送觸發(fā)器的觸發(fā)條件滿足時,即使信息的傳輸出錯導致信息失效時它也將立即啟動。

              

            圖 4 舉例一個專用信息的發(fā)送觸發(fā)器

            上圖是一個專用信息D的信息發(fā)送觸發(fā)器,它表述了在系統(tǒng)矩陣里第三個基本周期的第五個時間窗(專用窗)發(fā)送,周期偏差為0,重發(fā)因素為2。

            三、信息的接收

            1、信息接收觸發(fā)器

            在時間觸發(fā)CAN里,信息的接收是由信息接收觸發(fā)器控制的,信息接收觸發(fā)器的構(gòu)成與上述的信息發(fā)送觸發(fā)器一樣,信息接收觸發(fā)器的時標會在信息接受完成后確定時間點。

            2、參照幀的發(fā)送

            3、信息接收觸發(fā)器

            參照幀發(fā)送觸發(fā)器是一個特殊的信息發(fā)送觸發(fā)器,它只存在于備用的時間主節(jié)點里。在嚴格的時間觸發(fā)網(wǎng)絡中,只用唯一的一個參照幀發(fā)送觸發(fā)器來確保參照幀的周期發(fā)送,只要時間到了,參照幀就會被發(fā)送。

            而在事件同步的基本周期系統(tǒng)中會有兩個參照幀發(fā)送觸發(fā)器,其中一個參照幀發(fā)送觸發(fā)器按系統(tǒng)矩陣基本周期定時發(fā)送,另一個作為后備,在事件同步異常時重新發(fā)送參照幀。

            四、時間主節(jié)點初始化和錯誤處理

            1、時間主節(jié)點初始化概念

            雖然正常通訊建立起來時只有一個時間主節(jié)點,但在時間觸發(fā)CAN中備用的時間主節(jié)點可能超過8個。系統(tǒng)啟動時,硬件初始化,所有備用時間主節(jié)點根據(jù)優(yōu)先級和等待時間可以開始嘗試發(fā)送參照幀。硬件初始化后有高優(yōu)先級的CAN標識符的幀同步實體(數(shù)據(jù)鏈路層和媒體訪問控制層的執(zhí)行單元)可以優(yōu)先傳輸。

            2、錯誤處理

            CAN的失效處理遵循ISO 11898-1的規(guī)定,當幀同步實體檢測到調(diào)度表有誤時,會通過CAN的ISO 11898-1協(xié)議來處理。

              

            圖 5 錯誤處理

           

           

           

           

           



          關(guān)鍵詞: CAN 觸發(fā)器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();