本技術文章說明硬體迴路 (HIL) 測試的概念、其重要性,以及如何運用模擬與模型架構設計進行虛擬測試。 時至今日,HIL 測試不但在識別瑕疵方面發揮相當重要的作用,在重要環境 (例如航太與汽車產業) 中的生命危險環境中也能確保穩定性。 此外,HIL 可縮短軟體為主的產品設計與開發生命週期,進而縮短上市時程,同時盡可能減少需要進行昂貴物理測試的成本。
早在 80 年代,McKinsey 的顧問 Donald G. Reinertsen 著手進行突破性研究,指出產品開發所造成的「六個月延遲可能佔生命週期利潤的 33%」。此外,1996 年 6 月 4 日發射與銷毀 Ariane 5 火箭,這項火箭被稱為歷史上最可怕的軟體錯誤之一,讓工程界了解嵌入式軟體品質的重要性,以及需要妥善測試的必要性。因此損失超過 3 億 7,000 萬美元。ii 這些數字清楚說明了延誤上市的後果,也凸顯了在產品設計與開發生命週期初期,透過適當測試找出錯誤,達成降低成本、縮短上市時程的目標,至關重要。
關鍵在於能在開始生產前先行找出瑕疵的技術。在整個產品設計與開發週期中,讓測試成為不可或缺的策略資產,而不是只是後續思考,甚至是流程即將結束時的展現。這些認知促進了多種方法與策略的發展與實作,包括:前置測試、左移測試、模型式設計,以及任何迴路 (XIL) 測試。本技術文章強調 HIL 測試是嵌入式軟體驗證中最重要的測試方法之一。
在直接進入 HIL 測試之前,請務必先了解實際要開發的產品:受測裝置或系統 (DUT/SUT)。現今與未來的產品顯然更以軟體為主並更為複雜。以 Wi-Fi 路由器、洗碗機、食品處理器等為例,這些產品現在全部採用嵌入式軟體或韌體架構。汽車、飛機與智慧型手機不但高度軟體定義,也相當複雜,因為它們是軟體架構系統。總而言之,它們都有一個共通點,那就是軟體是目前功能集與未來改良項目的決定性元素。智慧型手機上的可更新應用程式會將其轉化為一系列數千種功能與功能的多工具,因此,這項趨勢已成為現今客戶對其他幾乎所有產品的絕對期望。
一般而言,應用程式、Firmware與軟體都無法獨立運作,因為應用程式需要硬體才能執行。硬體通常是電腦或處理器,簡稱控制器。這表示,產品或系統 (包括系統之系統) 必須結合硬體 (控制器) 與軟體,並將其整合,使之成為受測裝置 (DUT)。此外,控制器也需要其環境與其互動。舉例來說,洗衣機的控制器需要檢查是否有足夠的水、量測水溫、控制洗衣機的速度 (RPM),等等。因此,控制器必須連接至感測器 (溫度、RPM) 與致動器 (加熱器、電動馬達),以提供資料或反饋做為輸入,並且以輸出方式傳送指令或設定點。以下是控制迴路設計的基本要素,如圖 1 所示。此處,控制器周圍的環境通常稱為設備。
圖 1.控制迴路設計的 基本原理
查看產品設計與開發週期時,很明顯,專案起點並非控制迴路的所有元件都可用。更重要的是,在開發初期就準備好所有必要的軟硬體元件,這一點也並不切實際。這正是模擬與模型架構設計開始填補之處。
圖 2 以典型的 V 型圖表示產品開發週期,包含從設計、原型製作、軟體與控制器測試到實體測試的不同階段。文中也說明了模型迴路 (MIL)、軟體迴路 (SIL) 與硬體迴路 (HIL) 的測試方法。
圖 2.V 型圖:從迴路中的任何資訊 (XIL) 到實體測試
數位模擬與模型架構設計是整個設計流程中的關鍵,原因在於:
透過 MIL、SIL 與 HIL 等測試方法,模擬與模型式設計有助於更早開始測試 (稱為前期載入測試)。如圖 2 底部所示,在 V 型圖中從右移至左時,控制迴路的元件會逐步更換 (也稱為左移),同時根據實際的產品設計與開發生命週期,元件會隨即更換實際的實際軟硬體。
此外,虛擬測試可大幅擴大測試範圍,並減少成本高昂且耗時的實體測試。根據估計,嵌入式軟體每 1,000 行程式碼都有 10 至 20 個瑕疵。乍看之下這可能不多,但當考慮到現今日常系統中程式碼的行數時,估計的瑕疵數量可能極高。以醫療裝置爲例,心律調節器擁有 8 萬行程式碼 (相當於 800 至 1,600 個瑕疵),而一部 MRI 掃描儀則擁有 700 萬行程式碼(相當於 7 萬至 14 萬個瑕疵),由此可見,軟體複雜度的急劇提升不僅影響顯著,其後果也更加嚴重。
這些系統的複雜度相當高,因此無法以傳統方式進行完整測試。實際測試所有情境是不可能的,而且需要耗費不合理的時間和金錢。此外,請務必相信測試案例涵蓋所有可能的實際條件。如同本技術文章介紹中的 Ariane 5 範例所述,重大故障、災難與裝置召回等情況都非常昂貴。但更重要的是,這些後果對品牌形象與公司商譽的負面影響完全不具價值。只要透過建模與模擬,即可降低此風險。事實上,要在各種可能且可重複的情境中測試產品,可以充滿信心,因此最終的實體測試只是最後的檢查,而不是昂貴的災難性事件。
嵌入式軟體測試可做為問題偵測方法,並且讓設計與測試團隊與相容的工作流程緊密相連,並充分運用模擬與模型架構設計。
圖 3.控制迴圈表示法中的 MIL、SIL、HIL 與物理測試
第一階段是 MIL (圖 3 中的象限 1),會模擬所有項目,包括控制器與控制器周圍的整個設備 (環境)。
在第二階段 (SIL (圖 3 的象限 2) 中,軟體工程師只會根據控制模型來產生可用於目標的程式碼,以取代區塊並建立軟體原型,同時還在模擬廠房。前兩個階段支援使用模擬執行測試,模型幾乎不需要實際的實體硬體元件。
這個方法的關鍵就是 HIL (圖 3 中的象限 3)。程式碼會部署並執行於實體的硬體架構控制單元 (快速控制原型製作平台或生產控制器),以使用模擬設備來測試所有可能的實際情境,然後再進行 (最終) 實體測試 (圖 3 的象限 4)。
因此,在車輛生產線上,HIL 可視為車輛機箱與動力總成之間的組合。在實際的控制器硬體上執行開發的軟體程式碼至關重要,以確保能找出所有時序、同步化與執行瑕疵,例如在 SIL 環境中執行嵌入式程式碼時,這些瑕疵通常不會存在。
對於進一步提升 MIL 與 SIL 的重點與使用率而言,目前有相當大的期望與持續發展。然而,在實際的控制器平台上執行嵌入式軟體時,HIL 將與時俱進,也必須是其證據點,讓以軟體為主的安全產品可信地上市。總而言之,HIL 測試的優點如下:
圖 4.魚類比:HIL 系統等於水族館。
HIL 是一種測試方法,可在實體 DUT (在控制器上執行的嵌入式軟體) 周圍提供虛擬環境或虛擬實境 (數位分身),讓 DUT 「相信」實際連接至實際環境 (實體分身)。最簡單的類比,就是水族館內的魚類,如圖 4 所示。此水族館可提供受控的模擬環境,讓魚類確實擁有其生存所需的一切物品 (食物、水、溫度、鹽度等)。
從技術角度來看,以 DUT 等軟體為主的產品為重點,HIL 是一種嵌入式軟體測試技術,可將來自控制器的實際訊號連接至測試系統 (設備)。HIL 可使用軟體模型與模擬功能模擬實際情況。因此,模擬實際環境的 HIL 測試系統等同於水族館,而執行嵌入式軟體的 DUT (實體控制器) 等同於魚類。這樣一來,控制器 (或稱 DUT) 就會相信其已安裝在組裝好的產品中,例如洗衣機、飛機或汽車。
測試與設計迭代的過程,就像是連接至實際系統的情形,只是透過模擬設備進行。只要使用可重複的虛擬化情境,工程師就能針對數千種條件運用控制器,不必擔心硬體架構物理測試的實際元件、成本、複雜度或排程限制。實際控制器或 DUT 會從 HIL 系統取得輸入,並將輸出回傳至 HIL 系統。HIL 系統包含匯流排介面等輸入與輸出,以及執行 HIL 應用軟體 (包括所需的廠房模型) 的即時運算核心。為確保 HIL 測試系統設定符合所有需求,以提供 DUT 周圍的廣泛虛擬實境,它至少需要由下列核心元件組成,如圖 5 所示:
圖 5.在 HIL 測試系統設定中的 控制迴圈
如前所述,這些只是 HIL 系統的核心元件。其他元素也可能包含下列項目:
NI 平台架構的 HIL 測試方案為開發人員與使用者提供了開放且靈活的建置區塊工具箱,支援使用商用現成 (COTS) 產品進行大量客製化,並且從小型桌上型系統擴充至元件與系統,以及完整的整合 HIL 設定。使用者可以自行決定使用方式,以及如何擴充與擴充,以因應目前與未來的挑戰。他們可以完全掌控工作流程以及測試資產的開發與維護作業,同時盡可能降低與廠商之間的相依性。
NI HIL 測試系統架構提供完整的軟硬體平台,能因應 HIL 系統的不同元件。其開放且可客制化的工具鏈結合 NI、NI 合作夥伴與第三方軟硬體,能充分調整、擴充及擴充 HIL 測試系統。
PXI 是以真正 COTS 技術為基礎的業界標準硬體平台。它提供同級最佳的時序與同步化功能,也是 HIL 測試系統的基本元件。PXI 還支援多種 I/O 與匯流排介面 (從 DC 到 RF),包括 FPGA 架構技術、通用介面與產業特定的通訊協定。
透過新增 NI 切換負載與訊號處理 (SLSC) 平台,即可進一步擴充這些 I/O 與匯流排產品。SLSC 會在測試系統端的實際 I/O 與匯流排介面與 DUT 之間的訊號路徑中新增客制化前端模組。透過標準化的 COTS 連接功能與規格,可排除點對點接線的容易出錯流程。如此可簡化整體系統,並進行訊號切換與處理、負載整合、故障植入等作業。
NI VeriStand 是用於即時條件下的 NI HIL 系統與嵌入式軟體測試的核心應用軟體。透過設定架構的 HIL 系統設定與控制 (UI 和 API)、除錯、模型整合、即時激發產生、產品內建自動化,以及豐富的客制化自動化 API 功能,透過 NI LabVIEW、C/C++、Python 等,加速產品開發生命週期。
請從這裡深入了解 NI HIL 測試系統架構。
現今的產品以軟體為中心,而客戶期望的基礎在於,產品將會在未來持續演進並改良,進而提供持續、甚至新的價值。使用模擬、模型式設計與 HIL 測試的虛擬驗證測試是提升測試範圍與產品品質的關鍵方法。這些方法也會將測試整合至早期設計與開發週期,進而縮短上市時程,同時盡可能減少對高成本與耗時物理測試的需求。
這也使得「測試」一詞經常被定義並用作將設計推向生產、最終上市的最終步驟,成為整體產品創新的策略優勢。HIL 可將測試提升為專案計畫上的選取框,不僅僅如此。創新讓設計與公司得以成功 (請參閱「延遲 6 個月可能佔生命週期利潤的 33%」。
前瞻性公司使用 HIL,而非傳統的上市道路測試。雖然 HIL 的長期目標是避免昂貴和/或大量生產的最終產品發生成本高昂的錯誤 (如 Ariane 5 範例所示),但這也是一種設計工具,可供軟體工程師反覆測試並調整其軟體設計。這樣一來即可在正式測試開始之前先完成產品檢驗。此外,軟體工程師也能迅速構想新構想並加以測試,進而透過及時的意見反應充分發揮創新成效。