當(dāng)前位置:首頁(yè) > 汽車(chē)電子 > 汽車(chē)電子
[導(dǎo)讀]使用UML建模軟件Enterprise Architect(EA)設(shè)計(jì)了車(chē)身網(wǎng)絡(luò)電控系統(tǒng),并借助EA的代碼生成功能生成可編譯的C語(yǔ)言代碼,實(shí)現(xiàn)了CAN網(wǎng)絡(luò)、LIN網(wǎng)絡(luò)及二者之間網(wǎng)關(guān)的組建。同時(shí),搭建車(chē)身網(wǎng)絡(luò)實(shí)驗(yàn)平臺(tái),完成車(chē)身網(wǎng)絡(luò)中各部件的實(shí)時(shí)控刺,驗(yàn)證了生成代碼的有效性。

引言
    在車(chē)身電子方面,國(guó)內(nèi)外進(jìn)行了系列的研究。上海理工大學(xué)陳家琪等人利用工控機(jī)和相關(guān)數(shù)據(jù)采集卡以及CAN總線智能接口,構(gòu)建了一個(gè)集中式的車(chē)身電子試驗(yàn)臺(tái)。哈爾濱工業(yè)大學(xué)焦曉偉等人采用Stateflow圖形化建模工具構(gòu)建符合AUTOSAR標(biāo)準(zhǔn)的車(chē)身應(yīng)用層軟件模型,再利用Targetlink代碼生成工具基于模型實(shí)現(xiàn)代碼自動(dòng)生成。而英國(guó)Warwick大學(xué)的Yue Guo等人,則比較了基于SysML和基于“Simulink+Stateflo-w”的開(kāi)發(fā)方法在駕駛信息系統(tǒng)開(kāi)發(fā)過(guò)程中的優(yōu)缺點(diǎn)。本文采用基于框架結(jié)構(gòu)和高級(jí)語(yǔ)言描述的車(chē)身網(wǎng)絡(luò)電控系統(tǒng)開(kāi)發(fā)方法,采用UML建模工具實(shí)現(xiàn)程序代碼的自動(dòng)生成,可進(jìn)一步簡(jiǎn)化車(chē)身網(wǎng)絡(luò)的設(shè)計(jì)與開(kāi)發(fā)過(guò)程,提高軟件可重用度,降低開(kāi)發(fā)成本,減少人為錯(cuò)誤。

1 EA及代碼生成功能
   
Enterprise Architect(EA)是澳大利亞Sparx Systems公司開(kāi)發(fā)的一套UML建模及設(shè)計(jì)平臺(tái)。EA體積小巧,使用簡(jiǎn)便,對(duì)UML標(biāo)準(zhǔn)的支持完整;除支持UML2.0標(biāo)準(zhǔn)的所有13種圖形之外,還支持其他的擴(kuò)展圖,包括分析圖、自定義圖、需求圖、維護(hù)圖、用戶(hù)界面圖、數(shù)據(jù)庫(kù)模式
圖、文檔、業(yè)務(wù)建模與業(yè)務(wù)交互圖等。
    為便于擴(kuò)展、定制以及二次開(kāi)發(fā),EA提供了豐富的SDK。代碼模板框架(Code Template Framework,CTF)是SDK的一部分,EA的代碼生成功能正是通過(guò)基于此框架的代碼生成模板實(shí)現(xiàn)的。代碼生成模板指定了從UML元素到給定編程語(yǔ)言的轉(zhuǎn)換過(guò)程,其修改通過(guò)代碼模板編輯器實(shí)現(xiàn)。打開(kāi)方法為EA主菜單Settings→Code Generation Template,或使用快捷鍵Ctrl+Shift+P。代碼生成模板以純文本形式編寫(xiě),其語(yǔ)法風(fēng)格兼具標(biāo)記語(yǔ)言和腳本語(yǔ)言的語(yǔ)法特性。這種語(yǔ)法主要關(guān)注三種基本結(jié)構(gòu):
    (1)字面文本。在代碼生成模板中,除了空行將被忽略以外,所有不是宏或變量的定義及引用的文本,都將作為字面文本而直接輸出到生成的代碼中。如:
    class % className%
    (2)宏。宏既可用于訪問(wèn)UML模型中的元素值,又可用于對(duì)生成的代碼進(jìn)行結(jié)構(gòu)化處理。所有的宏都有兩個(gè)百分號(hào)%包含其中。CTF中包含模板替代宏、域替代宏、標(biāo)記值替代宏、控制宏、函數(shù)宏和EASL代碼生成宏6種基本的宏。正是這些豐富的宏定義造就了EA強(qiáng)大的代碼生成功能。仍以上例說(shuō)明,“%className%”就是一個(gè)域替代宏,在生成的代碼中將以當(dāng)前的類(lèi)名替代,故若當(dāng)前類(lèi)為Foo,則語(yǔ)句的輸出為“cl-ass Foo”。
    (3)變量。變量的定義和引用為在代碼生成模板中存取數(shù)據(jù)提供了方便。CTF中的變量采用弱類(lèi)型定義,即變量的數(shù)據(jù)類(lèi)型可以被忽略且一個(gè)變量可以被賦予不同數(shù)據(jù)類(lèi)型的值。變量的值可以來(lái)自各種宏、雙引號(hào)包含的字面文本和其他變量的引用等。變量的定義和引用使用美元符號(hào)加一個(gè)合法標(biāo)識(shí)符,如$foo=%class Name%。變量$foo將存儲(chǔ)當(dāng)前類(lèi)的名稱(chēng),需要引用此變量時(shí)直接使用$foo即可。

