製作功能原型的 7 大步驟

綜覽

為什麼要製作功能原型?根據「Embedded Software Development: Issues and Challenges」(嵌入式軟體開發:問題與挑戰,2003 年 7 月) 所述,近 50% 的設計會延後上市或根本無法順利上市,而有近 30% 的設計在上市後以失敗告終。產品設計流程顯然充滿了問題。

本技術文件探討順利製作出功能原型的七個步驟。

內容

什麼功能原型?

功能原型是可用於測試的互動式產品模型,能像硬體或軟體成品一樣運作,或能模擬其運作方式。測試功能原型可讓設計人員與工程師在開始生產之前找出問題進而省下在製造期間或上市後修正問題的時間與成本。

紙上設計軟體設計

紙上設計重要性

有了新裝置的創新構想,您可能會想要完全跳過紙上的設計直接開始製作實體原型。若能克制這樣的念頭,長期下來不但能節省時間,也能避免浪費心力。只要花時間在紙上設計,就可以在日後獲得可觀的回報並且避免設計程序中的許多常見錯誤。紙上設計並不代表使用鋼筆或鉛筆在紙上寫下原型的詳細設計。紙上設計就是在進行軟體編碼或硬體設計之前先擬定計畫。 紙上設計的優點包括能將構想落實成紙上設計、初期挫折好過後期失敗,還能及早掌握客戶反映的意見。

定義自己需求

如何將絕妙構想和信手拈來的草圖變成詳細的紙上設計?第一步就是列出使用者需求,釐清自己的目標。需求越具體越好。在初期階段一定要確實做好研究,盡可能符合您概列出來的各項需求。您的設計可行與否?是否確實符合您的需求?您必須分清楚在設計方面的需要和想要。既然身為創新人士,也許您真的非常想在原型中加入一些先進卻非完全有必要的功能。了解目標並堅持到底。

依據需求決定元件抽象概念

抽象化只需要描述用途,不需要決定撰寫應用程式的方法。抽象化是要歸納整理出應用程式的整體概念。抽象化主要分兩種類型:程序抽象化 (procedural abstraction) 和資料抽象化 (data abstraction)。程序抽象化 (Procedural abstraction) 會將程序的結果與執行方式區分開來。資料抽象化 (data abstraction) 則是將您想要儲存的資料與儲存資料的有形方式區分開來。要讓抽象化進行得更順利,可以去除系統需求文件中的關鍵動詞和名詞。這些動詞和名詞能供您判斷程式需要完成的作業,以及會出現在使用者介面中的物件。動詞和名詞也能協助您決定完成原型製作需要的硬體零組件。

流程圖

慢慢收集到一組以裝置需求為根據的抽象元件後,您就可以使用流程圖,從抽象元件進入軟體設計的階段。流程圖將應用程式分割成更易於管理的部分,能協助您充分理解應用流程。LabVIEW 是一種圖形化程式設計開發環境,具體針對提高工程師與科學家的生產力而設計,因此是能迅速將紙上設計轉換為程式碼的理想工具。LabVIEW 程式方塊圖與流程圖相似,因此,很快就能將流程圖轉換為軟體程式碼。

圖 1: 這張圖代表血壓監視器的流程圖、狀態圖和狀態機,請注意狀態機中執行的就是狀態圖中定義的五種狀態。

狀態圖

狀態圖是一種特定類型的流程圖,能顯示程式的狀態,以及不同狀態的轉換。每種狀態各自會符合某項條件、執行某項操作,或是等待某個事件。狀態的轉換就是條件、操作或事件,會使程式進入下一個狀態。幾乎所有嵌入式系統均使用狀態架構,因此,狀態圖相當適合用於原型製作。也就是說在設計這些原型時,原型始終處於特定狀態,就算是閒置狀態也是如此。

在 LabVIEW 中,狀態機含 Case (條件) 架構、While Loop 與移位暫存器。初始條件要在迴圈外部指定。狀態圖中的每種狀態各自對應 Case 架構中的一個條件。每個條件均包含會執行單一狀態的程式碼,以及定義轉換至其他條件的邏輯。這個架構能在狀態機中加入更多條件和邏輯,讓您能夠擴充應用程式。

使用者介面原型製作

