0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何設計時序圖—以APA自動泊車系統(tǒng)為例

冬至子 ? 來源:喵星智能車 ? 作者:荔枝喵喵 ? 2023-09-14 11:20 ? 次閱讀

時序圖是闡明軟件設計的利器,也是系統(tǒng)架構的必備武器。今天我們以APA自動泊車系統(tǒng)為例來聊聊如何設計符合繪制原則又通俗易懂的時序圖。

1.時序圖說明

序列圖是一種 UML(統(tǒng)一建模語言)圖,它說明了系統(tǒng)中對象之間隨時間的交互,通常用于可視化消息流和軟件系統(tǒng)中對象之間方法調用的順序。

時序圖展示對象之間交互的順序,將交互行為建模為消息傳遞,通過描述消息是如何在對象間發(fā)送和接收的來動態(tài)展示對象之間的交互;相對于其他UML圖,時序圖更強調交互的時間順序;可以直觀的描述并發(fā)進程。

2.繪制原則

繪制原則在比較簡單,但是如果想要細致的描述出真實的交互情況,還需要在細節(jié)處多加斟酌,以及對整體流程有清晰的把握。在最近繪制時序圖的工作過程,我感覺到自己對系統(tǒng)的認識深入和清晰了許多,不求甚解的地方突然豁然開朗了。

1. 角色(Actor)

系統(tǒng)角色,可以是人、機器、其他系統(tǒng)、子系統(tǒng);在時序圖中用下圖表示。

image.png

2. 對象(Object)和生命線(Lifeline)

對象:對象的左右順序并不重要,但是為了作圖清晰整潔,通常應遵循以下兩個原則:把交互頻繁的對象盡可能的靠攏;2.把初始化整個交互活動的對象放置在最左端。

生命線:在時序圖中表示為從對象圖標向下延伸的一條虛線,表示對象存在的時間。

image.png

3. 控制焦點(Focus of Control)

又稱為激活期,表示時間段的符號,在這個時間段內對象將執(zhí)行相應的操作。它可以被理解成C語言語義中一對花括號{ }中的內容;用小矩形表示。

4. 消息(Message)

同步消息(Synchronous Message):消息的發(fā)送者把控制傳遞給消息的接收者,然后停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義.

異步消息(Asynchronous Message):消息發(fā)送者通過消息把信號傳遞給消息的接收者,然后繼續(xù)自己的活動,不等待接受者返回消息或者控制。異步消息的接收者和發(fā)送者是并發(fā)工作的。

返回消息(Return Message):返回消息表示從過程調用返回。

5. 自關聯消息

表示方法的自身調用或者一個對象內的一個方法調用另外一個方法。

image.png

6. 組合片段

組合片段用來解決交互執(zhí)行的條件和方式,它允許在序列圖中直接表示邏輯組件,用于通過指定條件或子進程的應用區(qū)域,為任何生命線的任何部分定義特殊條件和子進程。主要使用的組合片段名稱及含義如下:

image.png

3.繪制建議

時序圖最重要的是應該清晰、準確地表達系統(tǒng)的交互和行為。根據需要,最好與團隊成員進行溝通和反饋,以確保時序圖能夠準確地傳達設計意圖,能夠讓開發(fā)人員沒有誤解。

