第四章 模擬軟體架構與模擬實驗結果
4.1 模擬軟體架構
4.1.1 軟體架構
為了能夠比較各種排程方式的優缺點,建立一套能夠模擬分析CAN的 軟體,以期能夠在電腦上先做分析模擬,直接比較其優缺點。所以在此論 文中利用Borland C++ Builder 5 建立一個CAN的模擬軟體,模擬CAN訊息 的傳輸方式,並直接在電腦上進行分析比較。此套系統並不執行細部的模 擬CAN的各項軟體設定或硬體架構,而只是在邏輯上模擬CAN的傳輸,由 於CAN的傳輸是以比較資料欄位仲裁欄的大小,仲裁欄的值越小者其優先 權越高,以此方式來決定傳輸的先後順序。
建立此系統的主要目的是為了方便分析傳輸結果,因此在模擬的過程 中,必須將所有傳輸的過程與結果記錄下來以方便分析。在過程中所要記
錄的有:訊息開始等待傳輸時間點,傳輸完畢的時間點以及訊息在傳輸過程 中錯失幾次。為了達成這樣的目標,此系統藉助資料庫的幫助。在架構此 程式時,使用兩個資料庫系統來記錄這些訊息。一個資料庫用來記錄等待 BUS傳輸的訊息(BUS queue database),另一個資料庫用來記錄BΜS傳輸完 的訊息(transmitted message database)。BUS queue與transmitted message兩個 資料庫的欄位如表4.1所示,由表4.1所示所記載的欄位資料可以記錄訊息 的傳輸狀況,幫助分析傳輸狀況。
表4.1 資料庫的欄位
BUS queue database transmitted message database
identifier identifier length length period period deadline deadline enter time enter time
lost lost
leave time
程式的架構如圖4.1所示,節點將所要傳輸的訊息送到BUS queue的資 料庫,並紀錄進入的時間點於資料庫的『enter time』的欄位。所有的訊息 都送入BUS queue中等待傳輸。如果在下次同樣的訊息送入BUS queue時,
發現原本訊息尚未送出,必須紀錄此訊息錯失,將其記錄在『lost』的欄位。
當訊息依照所設定的傳輸速度,從BUS queue送入transmitted message的資 料庫時,以代表訊息已經傳送,除了將此訊息的所有資料外還要再記錄離
開BUS queue資料庫的時間點,將其記錄在transmitted message 資料庫的
『leave time』欄位,以方便後續的分析。
圖4.1 CAN BUS 模擬軟體資料庫的操作
4.1.2 程式流程
整個程式流程可分成三個部份:第一部分是程式主流程,介紹整個程式 的使用流程;第二部分是Message Thread的程式流程;第三部份是BUS Thread的程式流程。
程式主流程
圖4.2 CAN BUS 模擬程式主流程圖
Message Thread的流程
整個程式是以多工處理來解決節點獨立運作的特性,在程式中每 個節點都以一個執行緒(Thread)來表示,執行緒會依照設定週期性的將 訊息送入BUS queue的資料庫中,若資料庫中已有此Thread的訊息,則 表示此訊息在一個週期時間內還未送出,將『Lost』的欄位加1,表示 其錯失了一個訊息。若資料庫中沒有這個訊息,則將訊息依其仲裁欄 的大小插入資料庫中。其處理方式如圖4.3所示。
圖4.3 Message Thread 流程圖
BUS Thread的流程圖
BUS Thread的存在是為了模擬CAN的傳輸,此執行緒會依照所設定 的傳輸速度,週期性的從BUS queue Database拿走優先權最高的訊息,並 將此訊息的所有資料與此訊息離開BUS queue Database的時間點寫入 Transmitted Database的『Leave time』欄位,也方便後面的分析。其處理方 式如圖4.4所示。
圖4.4 BUS Thread 流程圖
4.1.3 網路效能指標
z 平均傳輸時間(average transmitting time)
對於控制系統而言評估整體訊息的平均傳輸時間,以了解整個系統中
z 未即時傳遞訊息比例(missing deadline percentage)
在即時多工的系統中 ,為了每個訊息都能發揮其效果,一般會有
z 訊息遺失比例(lost message percentage)
訊息如果沒有傳送出去對系統所造成的影響最大,如果漏掉的訊息只 是一般普通的資料的話影響不大,但若漏掉的訊息是緊急的命令,那 可能會造成系統嚴重錯誤,導致系統無法運作。如以車用系統為例,
使用上以訊息沒有傳送出去,造成的影響最大也最危險。
沒有傳輸成功的訊息數量 ×
訊息遺失比例 = 100%
所有傳輸的訊息數量
4.1.4 程式介面
程式介面分成三個個頁面:Messages,Simulation以及Analysis。第一個 頁面【Messages】如圖4.5所示,此頁面的用途是編輯所要模擬的訊息。在
『key in message』的欄位中可直接輸入訊息,輸入訊息的順序依次為訊息 的仲裁欄位,傳送訊息的長度,訊息的週期以及訊息的deadline。輸入一組 訊息後,按下[Add message]的按鍵後,訊息會出現在『Message information』
中,接著可繼續鍵入下一組訊息。訊息也可以從檔案一次輸入,從『Message file』欄位中的[Open]按鍵,可以開啟所需的訊息檔,訊息同樣也會出現在
『Message information』中。所有出現在『Message information』都可以直 接修改,修改完後必須將訊息存檔(『Message file』欄位中的[Save]按鍵)。
要進入模擬前,按下[Enter message to simulation]的按鍵,結束編輯模擬訊 息。
,
圖4.5 訊息輸入介面
第二個頁面【Simulation】此介面設定CAN的模擬設定,並可操作觀察 CAN的傳輸,整個頁面設計如圖4.6所示。在『Simulation option』的欄位 設定傳輸速度,傳輸方法以及模擬的傳輸時間。在『Simulation』及『BUS status』兩個欄位,設定啟動模擬[Start simulation],終止模擬[End
simulation],暫停模擬[suspend]以繼續模擬[resume]。在右邊的兩個資料欄 顯示BUS上的狀況(BUS Queue)以及傳輸過的訊息狀況(Transmitted
message)。
圖4.6 Simulation 介面
第三個頁面【Analysis】是作為分析的頁面,其介面如圖4.7所示,按 下[Start Analysis]的按鍵後,會將分析的結果average transmitted time,
missdeadline,lost message以及BUS的流量顯示在頁面上。
圖4.7 Analysis 介面