製作使用者介面 (UI) 原型的最佳時機往往是在將紙上設計轉換為軟體時。製作 UI 原型可協助您在進行轉換時充分考慮設計架構與應用需求。有時候更重要的是它可以為潛在客戶和投資者提供實際的裝置功能示範。原型越複雜,UI 原型在建立支援與收集設計反饋方面的價值就越高。最後,原型的存在可以讓原型製作工程師在設計產品特色及新增原型功能時合作無間。這些 UI 原型製作優勢能節省成本、縮短開發時間,最終有助於打造出更出色的產品。

圖 2: 以 LabVIEW 設計的 UI (可在 UI Interest Group 取得程式碼。)

LabVIEW 內建人機介面,是快速開發高度客製化 UI 的理想工具。LabVIEW 能協助您在週而復始的設計與原型製作階段輕鬆新增功能,讓您在進行設計改版時盡可能不必重做。使用 LabVIEW 能快速製作 UI 原型、在原型製作流程中進行修改,甚至還能將原型部署於成品中。

建立實物模型

在 LabVIEW 中,您可以在撰寫一行程式碼甚或完成應用程式架構之前建立所有必要的輸入與輸出,並且設計人機介面。使用者介面實物模型非常適合用於判斷真正需要的輸入和輸出,也可用於調整需求文件。

圖 3: LabVIEW 中的 UI 實物模型

新增功能

製作 UI 原型的下一個步驟就是為實體模型新增功能,讓使用者可操作人機介面、點選功能表、調整控制元、查看樣本資料集或隨機數字產生的結果。此方式的優點在於使用者可製作 UI 原型並定義軟體設計架構。如果兩者都能順利完成,接下來的原型製作程序就可以在此架構上進行建構。

建立虛擬原型

虛擬原型製作 (Virtual prototyping) 是一種創新的方法,結合了機械模型製作、模擬與控制設計,以提升嵌入式控制系統與裝置的設計與原型製作效率。虛擬原型製作能將軟體設計與控制演算法與 3D CAD 機械模型結合,在開始建立第一個實體原型之前測試系統機械。

圖 4: 虛擬原型製作的方法

虛擬原型製作必要性

虛擬原型製作有助於深入了解客戶需求、加快設計程序並簡化除錯作業,進而降低機器設計的相關風險。如果沒有虛擬原型,就必須先建立完整的實體原型,才能取得客戶對產品運作的實際意見。運用虛擬原型製作能夠透過數位方式向客戶呈現機器的機械結構,也能在實際建造機器之前更快掌握客戶反映的意見。這樣一來,即可讓客戶更多地參與設計程序,讓您不必等到原型製作程序太晚才得到客戶的意見。

此外,建立虛擬原型也有助於縮短產品上市時程。這類原型能協助您構想虛擬設計並不斷改版,開始製作實物原型時,才不會一開始就出錯。由於能將控制軟體與 3D CAD 模型結合,因此能尋找並修正通常在製作實物原型之前不易發現的問題。您可以撰寫如 2D 和 3D 運動軌跡的運動控制程式碼,並在 3D 模型中查看程式碼的結果。如果零件大到有可能會造成碰撞,或者想要查看輪廓移動與線性移動之間的差異,即可利用虛擬原型製作的方式修正問題並查看差異。相較於傳統的設計方式,虛擬原型製作可協助您及早做出重要的設計決策。

NI 虛擬原型製作優勢

LabVIEW 能模擬任何機械系統。LabVIEW Control Design and Simulation Module 模組能分析開迴路模型的行為、設計閉迴路控制器、模擬連線和離線系統,以及進行實際執行。

圖 5:LabVIEW 控制設計與模擬工具


您可以使用轉換函式、狀態空間或零極增益等呈現方式,按照第一原則建立模型。此外,您可以使用時間步長響應或波德圖 (Bode plot) 之類的時間/頻率分析工具,以互動方式分析開/閉迴圈的行為。內建工具適用於多重輸入/多重輸出 (MIMO),以及單輸入/單輸出 (SISO) 系統,還能運用模擬功能驗證線性/非線性系統的動態。您也可以使用內建工具轉換在 The MathWorks, Inc.Simulink® 軟體中開發的模型,使其適用於 LabVIEW。

將 I/O 新增原型

要建立真正可以發揮功能的系統,就必須在原型中加入 I/O。加入感測器輸入與控制輸出之後,即可證明自己的設計確實可行並可實作於實際應用中。建立紙上設計、在軟體中執行該項設計,甚至在虛擬環境中模擬設計,大多仍是概念練習。要向抱持懷疑態度投資人證明您的設計有其價值,就需要真實存在、能與現實世界互動且確實能發揮功能的設計。原型製作作業的資料亦可根據實際效能協助客戶與設計團隊的其他成員細化功能需求。