2 軟硬件設(shè)計(jì)
   
為了方便調(diào)試及驗(yàn)證生成代碼的有效性,本設(shè)計(jì)搭建以CAN總線為主干、LIN總線為下層網(wǎng)絡(luò)的車(chē)身網(wǎng)絡(luò)演示實(shí)驗(yàn)臺(tái)。
2.1 硬件拓?fù)?br />     根據(jù)車(chē)身電器的功能和位置,實(shí)驗(yàn)臺(tái)拓?fù)洳季秩鐖D1所示。其中,粗實(shí)線為CAN總線及其節(jié)點(diǎn),細(xì)實(shí)線為UN總線及其節(jié)點(diǎn)。主干CAN總線上共有8個(gè)節(jié)點(diǎn),既是下層LIN網(wǎng)絡(luò)上的主機(jī)節(jié)點(diǎn),又是CAN/LIN網(wǎng)關(guān)。其中,數(shù)據(jù)采集節(jié)點(diǎn)使用USBCAN卡搭建,其余網(wǎng)關(guān)節(jié)點(diǎn)使用Freescale公司16位單片機(jī)MC9S12XSl28作為主控芯片。


    MC9S12XSl28同時(shí)具有CAN網(wǎng)絡(luò)控制器(MSCAN模塊)和LIN網(wǎng)絡(luò)控制器(SCI模塊),故只需再連接相應(yīng)的CAN網(wǎng)絡(luò)收發(fā)器TJAl050和LIN網(wǎng)絡(luò)收發(fā)器TJAl020即可完成CAN/LIN網(wǎng)關(guān)節(jié)點(diǎn)的硬件設(shè)計(jì)。CAN/LIN網(wǎng)關(guān)節(jié)點(diǎn)功能框圖如圖2所示。


    LIN從機(jī)節(jié)點(diǎn)使用Freescale公司8位單片機(jī)MC9S08DZ60作為主控芯片,使用其SCI模塊連接LIN網(wǎng)絡(luò)收發(fā)器TJAl020,再連接其他外圍執(zhí)行器組成。LIN從機(jī)節(jié)點(diǎn)功能框圖如圖3所示。


2.2 軟件建模
   
