一種面向車(chē)載can fd網(wǎng)絡(luò)的信號(hào)分組打包方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,包括如下步驟:步驟1,依據(jù)信號(hào)的周期大小對(duì)信號(hào)進(jìn)行分組,并根據(jù)周期大小對(duì)分組得到的信號(hào)組進(jìn)行升序排列;步驟2,依據(jù)空閑帶寬評(píng)價(jià)指標(biāo)和整數(shù)線性規(guī)劃算法將信號(hào)組依次打包到消息之中,得到消息集;步驟3,按照時(shí)間健壯性升序的順序?yàn)榇虬蟮玫降南⒓峙鋬?yōu)先級(jí)并進(jìn)行調(diào)度分析,如果打包后得到的消息集不可調(diào)度,則對(duì)打包后得到的消息集進(jìn)行拆分以提高整個(gè)消息集的可調(diào)度性,直到打包后的消息集可調(diào)度或沒(méi)有消息可被拆分為止。此種方法可在保證CAN FD網(wǎng)絡(luò)可調(diào)度的前提下,實(shí)現(xiàn)網(wǎng)絡(luò)帶寬利用率的優(yōu)化。
【專(zhuān)利說(shuō)明】
一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于汽車(chē)電子領(lǐng)域,涉及一種車(chē)載ECU中通信信號(hào)數(shù)據(jù)的處理,特別涉及一 種面向車(chē)載CAN FD網(wǎng)絡(luò)帶寬利用率優(yōu)化的信號(hào)分組打包方法。
【背景技術(shù)】
[0002] 隨著汽車(chē)在人們的日常生活中發(fā)揮越來(lái)越重要的作用,人們從經(jīng)濟(jì)和社會(huì)等方面 對(duì)汽車(chē)提出了越來(lái)越嚴(yán)格的要求。因此,汽車(chē)正朝著電子化、網(wǎng)絡(luò)化和智能化的方向飛速發(fā) 展。汽車(chē)工業(yè)正經(jīng)歷的上述變革使得汽車(chē)電子系統(tǒng)的復(fù)雜性驟增,車(chē)載網(wǎng)絡(luò)中需傳輸?shù)臄?shù) 據(jù)量急劇增多。但是現(xiàn)有的在汽車(chē)電子系統(tǒng)中應(yīng)用最為廣泛的CAN網(wǎng)絡(luò)的最大帶寬僅為 1Mbps,為此博世在2011年推出了一種CAN升級(jí)版的網(wǎng)絡(luò)協(xié)議CAN FDXAN Π )的最大帶寬可 達(dá)8Mbps,可滿足快速增長(zhǎng)的車(chē)載數(shù)據(jù)的傳輸要求。但是CAN Π )消息的負(fù)載以字節(jié)為單位, 負(fù)載大小可分別設(shè)置為{1,2,3,4,5,6,7,8,12,16,20,24,32,48,64}。因此,不同的信號(hào)打 包結(jié)果將產(chǎn)生不同的帶寬需求?,F(xiàn)有研究已經(jīng)證明CAN信號(hào)打包問(wèn)題是一個(gè)典型的NP難問(wèn) 題,CAN FD消息負(fù)載的配置比CAN更復(fù)雜。因此,需要提出一種高效的CAN ro信號(hào)打包算法 來(lái)實(shí)現(xiàn)CAN FD高帶寬的有效利用。
[0003] 為解決該問(wèn)題,一種簡(jiǎn)單的信號(hào)打包方法是將每個(gè)信號(hào)都單獨(dú)打包成一個(gè)消息。 但是該方法生成的消息個(gè)數(shù)與信號(hào)個(gè)數(shù)相等,一方面將增加消息之間相互競(jìng)爭(zhēng)網(wǎng)絡(luò)的幾 率,另一方面,消息包含的帶寬沒(méi)有被充分利用,從而造成了帶寬的浪費(fèi)。中國(guó)專(zhuān)利申請(qǐng)?zhí)?201410113555.7,名稱(chēng)"一種面向汽車(chē)CAN網(wǎng)絡(luò)帶寬消耗優(yōu)化的車(chē)輛信號(hào)封裝方法"和研究 工作(如 "Sandstrom K ,Norstrom C , Ahlmark M . Frame Packing in Real-Time Communication.In:Proc.of RTCSA·2000·399-403·"、"Saket R,Navet N.Frame Packing Algorithms for Automotive Applications.Journal of Embedded Computing,2(I):93-102,2006·"、"Polzlbauer F, Bate I, Brenner E. Optimized Frame Packing for Embedded Systems. IEEE Embedded Systems Letters,2012,4(3) :65-68."等)提出了面向 CAN的信號(hào)打包方法,但是一方面,該方法面向CAN Π )的消息格式、帶寬等方面與CAN不同, CAN FD的信號(hào)打包更加復(fù)雜。另一方面,現(xiàn)有方法僅以單個(gè)信號(hào)作為打包的基本單元,未就 周期相等的信號(hào)進(jìn)行統(tǒng)一打包,打包結(jié)果對(duì)應(yīng)的帶寬利用率不夠高效。"Bordoloi U D, Samii S.The Frame Packing Problem for CAN-FD.In:Proc.of RTSS.2014.284-293·"提 出一種基于動(dòng)態(tài)規(guī)劃的CAN FD信號(hào)打包算法,但是該算法僅適用于信號(hào)大小為整數(shù)個(gè)字節(jié) 的情況,且以單個(gè)信號(hào)作為打包單元,在算法的通用性和帶寬利用率優(yōu)化方面不足。因此, 必須提出面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)打包方法,在滿足系統(tǒng)實(shí)時(shí)性要求的前提下,實(shí)現(xiàn)帶 寬利用率的優(yōu)化。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的,在于提供一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,其可在 保證CAN FD網(wǎng)絡(luò)可調(diào)度的前提下,實(shí)現(xiàn)網(wǎng)絡(luò)帶寬利用率的優(yōu)化。
[0005] 為了達(dá)成上述目的,本發(fā)明的解決方案是:
[0006] -種面向車(chē)載CAN Π )網(wǎng)絡(luò)的信號(hào)分組打包方法,包括如下步驟:
[0007]步驟1,依據(jù)信號(hào)的周期大小對(duì)信號(hào)進(jìn)行分組,并根據(jù)周期大小對(duì)分組得到的信號(hào) 組進(jìn)行升序排列;
[0008] 步驟2,依據(jù)空閑帶寬評(píng)價(jià)指標(biāo)和整數(shù)線性規(guī)劃算法將信號(hào)組依次打包到消息之 中,得到消息集;
[0009] 步驟3,按照時(shí)間健壯性升序的順序?yàn)榇虬蟮玫降南⒓峙鋬?yōu)先級(jí)并進(jìn)行調(diào) 度分析,如果打包后得到的消息集不可調(diào)度,則對(duì)打包后得到的消息集進(jìn)行拆分以提高整 個(gè)消息集的可調(diào)度性,直到打包后得到的消息集可調(diào)度或沒(méi)有消息可被拆分為止。
[0010] 上述步驟1中,還對(duì)信號(hào)組內(nèi)的信號(hào)按照信號(hào)大小進(jìn)行升序排列。
[0011] 上述步驟2的詳細(xì)內(nèi)容是:
[0012] 21)如果當(dāng)前打包的信號(hào)組Sk不是周期最小的信號(hào)組,則轉(zhuǎn)到步驟42),否則,根據(jù) Sk中所有信號(hào)的大小總和sumk的情況對(duì)Sk進(jìn)行如下處理:如果sumk小于或等于CAN FD消息 允許的最大負(fù)荷時(shí),新生成一個(gè)空消息fn?,并將Sk中的所有信號(hào)都打包到fn?之中,然后將 fnew加入已有的消息集F之中;如果sumk大于CAN FD消息允許的最大負(fù)荷時(shí),生成一個(gè)空消 息fnew,并采用整數(shù)線性規(guī)劃算法將Sk中的部分信號(hào)打包到fnew之中;然后,將已經(jīng)打包到 之中的信號(hào)從Sk中刪除;如果Sk不為空,再生成一個(gè)空消息^|,按照同樣的方法對(duì)Sk中 的信號(hào)進(jìn)行打包,直到Sk中的所有信號(hào)都打包到消息之中;然后將打包生成的消息加入已 有的消息集F之中;
[0013] 22)如果當(dāng)前打包的信號(hào)組Sk不是周期最小的信號(hào)組,則首先采用整數(shù)線性規(guī)劃 算法將Sk中的部分信號(hào)打包到F包含的已有消息的負(fù)載級(jí)空,P_SLKj之中,然后更新有新信 號(hào)插入的已有消息的大小、周期和截止時(shí)限,并將已經(jīng)打包的信號(hào)從Sk中刪除;
[0014] 該步驟處理完之后,如果Sk為空,則返回步驟21);否則進(jìn)入步驟23),對(duì)S k中的剩余 信號(hào)進(jìn)行繼續(xù)處理;
[0015] 23)對(duì)Sk的打包歸屬進(jìn)行分析:如果消息集F中部分或所有已有消息的消息級(jí)空閑 帶寬之和仍不夠容納S k中的所有信號(hào),進(jìn)入步驟24);否則,對(duì)"采用整數(shù)線性規(guī)劃算法將Sk 中的所有信號(hào)打包到已有消息的消息級(jí)空閑帶寬之中"和"采用整數(shù)線性規(guī)劃算法將Sk中 的所有信號(hào)打包到空消息之中"這兩種可能的方案對(duì)應(yīng)得到的消息集F的帶寬利用率U進(jìn)行 對(duì)比分析,如果F中部分或所有已有消息的消息級(jí)空閑帶寬之和足夠容納S k中的所有信號(hào) 時(shí),按照周期降序的順序依次選擇足夠容納Sk中的所有信號(hào)的已有消息;如果前一種方案 對(duì)應(yīng)的帶寬利用率更小,則將Sk中的所有信號(hào)打包到F包含已有消息之中;否則,進(jìn)入步驟 24);
[0016] 24)新生成一個(gè)空消息fne3W,采用整數(shù)線性規(guī)劃算法將Sk中的部分信號(hào)插入f new2 中,將fnew插入F之中,刪除Sk中已打包的信號(hào),如果S k不為空,返回步驟23);否則,返回步驟 21)〇
[0017] 上述步驟21)中,空消息fnew的周期Tnew、大小Znew和截止時(shí)限D(zhuǎn)new的計(jì)算公式如下: [0018]
[0019]
[0020] Dnew = Tnew
[0021 ]其中,Si表不信號(hào)集Sk中的信號(hào),Sk= {si,S2,…,Si, ···},ti表不信號(hào)Si的觸發(fā)周期, Zi表不信號(hào)Si的大小。
[0022]上述步驟3的詳細(xì)內(nèi)容是:
[0023] 31)假定優(yōu)先級(jí)按照從高到低的順序進(jìn)行分配,消息集F中已經(jīng)分配優(yōu)先級(jí)的消息 子集為Fa,未分配優(yōu)先級(jí)的消息子集SFn,F(xiàn)a初始化為空,F(xiàn)jB始化為F;在優(yōu)先級(jí)分配的過(guò) 程中,如果為Fr^的消息t分配當(dāng)前優(yōu)先級(jí)時(shí)灼可調(diào)度,那么此時(shí)灼的時(shí)間健壯性定義為其 截止時(shí)限和最差反應(yīng)時(shí)間的差值;如果為t分配當(dāng)前優(yōu)先級(jí)時(shí)t不可調(diào)度,那么此時(shí)t的時(shí) 間健壯性為〇;分配當(dāng)前優(yōu)先級(jí)時(shí),如果F n中存在多個(gè)消息均可調(diào)度,那么則按照時(shí)間健壯 性升序的順序?qū)?dāng)前優(yōu)先級(jí)分配給當(dāng)前時(shí)間健壯性最小的消息;
[0024] 執(zhí)行完步驟31),如果F中的所有消息均分配到合適的優(yōu)先級(jí),那么信號(hào)集S的打包 結(jié)束,直接返回消息集F作為打包的輸出結(jié)果,否則,進(jìn)入步驟32);
[0025] 32)*Fn中的消息分配當(dāng)前優(yōu)先級(jí)時(shí),所有消息均不可調(diào)度,此時(shí),按照消息周期 大小升序的順序從F n中選擇包含周期大小不等的信號(hào)的消息進(jìn)行拆分,如果更新后的Fn# 在消息在分配當(dāng)前優(yōu)先級(jí)時(shí)可調(diào)度,則返回步驟31)進(jìn)行再次分析;如果此時(shí)?"中所有消息 包含的信號(hào)的周期都相等,則消息集F不可調(diào)度,信號(hào)集S打包失敗。
[0026] 采用上述方案后,本發(fā)明從CAN ro網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)的角度出發(fā),研究帶寬高效的信 號(hào)打包方法,在保障CAN FD網(wǎng)絡(luò)系統(tǒng)可調(diào)度的前提下實(shí)現(xiàn)帶寬利用率的優(yōu)化,可滿足車(chē)載 網(wǎng)絡(luò)通信在運(yùn)行時(shí)的安全性、可靠性方面的要求。
【附圖說(shuō)明】
[0027]圖1是周期大小不等的信號(hào)打包情況示意圖;
[0028]圖2是信號(hào)打包實(shí)例圖;
[0029]圖3是信號(hào)打包的流程圖。
【具體實(shí)施方式】
[0030] 以下將結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案及有益效果進(jìn)行詳細(xì)說(shuō)明。
[0031] 本發(fā)明提供一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,首先依據(jù)信號(hào)的周期 大小對(duì)信號(hào)進(jìn)行分組,并根據(jù)周期大小對(duì)分組得到的信號(hào)組進(jìn)行升序排列。然后,提出啟發(fā) 式信號(hào)打包方法,將信號(hào)組依次打包到消息之中,從而形成消息集。在啟發(fā)式打包過(guò)程中, 將依據(jù)兩個(gè)空閑帶寬評(píng)價(jià)指標(biāo)和整數(shù)線性規(guī)劃算法來(lái)決定信號(hào)組的打包歸屬。最后,按照 時(shí)間健壯性升序的順序?yàn)榇虬蟮南⒎峙鋬?yōu)先級(jí)并進(jìn)行調(diào)度分析。如果打包后得到的消 息集不可調(diào)度,則對(duì)打包后的消息進(jìn)行拆分以提高整個(gè)消息集的可調(diào)度性,直到打包后得 到的消息集可調(diào)度或沒(méi)有消息可被拆分為止。
[0032]本發(fā)明的具體內(nèi)容如下:
[0033]步驟1,設(shè)定CAN Π )網(wǎng)絡(luò)仲裁段的帶寬為500kbps,數(shù)據(jù)傳輸段的帶寬為2Mbps。車(chē) 載ECU中需發(fā)送的CAN ro信號(hào)集為S={si,s2,…,Si,…},其中信號(hào)Si的特征為{ti,Zi,sig_ (^,!^^(^,分別表示信號(hào)的觸發(fā)周期丨單位為微秒^大小丨單位為比特八信號(hào)初始的截止 時(shí)限(單位為微秒)和信號(hào)打包到消息后的截止期限(單位為微秒),其中Uisig+cU。根據(jù) CAN ro協(xié)議,信號(hào)需先被打包成符合其協(xié)議要求的消息才能在網(wǎng)絡(luò)上進(jìn)行調(diào)度和傳輸。假 設(shè)S被打包后得到的消息集為F = {f i,f2,…,f j,…},消息f j的特征為{Tj,Zj,Lj,Cj,Dj,Pj}, 分別表示消息的周期(單位為微秒)、大小(單位為比特)、有效負(fù)載、在網(wǎng)絡(luò)上的傳輸時(shí)長(zhǎng) (單位為微秒)、截止時(shí)限(單位為微秒)和優(yōu)先級(jí),其中D j = Tp信號(hào)的tnzjPsig+cU屬性是 已知條件,作為信號(hào)打包方法的輸入。信號(hào)的mes_cU屬性和消息的屬性作為信號(hào)打包方法 的輸出,他們的值的大小依賴(lài)于信號(hào)組打包的結(jié)果。當(dāng)已知信號(hào)分組打包結(jié)果時(shí)候,上述未 知屬性的具體分析過(guò)程如下:
[0034] Tj的計(jì)算公式如下:
[0035] Tj=min{ti I Siefj} (I)
[0036] Zj的計(jì)算公式如下:
[0037]
(2)
[0038] CAN Π )消息的有效負(fù)載Lj以字節(jié)為基本單位,其支持的負(fù)載大小分別為:{1,2,3, 4,5,6,7,8,12,16,20,24,32,48,64}。因此,當(dāng)分析得到消息的實(shí)際大小Zj時(shí),可由如下公 式計(jì)算得到其有效負(fù)載L j的大?。?br>[0039]
(3)
[0040]根據(jù)Lj的計(jì)算可知Cj的計(jì)算公式如下:
[0041]
C4)
[0042] 其中,Tarb表示CAN FD仲裁段的位速度,當(dāng)仲裁段帶寬為500kbps時(shí),Tarb = 2us; Ttran表示CAN ro數(shù)據(jù)傳輸段的位速度,當(dāng)數(shù)據(jù)段帶寬為2Mbps時(shí),Ttran = O. 5us。
[0043] Pj的值根據(jù)時(shí)間健壯性降序的順序分配得到,CAN FD消息按照優(yōu)先級(jí)的高低進(jìn)行 非搶占式調(diào)度和傳輸,匕的值越小,消息的優(yōu)先級(jí)越高。
[0044] 本發(fā)明允許周期大小不等的信號(hào)打包到同一個(gè)消息之中。如圖1所示,當(dāng)把周期不 同的信號(hào)81和82打包到同一個(gè)消息的時(shí)候(tKt 2),消息的觸發(fā)周期等于t。因此,在消息的 調(diào)度傳輸過(guò)程中,周期大的信號(hào)82的某些實(shí)例需等待一段時(shí)間才能與消息的觸發(fā)點(diǎn)同步 (如S2的實(shí)例2、實(shí)例3和實(shí)例4)。該等待時(shí)延的最大值max_delay的計(jì)算公式如下:
[0045] max_delay = ti_gcd(ti,t2) (5)
[0046] 因此,當(dāng)信號(hào)si被打包到消息fi之中時(shí),mes_di的計(jì)算公式如下:
[0047]
(6)
[0048] 步驟2,配合圖3所示,CAN Π)信號(hào)的分組打包過(guò)程如下:
[0049] 1)對(duì)于ECU中包含的信號(hào)集S,按照信號(hào)的周期大小對(duì)其進(jìn)行分組。假定信號(hào)集S分 組后得到的信號(hào)組分別為S1J2r",Sk,···,SM,其中S=S1U S2U…U SkU…U Sls卜屬于同 一個(gè)分組的信號(hào)的周期大小相等。
[0050] 2)按照信號(hào)大小對(duì)信號(hào)組內(nèi)的信號(hào)進(jìn)行升序排列。
[0051] 3)按照周期大小對(duì)信號(hào)組進(jìn)行升序排列。
[0052] 4)按照周期大小升序的順序?qū)⒏鱾€(gè)信號(hào)組逐個(gè)打包到消息之中。該步驟的具體過(guò) 程如下:
[0053] 41)如果當(dāng)前打包的信號(hào)組Sk不是周期最小的信號(hào)組,則轉(zhuǎn)到步驟42),否則,根據(jù) Sk中所有信號(hào)的大小總和sumk的情況對(duì)Sk進(jìn)行如下處理:如果sumk小于或等于CAN FD消息 允許的最大負(fù)載(64字節(jié))時(shí),新生成一個(gè)空消息fne3W,并將Sk中的所有信號(hào)都打包到f ne3W之 中,然后將f 加入已有的消息集F之中。其中fne3W中打包有信號(hào)之后新的周期Tne3w的周期 Tnew、大小Znew和截止時(shí)限D(zhuǎn)new的計(jì)算公式如下:
[0054]
[0055] ,8)
[0056]
[0057] 如果sumk大于CAN FD消息允許的最大負(fù)載(64字節(jié))時(shí),生成一個(gè)空消息fnew,并采 用整數(shù)線性規(guī)劃算法將Sk中的部分信號(hào)打包到f new之中。然后,將已經(jīng)打包到fnew之中的信 號(hào)從Sk中刪除。如果S k不為空,再生成一個(gè)空消息匕?,按照同樣的方法對(duì)Sk中的信號(hào)進(jìn)行打 包,直到Sk中的所有信號(hào)都打包到消息之中。然后將打包生成的消息加入已有的消息集F之 中,并按照式(7)-(9)計(jì)算打包生成的各個(gè)消息的相關(guān)參數(shù)。
[0058]基于整數(shù)線性規(guī)劃算法的信號(hào)打包方法如下:
[0059]已知條件:已知信號(hào)組Sk包含信號(hào)si的大小s_s i z e (i)。CAN FD消息大小的最大值 為64bytes,即512bits。假設(shè)生成的空消息為fj。
[0000]未知條件:二進(jìn)制變量assign(i,j)表示信號(hào)Si是否打包到消息fj之中,如果是,則 assign( i,j) = 1,否則,assign( i,j) =0。信號(hào)打包得到的消息f j的大小Sm_size( j)。
[0061 ]約束條件:
[0062]
[0063]
[0064]以上約束分別表示打包后消息灼的大小計(jì)算,以及消息灼的大小不能超過(guò)512bits 的限定。
[0065] 優(yōu)化目標(biāo):
[0066] objective:maximizem_size(j)
[0067] 其中,maximize表示最大化,即在滿足相應(yīng)限制條件的前提下,最大化打包后的消 息的大小。
[0068]通過(guò)上述整數(shù)線性規(guī)劃算法求解,可在滿足CAN FD消息最大負(fù)載限制的前提下, 實(shí)現(xiàn)信號(hào)組Sk打包的最優(yōu)化,即可實(shí)現(xiàn)CAN ro帶寬利用率的最優(yōu)化。
[0069] 42)如果當(dāng)前打包的信號(hào)組Sk不是周期最小的信號(hào)組,則首先采用整數(shù)線性規(guī)劃 算法將Sk中的部分信號(hào)打包到F包含的已有消息的負(fù)載級(jí)空,P_SLKj之中,然后更新有新信 號(hào)插入的已有消息的大小、周期和截止時(shí)限,并將已經(jīng)打包的信號(hào)從S k中刪除。
[0070] 已有CAN FD消息fj包含的負(fù)載級(jí)空閑P_SLKj的定義如下:
[0071 ] CAN ro消息的有效負(fù)載Lj以字節(jié)為單位,它的大小配置可能為:{1,2,3,4,5,6,7, 8,12,16,20,24,32,48,64}。但是消息包含的信號(hào)的大小以比特為單位。因此由Lj的計(jì)算可 知,消息的有效負(fù)載中可能存在未被占用的空閑比特位。設(shè)定P_SLK謙示L沖包含的空閑比 特位的個(gè)數(shù),它的計(jì)算公式如下:
[0072] P_SLKj = LjX8_Zj (10)
[0073] 如圖2給出的信號(hào)打包實(shí)例所示,該消息包含的信號(hào)的大小之和為8 * 8 + 3 = 67bits。但是根據(jù)CAN FD協(xié)議,該消息的有效負(fù)載Lj等于12bytes。因此,該消息中包含的負(fù) 載級(jí)空等于29bits。
[0074] 假設(shè)該步驟將信號(hào)組Sk中的信號(hào)81打包到了已有消息t之中,那么t的大小、周期 和截止時(shí)限可分別按照如下公式進(jìn)行更新:
[0075] Z,j = Zj+Zi (11)
[0076] T7 j=min(Tj, ti) (12)
[0077] Djj = T7j (13)
[0078] 事實(shí)上,由于信號(hào)組按照周期大小的升序排列,后續(xù)插入已有消息的信號(hào)的周期 均大于已有消息的周期。因此,實(shí)際上已有消息灼的周期、截止時(shí)限不會(huì)發(fā)生改變。
[0079] 該步驟處理完之后,如果Sk為空,則返回步驟4);否則進(jìn)入步驟43),對(duì)S k中的剩余 信號(hào)進(jìn)行繼續(xù)處理。
[0080] 43)對(duì)Sk的打包歸屬進(jìn)行分析。如果消息集F中部分(或所有)已有消息的消息級(jí)空 閑帶寬之和仍不夠容納Sk中的所有信號(hào),進(jìn)入步驟44)。否則,需對(duì)"采用整數(shù)線性規(guī)劃算法 將Sk中的所有信號(hào)打包到已有消息的消息級(jí)空閑帶寬之中"和"采用整數(shù)線性規(guī)劃算法將Sk 中的所有信號(hào)打包到空消息之中"這兩種可能的方案對(duì)應(yīng)得到的消息集F的帶寬利用率U進(jìn) 行對(duì)比分析。如果F中部分(或所有)已有消息的消息級(jí)空閑帶寬之和足夠容納S k中的所有 信號(hào)時(shí),僅需按照周期降序的順序依次選擇足夠容納Sk中的所有信號(hào)的已有消息即可。
[0081 ]已有CAN FD消息fj的消息級(jí)空閑帶寬M_SLKj的定義:
[0082] CAN Π )消息的最大負(fù)載64bytes,因此當(dāng)消息的負(fù)載未滿的時(shí)候,已有消息fj中包 含消息級(jí)空閑帶寬M_SLKj(單位為比特)C3IVLSLKj的計(jì)算公式如下:
[0083] M_SLKj=(64_Lj)X8 (14)
[0084] 如圖2所示的信號(hào)打包實(shí)例,M_SLKj = 496bits。
[0085] 消息灼的帶寬利用率山的計(jì)算公式如下:
[0086]
( 15)
[0087] 消息集F的帶寬利用率的計(jì)算公式如下:
[0088]
ciU
[0089]如果前一種方案對(duì)應(yīng)的帶寬利用率更小,則將Sk中的所有信號(hào)打包到F包含已有 消息之中。否則,進(jìn)入步驟44)。
[0090] 44)新生成一個(gè)空消息fne3W,采用整數(shù)線性規(guī)劃算法將Sk中的部分信號(hào)插入fnew2 中。將fnew插入F之中,刪除Sk中已打包的信號(hào)。如果Sk不為空,返回步驟43)。否則,返回步驟 4) 〇
[0091] 5)按照時(shí)間健壯性升序的順序?yàn)镕中的消息分配優(yōu)先級(jí),并對(duì)F的可調(diào)度性進(jìn)行分 析。優(yōu)先級(jí)分配方法的具體過(guò)程如下:
[0092] 51)假定優(yōu)先級(jí)是按照從高到低的順序進(jìn)行分配,消息集F中已經(jīng)分配優(yōu)先級(jí)的消 息子集SFa,未分配優(yōu)先級(jí)的消息子集為Fn,即F=Fa U Fn。Fa初始化為空,始化為F。在優(yōu) 先級(jí)分配的過(guò)程中,如果為Fn*的消息t分配當(dāng)前優(yōu)先級(jí)時(shí)灼可調(diào)度,那么此時(shí)灼的時(shí)間健 壯性定義為其截止時(shí)限和分配當(dāng)前優(yōu)先級(jí)時(shí)的最差反應(yīng)時(shí)間的差值。如果為t分配當(dāng)前優(yōu) 先級(jí)時(shí)t不可調(diào)度,那么此時(shí)t的時(shí)間健壯性為0。因此,在分配當(dāng)前優(yōu)先級(jí)時(shí)不需對(duì)t進(jìn)行 考慮,t只可能分配更低的優(yōu)先級(jí)。在分配當(dāng)前優(yōu)先級(jí)時(shí),如果F n中存在多個(gè)消息均可調(diào)度, 那么則按照時(shí)間健壯性升序的順序?qū)?dāng)前優(yōu)先級(jí)分配給當(dāng)前時(shí)間健壯性最小的消息。
[0093] 執(zhí)行完步驟51),如果F中的所有消息均可分配到合適的優(yōu)先級(jí),即F可調(diào)度,那么 信號(hào)集S的打包結(jié)束,直接返回消息集F作為打包的輸出結(jié)果。否則,進(jìn)入步驟52)。
[0094] 52)*Fn中的消息分配當(dāng)前優(yōu)先級(jí)時(shí),所有消息均不可調(diào)度。此時(shí),則需按照如下 方式對(duì)Fn中的消息進(jìn)行處理。
[0095]按照消息周期大小升序的順序從Fn*選擇包含周期大小不等的信號(hào)的消息進(jìn)行 拆分,以最大程度降低該消息對(duì)Fn中的其它消息造成的搶占,從而提高Fn的可調(diào)度性。如果 更新后的F n#在消息在分配當(dāng)前優(yōu)先級(jí)時(shí)可調(diào)度,則返回步驟5)進(jìn)行再次分析。如果此時(shí)Fn 中所有消息包含的信號(hào)的周期都相等,則消息集F不可調(diào)度,信號(hào)集S打包失敗。
[0096] 以下將給出本發(fā)明的具體實(shí)施例。
[0097] 假設(shè)CAN ro網(wǎng)絡(luò)裁斷段的帶寬為500kbps,數(shù)據(jù)傳輸段的帶寬為2Mbps。某個(gè)ECU中 包含的信號(hào)集3={81, 82,83,84},所有信號(hào)的已知參數(shù)如表1所示。根據(jù)本發(fā)明提供的技術(shù) 方案,首先將信號(hào)集S劃分為三個(gè)如下信號(hào)組= S1=BU,S2= {s2},S3= {S3,S4},并且信號(hào) 組,以及信號(hào)組內(nèi)的信號(hào)按照周期大小升序的順序進(jìn)行排列。然后,從信號(hào)組S 1開(kāi)始進(jìn)行打 包。
[0098]表1信號(hào)集實(shí)例的相關(guān)屬性
[0101]由于31是第一個(gè)信號(hào)組且其包含的信號(hào)的大小的總和小于64bytes,因此,只需新 生成一個(gè)空消息心,并將S1中的信號(hào)插入fi即可。此時(shí)得到的已有消息心的周期和大小等于 信號(hào)Si的周期和大小,f 1對(duì)應(yīng)的負(fù)載級(jí)空閑和消息級(jí)空閑分別為2b i t S和504b i t S。接著,對(duì) 信號(hào)組32進(jìn)行打包。由于A的負(fù)載級(jí)空閑可容納S2中的所有信號(hào),因此直接將S 2中的信號(hào)插 入f 1即可。此時(shí),f 1的大小更新為32bits、負(fù)載級(jí)空閑更新為O,其周期等其他屬性不變。最 后,對(duì)S3進(jìn)行打包分析。由于此時(shí)心的負(fù)載級(jí)空閑為0,因此需就S3是插入已有消息心的消息 級(jí)空閑還是新生成的空消息f 2之中進(jìn)行帶寬利用率分析和判斷。通過(guò)如下情況1和情況2的 分析可知,將S3插入新生成的空消息f 2對(duì)應(yīng)的帶寬利用率更高。因此,信號(hào)集S的打包結(jié)果為 {fl,f2},其中fl= {S1,S2},f2= {S3,S4}。但是如果按照已有的以單個(gè)信號(hào)為打包單元的方 法,信號(hào)集S的打包結(jié)果為由下面的分析可知,本發(fā)明提出的以信 號(hào)組為打包單元的方法對(duì)應(yīng)的帶寬更高效。
[0102] 情況1:將S3插入已有消息A的消息級(jí)空閑之中
[0103] 消息fi的負(fù)載大小Li需更新為7bytes,周期不變?yōu)閘OOOus。
[0104]
[0105]其中,C 1和Iv 1分別表不插入信號(hào)組S3后消息fi的傳輸時(shí)長(zhǎng)和周期大小。
[0106]情況2:將S3插入新生成的空消息f2之中
[0107] 此時(shí)存在兩個(gè)消息fi和f2,其負(fù)載大小Li和L2分別為更新為4bytes和3bytes,周期 分別為 1000 us 和8000us。
[01081
[0109]其中,CdPT1*別表示原消息A的傳輸時(shí)長(zhǎng)和周期大小,CdPT2分別表示消息5的 傳輸時(shí)長(zhǎng)和周期大小。
[0110]以上實(shí)施例僅為說(shuō)明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是 按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動(dòng),均落入本發(fā)明保護(hù)范圍 之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種面向車(chē)載CAN抑網(wǎng)絡(luò)的信號(hào)分組打包方法,其特征在于包括如下步驟: 步驟1,依據(jù)信號(hào)的周期大小對(duì)信號(hào)進(jìn)行分組,并根據(jù)周期大小對(duì)分組得到的信號(hào)組進(jìn) 行升序排列; 步驟2,依據(jù)空閑帶寬評(píng)價(jià)指標(biāo)和整數(shù)線性規(guī)劃算法將信號(hào)組依次打包到消息之中,得 到消息集; 步驟3,按照時(shí)間健壯性升序的順序?yàn)榇虬蟮玫降南⒓峙鋬?yōu)先級(jí)并進(jìn)行調(diào)度分 析,如果打包后得到的消息集不可調(diào)度,則對(duì)打包后得到的消息集進(jìn)行拆分W提高整個(gè)消 息集的可調(diào)度性,直到打包后得到的消息集可調(diào)度或沒(méi)有消息可被拆分為止。2. 如權(quán)利要求1所述的一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,其特征在于:所 述步驟1中,還對(duì)信號(hào)組內(nèi)的信號(hào)按照信號(hào)大小進(jìn)行升序排列。3. 如權(quán)利要求1所述的一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,其特征在于:所 述步驟2的詳細(xì)內(nèi)容是: 21) 如果當(dāng)前打包的信號(hào)組Sk不是周期最小的信號(hào)組,則轉(zhuǎn)到步驟22),否則,根據(jù)Sk中 所有信號(hào)的大小總和SUfflk的情況對(duì)Sk進(jìn)行如下處理:如果SUfflk小于或等于CAN FD消息允許 的最大負(fù)載時(shí),新生成一個(gè)空消息fnew,并將Sk中的所有信號(hào)都打包到fnew之中,然后將fnew 加入已有的消息集F之中;如果sumk大于CAN FD消息允許的最大負(fù)載時(shí),生成一個(gè)空消息 fnew,并采用整數(shù)線性規(guī)劃算法將Sk中的部分信號(hào)打包到fnew之中;然后,將已經(jīng)打包到fnew 之中的信號(hào)從Sk中刪除;如果Sk不為空,再生成一個(gè)空消息fnew,按照同樣的方法對(duì)Sk中的信 號(hào)進(jìn)行打包,直到Sk中的所有信號(hào)都打包到消息之中;然后將打包生成的消息加入已有的 消息集F之中; 22) 如果當(dāng)前打包的信號(hào)組Sk不是周期最小的信號(hào)組,則首先采用整數(shù)線性規(guī)劃算法將 Sk中的部分信號(hào)打包到F包含的已有消息的負(fù)載級(jí)空之中,然后更新有新信號(hào)插入 的已有消息的大小、周期和截止時(shí)限,并將已經(jīng)打包的信號(hào)從Sk中刪除; 該步驟處理完之后,如果Sk為空,則返回步驟21);否則進(jìn)入步驟23),對(duì)Sk中的剩余信號(hào) 進(jìn)行繼續(xù)處理; 23) 對(duì)Sk的打包歸屬進(jìn)行分析:如果消息集F中部分或所有已有消息的消息級(jí)空閑帶寬 之和仍不夠容納Sk中的所有信號(hào),進(jìn)入步驟24);否則,對(duì)"采用整數(shù)線性規(guī)劃算法將Sk中的 所有信號(hào)打包到已有消息的消息級(jí)空閑帶寬之中"和"采用整數(shù)線性規(guī)劃算法將Sk中的所 有信號(hào)打包到空消息之中"運(yùn)兩種可能的方案對(duì)應(yīng)得到的消息集F的帶寬利用率U進(jìn)行對(duì)比 分析,如果F中部分或所有已有消息的消息級(jí)空閑帶寬之和足夠容納Sk中的所有信號(hào)時(shí),按 照周期降序的順序依次選擇足夠容納Sk中的所有信號(hào)的已有消息進(jìn)行分析;如果前一種方 案對(duì)應(yīng)的帶寬利用率更小,則將Sk中的所有信號(hào)打包到F包含已有消息之中;否則,進(jìn)入步 驟24); 24) 新生成一個(gè)空消息fnew,采用整數(shù)線性規(guī)劃算法將Sk中的部分信號(hào)插入fnew之中,將 fnew插入F之中,刪除Sk中已打包的信號(hào),如果Sk不為空,返回步驟23);否則,返回步驟21)。4. 如權(quán)利要求3所述的一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,其特征在于:所 述步驟21)中,空消息fnew中打包有信號(hào)之后新的周期Tnew、大小Znew和截止時(shí)限D(zhuǎn)new的計(jì)算公 式如下: Tnew=Iti SiEfnewI其中,S康不信號(hào)集Sk中的信號(hào),Sk= {si, S2 ,…,Si ,…},t康不信號(hào)Si的觸發(fā)周期,Zi表 示信號(hào)Si的大小。5.如權(quán)利要求1所述的一種面向車(chē)載CAN FD網(wǎng)絡(luò)的信號(hào)分組打包方法,其特征在于:所 述步驟3的詳細(xì)內(nèi)容是: 31) 假定優(yōu)先級(jí)按照從高到低的順序進(jìn)行分配,消息集F中已經(jīng)分配優(yōu)先級(jí)的消息子集 為Fa,未分配優(yōu)先級(jí)的消息子集為Fn, Fa初始化為空,F(xiàn)n初始化為F;在優(yōu)先級(jí)分配的過(guò)程中, 如果為Fn中的消息。分配當(dāng)前優(yōu)先級(jí)時(shí)??烧{(diào)度,那么此時(shí)。的時(shí)間健壯性定義為其截止 時(shí)限和分配當(dāng)前優(yōu)先級(jí)時(shí)的最差反應(yīng)時(shí)間的差值;如果為分配當(dāng)前優(yōu)先級(jí)時(shí)f J不可調(diào)度, 那么此時(shí)的時(shí)間健壯性為0;分配當(dāng)前優(yōu)先級(jí)時(shí),如果Fn中存在多個(gè)消息均可調(diào)度,那么則 按照時(shí)間健壯性升序的順序?qū)?dāng)前優(yōu)先級(jí)分配給當(dāng)前時(shí)間健壯性最小的消息; 執(zhí)行完步驟31),如果F中的所有消息均分配到合適的優(yōu)先級(jí),那么信號(hào)集S的打包結(jié) 束,直接返回消息集F作為打包的輸出結(jié)果,否則,進(jìn)入步驟32); 32) 為Fn中的消息分配當(dāng)前優(yōu)先級(jí)時(shí),所有消息均不可調(diào)度,此時(shí),按照消息周期大小升 序的順序從Fn中選擇包含周期大小不等的信號(hào)的消息進(jìn)行拆分,如果更新后的Fn存在消息 在分配當(dāng)前優(yōu)先級(jí)時(shí)可調(diào)度,則返回步驟31)進(jìn)行再次分析;如果此時(shí)Fn中所有消息包含的 信號(hào)的周期都相等,則消息集F不可調(diào)度,信號(hào)集S打包失敗。
【文檔編號(hào)】H04L12/927GK105915425SQ201610428823
【公開(kāi)日】2016年8月31日
【申請(qǐng)日】2016年6月16日
【發(fā)明人】謝勇, 吳克壽, 何凡, 何一凡, 洪朝群, 王曉棟, 胡亮
【申請(qǐng)人】廈門(mén)理工學(xué)院