從無到有地將感測器整合於系統,再從中擷取具有意義的資料,光是要具備這類相關初階知識,往往就得耗費意想不到的時間和資源。傳統感測器整合的特性是客製化,也就表示每次變更設計都得付出不小的代價進行重做。設計變更的情況往往會發生,尤其是感測器的時候,因為轉換規格以確保其符合原型製作的需求本身就是一項挑戰。

替原型新增 I/O 可說是一項艱鉅的任務。由於難以預測建構客製化 I/O 解決方案所需的總時間與資源成本,因此往往成為原型製作程序的關鍵。

I/O 原型製作向來有其難度,要克服困難,就必須大幅改變方法;需要發揮裝置原型製作效率,但未必具備克服初階感測器介面問題所需專業資源的領域專家尤其如此。

NI 工具提供整合式硬體與簡單好操作的圖形化軟體、可重設的 I/O 裝置,以及必要的 IP 與支援系統,能協助您改變方法,順利克服這方面的障礙。

 

圖 6: 將 CompactRIO 與內建訊號處理功能的模組化熱插拔 C 系列 I/O 模組結合,就能迅速替原型新增 I/O。

只要能將感測器輸入和控制輸出整合於功能原型,就等於是往部署和大量生產的方向成功邁出了一大步。此步驟可證明您已克服了產品設計流程中的某些重大挑戰。

演算法工程設計

演算法工程是專為應用演算法設計的術語。演算法是指將在紙上的演算法轉化為穩定、經過充分測試且易於使用的實作方式。整個產品開發週期中,最具挑戰性的部分可能是:可為原型提供所需功能的實作演算法,但這部分也可能最具價值。只要應用實際的 I/O,即可親身體驗演算法功能。 

有多種原因會導致難以在功能原型中實作演算法:

程式設計限制—開發人員通常會因為 I/O 功能而選擇控制系統或處理器,例如 FPGA,但卻受限於程式設計能力。要設計出適用於不同平台的程式,通常必須具備程式設計知識,但具備這項能力的系統層級設計師並不多。

執行基本演算法—執行基本功能所需的初階演算法相當耗時。 製作原型時,速度極為重要,但如果沒有程式碼,設計人員一般來說也無法承受這樣的後果。

要針對多個平台重做演算法—功能原型會不斷進步,此時就須經常因應不同類型的系統不斷重做演算法。程式碼在不同的執行時間環境間幾乎無法運作,而且很難將應用程式從原型製作延伸至部署。

測試與驗證—通常要等到開發後期才能確定系統能否因應功能需求,而且,從頭來過的代價所費不貲。舉例來說,處理器可能無法以夠快的速度執行所需數量的平行作業。這樣未必能夠充分達到週期時間。亦未必能即時處理密集型處理器分析。

圖形化系統設計能解決並減輕可能存在於功能原型工程設計演算法的許多潛在問題。圖形化系統設計整合直覺式的圖形化程式設計與靈活的商業現成 (COTS) 硬體,可解決設計挑戰。透過此方式,即可針對所有設計階段使用單一環境。即刻深入了解此方式如何具體解決上述挑戰。

多種計算模型

圖形化系統設計的其一優點,就是無論採用何種運算模型 (MoC),程式設計師都能建立演算法。由於演算法的程式碼複雜度不斷提高,因此程式設計師必須使用不同的 MoC 來擴充程式碼功能。以下舉例說明適用於圖形化系統設計的 MoC:

資料流—資料流是最常與 NI LabVIEW 軟體相關的 MoC。就資料流而言,作業需要開發人員在執行之前,將資料插入所有輸入項中。資料流是一種直覺式的編碼結構,可輕鬆建置平行流程等應用。

文字式數學—文字式數學是另一款能用於輕鬆建立複雜函式的工具。文字架構的數學是針對複雜演算法,供人類讀取的實作,並且更容易以指令碼說明形式撰寫。Formula 節點和 LabVIEW MathScript RT Module 都是文字式數學。不論是要開發演算法、探索訊號處理概念或分析結果,都能運用 LabVIEW MathScript 選擇最有效的演算法開發語法。

圖 7: 在 LabVIEW MathScript RT Module 中重複利用文字式程式碼

C 程式碼—有時候,您使用的演算法最早就是以 C 或 C++ 建立的。如此一來,即可不必再捨棄先前的工作。可使用內聯 C 節點或呼叫函式庫函式節點,直接呼叫先前在 LabVIEW 中的程式碼。內聯 C 節點可用於現有的 C 程式碼,或實作小型數值或陣列演算法,而呼叫函式庫函式節點,則可存取 DLL 或共享函式庫中的 C 程式碼。