目前,大多數(shù)單片機(jī)所支持的軟件編譯器均以C語(yǔ)言為主,而在C語(yǔ)言中沒(méi)有類(lèi)及繼承等相關(guān)概念,同時(shí)出于可移植性的考慮,軟件模型采用分層思想。將整個(gè)設(shè)計(jì)的軟件結(jié)構(gòu)分為4層:第0層為類(lèi)型定義及中斷服務(wù)程序返回值的宏定義,第1層為單片機(jī)及其內(nèi)部功能模塊類(lèi)的抽象,第2層為外圍硬件類(lèi)的抽象,第3層為車(chē)身網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)類(lèi)的抽象。上層的類(lèi)通過(guò)調(diào)用下層類(lèi)提供的函數(shù)實(shí)現(xiàn)特定功能,各層的依賴(lài)關(guān)系如圖4所示。其中,虛線表示調(diào)用關(guān)系。下面具體介紹第1~3層的建模方法。


2.2.1 第1層一單片機(jī)及其內(nèi)部功能模塊類(lèi)的抽象
   
第1層的函數(shù)功能通過(guò)對(duì)單片機(jī)寄存器的讀寫(xiě)實(shí)現(xiàn),故使用類(lèi)的成員函數(shù),將寄存器的讀寫(xiě)代碼直接寫(xiě)在成員函數(shù)Behavior屬性的Ini-tial框中。如使能S12中的MSCAN模塊的代碼如下:
    CANCTL1(MSCANx)|=CANCTlLl_CANE_MASK;
    其中的CANCTL1是為了便于對(duì)多個(gè)MSCAN模塊做統(tǒng)一處理,以及便于選擇使用某個(gè)特定模塊而手動(dòng)編寫(xiě)的函數(shù)宏。在使用時(shí)只需將MSCANx賦值為相應(yīng)的整數(shù)值(對(duì)于MC9S12XSl28,可以是O~4)。
2.2.2 第2層一外圍硬件類(lèi)的抽象
   
第2層需要調(diào)用第1層類(lèi)的操作,這可以通過(guò)活動(dòng)圖實(shí)現(xiàn)。在活動(dòng)圖中,新建一個(gè)Action,根據(jù)需要選擇CallOperation(調(diào)用成員函數(shù))或Call Behavior(調(diào)用活動(dòng)圖的行為),再指定具體調(diào)用哪個(gè)成員函數(shù)或行為即可(調(diào)用的參數(shù)通過(guò)Action的Arguments屬性傳遞)。最后,將各個(gè)Action按照程序流程連接起來(lái)。
    這里,使用CAN協(xié)議(上層協(xié)議使用J1939)發(fā)送一個(gè)數(shù)據(jù)幀(活動(dòng)圖略——編者注)。為了能夠?qū)崿F(xiàn)行為圖(包括活動(dòng)圖)的代碼生成,必須將所有的行為圖及其元素都放在某個(gè)類(lèi)中。活動(dòng)圖經(jīng)過(guò)轉(zhuǎn)換后生成的代碼如下所示:

2.2.3 第3層一車(chē)身網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)類(lèi)的抽象
   
