【導讀】在本文中,我們將重點介紹CN0549的不同組件可用的軟件生態系統、數據分析工具和軟件集成,以及工程師和數據專家如何使用它們進行應用開發。我們分兩部分來介紹使用CN0549開發平臺進行狀態監控(CbM)和預測性維護(PdM)應用,這是該系列文章的第二篇。新平臺旨在加快定制CbM解決方案從原型制作到生產的整個開發流程。第一部分主要介紹MEMS振動技術,以及為CbM應用捕捉高質量的振動數據。
CN0549狀態監控平臺簡介
在本文中,我們將重點介紹CN0549的不同組件可用的軟件生態系統、數據分析工具和軟件集成,以及工程師和數據專家如何使用它們進行應用開發。我們分兩部分來介紹使用CN0549開發平臺進行狀態監控(CbM)和預測性維護(PdM)應用,這是該系列文章的第二篇。新平臺旨在加快定制CbM解決方案從原型制作到生產的整個開發流程。第一部分主要介紹MEMS振動技術,以及為CbM應用捕捉高質量的振動數據。
從概念到生產的整個過程,以及如何加快這個過程!
在構建狀態監控解決方案時,它們必須包含傳感器、本地處理、連接、某些形式的軟件或硬件,使其能夠正常運行。CN0549提供可自定義的硬件和軟件選項,讓工程師和軟件開發人員能夠使用常用的工具和基礎設施,并根據應用設計做出權衡取舍,以解決所有這些挑戰。例如,如果您想選擇特定的微控制器或FPGA進行處理,想要使用Python進行編碼,或有喜歡的、想要重復使用的傳感器。這讓CN0549成為一個強大的平臺,讓希望構建優化CbM解決方案的人員能夠根據自己的需求來自定義處理、功率、性能、軟件和數據分析。
嵌入式系統的開發流程
我們來看看嵌入式系統從生成概念到生產的整個開發流程。圖1概要描述這個抽象化的過程。
在圖1所示的設計流程中,第1步是“數據研究”階段。在這個階段,用戶將他們的要求轉化到應用對硬件和軟件的不同要求。從硬件的角度來看,可能涉及抗沖擊性、模擬信號帶寬或測量范圍等參數。在考慮對軟件的要求時,樣本數量、采樣速率、頻譜、過采樣和數字濾波都是CbM應用的重要參數。該平臺非常實用靈活,允許研究人員使用不同的傳感器組合,并調節數據采集參數,以滿足其應用需求。
“數據研究”階段之后是“算法開發”階段,這個階段主要是驗證系統的應用或使用。這通常需要在高級工具中開發模型或設計算法,并最終移植到嵌入式系統中。但是,在優化設計之前,必須使用真實數據和硬件環路進行驗證,這正是CN0549的優勢所在,因為它不僅能與熱門的高級分析工具直接集成,還支持硬件環路驗證。
設計得到驗證之后,就開始進行優化和嵌入所需軟件組件的工作。在“嵌入式設計細化”階段,可能需要重新實施某些算法或軟件層,以便在FPGA或資源有限的微控制器中使用。必須小心謹慎地不斷驗證設計,因為我們會將它移植到原型或將要投入生產的硬件中進行最后驗證。
圖1.嵌入式系統的開發流程
最后是到達“生產”階段,這個階段可能與設計開始使用的原始開發環境沒有什么相似之處,但仍然要滿足同樣的要求。由于最終的系統可能與原始的研究系統相去甚遠,所以可能無法或很難運行相同的代碼或測試。這可能導致產生生產測試問題和設備故障,很可能需要花費額外的時間和資金投入來進行補救。
通過最大程度的重復使用來降低風險
在設計過程中,降低風險最簡單的方法之一是盡可能在每個階段重復使用更多的硬件和軟件組件,CN0549為開發人員提供許多開箱即用的資源,可以在開發流程的每個階段直接使用。CN0549解決方案提供原理圖和電路板布局文件,提供一個適用于優化和全功能環境的開源軟件堆棧,以及更高等級工具(例如MATLAB?和Python)可用的集成選項。最終用戶可以使用ADI經過驗證的組件,并在研究階段到生產階段期間選擇想要維護或更改的組件。這樣最終用戶就能集中精力進行軟件開發和系統集成,不必去繪制ADI組件的原理圖或進行基礎的軟件開發。利用硬件模塊和重復使用軟件層,例如ADI提供的設備驅動程序、HDL或應用固件,可以減少構建系統所需的開發時間,并大大加快上市時間。
軟件開發流程和過程
在開發期間,CN0549為工程師們提供多種選項,允許他們使用通用語言,包括C或C++,同時使用他們熟悉的數據分析工具,例如MATLAB或Python。這主要是通過利用和基于開源標準,以及支持不同制造商的多種嵌入式平臺的現有解決方案進行構建而實現。
CN0549系統堆棧
圖2所示的系統堆棧概述了構成CN0549系統的不同組件。左上角的深藍色方框表示傳感器和數據采集(DAQ)電路板,淺藍色和紫色方框表示用于數據處理的FPGA分區。該平臺直接支持Intel DE10-Nano和Xilinx? CoraZ7-07s,涵蓋兩大FPGA供應商。綠色方框表示與主機PC的連接。這為算法開發提供了從硬件到高級數據分析工具的直接數據訪問。
所有硬件描述語言(HDL)代碼都是開源的,允許開發人員進行修改,將數字信號處理(DSP)插入可編程邏輯(PL)的數據流中,如圖2所示。這可以是從濾波器到狀態機甚至機器學習等任何內容,具體由您的系統分區決定,這一步也可以在用戶空間或應用層完成。由于代碼是公開提供的,它可以移植到不同制造商的其他FPGA,或不同處理器系列中,具體取決于終端應用的需求。
圖2.CN0549平臺的系統堆棧
Arm?處理器內部提供兩種軟件選項。具體使用哪種,由具體的用例決定,大多數開發人員可能會使用:
● Linux?:內核驅動程序,可用于在內核中的輸入輸出工業(IIO)框架中構建的DAQ屏蔽。它與一個名為Kuiper Linux的完全嵌入式Linux發行版相結合,這個版本在Arm內核用戶空間中運行,基于樹莓派OS。
● 無操作系統(No-OS):裸機項目,使用與Linux內核中同樣的驅動程序,可以在Xilinx或Intel的SDK中使用。它也可以作為替代方案,在實時操作系統(RTOS)環境中實現。
建議開發人員從Linux開始學習并使用其系統進行開發,因為Linux提供的工具最多。Linux還提供大量開發包和驅動程序,構成了所需的開發環境。在系統設計穩定并準備進行優化時,通常會轉向無操作系統環境,只提供必要的軟件。但是,這主要取決于應用,許多制造商會交付完整的Linux系統,以保持他們要提供的靈活性。
與用于可編程邏輯的HDL一樣,整個內核源代碼、Kuiper Linux鏡像和No-OS項目都是完全開源的,讓最終用戶能夠按照自己的意愿更改組件。如果需要,還可以將這些代碼庫移植到不同的處理器系統或不同的運行時環境中。
圖2所示的最后一個組件是與主機PC的連接,如綠色方框所示。在運行該系統時,可以對設備進行配置,并將數據流備份到主機系統進行分析,開發人員將利用MATLAB或TensorFlow等標準工具在主機上創建算法。最終將這些算法轉移到嵌入目標中,讓他們能夠使用本地處理能力來加快算法開發迭代。
訪問CbM數據——使用入門
使用Arm處理器和PL一般發生在設計流程較為靠后的階段,也就是要對系統實施優化進行部署時。所以,對于開發人員來說,最開始常用的切入點都是從工作站遠程連接至嵌入式系統。在嵌入式系統上運行Linux時,因為基礎設施的設計方式,在工作站上遠程或本地運行代碼是一個相對透明的過程。這主要是因為名為libIIO的開源庫。libIIO是一個接口庫,允許在內核的Linux IIO框架內構建適用于不同設備驅動程序的簡單、一致的訪問模型。這個庫是能夠靈活使用CbM平臺的核心,并提供數據流傳輸和設備控制功能。
libIIO本身主要分成兩個部分:
● libIIO庫,這是一個C語言庫,用于訪問不同的IIO驅動程序屬性或函數。這包括向設備(例如ADC、DAC和傳感器)傳輸數據流或從中輸出數據流。
● IIO daemon(iiod)利用實際的驅動程序的庫和內核接口來管理libIIO庫或客戶端之間的訪問。
libIIO和iiod本身是從不同的組件寫入,可以使用不同的方法來訪問驅動程序,即所謂的后端。后端允許本地和遠程用戶對libII進行控制和提供數據流,而且,由于它們已形成組件,所以可以將新后端添加到系統中。目前,libIIO支持四個后端:
● 本地:允許訪問連接至同一設備的硬件的本地可訪問驅動程序。
● USB:通過使用libusb,此后端允許通過USB鏈接遠程控制驅動程序。
● 串行:為通過串行連接的電路板提供更通用的接口。UART是最常見的用例。
● 網絡:最常用的遠程后端,基于IP來訪問網絡中的驅動程序。
圖3. 使用網絡后端的libIIO系統概述
圖3從系統層面概述如何使用libIIO組件,以及如何將它們集成到整個系統中。圖中左側是嵌入式系統,它已安裝libIIO庫,運行iiod daemon。在嵌入式系統中,用戶可以訪問本地后端,甚至網絡后端。他們可以通過更改一行代碼來確認任一后端的地址,在兩個后端之間切換。無需對目標代碼進行其他更改。
圖4. libIIO遠程與本地示例
圖3左側顯示的是遠程主機,可以運行任何操作系統。提供Windows、macOS、Linux和BSD等官方軟件包。該圖顯示使用了基于網絡或IP的后端,也可能是使用串行、USB或PCIe連接。從用戶的角度來看,可以從C語言庫本身,或者從其他語言的許多可用綁定來使用libIIO,包括:Python、C#、Rust、MATLAB和Node.js。為需要與應用中的不同驅動程序交互的用戶提供多種選擇。
應用和工具
當開始使用一個新設備時,通常不建議直接使用libIIO。所以,有很多基于libIIO構建的更高等級的應用,它們通過命令行和GUI格式為IIO設備提供基本的配置能力。它們分別是IIO工具和IIO示波器。
IIO工具是一組與libIIO一起發布的命令行工具,對于通過腳本執行的低等級調試和自動化任務來說非常有用。例如,在執行實驗室測試時,它可以在不同的采樣率模式下設置平臺,以及收集一些數據。利用幾行bash,或通過使用IIO工具的批處理腳本可輕松完成這些操作。圖5顯示了一個簡單示例,可以在本地或遠程運行,以更改采樣速率和ADC的地輸入模式。這個示例使用名為iio_attr的IIO工具,讓用戶能夠輕松更新設備的配置。
圖5.IIO工具的iio_attr部分的使用示例
但是,對用戶來說,最常見的切入點是GUI應用IIO示波器,一般被稱為OSC。與IIO工具一樣,OSC是通用的,可以管理任意IIO驅動程序,而且,因為它是基于libIIO構建,所以它可以遠程運行或在電路板上運行。但是,它也包含一個插件系統,可以為特定的驅動程序或驅動程序組合添加專用選項卡。圖6顯示自動加載到基于CN0540的電路板上的插件選項卡,包括控制和監控選項卡。這些選項卡提供了一個簡單的界面,可以訪問CN0540的ADC、DAC和控制引腳的低級功能,以及數據采集板和測試點監控的基本示意圖。如需了解其他可用的默認選項卡和插件信息,可以訪問ADI公司Wiki查看更多OSC文檔。
OSC的最后一個重要方面是捕獲窗口。捕獲窗口可以根據從ADC或基于libIIO的緩沖區收集的數據進行繪圖。圖7顯示在頻域模式下使用的捕獲窗口,這是基于頻譜數據信息繪制。也可以繪制其他圖,包括時域圖、相關圖和星座圖。這對于抽檢設備、調試或評估非常有用。這些圖提供常用工具,例如標記、峰值檢測、諧波檢測,甚至相位估計。由于OSC也是開源的,任何人都可以添加更多插件或繪圖,甚至更改現有功能,對其進行擴展。
圖6.CN0540 IIO示波器插件選項卡
圖7.頻域模式下的IIO示波器捕獲窗口
算法開發環境集成
至此,我們已經介紹了大部分工程師在首次使用CN0549時會采用的低等級重要工具。首先理解這些是很重要的,這樣開發人員才能理解系統的靈活性以及他們可以使用的不同選擇或接口。但是,在設置和運行基線系統后,開發人員希望使用MATLAB或Python等工具將數據快速遷移至算法開發。這些程序可以從硬件導入數據。必要時可以設計附加控制邏輯。
在機器學習開發周期中,開發人員通常會遵循通用的流程,該流程與他們想要用于處理數據的軟件環境無關。圖8簡要顯示了該流程的一個示例,其中涉及數據收集、分割數據用于測試和訓練、開發模型和算法,最后部署模型進行現場推理。在實際服務中,會持續執行這整個流程,將新學習內容集成到生產模型中。TensorFlow、PyTorch,或MATLAB Machine Learning Toolbox等工具都可以采用此流程。這個流程有其作用,但是,通常會忽視或完全忽略收集和整理數據,以及管理數據這種復雜任務。為了簡化這項任務,我們使用這些相關工具和軟件包設計出相關的軟件生態系統。
Python集成——連接到Python分析工具
首先,從Python開始,可以通過模塊PyADI-IIO獲得CN0549的設備特定類別。圖6顯示了一個通過以太網配置設備的采樣速率和提取緩沖區的簡單示例。這里沒有復雜的寄存器序列、模糊的存儲器控制調用,或要記憶的隨機位。而是由板上運行的驅動程序、libIIO和PyADI-IIO在工作站,甚至在云中進行遠程管理。
PyADI-IIO可以通過pip和conda進行安裝,將控制按鈕表現為易于使用和歸檔記錄的屬性。它還按易于理解的形式(例如NumPy陣列或原生形式)提供數據,在必要時,還會處理設備的數據流轉換。這使PyADI-IIO易于添加到Jupyter Notebook之類的環境中,無需通過不同的工具或復雜的數據轉換即可輕松將數據傳輸到機器學習管道中,讓開發人員可以集中精力開發算法,而不是處理某些困難的API或數據轉換。
圖8.機器學習模型開發流程
圖9.PyADI-IIO示例
MATLAB集成——連接到MATLAB
在MATLAB方面,通過Analog Devices Sensor Toolbox提供對CN0549及其組件的支持。這個工具箱與PyADI-IIO類似,提供針對不同組件的特性類別,將它們實施為MATLAB系統對象(MSO)。MSO是MathWorks開發人員可以用來連接硬件和不同軟件組件的一種標準化方式,提供先進功能,幫助執行代碼生成、Simulink支持和一般狀態管理。許多MATLAB用戶能夠在不了解的情況下,使用實施為MSO的MATLAB的各種功能,例如示波器或信號生成器。在圖10中,我們使用CN0532接口和DSP頻譜分析儀示波器,兩者都實施為MSO。同樣,和PyADI-IIO一樣,提供一個易于使用的接口供傳統的MATLAB用戶使用。
除了硬件連接之外,Sensor Toolbox還集成適用于HDL和C/C++的代碼生成工具。這些工具適用于開發、模擬和部署IP,甚至不熟悉HDL設計或工具,但了解MATLAB和Simulink的人員也可以使用。
圖10.使用示波器的Sensor Toolbox流傳輸示例
使用TensorFlow的分類示例
CN0549套件提供幾個示例,從基本數據流傳輸到機器學習分類示例。關于時間序列數據的機器學習,例如來自CN0532的振動數據,可以從幾個不同角度進行理解。這可能包括支持向量機(SVM)、長短時記憶網絡(LSTM)模型,如果將數據直接解譯為時間序列的話,甚至包括自動編碼器。但是,在許多情況下,將時間序列問題轉換為成像處理問題,并利用在該應用領域開發的工具和豐富知識可能更為方便。
我們在Python中看看這種方法。在隨PyADI-IIO提供的一個示例中,將CN0532安裝到振蕩風扇上,然后進行了一些測量。這些測量在不同的風扇設置(Sleep、General、Allergen)下進行,在每種模式下都會捕捉409,600個樣本。在圖11中查看這個數據時,可以輕松確定Allergen用例的時域,但其他兩個用例則比較難以區分。雖然可以通過檢測來確認這些用例,但在時域中使用算法來確認這些用例會很容易出錯。
為了幫助更好地區分這些用例,會將數據轉化為頻域,并使用頻譜圖來描繪不同頻率隨時間變化的濃度。與圖11相比,圖12所示的頻譜圖在數據上有更明顯的差異,但在時間維度上是一致的。這些頻譜圖是有效的圖像,現在可以使用傳統的圖像分類技術進行處理。
將數據集拆分為訓練集和測試集,將頻譜圖分別輸入僅由神經網絡(NN)構成的模型(包含三個致密層)和更小一些的卷積神經網絡(CNN)模型。這兩種方法都是在TensorFlow中實現的,可以在不到100次的周期內輕松收斂到接近100%測試驗證。CNN使用大約1%的可調參數在大約一半的時間內收斂,是目前最高效的設計。圖13提供關于精度和周期的培訓收斂圖,以概述CNN的快速收斂。
圖11.時間序列中的風扇振蕩數據
圖12.捕捉的振動數據的頻譜圖
圖13.隨時間變化的CNN訓練精度(用于繪制振動頻譜圖)
在GitHub的PyADI-IIO源代碼樹下提供了此示例的所有Python腳本、手冊和數據集。由于提供了數據集,甚至可以在不使用CN0549硬件的情況下使用TensorFlow來展示示例。但是,使用硬件時,可以將訓練模型用于實時推理。
邊緣到云:轉向嵌入式解決方案
創建模型后,可將其部署用于推理或決策。采用CN0549時,它可以安裝在遠程PC上,從CN0540傳輸數據流,或是直接在嵌入式處理器上運行。根據實施方案,將模型放到處理器中需要更多的工程工作,但可以將功效提高一個數量級,且能夠實時運行。幸運的是,在過去幾年里,用于部署機器學習模型的工具和軟件都取得了很大的發展。
使用FPGA
賽靈思公司和英特爾都提供高階合成(HLS)工具,將高階語言轉化成在FPGA上運行的HDL代碼。它們通常會與TensorFlow、PyTorch或Caffe等Python框架集成,以幫助將模型轉換為IP內核,從而允許工程師將IP部署到DE10-Nano、Cora Z7-07S或自定義系統上。然后,可以將這些IP內核集成到ADI提供的開源HDL參考設計中。圖14顯示Vivado提供的Cora Z7-07S CN0540的屏幕截圖,其中包含注釋,其中側重顯示數據路徑。在該設計中,來自CN0540的數據通過SPI引腳讀取,24位樣本由SPI引擎解譯,傳輸到DMA控制器,再進入存儲器。任何DSP或機器學習模型都可以直接插入數據路徑中這個管道。
圖14.Vivado(2019年1月)顯示的Cora Z7-07S HDL參考設計數據路徑
使用微處理器
它們無需將算法轉化為HDL層,而是可以直接在Arm內核中運行。根據數據速率和算法的復雜性,這個開發流程很合理,也更加簡單。相比HDL,為Arm內核開發C代碼甚至Python所耗費的開發資源和時間都更少,通常也更易于維護。
MATLAB Embedded Coder這樣的工具甚至可以簡化此流程,自動將MATLAB轉化為可嵌入且優化的C代碼,供Arm內核使用。或者,TensorFlow提供TensorFlow Lite等工具,它們是Python代碼庫的可嵌入的C版本,能夠更輕松地轉換為嵌入式目標。
智能決策拓撲
狀態監控并非適用于所有硬件和軟件配置,所以CN0549采用了靈活的設計。我們在考慮CbM異常檢測之類的問題時,通常可以從兩個時間量程角度來解決:在一個時間量程,我們需要立即做出反應,例如在安全相關的場景中,在長期時間量程,更多的是關于維護或設備更換。兩者需要使用不同的算法、處理能力和方法。
在理想情況下,機器操作員將會擁有很大的數據湖來訓練模型,可以無需干擾事件來處理短期檢測,也可以持續從運行設備傳輸數據流,以便進行未來的維護預測。但是,對大多數操作員來說,情況并非如此,數據湖嚴重干涸。由于安全考量、地理位置、網絡或拓撲等要求,有些現成的解決方案也很難執行數據收集。面對這些困難,我們需要自定義程度更高的解決方案。
圖15.CbM網絡拓撲
CN0549是一個獨立系統,提供多種連接選項。它運行標準的Linux,所以傳統的網絡堆棧(例如以太網和Wi-Fi)可以開箱即用,甚至能在必要時連接蜂窩調制解調器。在實際應用中,可以使用幾種出色的典型拓撲,如圖15所示。
圖15最左側的配置是脫機收集數據示例,一般發生在偏遠位置或無法聯網的地方。在這種情況下,平臺會配備大型存儲媒介,并按照計劃來收集數據。或者,其他兩個選項是將數據流傳輸至同一個端點。圖15中間的配置是隔離網絡,可能僅供組織內部使用,或者是偏遠位置的一組用于集中收集數據的平臺。出于安全考慮,或者在無法聯網時,可能需要這種配置。在這些配置下,CN0549易于設置,且能夠根據終端部署的特定需求來自定義。
最后一個配置是直接云選項,每個平臺直接訪問互聯網,并將測量數據推送至云。CN0549在Linux上運行,所以該平臺可以通過Python等語言輕松使用不同的云供應商(例如Microsoft Azure IoT或Amazon IoT Greengrass)的API,提供一種為新連接的設備構建數據湖的簡單方式。
云和本地流程之間保持穩定連接時,如我們之前所探討的那樣,可以對不同算法進行劃分,哪些是需要或可以在本地運行的,哪些是可以在云中運行的。然后自然地針對算法復雜性處理能力、事件延遲和云傳輸帶寬限制等的要求進行權衡和取舍。但是,由于非常靈活,因此這些因素很容易考慮決斷。
結論
CN0549 CbM平臺為設計人員開發應用提供了系統靈活性和大量軟件資源。本文深入探討軟件堆棧,并圍繞如何使用不同組件來實施CbM和預測性維護(PdM)開發展開討論。由于軟件、HDL、原理圖以及與數據科學工具集成的開放性,設計人員可以在整個堆棧中充分利用其終端系統所需的組件。總之,這種狀態監控設計提供了一款易于使用的開箱即用解決方案,包括開源軟件和硬件,以提供靈活性,讓設計人員能夠在更短時間內實現更好的自定義設計。
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理。
推薦閱讀: