基于CAN一卡通系統(tǒng)總線調(diào)度策略建模與仿真
文章出處:http://coolbang.cn 作者: 人氣: 發(fā)表時(shí)間:2011年09月13日
摘要:基于控制器局域網(wǎng)(CAN)的測控系統(tǒng)需要采用恰當(dāng)?shù)目偩€調(diào)度策略以滿足數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求,其建模與仿真能對網(wǎng)絡(luò)設(shè)計(jì)進(jìn)行評估和優(yōu)化。在設(shè)計(jì)一卡通系統(tǒng)線性混合總線調(diào)度算法的基礎(chǔ)上,運(yùn)用網(wǎng)絡(luò)仿真系統(tǒng)OPNET設(shè)計(jì)了一種改進(jìn)的CAN CSMA/CA模型。應(yīng)用該模型對所設(shè)計(jì)的總線調(diào)度算法的效率和穩(wěn)定性進(jìn)行了仿真分析和比較。結(jié)果表明,該算法能夠有效地滿足一卡通系統(tǒng)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求。
關(guān)鍵詞:一卡通系統(tǒng);CAN;總線調(diào)度;建模與仿真;OPNET
控制器局域網(wǎng)(CAN,control area network)是基于事件觸發(fā)機(jī)制的多主系統(tǒng),需要根據(jù)實(shí)際系統(tǒng)的要求采用恰當(dāng)?shù)目偩€調(diào)度策略以滿足數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求[10]。
在CAN總線調(diào)度策略的建模與仿真研究方面,Tindell和Wellings將固定優(yōu)先級排隊(duì)理論拓展到CAN上,建立了CAN數(shù)學(xué)模型[3],并逐步改善了CAN響應(yīng)時(shí)間模型[4、5]。目前國內(nèi)在該領(lǐng)域的研究集中于模型的理論分析,且多基于CSMA協(xié)議,未能反映CAN CSMA/CA總線調(diào)度策略本質(zhì)。筆者運(yùn)用OPNET設(shè)計(jì)了一種改進(jìn)的CSMA/CA模型,該模型能夠有效支持CAN總線調(diào)度策略仿真分析和比較。在此基礎(chǔ)上,對一卡通系統(tǒng)線性混合總線調(diào)度算法進(jìn)行了仿真分析。結(jié)果表明該算法能夠很好地滿足一卡通系統(tǒng)數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求。
1基于CAN的一卡通系統(tǒng)
1.1 CAN總線調(diào)度策略
CAN總線的介質(zhì)訪問控制方式為帶沖突避免的載波偵聽多址訪問(CSMA/CA)。在非破壞性總線逐位仲裁規(guī)則下,幀ID值越小,優(yōu)先級越高。因此,總線調(diào)度策略的實(shí)現(xiàn)依賴于幀ID的設(shè)計(jì)。
1.2 CAN幀ID設(shè)計(jì)
系統(tǒng)采用擴(kuò)展幀,ID長度為29位。各域分配如圖1所示。
D28一D24為優(yōu)先級動(dòng)態(tài)(PD,priority dynamic)域。PD域占5位,根據(jù)CAN協(xié)議高速標(biāo)準(zhǔn)IS011898,一條CAN總線最多掛接30個(gè)節(jié)點(diǎn),因此至少需要30個(gè)優(yōu)先級。
圖1 CAN幀ID
D23~D16為POS機(jī)號域,系統(tǒng)中每個(gè)節(jié)點(diǎn)都有一個(gè)唯一的地址號,使用8位二進(jìn)制數(shù)表示,最多容納256個(gè)終端POS機(jī)。優(yōu)先級最高的地址(全0)作為廣播地址,其他地址依次分配給各POS機(jī)。機(jī)號可以在POS機(jī)上設(shè)定,初始值為0,是系統(tǒng)中的唯一編號。
D15~Dl為幀號域。一條應(yīng)用層命令必須拆分成多個(gè)幀進(jìn)行傳輸,第一幀的幀號為命令流水號,其后幀的幀號是前一幀的幀號加1。
幀號域占15位,在聯(lián)機(jī)情況下,POS機(jī)在發(fā)送一幀后,會(huì)在其后的1024個(gè)幀間隔內(nèi)得到數(shù)據(jù)中心響應(yīng)。根據(jù)系統(tǒng)應(yīng)用層協(xié)議,一條應(yīng)用層命令最多被拆分成23幀,為了避免屬于不同命令的兩個(gè)幀的幀號相同,規(guī)定每一命令流水號是前一命令流水號加32。
D0為第1幀信息域,標(biāo)識該幀是否為第l幀。若為第1幀,幀數(shù)據(jù)段第1字節(jié)為應(yīng)用層命令字。D0為1表示第l幀;為0表示不是第l幀。
1.3混合總線調(diào)度算法
在1.2節(jié)描述的幀ID中,對于每一個(gè)幀,D23~DO是固定不變的,D28~D24根據(jù)幀已等待發(fā)送時(shí)間動(dòng)態(tài)變化。據(jù)此設(shè)計(jì)了一種動(dòng)態(tài)和靜態(tài)相結(jié)合的混合總線調(diào)度算法。
根據(jù)實(shí)時(shí)性要求的不同,系統(tǒng)中不同POS機(jī)分配不同的初始發(fā)送優(yōu)先級PRI_INITi,i為節(jié)點(diǎn)編號。為不失一般性,設(shè)PD域占用的位數(shù)為n,則必須滿足PRI_INITi≤2n-1.分配PRI_INITi時(shí),考慮POS機(jī)所屬的不同類型。系統(tǒng)由充值機(jī)和消費(fèi)機(jī)構(gòu)成,充值機(jī)實(shí)時(shí)性要求高于消費(fèi)機(jī),其PRI_INITi取較小值。
節(jié)點(diǎn)開始發(fā)送幀時(shí),把數(shù)值PRI_INITi復(fù)制到PD域,此時(shí)總線的狀態(tài)存在下面3種情況:
①若此時(shí)只有該節(jié)點(diǎn)偵聽到總線空閑,則成功發(fā)送;
②若此時(shí)有多個(gè)節(jié)點(diǎn)同時(shí)偵聽到總線空閑,根據(jù)仲裁規(guī)則,仲裁獲勝的節(jié)點(diǎn)繼續(xù)發(fā)送,仲裁失利的節(jié)點(diǎn)調(diào)整自身的發(fā)送優(yōu)先級,將欲發(fā)送的幀置入其發(fā)送等待隊(duì)列,同時(shí)轉(zhuǎn)入接收狀態(tài);
③若此時(shí)該節(jié)點(diǎn)偵聽到總線忙,則直接將欲發(fā)送的幀置人發(fā)送等待隊(duì)列,同時(shí)轉(zhuǎn)入接收狀態(tài)。
情況②中節(jié)點(diǎn)在仲裁失利后,采用下述策略調(diào)整發(fā)送優(yōu)先級。i為節(jié)點(diǎn)編號;M為在成功發(fā)送一幀過程中節(jié)點(diǎn)參與總線競爭總次數(shù);m為次數(shù)編號;J為所發(fā)送幀類型對應(yīng)的調(diào)節(jié)比。幀類型與優(yōu)先級調(diào)節(jié)比的對應(yīng)關(guān)系如表1所示。
表1 幀類型與優(yōu)先級調(diào)節(jié)比對應(yīng)表
式(3)為一種抽象表達(dá)式,可選擇如下具體函數(shù)形式
式(4)為線性混合總線調(diào)度算法,式(5)為常量混合總線調(diào)度算法。為比較混合調(diào)度策略與靜態(tài)調(diào)度策略,式(6)為靜態(tài)總線調(diào)度算法。
2 CAN網(wǎng)絡(luò)建模
2.1 CAN子網(wǎng)模型
CAN子網(wǎng)有2個(gè)充值機(jī)節(jié)點(diǎn),編號為1和2;28個(gè)消費(fèi)機(jī)節(jié)點(diǎn),編號從3到30;各節(jié)點(diǎn)編號用i表示,其初始發(fā)送優(yōu)先級為i-1。為了統(tǒng)計(jì)總線流量和吞吐率,增加一個(gè)統(tǒng)計(jì)節(jié)點(diǎn),它只接收不發(fā)送幀。CAN子網(wǎng)拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 CAN子網(wǎng)拓?fù)浣Y(jié)構(gòu)模型
基于總線調(diào)度策略,圖2中充值機(jī)節(jié)點(diǎn)和消費(fèi)機(jī)節(jié)點(diǎn)模型只考慮發(fā)送部分,如圖3所示。
圖3 CAN子網(wǎng)節(jié)點(diǎn)模型
圖3中,gen為節(jié)點(diǎn)信源模塊,根據(jù)擴(kuò)展幀格式,幀最長128 b。因此packet size設(shè)置成constant(128)。
2.2處理機(jī)模型
在CSMA基礎(chǔ)上,引入總線調(diào)度策略,設(shè)計(jì)如圖4所示的改進(jìn)的CSMA/CA處理機(jī)模型。
第1頁第2頁 |