除了同樣需要調(diào)用第1層、第2層類(lèi)的操作之外,第3層還需要對(duì)中斷服務(wù)程序(ISR)進(jìn)行建模。ISR的建模涉及兩個(gè)問(wèn)題:ISR的返回值和ISR的定位。
    (1)ISR的返回值問(wèn)題。CodeWarrior支持兩種ISR的聲明方式。一種是使用預(yù)編譯指令pragma定義一個(gè)TRAP_PROC符號(hào),TRAP_PROC會(huì)提示編譯器下面的函數(shù)是ISR,編譯器會(huì)使用一個(gè)特殊的中斷返回指令來(lái)結(jié)束這個(gè)函數(shù)(一般是RTI指令)。此方法需要同時(shí)修改CodeWarrior工程中的PRM文件,將ISR與中斷向量表中的向量聯(lián)系起來(lái),不便于使用UML建模。
    另一種是使用與C51類(lèi)似的interrupt關(guān)鍵字,并指定相應(yīng)的中斷向量號(hào),這樣就同時(shí)完成了ISR的聲明和與中斷向量表的關(guān)聯(lián)。在EA中修改類(lèi)的代碼生成模板,添加一個(gè)衍型(stereotype)并命名為define,并添加相應(yīng)的模板代碼。其核心部分代碼如下:

    修改完成后,在建模過(guò)程中只需將類(lèi)的衍型設(shè)置為define,將類(lèi)名設(shè)置為新定義的符號(hào),類(lèi)的父類(lèi)設(shè)置為原符號(hào)即可。以CANO模塊的接收中斷的返回值為例,可將類(lèi)名設(shè)置為ISR_CAN0_RX,將父類(lèi)設(shè)置為interrupt 38void(此父類(lèi)并不存在)。最后生成的代碼如下:
    #define ISR_CAN0_RX interrupt 38 void
    然后將ISR的返回值指定為ISR_CANO_RX即可。
    (2)ISR的定位問(wèn)題。中斷服務(wù)程序的聲明和定義都必須定位于non-banked區(qū)域,通過(guò)使用“#pragma CODE_SEG NON_BANKED”實(shí)現(xiàn)。同時(shí),中斷服務(wù)程序末尾需要添加“#pragma CODE_SEG DEFAULT”,否則后面的函數(shù)也會(huì)被定位在non-banked區(qū)域而導(dǎo)致錯(cuò)誤。因此,中斷服務(wù)程序必須被“#pragma CODE_SEG NON_BANKED”和“#pragma CODE_SEG DEFAULT”包圍起來(lái)。這也可通過(guò)修改代碼生成模板實(shí)現(xiàn)。結(jié)合ISR返回值的宏定義,只需在當(dāng)函數(shù)返回值的前3個(gè)字符是“ISR”時(shí),在函數(shù)前后輸出上述兩條pragma預(yù)編譯指令即可。生成ISR聲明的代碼生成模板的核心部分如下:

    仍以上述CAN0模塊的接收中斷為例,最終生成的函數(shù)聲明如下;


3 調(diào)試與驗(yàn)證
   
本設(shè)計(jì)除了使用USBCAN卡作為數(shù)據(jù)采集節(jié)點(diǎn)以外,為了驗(yàn)證兩種總線協(xié)議的實(shí)現(xiàn)是否符合標(biāo)準(zhǔn),更直觀地查看總線幀中各個(gè)字段的值以及隨時(shí)檢測(cè)總線上是否發(fā)生幀錯(cuò)誤等,使用PC示波器PicoScope 5203搭配總線協(xié)議分析軟件WaveBPS捕獲兩種總線信號(hào)并進(jìn)行協(xié)議分析。Pi-coScope的兩個(gè)通道可同時(shí)捕獲CAN總線及LIN總線上的信號(hào),進(jìn)一步方便了網(wǎng)關(guān)節(jié)點(diǎn)的調(diào)試。
    圖5為在控制面板節(jié)點(diǎn)(源地址為0x26)打開(kāi)左轉(zhuǎn)向燈時(shí)發(fā)送給車(chē)燈節(jié)點(diǎn)(目標(biāo)地址為0x20)的CAN數(shù)據(jù)幀。其中,標(biāo)記為S的位是根據(jù)位填充規(guī)則自動(dòng)插入的填充位。圖6為車(chē)燈節(jié)點(diǎn)收到上述CAN數(shù)據(jù)幀后,根據(jù)網(wǎng)關(guān)路由策略及幀轉(zhuǎn)換規(guī)則,發(fā)送到LIN總線上的數(shù)據(jù)幀。



4 結(jié)論
   
本設(shè)計(jì)借助EA的代碼生成功能,通過(guò)修改代碼生成模板以滿足車(chē)身網(wǎng)絡(luò)電控系統(tǒng)開(kāi)發(fā)中C語(yǔ)言及編譯器的要求,進(jìn)行了車(chē)身網(wǎng)絡(luò)系統(tǒng)的開(kāi)發(fā)和初步實(shí)驗(yàn)驗(yàn)證。此方法極大地方便了設(shè)計(jì)開(kāi)發(fā),并可提高系統(tǒng)的可靠性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