開放式軟體架構

過去幾年來,許多設計領域廣泛採用 LabVIEW 平台,因此需要運用不同的設計與模擬工具進行資料整合。LabVIEW 透過多種整合工具、程式庫與檔案格式,即可達到此互相容性。LabVIEW 也能整合於其他眾多軟體工具與量測資源,包括:

  • DLL、共享函式庫
  • ActiveX、COM、.NET (Microsoft)
  • DDE、TCP/IP、UDP、乙太網路、藍牙
  • CAN、DeviceNet、Modbus、OPC
  • USB、IEEE 1394、RS232/485、GPIB
  • 資料庫 (ADO、SQL 等)

透過這些工具,即可整合幾乎所有量測與控制裝置的資料。只要結合 LabVIEW 與硬體通訊通用標準,開發人員就能確實保障未來許多年的相容性與擴充能力。

LabVIEW 的方法

LabVIEW 內建數百個函式,概括數學、訊號處理,機率及控制等領域適用的傳統演算法,這些都是任何自訂演算法的重要基礎結構。這些函式可減輕低階程式碼的撰寫負擔,讓工程師有時間專心於解決方案而不是實作。

使用 LabVIEW 擷取實際資料非常容易,工程師可以使用實際資料測試自己的演算法再反覆調整,也顯得 LabVIEW 之可貴。透過互動式測試方式,即可使用不同的功能,確保系統可提供所需的結果。舉例來說,當使用濾波器處理訊號時,可從多種解決方案中進行選擇,擷取所需的實際訊號,並以圖表或檔案形式查看結果。若結果不適用於相關應用,則可選擇其他濾波器。通常,先擷取實際訊號並應用於演算法,再花時間使用軟體進行模擬,會是比較容易的做法。

圖 8: NI LabVIEW 內建數百筆可用於原型的演算法。

儀器原型測試

製作原型的目的之一即是迅速向潛在客戶、投資者與同事展示創意與設計。製作原型的另一個重要原因就是要測試並檢驗設計的基本軟硬體效能。僅當您整合電子、軟體與機械元件的功能原型時問題才會變得明顯。 

若能於原型製作階段進行完整的測試,則可於問題發生之前及早發現問題,以免造成大量的沉沒成本而無法修復問題。原型測試能提供確實的證據為效能背書,也能證明最終產品更加穩定可靠,能放心應用於部署作業。

軟體定義架構的儀器本就靈活有彈性,也更容易進行自動化。正因如此,現今產品設計團隊得以縮短手動測試作業時間,也能儘量減少實驗室需要用到的儀器數量,充分簡化開發流程。

LabVIEW 圖形化軟體平台能支援您設定簡易演算法,用於測試主要演算法的品質和穩定性。製作原型時請注意下列 2 項主要測試要點:

限制測試—確保軟體設計能在 I/O 通道的整個資料點範圍提供高品質的資料。這樣一來即可在整個產品開發週期中確保原型品質符合規格。

壓力測試—確保在長時間曝光及所有 I/O 通道同時達到極限時,都能符合品質規格。演算法必須夠穩健才能應對需要處理資料過載時的情況。

使用模擬 VI 將軟體演算法發揮到極致,不需要硬體就能進行測試。只要在 LabVIEW 中使用多種訊號產生 VI,或者開發能準確呈現實際 I/O 的 VI,就能做到以上所述。

圖 9: I/O 模擬方法

使用資料擷取測 I/O

由於軟體測試無法提供與實際硬體相同的體驗,因此可能會受到限制。LabVIEW 支援您使用 COTS 硬體執行實際的 I/O 測試。

使用多功能數位電錶資料擷取裝置就能進行實體硬體 I/O 除錯。LabVIEW 結合 NI-DAQmx 驅動程式就成了簡單易用的高階介面,能使用 DAQmx Express VI 執行複雜的資料擷取作業。

圖 10: 使用 NI DAQ 硬體進行測試

部署考量製作原型

從構想到紙上設計、功能原型最後到可發布產品的整個設計程序都極具挑戰性,因此您必須設法簡化這些階段之間的轉換。最理想的情況是設計能實際部署 (也就是能大量生產並銷售) 的原型。實務中這種情況並不常見,不過只要在設計與原型製作的同時考慮到部署署作業,即可確保設計中的關鍵元件能順利完成部署作業。關鍵在於找到正確的工具與平台,不但要能提供製作原型不可或缺的彈性和功能,更要功能強大,能因應上市需求進行客製化。

