本發(fā)明涉及一種面向CAN總線的非破壞式動態(tài)優(yōu)化調(diào)度方法。
背景技術(shù):
CAN是德國Bosch公司在1985年時為了解決汽車上眾多測試儀器與控制單元之間的數(shù)據(jù)傳輸而開發(fā)的一種串行數(shù)據(jù)通信總線,已廣泛應(yīng)用于汽車、工業(yè)、樓宇自動化等分布式實時控制領(lǐng)域。CAN網(wǎng)絡(luò)控制系統(tǒng)中靜態(tài)調(diào)度算法非常適合于確定性硬實時系統(tǒng)中的消息調(diào)度,但是靜態(tài)調(diào)度算法只適用于系統(tǒng)時間特性固定不變的系統(tǒng),不能靈活適應(yīng)系統(tǒng)的變化,難以充分利用系統(tǒng)資源。
目前針對CAN總線的動態(tài)調(diào)度優(yōu)化已有研究,管長焦等發(fā)表的論文“柔性時間觸發(fā)CAN總線信息動態(tài)調(diào)度研究”、劉超等發(fā)表論文“基于等幅變頻晉升CAN總線動態(tài)調(diào)度算法的研究”、楊捷等發(fā)表論文“CAN總線中非周期信息的隨機動態(tài)優(yōu)先級調(diào)度”等等,但以上幾種調(diào)度策略在算法復(fù)雜度、網(wǎng)絡(luò)資源開銷等方面存在缺陷。本發(fā)明提出一種新的CAN總線的非破壞式動態(tài)優(yōu)化調(diào)度方法,解決靜態(tài)調(diào)度算法的通信效率和網(wǎng)絡(luò)利用率低的問題,保證消息的實時性和可靠性。
技術(shù)實現(xiàn)要素:
鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明提供一種面向CAN總線的非破壞式動態(tài)優(yōu)化調(diào)度方法。CAN總線數(shù)據(jù)幀由7個不同的位場組成,其中仲裁場由標識符和RTR位構(gòu)成,仲裁場的標識符既用于總線優(yōu)先級,也用于標識不同節(jié)點的不同類型數(shù)據(jù)。CAN的優(yōu)先權(quán)編碼被放置在標志符內(nèi),RTR位用于區(qū)分是遠程幀還是數(shù)據(jù)幀。本發(fā)明動態(tài)優(yōu)化調(diào)度算法即對標識符進行動態(tài)編碼,實現(xiàn)優(yōu)先級的動態(tài)更新,提升通信效率和網(wǎng)絡(luò)利用率。
本發(fā)明一種面向CAN總線的非破壞式動態(tài)優(yōu)化調(diào)度方法,將仲裁場的標識符部分動態(tài)優(yōu)化,標識符由三段組成,即任務(wù)段、競爭段、輔助段,各段長度根據(jù)系統(tǒng)確定;任務(wù)段是區(qū)分傳輸緊急程度,優(yōu)先級別最高,競爭段是用來區(qū)分信號的截止期,截止期越短,級別越高,輔助段是消息出現(xiàn)的次序,消息出現(xiàn)的次序越早,優(yōu)先級越高;所述動態(tài)優(yōu)化調(diào)度方法特征在于,其包括如下步驟:
1)由消息優(yōu)先級制定標識符各段編碼,根據(jù)消息實時性要求高低,任務(wù)段確定數(shù)據(jù)傳輸實時性,實時性高的消息優(yōu)先級高;
2)節(jié)點單元發(fā)送任務(wù)段優(yōu)先級高的消息,相同任務(wù)段的信息,進一步比較競爭段,競爭段編碼采用函數(shù)f(m)=2l-m,其中參數(shù)l,m分別是競爭段位數(shù)、截止期編碼;
3)節(jié)點單元發(fā)送競爭段優(yōu)先級高的消息,對于相同競爭段的消息,進一步比較輔助段,輔助段是消息出現(xiàn)的次序,消息出現(xiàn)的次序越早,優(yōu)先級越高,按照信息出現(xiàn)的先后次序依次編號;
4)返回步驟1),直到節(jié)點單元消息處理完成。
優(yōu)選的,上述動態(tài)優(yōu)化調(diào)度方法中步驟2)的截止期編碼包括如下步驟:
a、取所有消息絕對截止期J1,J2,J3,…,Jp的最大值Jmax;
b、將[0,Jmax]的范圍劃為k個等長的區(qū)間,即[0,Jmax/k],(Jmax/k,2Jmax/k],(2Jmax/k,3Jmax/k],…,((k-1)·Jmax/k,Jmax];
c、取上述k個等長的區(qū)間的中點,得到新的k個的區(qū)間,即[0,Jmax/(2k)],(Jmax/(2k),3Jmax/(2k)],(3Jmax/(2k),5Jmax/(2k)],…,((2k-3)·Jmax/(2k),Jmax];
d、將得到新的k個的區(qū)間進行編碼,分別對應(yīng)[1,2,3,…,k]的編碼;
e、將消息絕對截止期對應(yīng)在新的區(qū)間上的編碼,作為競爭段編碼函數(shù)中的截止期編碼。
采用上述優(yōu)化調(diào)度方法,標識符由三段組成,即任務(wù)段、競爭段、輔助段,各段長度根據(jù)實際系統(tǒng)確定,而且標識符長度使用長度也可以靈活確定,為系統(tǒng)的擴展帶來方便。三段的編碼方式,既能處理緊急任務(wù),也能防止信息的“死鎖”。整個動態(tài)優(yōu)化是基于消息的絕對截止期,截止期越小,優(yōu)先級越高,截止期取兩次中心點作為分界點的方法有利于減少編碼誤差,提高競爭段編碼準確性。本發(fā)明所提出的動態(tài)優(yōu)化算法簡便,易實現(xiàn),同時增加系統(tǒng)了的靈活性,使系統(tǒng)更加的可靠。
附圖說明
圖1為本發(fā)明面向CAN總線的非破壞式動態(tài)優(yōu)化調(diào)度方法實施例的流程圖。
圖2為本發(fā)明節(jié)點單元的優(yōu)先級編碼圖。
圖3為本發(fā)明實施例節(jié)點單元的優(yōu)先級編碼圖。
具體實施方式
以下通過特定的具體實例說明本發(fā)明的實施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地實施。
如圖1所示,本發(fā)明面向CAN總線的非破壞式動態(tài)優(yōu)化調(diào)度方法,通過任務(wù)段、競爭段、輔助段的方式對CAN總線仲裁場的標識符編碼,任務(wù)段、競爭段、輔助段的位數(shù)可以根據(jù)具體系統(tǒng)確定。在發(fā)送消息時,通過三段來比較優(yōu)先級,任務(wù)段優(yōu)先級>競爭段優(yōu)先級>輔助段優(yōu)先級,對于任務(wù)段優(yōu)先級相同的消息,比較競爭段優(yōu)先級,對于競爭段優(yōu)先級相同的消息,比較輔助段優(yōu)先級。圖2為本發(fā)明節(jié)點單元的優(yōu)先級編碼圖,本發(fā)明的實施步驟為:
1)由消息優(yōu)先級制定標識符各段編碼,根據(jù)消息實時性要求高低,任務(wù)段確定數(shù)據(jù)傳輸實時性,實時性高的消息優(yōu)先級高;
2)節(jié)點單元發(fā)送任務(wù)段優(yōu)先級高的消息,相同任務(wù)段的信息,進一步比較競爭段,競爭段編碼采用函數(shù)f(m)=2l-m,其中參數(shù)l,m分別是競爭段位數(shù)、截止期編碼;
3)節(jié)點單元發(fā)送競爭段優(yōu)先級高的消息,對于相同競爭段的消息,進一步比較輔助段,輔助段是消息出現(xiàn)的次序,消息出現(xiàn)的次序越早,優(yōu)先級越高,按照信息出現(xiàn)的先后次序依次編號;
4)返回步驟1),直到節(jié)點單元消息處理完成。
上述動態(tài)優(yōu)化調(diào)度方法中步驟2)的截止期編碼包括如下步驟:
a、取所有消息絕對截止期J1,J2,J3,…,Jp的最大值Jmax;
b、將[0,Jmax]的范圍劃為k個等長的區(qū)間,即[0,Jmax/k],(Jmax/k,2Jmax/k],(2Jmax/k,3Jmax/k],…,((k-1)·Jmax/k,Jmax];
c、取上述k個等長的區(qū)間的中點,得到新的k個的區(qū)間,即[0,Jmax/(2k)],(Jmax/(2k),3Jmax/(2k)],(3Jmax/(2k),5Jmax/(2k)],…,((2k-3)·Jmax/(2k),Jmax];
d、將得到新的k個的區(qū)間進行編碼,分別對應(yīng)[1,2,3,…,k]的編碼;
e、將消息絕對截止期對應(yīng)在新的區(qū)間上的編碼,作為競爭段編碼函數(shù)中的截止期編碼。
為了進一步理解上述優(yōu)先級的優(yōu)化調(diào)度方法,下面根據(jù)一具體實施例做進一步的描述。如圖3所示,假設(shè)消息節(jié)點的仲裁場的標識符的任務(wù)段、競爭段、輔助段位數(shù)分別為2位、5位、4位,即對應(yīng)圖2中A1A0、B4B3B2B1B0、C3C2C1C0。任務(wù)段的2位可表示00、01、10、11,分別對應(yīng)任務(wù)段四級逐次遞增優(yōu)先級,對于需緊急的消息優(yōu)先級置高。假定某消息的優(yōu)先級次高,其任務(wù)段即為10。
對于任務(wù)段相同的優(yōu)先級,比較競爭段。取競爭段位數(shù)l=5,消息的截止期0.4ms,截止期編碼包括如下:
a、取所有消息絕對截止期的最大值Jmax=5ms;
b、將[0,5]的范圍劃為k=10個等長的區(qū)間,即[0,0.5],(0.5,1],(1,1.5],…,(4.5,5];
c、取上述k=10個等長的區(qū)間的中點,得到新的10個的區(qū)間,即[0,0.25],(0.25,0.75],(0.75,1.25],…,(4.75,5];
d、截止期0.4ms的消息對應(yīng)在(0.25,0.75]將范圍內(nèi),即第2個區(qū)間;
e、競爭段編碼采用函數(shù)f(m)=2l-m=25-2=30,對應(yīng)編碼11110。編碼越大,對應(yīng)的競爭段優(yōu)先級越高。
如果任務(wù)段、競爭段相同的消息,將比較輔助段,輔助段是消息出現(xiàn)的次序,消息出現(xiàn)的次序越早,優(yōu)先級越高,按照信息出現(xiàn)的先后次序依次編號,即0000、0001、0010、…輔助段的編號越小,優(yōu)先級越高,直到節(jié)點單元任消息處理完成。假設(shè)消息出現(xiàn)次序為2,則輔助段編碼為0001,由上述任務(wù)段、競爭段、輔助段組合得到該消息的標識符為10111100001。如果該消息第一次未發(fā)送,在第二次編碼時,只需要將截止期重新編碼即可,以此類推。在輔助段出現(xiàn)溢出時,給出警告提示,并將所有消息做整體移動,將最小的出現(xiàn)次序編號變?yōu)?000,其它的消息也整體前移,保證不丟失消息。
綜上所述,采用上述優(yōu)先級動態(tài)調(diào)度優(yōu)化方法可使各節(jié)點單元根據(jù)不同的優(yōu)先級處理消息,這樣可避免出現(xiàn)總線系統(tǒng)出現(xiàn)死循環(huán),保證總線系統(tǒng)的通訊資源得到充分利用,同時考慮了節(jié)點消息的數(shù)據(jù)傳輸緊急程度,以及依據(jù)絕對截止期動態(tài)提升優(yōu)先級,增加了系統(tǒng)的靈活性,合理分配占用總線時間,提升了系統(tǒng)的實時性能,使系統(tǒng)更加的可靠。本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點而具高度產(chǎn)業(yè)利用價值。