在本計劃中由於在資料傳輸上受限於 RS-232 串列傳輸,同時以 LART 實驗單 板的 Intel StrongARM SA-1100 處理器之 Linux 嵌入式系統來取代舊有的 PC 控制 方式,這不僅使控制系統體積大幅減少,而嵌入式系統週邊亦支援 TCP/IP 網路,
可是卻沒有 CAN bus 的控制裝置與驅動程式可提供虛擬實境場景的六軸腳長之資 料與 LART 實驗單板作為控制資料的連結與傳輸,所以必須另外增加 LART 實驗 單板的 interface 與 CAN bus 裝置。並且亦需要建立在 LART 實驗單板上的 CAN bus 驅動程式。然而,在 LART 實驗單板上亦是沒有 A/D 及 D/A 控制器,所以也必須 增加 LART 實驗單板的 A/D 及 D/A interface 與 A/D 及 D/A 的控制裝置,並且建立 LART 實驗單板上的 A/D 及 D/A 驅動程式,以達到六軸平台之控制之目的。
另外,在各種模擬系統中為了擁有更真實的模擬效果,時常需要處理大量的 外界訊息,當系統呈現高度負載的情況時,為了依舊保持模擬的完整性,其中有 些重要的訊息必須是不能忽略或是要優先處理的。其次,和實際的器具一樣,系 統的穩定性、可靠性與安全性都是一個模擬系統所考量的。然而,為了提高六軸 運動平台的穩定度與安全性,控制系統對外界訊息的反應必須要更為迅速,以確 保在系統出現問題時能立即做出適當的處理。因此,在六軸運動平台控制的改善 上,為了讓系統呈現出更完善的模擬效果,於本年度的計劃中,我們在既有的控 制系統中,加入一個即時作業系統,並分析與設計整個即時控制環境的架構以及 實現了整個六軸平台即時控制系統。
4.1 六軸平台控制卡之改良研發
LART 實驗單板的 Intel StrongARM SA-1100 處理器之 Linux 嵌入式系統來取 代舊有的 PC 控制方式,這不僅使控制系統體積大幅減少,也使我們能在 Linux 作 業系統上發展新的控制程式,並且可以達到多平台及同步接收資料。而嵌入式系 統週邊亦支援 TCP/IP 網路。然而在 LART 實驗單板上並沒有 CAN bus 的控制裝置 與驅動程式可提供虛擬實境場景的六軸腳長之資料與 LART 實驗單板作為控制資 料的連結與傳輸,所以必須另外增加 LART 實驗單板的 interface 與 CAN bus 裝置。
4.1.1 CAN Bus 裝置之製作
在嵌入式硬體部分,我們所選擇採用的是 LART 實驗單板,選擇這塊板子的 主要原因是因為它選擇這塊板子的原因是因為它有豐富的序列傳輸介面,包括 IrDA、RS-232,也有內建 10Base-T 網路,並且支援包括 Linux 嵌入式作業系統,
可以發展的嵌入式種類及相關應用程式可謂相當豐富,將十分適合本子題研究之 用,整塊單板實體圖片如圖 4-1-1 所示。
圖 4-1-1 LART 實驗板
除此之外,所使用的微處理器為 SA-1100,而在 LART 的計畫中亦是使用 Strong ARM 微處理器系列。所謂 LART 計畫是由國外的 Delft University of Technology 所 主持的研究計畫,主要研究在消耗不到一瓦特功率而可以達到 250MIPS 指令的 Linux 嵌入式系統。它有一套較為完整的 Linux 嵌入式系統文件及 mailing list,更 難得的是它亦將所有的軟硬體公開。因此在未來發展 StrongARM SA-1100 嵌入式 系統時可以有較為完整的相關文件可以參考。
在 LART 實驗單板上發展嵌入式系統來控制虛擬實境動態模擬器,並沒有 CAN-Bus 的裝置與驅動程式,因此我們必需要發展 CAN-Bus 的裝置與驅動程式,
來作為與 LART 實驗單板的傳輸介面。如此才可以與 LART 實驗單板溝通,接收 由虛擬實境場景的六軸腳長 data,然後將腳長轉成電壓來控制動態模擬器,其系統 方塊圖如圖 4-1-2 所示。
在動態模擬器六軸姿態的傳遞方式上,我們將發展 CAN-Bus 通訊協定,因此
必須在嵌入式系統上發展 CAN-Bus 驅動程式,A/D 及 D/A 驅動程式;除此之外,
還需發展 LART 實驗單板之 CAN-Bus 程式,如此才能以 CAN-Bus 傳遞六軸控制 姿態至動態模擬器驅動控制盒上。
LART 實驗單板透過 CAN bus 裝置接收來自 VR 場景的六軸姿態,然後經過 控制程式,如奇異點迴避及逆向運動學,然後再將六軸腳長傳遞給 D/A 控制卡,
來驅動控制動態模擬器。
因為 LART 實驗單板是一個以 StrongAMR SA-1100 微處理器為核心的嵌入式 硬體,其發展環境與一般 X86 系統相異,必須先建立 Linux 作業平台(Linux 作業 系統版本必須與移植至嵌入式系統相同),並建立 Cross Compiler 環境(在 X86 系 統下發展嵌入式系統的環境),如此才能使用 GNU C library 及利用 arm-linux-gcc 來編譯程式及發展驅動程式。值得注意的是 LART 實驗單板 StrongARM SA-1100 微處理器是一顆 RISC 晶片,它以 Memory Mapping 的方式來規劃其暫存器,因此 必須在作業系統內規劃好實際記憶體與虛擬記憶體之映射,如此才能設定相關暫 存器。圖 4-1-3 為 CAN bus 實際之控制電路板。
圖 4-1-2 虛擬實境動態模擬器之 CAN Bus 系統控制架構
圖 4-1-3 CAN bus 之控制電路板
4.1.2 CAN Bus 原理
CAN(Control Area Network)最早是在 1986 由德國 Robert Bosch 公司依據 Mercedes 與 BMW 的要求所發展出來的傳輸架構,主要的目的是為了應付日漸複 雜 的 汽 車 控 制 傳 輸 系 統 。 與 傳 統 UART ( Universal Asynchronous Receiver/Transmitter)傳輸方式最大的不同在於 UART 只適合用於點對點資料傳 輸,而 CAN 則具有單點對多點的傳輸能力。因此在本章節我們將依序介紹 CAN-Bus 基本觀念、資料傳輸框架、訊息過濾與訊息確認、錯誤偵測、字元傳輸 時間。
CAN-Bus,是一種支援分散式即時控制的串列傳輸系統。它具有高安全性的 序列傳輸通訊協定,傳輸速度最快可達 1 Mbits/s。根據 ISO/OSI 參考模型,CAN-Bus 可以細分為幾個不同層:
Data Link Layer:
Logical Link Control (LLC) Layer:提供資料傳輸和遠端資料要求的服 務,並且決定接收哪一個訊號。
Medium Access Control (MAC) Layer:實現傳輸通訊協定,包括控制傳 輸資料的架構、執行仲裁、錯誤檢查、錯誤處理及錯誤的限制。
Physical Layer:
定義如何將每個位元逐一送出,並且處理傳輸同步、字元編碼及字元傳 輸時間等事件。
4.1.2.1 基本名詞
Bit Rate:CAN-Bus 資料傳輸的速度,最快可達 1 Mbits/s。
Priorities:使用 Bus 的優先順序,由 Identifier 定義。
Bus Off Status:當有不正常的錯誤發生,而次數超過 256 次時,CAN-Bus 會 停止一切傳送與接收的動作。
Message Identifier:代表某一訊息的號碼。
Global Mask:又稱為訊息接收過濾器,經過與訊息的 Identifier 比較後,用以 決定是否接收某一訊息。
Multimaster:在 CAN-Bus 的網路上,每個單元都有傳送資料的權利。
Multicast:將資料同時傳送給網路上的每一個單元。
Acknowledge:接收端正確接收到資料後,會送出此訊息。
Bus Values:包含兩個互補的邏輯—‘dominant’和’recessive’。當網路上其中一 個單元送出’dominant’,而另一個單元同時送出’recessive’時,Bus Value 定義為 ’dominant’。
Remote Data Request:利用送出 REMOTE FRAME,可要求遠端的單元傳輸 資料 DATA FRAME。DATA FRAME 和 REMOTE FRAME 具有相同的 Identifier。
Arbitration:當網路上同時有兩個以上的單元要求使用 Bus 時,由 Arbitration 來仲裁哪個單元具有較高的 Bus 使用權。仲裁的方式是比較各個單元的