CAN總線通信控制協(xié)議的仿真及性能分析
控制器局域網(wǎng)(CAN)屬于現(xiàn)場總線的范疇,是一種有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡。它是由德國博世公司在20世紀80年代專門為汽車行業(yè)開發(fā)的一種串行通信總線。由于其通信速率高、工作可靠、調(diào)試方便、使用靈活和性價比高等優(yōu)點,己經(jīng)在汽車業(yè)、航空業(yè)、工業(yè)控制、安全防護等領域中得到了廣泛應用,被公認為幾種最有前途的總線之一,其協(xié)議也發(fā)展為重要的國際標準。
隨著CAN總線在各個行業(yè)和領域的廣泛應用,其通信性能也越來越受到人們的關注。目前,已有很多學者對CAN總線通信性能進行分析研究。文中在分析CAN總線通信控制協(xié)議的基礎上,在MATLAB/Sinulink軟件Stateflow仿真環(huán)境下,利用有限狀態(tài)機理論對CAN總線通信系統(tǒng)進行了形式化建模。通過此仿真模型,分析了CAN總線通信系統(tǒng)中負載率的變化對網(wǎng)絡吞吐量、平均信息時延、通信沖突率、網(wǎng)絡利用率、網(wǎng)絡效率以及負載完成率的影響。
1 CAN總線通信控制協(xié)議
根據(jù)ISO11898(1993)標準,CAN從結構上分為物理層和數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層又包括邏輯鏈路層控制子層(LLC)和介質(zhì)訪問控制子層(MAC)。在CAN總線系統(tǒng)中,節(jié)點間通過公共傳輸介質(zhì)傳輸數(shù)據(jù),因而數(shù)據(jù)鏈路層是總線的核心部分。CAN總線數(shù)據(jù)鏈路層的通信介質(zhì)訪問控制方式為事件觸發(fā),采用CSMA/CD.只要總線空閑,網(wǎng)絡上任意節(jié)點均可在任意時刻主動地向網(wǎng)絡上其他節(jié)點發(fā)送信息,而不分主從,節(jié)點在請求發(fā)送信息時,首先偵聽總線狀態(tài),若總線空閑(或等待至總線空閑)則開始發(fā)送。當多個節(jié)點同時發(fā)送產(chǎn)生沖突時,采用非破壞性位仲裁機制,即借助ID標識符及逐位仲裁規(guī)則,低優(yōu)先級節(jié)點主動停止發(fā)送,高優(yōu)先級節(jié)點不受影響繼續(xù)發(fā)送,從而避免總線沖突,避免信息和時間發(fā)生損失。在發(fā)送過程中,發(fā)送節(jié)點對發(fā)送信息進行校驗,完成發(fā)送后釋放總線。CAN總線系統(tǒng)通過使用這種非破壞性的逐位線仲裁技術來處理多個節(jié)點同時訪問網(wǎng)絡的沖突,最后優(yōu)先級最高的節(jié)點能夠立即發(fā)送數(shù)據(jù),滿足了高優(yōu)先級節(jié)點實時性的相關需要。
2 CAN總線系統(tǒng)仿真模型
文章在Matlab/Simulink軟件Stateflow仿真環(huán)境中建立了16節(jié)點的CAN總線通信系統(tǒng)仿真模型。節(jié)點1-16的結構是相同的,節(jié)點模塊如圖1所示。
圖1 節(jié)點模塊
節(jié)點模塊包括發(fā)送、緩存、數(shù)據(jù)采集3個部分。因為本次仿真主要研究CAN總線的通信性能,所以建立節(jié)點模型時,只考慮了其通信活動所涉及的部分,沒有加入節(jié)點計算控制活動部分和數(shù)據(jù)接收部分。數(shù)據(jù)采集用于采集Simulink中輸入的數(shù)據(jù),數(shù)據(jù)長度服從隨機平均分布,在狀態(tài)“有數(shù)據(jù)”中,數(shù)據(jù)被組裝成CAN標準短幀。在實際系統(tǒng)中,數(shù)據(jù)可能是節(jié)點本身采集的現(xiàn)場檢測數(shù)據(jù),或是節(jié)點控制器輸出的數(shù)據(jù)?!熬彺妗贝砉?jié)點的緩沖器,這里假設容量為1.包括兩個狀態(tài):“空”和“非空”.數(shù)據(jù)被采集并組裝成CAN標準短幀后,觸發(fā)由“空”到“非空”的轉換,將節(jié)點信息放在等待發(fā)送的緩沖器中,發(fā)送完成后,返回“空”狀態(tài),等待下一次觸發(fā)。“發(fā)送”代表節(jié)點發(fā)送部分,當緩沖器有數(shù)據(jù)等待傳輸時,觸發(fā)由“停止”到“等待”的轉換,進入等待狀態(tài);當總線仲裁允許本節(jié)點發(fā)送時,觸發(fā)由“等待”到“傳送”的轉換,開始發(fā)送數(shù)據(jù);當緩沖器的數(shù)據(jù)傳送完成時,觸發(fā)由“傳送”到“停止”的轉換,等待下一次發(fā)送。
圖2 通信調(diào)度模塊
通信調(diào)度模塊,如圖2所示。包括總線活動模塊fieldbus和仲裁判斷函數(shù)compete.fieldbus模塊包括3個狀態(tài):“空閑”、“忙碌”、“幀間隔”.開始總線在“空閑”狀態(tài)下,當有節(jié)點要發(fā)送信息時,用compete函數(shù)對待發(fā)節(jié)點進行仲裁,并觸發(fā)由“空閑”到“忙碌”的轉換;節(jié)點發(fā)送數(shù)據(jù)完成后,以“返回”事件觸發(fā)由“忙碌”到“幀間隔”的轉換;經(jīng)過一個“幀間隔”后,回到“空閑”狀態(tài),等待下一次傳輸。compete函數(shù)對各節(jié)點的仲裁符合CAN仲裁機制,通過比較各待發(fā)節(jié)點的優(yōu)先級,實現(xiàn)“線與”功能,將發(fā)送權給優(yōu)先級最高的節(jié)點。
以上所述的仿真平臺簡潔直觀地解釋了CAN網(wǎng)絡的控制機理,并能動態(tài)地仿真其通信活動。
3 網(wǎng)絡性能
3.1 性能指標
我們先介紹總線網(wǎng)絡相關性能指標的相關定義。
網(wǎng)絡負載率:單位時間內(nèi)發(fā)出訪問網(wǎng)絡的節(jié)點數(shù)(需要傳送的報文數(shù))與網(wǎng)絡最大容量的比率。
吞吐量:單位時間內(nèi)系統(tǒng)成功發(fā)送信息數(shù)量的均值。
平均信息時延:從信息發(fā)出傳輸請求到被成功地傳輸?shù)侥康墓?jié)點所需要的平均時間。
通信沖突率:節(jié)點遭受通信沖突的概率。
網(wǎng)絡利用率:單位時間內(nèi)通道傳送信息號的時間比率,即是通道處于忙碌狀態(tài)的概率,它反映了通道被利用的情況。
網(wǎng)絡效率:單位時間內(nèi)通道成功傳送的信息與通道發(fā)送信息的時間比率,即吞吐量與通道利用率兩者間的比率。
負載完成率:所有節(jié)點運行完成后成功向總線上發(fā)送的報文幀的總個數(shù)與所有節(jié)點請求發(fā)送的報文幀的總個數(shù)的比率。
3.2 性能分析
仿真設定CAN總線傳輸速率為200kbit/s,總的運行時間為T=2s,并假設每一幀報文的數(shù)據(jù)長度為100bit,可以得知,CAN總線滿負載時傳輸4000幀數(shù)據(jù),表示為N=4000幀,即滿負載時傳輸?shù)臄?shù)據(jù)幀的總長度為400kbit,表示為S=400kbit.通過設定各節(jié)點的發(fā)送周期,來調(diào)整負載率的大小。
CAN總線仿真模型中,輸出參數(shù)含義分別為:u代表通道處于忙碌狀態(tài)的總時間;thout代表所有節(jié)點發(fā)送的所有數(shù)據(jù)幀的總長度;fz代表所有節(jié)點產(chǎn)生的所有數(shù)據(jù)幀的總長度;b1-b16分別代表第1-16個節(jié)點每次運行完成后成功向總線上發(fā)送的數(shù)據(jù)幀的個數(shù);p1-p16分別代表第1-16節(jié)點每次請求發(fā)送的數(shù)據(jù)幀的個數(shù)。
所以,吞吐量的計算公式為:
平均信息時延的計算公式為:
式中i表示節(jié)點編號(I=1~16)。
通信沖突率的計算公式為:
網(wǎng)絡利用率的計算公式為:
網(wǎng)絡效率的計算公式為:
負載完成率的計算公式為:
式中i表示節(jié)點編號(1~16)。
經(jīng)過運行仿真模型,得到系統(tǒng)在負載分別為16%、33%、50%、81.5%、100%、125%、150%、175%、200%、230%、250%、280%、310%時的一系列仿真結果。
評論