以下是個人在繪制時序圖時總結的一些心得體會:

  1. 確定目標 :明確繪制時序圖的目的是什么。是為了理解系統(tǒng)的交互流程,還是為了進行設計和調試等工作?這有助于確定所需的詳細程度和關注的重點。
  2. 選擇適當的顆粒度 :根據上一條確定的目標和需求,選擇適當的粒度來表示對象和消息。顆粒度太細可能導致時序圖復雜難懂,而粒度太粗可能會丟失一些重要的細節(jié)。肯定的是,我們沒辦法傳遞所有的信息,需要根據時序圖目的去選擇描述的傾向性。
  3. 使用清晰的命名 :為每個角色、對象和消息選擇清晰、準確的命名,以確保時序圖的可讀性和理解性。避免使用模糊或不明確的術語,盡量使用業(yè)務領域相關的術語。
  4. 合理組織布局 :在繪制時序圖時,合理組織和布局對象、生命線和消息,使其易于理解??梢园凑諘r間順序排列對象和消息,并使用對齊和間距來提高可讀性。
  5. 使用注釋和說明 :在時序圖中使用注釋和說明來提供額外的解釋和上下文信息。這可以幫助讀者更好地理解時序圖,尤其是對于復雜的交互和控制流程。
  6. 簡化和抽象 :對于復雜的系統(tǒng)和交互,可以考慮使用簡化和抽象的方式來繪制時序圖,以突出重點和減少混亂??梢允褂梅謱雍颓短椎臅r序圖,或者使用關鍵路徑和關鍵消息進行突出。
  7. 使用工具支持 :考慮使用專業(yè)的時序圖繪制工具,如UML建模工具或在線繪圖工具。這些工具提供了更多的功能和自動化支持,可以使繪制和編輯時序圖更加高效和方便。

4.繪制工具推薦

磨刀不誤砍柴工,在信息化時代,好的工具能夠成倍的提高我們的工作效率,下面介紹常用的時序圖繪制工具。

  1. Enterprise Architect :EA(Enterprise Architect)是一種功能強大的建模和設計工具,廣泛用于軟件開發(fā)、系統(tǒng)工程和業(yè)務流程建模等領域。
  2. Draw.io :Draw.io是一個在線繪圖工具,提供了各種圖表類型的繪制功能,包括時序圖。它具有直觀的用戶界面和豐富的圖形庫,可以輕松繪制和編輯時序圖。Draw.io還支持與Google Drive、Dropbox等云存儲服務的集成,方便團隊協(xié)作和文件共享。
  3. Microsoft Visio :Microsoft Visio是一種流行的商業(yè)繪圖工具,具有豐富的圖形庫和模板,可用于創(chuàng)建各種圖表和圖形,包括時序圖。Visio提供了直觀的界面和強大的繪圖功能,適用于較復雜的時序圖繪制需求。
  4. Lucidchart :Lucidchart是另一種在線繪圖工具,具有易用的界面和廣泛的圖形庫。它支持時序圖的繪制,提供了一系列交互元素和布局選項,方便繪制和調整時序圖的結構和樣式。Lucidchart還提供了與Google Drive、Slack等工具的集成,便于團隊協(xié)作和分享。
  5. PlantUML :PlantUML是一種基于文本的繪圖工具,可以通過簡單的文本描述來生成各種UML圖,包括時序圖。它具有簡單易用的語法,并支持多種輸出格式,可以使用PlantUML在任何文本編輯器中編寫時序圖,并使用命令行或插件將其轉換為圖像。

詳細說說我用過的兩個工具,EA和Draw.io

EA就不用說了,在汽車行業(yè)內鼎鼎大名,我們見到大量的設計圖都是出自EA,軟件內置有專門的狀態(tài)機繪制模塊、軟件部署、autosar、時序圖等等,并且能夠自動生成代碼,用起來十分方便,還美觀整潔。

