基于代碼生成的車身網(wǎng)絡(luò)電控系統(tǒng)設(shè)計(jì)
引言
在車身電子方面,國內(nèi)外進(jìn)行了系列的研究。上海理工大學(xué)陳家琪等人利用工控機(jī)和相關(guān)數(shù)據(jù)采集卡以及CAN總線智能接口,構(gòu)建了一個(gè)集中式的車身電子試驗(yàn)臺(tái)。哈爾濱工業(yè)大學(xué)焦曉偉等人采用Stateflow圖形化建模工具構(gòu)建符合AUTOSAR標(biāo)準(zhǔn)的車身應(yīng)用層軟件模型,再利用Targetlink代碼生成工具基于模型實(shí)現(xiàn)代碼自動(dòng)生成。而英國Warwick大學(xué)的Yue Guo等人,則比較了基于SysML和基于“Simulink+Stateflo-w”的開發(fā)方法在駕駛信息系統(tǒng)開發(fā)過程中的優(yōu)缺點(diǎn)。本文采用基于框架結(jié)構(gòu)和高級(jí)語言描述的車身網(wǎng)絡(luò)電控系統(tǒng)開發(fā)方法,采用UML建模工具實(shí)現(xiàn)程序代碼的自動(dòng)生成,可進(jìn)一步簡化車身網(wǎng)絡(luò)的設(shè)計(jì)與開發(fā)過程,提高軟件可重用度,降低開發(fā)成本,減少人為錯(cuò)誤。
1 EA及代碼生成功能
Enterprise Architect(EA)是澳大利亞Sparx Systems公司開發(fā)的一套UML建模及設(shè)計(jì)平臺(tái)。EA體積小巧,使用簡便,對(duì)UML標(biāo)準(zhǔn)的支持完整;除支持UML2.0標(biāo)準(zhǔn)的所有13種圖形之外,還支持其他的擴(kuò)展圖,包括分析圖、自定義圖、需求圖、維護(hù)圖、用戶界面圖、數(shù)據(jù)庫模式
圖、文檔、業(yè)務(wù)建模與業(yè)務(wù)交互圖等。
為便于擴(kuò)展、定制以及二次開發(fā),EA提供了豐富的SDK。代碼模板框架(Code Template Framework,CTF)是SDK的一部分,EA的代碼生成功能正是通過基于此框架的代碼生成模板實(shí)現(xiàn)的。代碼生成模板指定了從UML元素到給定編程語言的轉(zhuǎn)換過程,其修改通過代碼模板編輯器實(shí)現(xiàn)。打開方法為EA主菜單Settings→Code Generation Template,或使用快捷鍵Ctrl+Shift+P。代碼生成模板以純文本形式編寫,其語法風(fēng)格兼具標(biāo)記語言和腳本語言的語法特性。這種語法主要關(guān)注三種基本結(jié)構(gòu):
(1)字面文本。在代碼生成模板中,除了空行將被忽略以外,所有不是宏或變量的定義及引用的文本,都將作為字面文本而直接輸出到生成的代碼中。如:
class % className%
(2)宏。宏既可用于訪問UML模型中的元素值,又可用于對(duì)生成的代碼進(jìn)行結(jié)構(gòu)化處理。所有的宏都有兩個(gè)百分號(hào)%包含其中。CTF中包含模板替代宏、域替代宏、標(biāo)記值替代宏、控制宏、函數(shù)宏和EASL代碼生成宏6種基本的宏。正是這些豐富的宏定義造就了EA強(qiáng)大的代碼生成功能。仍以上例說明,“%className%”就是一個(gè)域替代宏,在生成的代碼中將以當(dāng)前的類名替代,故若當(dāng)前類為Foo,則語句的輸出為“cl-ass Foo”。
(3)變量。變量的定義和引用為在代碼生成模板中存取數(shù)據(jù)提供了方便。CTF中的變量采用弱類型定義,即變量的數(shù)據(jù)類型可以被忽略且一個(gè)變量可以被賦予不同數(shù)據(jù)類型的值。變量的值可以來自各種宏、雙引號(hào)包含的字面文本和其他變量的引用等。變量的定義和引用使用美元符號(hào)加一個(gè)合法標(biāo)識(shí)符,如$foo=%class Name%。變量$foo將存儲(chǔ)當(dāng)前類的名稱,需要引用此變量時(shí)直接使用$foo即可。
2 軟硬件設(shè)計(jì)
為了方便調(diào)試及驗(yàn)證生成代碼的有效性,本設(shè)計(jì)搭建以CAN總線為主干、LIN總線為下層網(wǎng)絡(luò)的車身網(wǎng)絡(luò)演示實(shí)驗(yàn)臺(tái)。
2.1 硬件拓?fù)?br /> 根據(jù)車身電器的功能和位置,實(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所示。
評(píng)論