開發(fā)支持符合AUTOSAR標(biāo)準(zhǔn)的軟件組件的建模特定領(lǐng)域的語言。支持建模軟件組件的應(yīng)用是基于TextX python模塊和內(nèi)部開發(fā)的建模框架。通過應(yīng)用程序建模帶來了更安全和更快的方式來應(yīng)對各種模型的變化。在這篇論文中,我們展示了應(yīng)用程序工作的基本算法、應(yīng)用程序的部分功能和使用特定領(lǐng)域語言的例子,其結(jié)果顯示了模型的一些變化。
I.簡介
在現(xiàn)代汽車行業(yè)中,軟件和電子控制單元正變得越來越多。如果我們觀察一下現(xiàn)代新車,我們會注意到大量的電子控制單元(ECUs),它們基本上是車輛的思想,完成所有的邏輯和驅(qū)動工作。汽車行業(yè)的目標(biāo)是提高司機(jī)、乘客和其他交通參與者的整體安全,這正是軟件進(jìn)入汽車行業(yè)的原因和方式。由于車輛中有大量的ECU,有非常復(fù)雜的系統(tǒng),隨著新的安全功能和技術(shù)的實(shí)施,這些系統(tǒng)變得更加復(fù)雜。
現(xiàn)代汽車甚至可以包含超過100個ECU,其中每個ECU都負(fù)責(zé)和執(zhí)行特定的任務(wù)。每項任務(wù)都必須在準(zhǔn)確規(guī)定的時間內(nèi)執(zhí)行。也就是說,任何應(yīng)用于硬件層面的變化都會影響到軟件,需要對軟件進(jìn)行額外的修改和校準(zhǔn),以使其按預(yù)期工作。面對這個問題,行業(yè)內(nèi)領(lǐng)先的汽車公司已經(jīng)建立了合作關(guān)系,他們將使硬件開發(fā)和軟件開發(fā)相互獨(dú)立。
II.AUTOSAR標(biāo)準(zhǔn)
AUTOSAR(汽車開放系統(tǒng)架構(gòu))是一個由汽車制造商、供應(yīng)商、服務(wù)提供商和來自汽車E/E、軟件行業(yè)的公司組成的全球開發(fā)合作伙伴關(guān)系。它成立于2003年。一個目標(biāo)是使硬件開發(fā)獨(dú)立于軟件。 AUTOSAR架構(gòu)由4層組成,如圖1所示。這4個層是:應(yīng)用層、運(yùn)行時間環(huán)境(RTE)層、基本軟件層(BSW),最下面是硬件(微控制器)層。
圖1 AUTOSAR分層結(jié)構(gòu)
A.應(yīng)用層
應(yīng)用層是架構(gòu)中最頂端的部分,由特定數(shù)量的軟件組件組成,每個組件執(zhí)行規(guī)定的任務(wù)。
1) 軟件組件
軟件組件代表了有明確任務(wù)的應(yīng)用程序。組件的類型可以根據(jù)其目的而變化,例如,它可以是應(yīng)用程序、傳感器、執(zhí)行器、輸入/輸出組件和更多。兩個或多個組件之間可以通過連接的端口進(jìn)行通信(只有連接的端口可以交換數(shù)據(jù))。 有兩種類型的端口可用,發(fā)送者/接收者(S/R)通信或客戶端/服務(wù)器(C/S)通信。
S/R通信主要用于定期傳輸數(shù)據(jù),C/S通信僅用于按要求提供數(shù)據(jù)或操作。軟件組件可以有1個或多個S/R或C/S類型的端口,這就是組件之間相互通信的方式。 除了端口,每個軟件組件還有一個主要部分,那就是它的可運(yùn)行性。Runnable代表軟件組件的實(shí)現(xiàn),它們可以被多種類型的觸發(fā)器所觸發(fā)。觸發(fā)器可以是初始化觸發(fā)器(啟動時執(zhí)行)、周期性觸發(fā)器(在定義的時間段內(nèi)執(zhí)行)、客戶端請求(請求操作)等等。
B.運(yùn)行時間環(huán)境 (RTE)
RTE實(shí)現(xiàn)了虛擬功能總線,有助于ECU內(nèi)的SWC和ECU外的SWC的連接。它使用端口和接口實(shí)現(xiàn)通信路徑,用于連接軟件組件和下層的基本軟件(BSW)模塊。
C.基礎(chǔ)軟件 (BSW)
基礎(chǔ)軟件(BSW)是標(biāo)準(zhǔn)化的軟件模塊,提供運(yùn)行上層軟件的功能部分所需的各種服務(wù)。
III.建模中的應(yīng)用
AUTOSAR模型描述的是將被集成到汽車ECU中的軟件。有了模型,軟件的配置就有了很多可能性,也就是說,通過模型我們可以定義將被使用和傳輸?shù)臄?shù)據(jù)類型、組件的端口數(shù)量、組件的執(zhí)行時間等。為了改變模型(改變一些配置),必須要有專門的軟件和使用許可才能做到這一點(diǎn)。使用特定領(lǐng)域語言(DSL)進(jìn)行建模的應(yīng)用程序可以大大簡化和加快建模階段。
使用應(yīng)用程序進(jìn)行建模,歸根結(jié)底就是把模型中需要的變化寫到一個文件中,然后執(zhí)行該應(yīng)用程序。 使用這種應(yīng)用程序進(jìn)行建模的優(yōu)勢很多。最重要的優(yōu)勢之一是,如果存在人為錯誤,應(yīng)用程序?qū)⒉辉试S對模型進(jìn)行修改。除此以外,應(yīng)用變化所需的時間應(yīng)更短,所使用的語言應(yīng)簡化并對用戶友好(易于閱讀和理解),等等。
為了開發(fā)這種建模應(yīng)用程序,使用了名為TextX的python模塊來創(chuàng)建特定領(lǐng)域的語言,并在模型中使用內(nèi)部開發(fā)的建模框架來操作AUTOSAR對象。
A.TextX 模塊
TextX 模塊是一個用于創(chuàng)建domaing specific語言(DSL)的工具。創(chuàng)建的DSL將被用于編寫模型中想要的變化。在這個模塊的幫助下,我們定義了DSL的語法,這意味著每一個動作(模型中的變化)都必須以特定的方式編寫,以使變化成功應(yīng)用于模型。
B.建模框架
建模框架是開發(fā)的工具,能夠更容易地操縱模型內(nèi)的對象。該工具遵循AUTOSAR標(biāo)準(zhǔn),模型中的每個字段/屬性都被視為應(yīng)用程序中的一個對象。
IV.使用建模應(yīng)用程序
上述TextX模塊與建模框架相結(jié)合,提供了對各種模型進(jìn)行修改的可能性。圖片2顯示了應(yīng)用程序的工作情況。有三個輸入文件,語法定義變化應(yīng)該如何寫才能成功應(yīng)用,文件包含對模型的實(shí)際需要的變化和模型本身。 作為應(yīng)用程序的輸出,對已經(jīng)修改過的模型,只有在符合標(biāo)準(zhǔn)和規(guī)則的情況下,才會對其進(jìn)行需要的修改。
圖2 應(yīng)用程序的工作原理 在圖片3中,顯示了應(yīng)用程序的工作原理(核心算法)。
圖3 執(zhí)行建模應(yīng)用程序的工作流程
在建模應(yīng)用程序的開始階段,所有的輸入都被加載(語法、包含變化和模型的文件)。 在語法檢查中,它被分析為書面變化是否符合定義的語法。如果在這里出現(xiàn)一些錯誤,這意味著該變化不被支持或書寫錯誤,在這種情況下,不應(yīng)采取進(jìn)一步行動。
語法檢查成功后,在建模框架的協(xié)助下,模型被加載為輸入。模型的所有屬性和配置都被作為對象加載到應(yīng)用程序中,一旦完成,加載的模型就可以用輸入文件中描述的變化進(jìn)行修改。 如果改變需要修改模型中已經(jīng)存在的部分(例如,想改變現(xiàn)有端口的名稱),首先將在建模框架的幫助下找到代表該確切部分的對象。之后,當(dāng)它被找到時,基本上變化將作為修改對象的一個屬性來執(zhí)行。
在其他情況下,如果需要創(chuàng)建新的東西,將有必要定義創(chuàng)建這種對象所需的強(qiáng)制性信息(例如,如果創(chuàng)建新的組件,需要的信息是名稱,它應(yīng)該有哪些端口和可運(yùn)行性)。在提供這些信息后,建模框架將創(chuàng)建對象并將其添加到模型中。 完成對象操作(創(chuàng)建新對象或修改現(xiàn)有對象)后,有必要根據(jù)AUTOSAR標(biāo)準(zhǔn)和約束條件進(jìn)行檢查。
這樣做的目的是為了消除人為錯誤因素,并保證應(yīng)用于模型的變化是有效的。如果有任何形式的違反,更改將不會被應(yīng)用到模型上。
在應(yīng)用結(jié)束時,只有當(dāng)所有條件都得到滿足時,模型才會完成修改。
V.建模應(yīng)用實(shí)例
出于測試目的,一些AUTOSAR模型被作為輸入,并將對其進(jìn)行某些修改。我們將定義如下變化,在現(xiàn)有的兩個組件(CtApTest1_SH00和CtCdMiddlewareQM_SH00)上,將增加兩個新的端口,由兩個數(shù)據(jù)元素組成。創(chuàng)建端口后,它們將被連接起來,以便在新創(chuàng)建的端口之間實(shí)現(xiàn)通信。 圖4它展示了如何編寫更改以完成上面描述的所需更改。
圖4 按照定義的語法,將在模型中應(yīng)用的變化實(shí)例
根據(jù)寫入修改的輸入文件,可以看到名稱為PpTestInterface的端口被添加到兩個不同的組件CtApTest1_SH00和CtCdMiddlewareQM_SH00。端口內(nèi)的數(shù)據(jù)元素數(shù)量或?qū)⑻砑拥亩丝跀?shù)量沒有嚴(yán)格規(guī)定,只要符合AUTOSAR標(biāo)準(zhǔn),由用戶決定。
在執(zhí)行建模應(yīng)用程序后,將看到書面修改應(yīng)用在輸入模型上。
在圖片5和圖片6中,顯示了建模應(yīng)用的結(jié)果。正如在圖片5中所看到的,在arxml文件中,想要添加的端口很容易被添加到組件CtApTest1_SH00中,使用建模應(yīng)用程序,它包含為該端口定義的所有數(shù)據(jù)元素。
在CtApTest1_SH00組件上,我們定義了端口為生產(chǎn)者(圖像中的P-端口),意味著數(shù)據(jù)將從這里被進(jìn)一步發(fā)送,而在另一個組件CtCdMiddleware_SH00上,我們創(chuàng)建了相反的接收器(R-端口),它將接收從生產(chǎn)者發(fā)送的任何數(shù)據(jù),使這些端口兼容連接。
圖5 組件上創(chuàng)建的端口
圖片6顯示了新創(chuàng)建的端口之間的連接器。基本上這種連接為它們提供了通信和交換數(shù)據(jù)的能力。
圖6 新建端口之間的連接
VI.總結(jié)
建模本身越來越復(fù)雜,越來越耗時。此外,為了對模型進(jìn)行任何改變,必須要有使用軟件的許可證和知識。這個建模應(yīng)用程序的主要目標(biāo)是完成簡單和快速的建模,在對模型進(jìn)行修改時犯錯誤的風(fēng)險很低。 建模應(yīng)用的主要優(yōu)勢體現(xiàn)在簡單、快速和可靠的模型更改上。在一個文件中編寫簡單的、人類可讀的變化,應(yīng)足以執(zhí)行一些復(fù)雜的模型更新。
進(jìn)一步改進(jìn)建模應(yīng)用程序的下一步可能是可視化地展示書面更改。一旦編寫了更改,終端用戶將更容易直觀地看到和理解將要進(jìn)行的更改。這可以通過使用對象圖或組件圖來實(shí)現(xiàn)。
審核編輯:劉清
-
微控制器
+關(guān)注
關(guān)注
48文章
7544瀏覽量
151323 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
360瀏覽量
21557 -
ecu
+關(guān)注
關(guān)注
14文章
886瀏覽量
54485 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84631
原文標(biāo)題:根據(jù)AUTOSAR標(biāo)準(zhǔn)開發(fā)用于建模軟件組件的特定領(lǐng)域語言
文章出處:【微信號:阿寶1990,微信公眾號:阿寶1990】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論