但是由于專業(yè)版的收費原因,我供職的幾家都沒有買正版(流汗),只能自己在家用著玩玩,或者使用試用版,有30天免費試用(導出圖片會有水?。?。

image.png
EA提供的時序圖模板

Draw.io最大的優(yōu)點是其便捷性,可以在線繪制,并且擁有多種模板,聯網自動更新,方便團隊協(xié)作??梢陨螱ithub上下載應用程序,體驗和在線版一模一樣,完美實現無環(huán)境依賴的辦公。

image.png
Draw.io提供的時序圖模板

用APA自動泊車系統(tǒng)來舉例,如何設計能夠滿足功能開發(fā)的時序圖。

5.確定目標

在明確目標時首先強調,時序圖沒有優(yōu)劣好壞高下之分,它的作用是幫助設計者傳達出作者的設計理念,以便讀者更夠快速、無誤的理解。

比如我們作為系統(tǒng)工程師,是對于系統(tǒng)整體最了解的人,是最清楚ADCU域內各模塊之間數據交互的人;所以我們的設計的時序圖,力圖要將各模塊之間的交互梳理清楚,讓感知、融合、定位、規(guī)劃、控制等模塊的Owner能夠清楚的知道,在什么時間下該模塊需要與其他模塊進行什么樣的握手,而該模塊內部的信號邏輯,則歸屬于該模塊的負責人去設計。

好的,那么對于自動泊車系統(tǒng)來說,APA整體功能流程錯綜復雜,為避免時序圖臃腫與繁瑣導致的可讀性下降;我們將APA功能分解為若干個功能過程,分別對每個過程中的時序進行逐一描述,將各過程拼接后能夠得到清晰明白的功能時序。

6.選擇合適的顆粒度

作為系統(tǒng)工程師,我們當然選擇 通過功能解構來分別繪制時序圖 。本文不對APA功能邏輯做詳細介紹,那么熟悉APA的同學都知道,APA過程可以簡單的分為車位搜索、選擇車位、泊入泊出過程、中斷恢復等,下圖通過這種思路簡單的做時序圖分解。

image.png

于是我們知道了,需要分別設計“激活泊車功能”、“退出泊車功能”、“前臺搜車位”、“后臺搜車位”、“點擊選擇車位”、“自動泊車過程”、“泊車過程中斷”等等時序圖。

7.命名規(guī)則

另外描述的顆粒度應該選擇為模塊間的交互信號,如在設計初期該信號未定義,可以選擇用語義性的信號進行描述,通俗易懂即可,最好前綴明確標注為什么類型的信號,如以太網、CAN、FR、或域內的交互信號。

比如用戶按下激活泊車按鍵,這是一個以太網信號,以Eth為前綴,采用大駝峰命名法(個人習慣),描述為Eth_ApaBtn(1:EnterApa),括號內為該信號此時應該發(fā)送的值。

image.png

8.布局合理

整體布局方面,這個主要符合美觀要求就好,一般我們設計模塊交互圖時,左邊為輸入,右邊為輸出。我們可以遵循這個原則,進行設計。

APA系統(tǒng)交互分為域外與域內,域外會與用戶輸入、DHU、底盤動力、轉向等ECU進行交互,域內為各模塊之間的交互。

我們將域內與域外的對象用不同顏色表示,從左邊開始為原始輸入,按照時間順序排列對象和消息,并使用對齊和間距來提高可讀性。

image.png

9.注釋和說明

在時序圖最左側以Diagram Conventions的形式將對象進行說明。在時序圖后通過文字對每一條跳轉進行詳細描述。

image.png

10.簡化和抽象

避免繁雜與重復,巧用組合片段用來解決交互執(zhí)行的條件和方式。 比如Opt選項、Alt抉擇、Loop循環(huán)等,能夠幫助你節(jié)約大量時間,并且提高可讀性,還顯得很專業(yè)。

最喜歡這種偷懶又實用的技巧。

image.png

11.使用工具支持設計

由于作者是在家設計,使用的是試用版的EA,畫面簡潔漂亮,給EA的設計師點贊,也是花費無數心血完成的軟件,無腦吹起來就好。不過個人感覺UML建模好像用的越來越少了,可能是個人局限性原因吧,畫畫圖還是很好用的。

現在鋪墊都已經做好了,接下來無腦進行功能邏輯描述就好了,以最基本的,我們剛剛分解的“激活自動泊車”功能時序圖為例。

1.首先進行功能描述:

激活自動泊車功能:用戶開啟通過操作開啟自動泊車功能,滿足開啟功能條件,狀態(tài)機進行跳轉并通知下游模塊,進入自動泊車功能;不滿足開啟功能條件,APA返回DHU功能開啟失敗原因提示。

2.然后附上時序圖:

image.png
該時序圖為簡單描述,僅作說明示意

3.進行注釋說明:

1.用戶點擊中控軟開關或語音開啟自動泊車功能,DHU通過Flexray發(fā)送APA功能激活信號Flexray_BtnPush == 1:EnterAPA至ADCU;

2.ADCU MCU Flexray Transceiver接收信號并通過以太網傳輸給SOC;

3.SOC中的HMI Arbitration模塊解析該信號并分發(fā)給下游ParkingModeManager模塊;

4.SOC端Signal Service接收后轉發(fā)APA_ActivationReq至HMI Arbitration模塊;

5.HMI Arbitration模塊將請求轉發(fā)給Parking Mode Manager;

6.Parking Mode Manage收到激活信號后,根據泊入泊出策略,選擇當前進入的泊入泊出模式,并發(fā)送給下游模塊;

7.狀態(tài)機進行狀態(tài)跳轉判斷:

a)若當前為Mag_APAModSts==2: APA_Standby,成功進入Searching狀態(tài),Parking Mode Manage將APAModSts == 3: APA_SEARCHING狀態(tài)發(fā)送給下游其他節(jié)點。

