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