圖 11: 原型越接近成品越好。

LabVIEW I/O (RIO) 架構具備可重設的特性,是 NI 圖形化系統設計平台不可或缺的一環。圖形化系統設計是一種現代化的方法,用於設計、製作原型和部署監控系統;它將開放的 LabVIEW 圖形化程式設計環境與 COTS 硬體結合,大幅簡化開發流程,不僅提升了設計品質,還能融合客製化設計。

LabVIEW RIO 架構以四大要素為基礎:處理器、可重設 FPGA、模組化 I/O 硬體,以及圖形化設計軟體。這些要素的結合支援您快速設計出具備高效能 I/O 的客製化硬體電路,也能在系統時序控制方面發揮無可比擬的的靈活性。許多 NI 產品均採用這樣的架構。

圖 12: NI 提供採用 LabVIEW RIO 架構的產品,能發揮最高的彈性、穩定性與效能。

單卡式 RIO 控制器是高度客製化的單一印刷電路板,能提供最大的彈性。您提供 I/O 端子、電源供應器與機殼。單卡式 RIO 能讓使用者功能與最終產品順利整合。如果您需要更高的彈性或更輕巧的尺寸,NI 系統模組 (SOM) 能符合您在設計方面的需求。

圖 13: Single-Board RIO 與 SOM 控制器能發揮最高的彈性。

若需求更加嚴苛,CompactRIO 硬體會是更好的選擇。這款工業級硬體能承受極大的壓力。如果裝置必須能夠承受高強度的衝擊與振動,而且又不想花費時間與金錢開發自己的控制器以便在嚴苛的條件下運作,請考慮使用 CompactRIO。CompactRIO 平台不但堅固耐用,更不像單卡式 RIO 裝置需要客製化功能。如果不想自行處理電源轉換、機殼或 I/O 端子,CompactRIO 也是不錯的解決方案。

圖 14: CompactRIO 控制器的耐用度極高。

若要進行更精準的量測,例如用於實驗室環境,或者只能使用電腦架構平台,那麼,R 系列多功能 RIO 裝置會是非常好的選擇。這類裝置分 PCI、PCI Express、USB、PXI 和 PXI Express 等規格,相較於單卡式 RIO 和 CompactRIO,這類裝置的 I/O 訊號處理效能和準確度更優異。R 系列裝置能發揮 LabVIEW RIO 架構的強大功能,有助於擴充功能,超越傳統的資料擷取解決方案。

圖 15: R 系列資料擷取裝置將 LabVIEW FPGA 與標準電腦規格結合。

如果需要類比速度最高 3 GS/s 或數位速度最高 1 Gb/s 的超高效能 I/O,FlexRIO 會是最佳選擇。不論是要降低測試成本或是要加快新一代嵌入式系統的開發速度,FlexRIO 都能提供 LabVIEW RIO 架構中速度最快的 I/O 與最大型的 FPGA,能協助您解決最複雜的原型製作或部署難題。

圖 16: FlexRIO 控制器與模組能發揮最高的 FPGA 與 I/O 效能。

LabVIEW RIO 架構不僅提供多種規格可供選擇,還能共用同一個平台。換句話說,使用者可以在 LabVIEW RIO 架構所支援的任何產品使用相同的程式碼和處理序,有必要時還能隨意切換。事實上,在單卡式 RIO、CompactRIO、R 系列或 FlexRIO 之間切換時,可以重複利用大部分的程式碼。即使您並未完全了解最終產品的所有需求,即便在選擇原型製作平台時發生錯誤,也不會導致您重新撰寫所有的程式碼。若能做到這一點,就能更早開始原型製作流程,也能加速開發速度。您也可以使用 CompactRIO 開始製作原型,之後再移至單卡式 RIO 進行部署,只需要略改機械設計,幾乎不需要變更軟體。這同樣是因為共用平台才能實現。

結論

原型製作是嵌入式設計流程中相當重要的一環。向投資者、客戶與管理階層展示可運作的構想有助於將自己的構想納入預算。只要懂得善用 NI 圖形化系統設計工具,不需要龐大的設計團隊也能迅速製作出確實可用的功能原型。運用這些步驟建立高品質的功能原型,就能迅速開始設計新的應用程式。

 

相關連結

 

Simulink® 是 The MathWorks, Inc. 的註冊商標。