b)若當前為Mag_APAModSts==1: APA_OFF,則無法開啟APA功能,Parking Mode Manage將APAModSts == 1: APA_OFF狀態(tài)發(fā)送給下游其他節(jié)點。

8.通過以太網返回APA狀態(tài)Ethernet_apa_state以及文言提示Ethernet_AlarmInfo給DHU作為顯示;

OK,如此便完成了一個簡單的時序圖設計。對于其余車位搜素、泊車過程等功能的時序圖,照貓畫虎繼續(xù)完成即可,就不再一一展示了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 以太網
    +關注

    關注

    40

    文章

    5287

    瀏覽量

    169635
  • CAN總線
    +關注

    關注

    145

    文章

    1898

    瀏覽量

    130333
  • 自動泊車系統(tǒng)

    關注

    0

    文章

    17

    瀏覽量

    9012
  • MCU控制器
    +關注

    關注

    0

    文章

    27

    瀏覽量

    6858
  • UML技術
    +關注

    關注

    0

    文章

    5

    瀏覽量

    1360
收藏 人收藏

    評論

    相關推薦

    自動泊車輔助系統(tǒng)快速增長,AMD攜車規(guī)級自適應SoC入局

    近期,AMD宣布其車規(guī)級Zynq UltraScale+ MPSoC平臺被愛信(Aisin)選中,愛信自動泊車輔助(APA系統(tǒng)提供支持。
    的頭像 發(fā)表于 11-21 17:50 ?2869次閱讀
    <b class='flag-5'>自動</b><b class='flag-5'>泊車</b>輔助<b class='flag-5'>系統(tǒng)</b>快速增長,AMD攜車規(guī)級自適應SoC入局

    超聲波雷達在APA自動泊車功能中的應用與仿真

    自動泊車輔助系統(tǒng)APA)是現代汽車智能駕駛技術的重要組成部分,該系統(tǒng)使得車輛能夠在沒有任何人為干預的情況下,
    的頭像 發(fā)表于 07-19 08:25 ?3269次閱讀
    超聲波雷達在<b class='flag-5'>APA</b><b class='flag-5'>自動</b><b class='flag-5'>泊車</b>功能中的應用與仿真

    有關自動泊車系統(tǒng)設計,遇到難題

    的車位,自主避障、自動泊車,從而實現了智能泊車。我想問的是:設計的停車場地,每個車位上方都有一個指示燈,指示燈亮紅色,則車輛可在此位停泊;指示燈滅,則說明此位有人預定或已有車???。智
    發(fā)表于 02-27 10:14

    如何檢測自動泊車控制系統(tǒng)

    碩士畢業(yè)論文,用到LABVIEW,怎么檢測自動泊車控制系統(tǒng),要檢測些什么?
    發(fā)表于 12-17 21:02

    如何檢測自動泊車控制系統(tǒng)

    碩士畢業(yè)論文,怎么檢測自動泊車控制系統(tǒng),要檢測些什么
    發(fā)表于 12-17 21:04

    有誰做過自動泊車系統(tǒng)的設計嗎

    題目如圖,關于自動泊車系統(tǒng)的設計要求
    發(fā)表于 04-17 07:35

    自動泊車輔助系統(tǒng)介紹

    自動泊車系統(tǒng)組成以及原理半自動泊車輔助全自動泊車
    發(fā)表于 12-15 07:09

    比亞迪被授權自動泊車相關的新專利

    據企查查信息顯示,近日,比亞迪被授權自動泊車相關專利,專利名為“一種自動泊車系統(tǒng)、方法及車輛”。專利摘要顯示:本發(fā)明技術方案提供了一種
    的頭像 發(fā)表于 01-13 11:43 ?2202次閱讀

    AMD 愛信下一代自動泊車輔助系統(tǒng)提供支持

    圣克拉拉 —— AMD(納斯達克股票:AMD)今日宣布,AMD 賽靈思車規(guī)級( XA )Zynq? UltraScale+? MPSoC 平臺已被選中愛信( Aisin )自動泊車輔助( A
    發(fā)表于 11-21 11:09 ?375次閱讀
    AMD <b class='flag-5'>為</b>愛信下一代<b class='flag-5'>自動</b><b class='flag-5'>泊車</b>輔助<b class='flag-5'>系統(tǒng)</b>提供支持

    APA自動泊車的車位檢測算法的分析與研究

    第1級,APA 自動泊車:駕駛員在車內,隨時準備制動,分為雷達感知和雷達+視覺感知兩種方式。
    的頭像 發(fā)表于 11-23 11:30 ?2396次閱讀

    基于自動泊車自動駕駛控制算法設計與研究

    介紹了自動泊車系統(tǒng)的硬件架構,在此基礎上,對自動泊車控制算法進行了設計與研究,包括APA算法功能
    的頭像 發(fā)表于 05-04 11:02 ?1209次閱讀
    基于<b class='flag-5'>自動</b><b class='flag-5'>泊車</b>的<b class='flag-5'>自動</b>駕駛控制算法設計與研究

    自動泊車輔助系統(tǒng)控制器(APA

    概述自動泊車系統(tǒng)(AutoParkingAssistSystem)是北京經緯恒潤科技股份有限公司設計研發(fā)的車輛自動駕駛核心組成部分,基于視覺傳感器、毫米波傳感器及超聲波傳感器,構建SL
    的頭像 發(fā)表于 01-18 09:52 ?1253次閱讀
    <b class='flag-5'>自動</b><b class='flag-5'>泊車</b>輔助<b class='flag-5'>系統(tǒng)</b>控制器(<b class='flag-5'>APA</b>)

    如何設計時序APA自動泊車系統(tǒng)(一)

    序列是一種 UML(統(tǒng)一建模語言),它說明了系統(tǒng)中對象之間隨時間的交互,通常用于可視化消息流和軟件系統(tǒng)中對象之間方法調用的順序。
    的頭像 發(fā)表于 07-21 14:18 ?941次閱讀
    如何設<b class='flag-5'>計時序</b><b class='flag-5'>圖</b>—<b class='flag-5'>以</b><b class='flag-5'>APA</b><b class='flag-5'>自動</b><b class='flag-5'>泊車</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>為</b><b class='flag-5'>例</b>(一)

    如何設計時序APA自動泊車系統(tǒng)(二)

    在明確目標時首先強調,時序沒有優(yōu)劣好壞高下之分,它的作用是幫助設計者傳達出作者的設計理念,以便讀者更夠快速、無誤的理解。
    的頭像 發(fā)表于 07-21 14:21 ?1251次閱讀
    如何設<b class='flag-5'>計時序</b><b class='flag-5'>圖</b>—<b class='flag-5'>以</b><b class='flag-5'>APA</b><b class='flag-5'>自動</b><b class='flag-5'>泊車</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>為</b><b class='flag-5'>例</b>(二)

    宏景智駕自動泊車2.0系統(tǒng)征服高難度車位

    隨著自動泊車技術(APA)的進步以及裝車成本的降低,該功能已經實現在多種場景下的落地,有效解決了用戶泊車難問題。近年來,各大主機廠加大對自動
    的頭像 發(fā)表于 07-30 15:15 ?432次閱讀