你的位置:首頁 > 傳感技術(shù) > 正文

開源、可重復(fù)使用的軟件堆棧助力實(shí)現(xiàn)實(shí)時處理和CbM算法開發(fā)

發(fā)布時間:2022-04-19 來源:Travis Collins,ADI 責(zé)任編輯:wenwei

【導(dǎo)讀】在本文中,我們將重點(diǎn)介紹CN0549的不同組件可用的軟件生態(tài)系統(tǒng)、數(shù)據(jù)分析工具和軟件集成,以及工程師和數(shù)據(jù)專家如何使用它們進(jìn)行應(yīng)用開發(fā)。我們分兩部分來介紹使用CN0549開發(fā)平臺進(jìn)行狀態(tài)監(jiān)控(CbM)和預(yù)測性維護(hù)(PdM)應(yīng)用,這是該系列文章的第二篇。新平臺旨在加快定制CbM解決方案從原型制作到生產(chǎn)的整個開發(fā)流程。第一部分主要介紹MEMS振動技術(shù),以及為CbM應(yīng)用捕捉高質(zhì)量的振動數(shù)據(jù)。


CN0549狀態(tài)監(jiān)控平臺簡介


在本文中,我們將重點(diǎn)介紹CN0549的不同組件可用的軟件生態(tài)系統(tǒng)、數(shù)據(jù)分析工具和軟件集成,以及工程師和數(shù)據(jù)專家如何使用它們進(jìn)行應(yīng)用開發(fā)。我們分兩部分來介紹使用CN0549開發(fā)平臺進(jìn)行狀態(tài)監(jiān)控(CbM)和預(yù)測性維護(hù)(PdM)應(yīng)用,這是該系列文章的第二篇。新平臺旨在加快定制CbM解決方案從原型制作到生產(chǎn)的整個開發(fā)流程。第一部分主要介紹MEMS振動技術(shù),以及為CbM應(yīng)用捕捉高質(zhì)量的振動數(shù)據(jù)。


從概念到生產(chǎn)的整個過程,以及如何加快這個過程!


在構(gòu)建狀態(tài)監(jiān)控解決方案時,它們必須包含傳感器、本地處理、連接、某些形式的軟件或硬件,使其能夠正常運(yùn)行。CN0549提供可自定義的硬件和軟件選項(xiàng),讓工程師和軟件開發(fā)人員能夠使用常用的工具和基礎(chǔ)設(shè)施,并根據(jù)應(yīng)用設(shè)計做出權(quán)衡取舍,以解決所有這些挑戰(zhàn)。例如,如果您想選擇特定的微控制器或FPGA進(jìn)行處理,想要使用Python進(jìn)行編碼,或有喜歡的、想要重復(fù)使用的傳感器。這讓CN0549成為一個強(qiáng)大的平臺,讓希望構(gòu)建優(yōu)化CbM解決方案的人員能夠根據(jù)自己的需求來自定義處理、功率、性能、軟件和數(shù)據(jù)分析。


嵌入式系統(tǒng)的開發(fā)流程


我們來看看嵌入式系統(tǒng)從生成概念到生產(chǎn)的整個開發(fā)流程。圖1概要描述這個抽象化的過程。


在圖1所示的設(shè)計流程中,第1步是“數(shù)據(jù)研究”階段。在這個階段,用戶將他們的要求轉(zhuǎn)化到應(yīng)用對硬件和軟件的不同要求。從硬件的角度來看,可能涉及抗沖擊性、模擬信號帶寬或測量范圍等參數(shù)。在考慮對軟件的要求時,樣本數(shù)量、采樣速率、頻譜、過采樣和數(shù)字濾波都是CbM應(yīng)用的重要參數(shù)。該平臺非常實(shí)用靈活,允許研究人員使用不同的傳感器組合,并調(diào)節(jié)數(shù)據(jù)采集參數(shù),以滿足其應(yīng)用需求。


“數(shù)據(jù)研究”階段之后是“算法開發(fā)”階段,這個階段主要是驗(yàn)證系統(tǒng)的應(yīng)用或使用。這通常需要在高級工具中開發(fā)模型或設(shè)計算法,并最終移植到嵌入式系統(tǒng)中。但是,在優(yōu)化設(shè)計之前,必須使用真實(shí)數(shù)據(jù)和硬件環(huán)路進(jìn)行驗(yàn)證,這正是CN0549的優(yōu)勢所在,因?yàn)樗粌H能與熱門的高級分析工具直接集成,還支持硬件環(huán)路驗(yàn)證。


設(shè)計得到驗(yàn)證之后,就開始進(jìn)行優(yōu)化和嵌入所需軟件組件的工作。在“嵌入式設(shè)計細(xì)化”階段,可能需要重新實(shí)施某些算法或軟件層,以便在FPGA或資源有限的微控制器中使用。必須小心謹(jǐn)慎地不斷驗(yàn)證設(shè)計,因?yàn)槲覀儠⑺浦驳皆突驅(qū)⒁度肷a(chǎn)的硬件中進(jìn)行最后驗(yàn)證。


1.jpg

圖1.嵌入式系統(tǒng)的開發(fā)流程


最后是到達(dá)“生產(chǎn)”階段,這個階段可能與設(shè)計開始使用的原始開發(fā)環(huán)境沒有什么相似之處,但仍然要滿足同樣的要求。由于最終的系統(tǒng)可能與原始的研究系統(tǒng)相去甚遠(yuǎn),所以可能無法或很難運(yùn)行相同的代碼或測試。這可能導(dǎo)致產(chǎn)生生產(chǎn)測試問題和設(shè)備故障,很可能需要花費(fèi)額外的時間和資金投入來進(jìn)行補(bǔ)救。


通過最大程度的重復(fù)使用來降低風(fēng)險


在設(shè)計過程中,降低風(fēng)險最簡單的方法之一是盡可能在每個階段重復(fù)使用更多的硬件和軟件組件,CN0549為開發(fā)人員提供許多開箱即用的資源,可以在開發(fā)流程的每個階段直接使用。CN0549解決方案提供原理圖和電路板布局文件,提供一個適用于優(yōu)化和全功能環(huán)境的開源軟件堆棧,以及更高等級工具(例如MATLAB?和Python)可用的集成選項(xiàng)。最終用戶可以使用ADI經(jīng)過驗(yàn)證的組件,并在研究階段到生產(chǎn)階段期間選擇想要維護(hù)或更改的組件。這樣最終用戶就能集中精力進(jìn)行軟件開發(fā)和系統(tǒng)集成,不必去繪制ADI組件的原理圖或進(jìn)行基礎(chǔ)的軟件開發(fā)。利用硬件模塊和重復(fù)使用軟件層,例如ADI提供的設(shè)備驅(qū)動程序、HDL或應(yīng)用固件,可以減少構(gòu)建系統(tǒng)所需的開發(fā)時間,并大大加快上市時間。


軟件開發(fā)流程和過程


在開發(fā)期間,CN0549為工程師們提供多種選項(xiàng),允許他們使用通用語言,包括C或C++,同時使用他們熟悉的數(shù)據(jù)分析工具,例如MATLAB或Python。這主要是通過利用和基于開源標(biāo)準(zhǔn),以及支持不同制造商的多種嵌入式平臺的現(xiàn)有解決方案進(jìn)行構(gòu)建而實(shí)現(xiàn)。


CN0549系統(tǒng)堆棧


圖2所示的系統(tǒng)堆棧概述了構(gòu)成CN0549系統(tǒng)的不同組件。左上角的深藍(lán)色方框表示傳感器和數(shù)據(jù)采集(DAQ)電路板,淺藍(lán)色和紫色方框表示用于數(shù)據(jù)處理的FPGA分區(qū)。該平臺直接支持Intel DE10-Nano和Xilinx? CoraZ7-07s,涵蓋兩大FPGA供應(yīng)商。綠色方框表示與主機(jī)PC的連接。這為算法開發(fā)提供了從硬件到高級數(shù)據(jù)分析工具的直接數(shù)據(jù)訪問。


所有硬件描述語言(HDL)代碼都是開源的,允許開發(fā)人員進(jìn)行修改,將數(shù)字信號處理(DSP)插入可編程邏輯(PL)的數(shù)據(jù)流中,如圖2所示。這可以是從濾波器到狀態(tài)機(jī)甚至機(jī)器學(xué)習(xí)等任何內(nèi)容,具體由您的系統(tǒng)分區(qū)決定,這一步也可以在用戶空間或應(yīng)用層完成。由于代碼是公開提供的,它可以移植到不同制造商的其他FPGA,或不同處理器系列中,具體取決于終端應(yīng)用的需求。


2.jpg

圖2.CN0549平臺的系統(tǒng)堆棧


Arm?處理器內(nèi)部提供兩種軟件選項(xiàng)。具體使用哪種,由具體的用例決定,大多數(shù)開發(fā)人員可能會使用:


●   Linux?:內(nèi)核驅(qū)動程序,可用于在內(nèi)核中的輸入輸出工業(yè)(IIO)框架中構(gòu)建的DAQ屏蔽。它與一個名為Kuiper Linux的完全嵌入式Linux發(fā)行版相結(jié)合,這個版本在Arm內(nèi)核用戶空間中運(yùn)行,基于樹莓派OS。

●   無操作系統(tǒng)(No-OS):裸機(jī)項(xiàng)目,使用與Linux內(nèi)核中同樣的驅(qū)動程序,可以在Xilinx或Intel的SDK中使用。它也可以作為替代方案,在實(shí)時操作系統(tǒng)(RTOS)環(huán)境中實(shí)現(xiàn)。


建議開發(fā)人員從Linux開始學(xué)習(xí)并使用其系統(tǒng)進(jìn)行開發(fā),因?yàn)長inux提供的工具最多。Linux還提供大量開發(fā)包和驅(qū)動程序,構(gòu)成了所需的開發(fā)環(huán)境。在系統(tǒng)設(shè)計穩(wěn)定并準(zhǔn)備進(jìn)行優(yōu)化時,通常會轉(zhuǎn)向無操作系統(tǒng)環(huán)境,只提供必要的軟件。但是,這主要取決于應(yīng)用,許多制造商會交付完整的Linux系統(tǒng),以保持他們要提供的靈活性。


與用于可編程邏輯的HDL一樣,整個內(nèi)核源代碼、Kuiper Linux鏡像和No-OS項(xiàng)目都是完全開源的,讓最終用戶能夠按照自己的意愿更改組件。如果需要,還可以將這些代碼庫移植到不同的處理器系統(tǒng)或不同的運(yùn)行時環(huán)境中。


圖2所示的最后一個組件是與主機(jī)PC的連接,如綠色方框所示。在運(yùn)行該系統(tǒng)時,可以對設(shè)備進(jìn)行配置,并將數(shù)據(jù)流備份到主機(jī)系統(tǒng)進(jìn)行分析,開發(fā)人員將利用MATLAB或TensorFlow等標(biāo)準(zhǔn)工具在主機(jī)上創(chuàng)建算法。最終將這些算法轉(zhuǎn)移到嵌入目標(biāo)中,讓他們能夠使用本地處理能力來加快算法開發(fā)迭代。


訪問CbM數(shù)據(jù)——使用入門


使用Arm處理器和PL一般發(fā)生在設(shè)計流程較為靠后的階段,也就是要對系統(tǒng)實(shí)施優(yōu)化進(jìn)行部署時。所以,對于開發(fā)人員來說,最開始常用的切入點(diǎn)都是從工作站遠(yuǎn)程連接至嵌入式系統(tǒng)。在嵌入式系統(tǒng)上運(yùn)行Linux時,因?yàn)榛A(chǔ)設(shè)施的設(shè)計方式,在工作站上遠(yuǎn)程或本地運(yùn)行代碼是一個相對透明的過程。這主要是因?yàn)槊麨閘ibIIO的開源庫。libIIO是一個接口庫,允許在內(nèi)核的Linux IIO框架內(nèi)構(gòu)建適用于不同設(shè)備驅(qū)動程序的簡單、一致的訪問模型。這個庫是能夠靈活使用CbM平臺的核心,并提供數(shù)據(jù)流傳輸和設(shè)備控制功能。


libIIO本身主要分成兩個部分:


●   libIIO庫,這是一個C語言庫,用于訪問不同的IIO驅(qū)動程序?qū)傩曰蚝瘮?shù)。這包括向設(shè)備(例如ADC、DAC和傳感器)傳輸數(shù)據(jù)流或從中輸出數(shù)據(jù)流。

●   IIO daemon(iiod)利用實(shí)際的驅(qū)動程序的庫和內(nèi)核接口來管理libIIO庫或客戶端之間的訪問。


libIIO和iiod本身是從不同的組件寫入,可以使用不同的方法來訪問驅(qū)動程序,即所謂的后端。后端允許本地和遠(yuǎn)程用戶對libII進(jìn)行控制和提供數(shù)據(jù)流,而且,由于它們已形成組件,所以可以將新后端添加到系統(tǒng)中。目前,libIIO支持四個后端:


●   本地:允許訪問連接至同一設(shè)備的硬件的本地可訪問驅(qū)動程序。

●   USB:通過使用libusb,此后端允許通過USB鏈接遠(yuǎn)程控制驅(qū)動程序。

●   串行:為通過串行連接的電路板提供更通用的接口。UART是最常見的用例。

●   網(wǎng)絡(luò):最常用的遠(yuǎn)程后端,基于IP來訪問網(wǎng)絡(luò)中的驅(qū)動程序。


3.jpg

圖3. 使用網(wǎng)絡(luò)后端的libIIO系統(tǒng)概述


圖3從系統(tǒng)層面概述如何使用libIIO組件,以及如何將它們集成到整個系統(tǒng)中。圖中左側(cè)是嵌入式系統(tǒng),它已安裝libIIO庫,運(yùn)行iiod daemon。在嵌入式系統(tǒng)中,用戶可以訪問本地后端,甚至網(wǎng)絡(luò)后端。他們可以通過更改一行代碼來確認(rèn)任一后端的地址,在兩個后端之間切換。無需對目標(biāo)代碼進(jìn)行其他更改。


4.jpg

圖4. libIIO遠(yuǎn)程與本地示例


圖3左側(cè)顯示的是遠(yuǎn)程主機(jī),可以運(yùn)行任何操作系統(tǒng)。提供Windows、macOS、Linux和BSD等官方軟件包。該圖顯示使用了基于網(wǎng)絡(luò)或IP的后端,也可能是使用串行、USB或PCIe連接。從用戶的角度來看,可以從C語言庫本身,或者從其他語言的許多可用綁定來使用libIIO,包括:Python、C#、Rust、MATLAB和Node.js。為需要與應(yīng)用中的不同驅(qū)動程序交互的用戶提供多種選擇。


應(yīng)用和工具


當(dāng)開始使用一個新設(shè)備時,通常不建議直接使用libIIO。所以,有很多基于libIIO構(gòu)建的更高等級的應(yīng)用,它們通過命令行和GUI格式為IIO設(shè)備提供基本的配置能力。它們分別是IIO工具和IIO示波器。


IIO工具是一組與libIIO一起發(fā)布的命令行工具,對于通過腳本執(zhí)行的低等級調(diào)試和自動化任務(wù)來說非常有用。例如,在執(zhí)行實(shí)驗(yàn)室測試時,它可以在不同的采樣率模式下設(shè)置平臺,以及收集一些數(shù)據(jù)。利用幾行bash,或通過使用IIO工具的批處理腳本可輕松完成這些操作。圖5顯示了一個簡單示例,可以在本地或遠(yuǎn)程運(yùn)行,以更改采樣速率和ADC的地輸入模式。這個示例使用名為iio_attr的IIO工具,讓用戶能夠輕松更新設(shè)備的配置。


1649418951123049.jpg

圖5.IIO工具的iio_attr部分的使用示例


但是,對用戶來說,最常見的切入點(diǎn)是GUI應(yīng)用IIO示波器,一般被稱為OSC。與IIO工具一樣,OSC是通用的,可以管理任意IIO驅(qū)動程序,而且,因?yàn)樗腔趌ibIIO構(gòu)建,所以它可以遠(yuǎn)程運(yùn)行或在電路板上運(yùn)行。但是,它也包含一個插件系統(tǒng),可以為特定的驅(qū)動程序或驅(qū)動程序組合添加專用選項(xiàng)卡。圖6顯示自動加載到基于CN0540的電路板上的插件選項(xiàng)卡,包括控制和監(jiān)控選項(xiàng)卡。這些選項(xiàng)卡提供了一個簡單的界面,可以訪問CN0540的ADC、DAC和控制引腳的低級功能,以及數(shù)據(jù)采集板和測試點(diǎn)監(jiān)控的基本示意圖。如需了解其他可用的默認(rèn)選項(xiàng)卡和插件信息,可以訪問ADI公司W(wǎng)iki查看更多OSC文檔。


OSC的最后一個重要方面是捕獲窗口。捕獲窗口可以根據(jù)從ADC或基于libIIO的緩沖區(qū)收集的數(shù)據(jù)進(jìn)行繪圖。圖7顯示在頻域模式下使用的捕獲窗口,這是基于頻譜數(shù)據(jù)信息繪制。也可以繪制其他圖,包括時域圖、相關(guān)圖和星座圖。這對于抽檢設(shè)備、調(diào)試或評估非常有用。這些圖提供常用工具,例如標(biāo)記、峰值檢測、諧波檢測,甚至相位估計。由于OSC也是開源的,任何人都可以添加更多插件或繪圖,甚至更改現(xiàn)有功能,對其進(jìn)行擴(kuò)展。


6.jpg

圖6.CN0540 IIO示波器插件選項(xiàng)卡


1649418927374724.jpg

圖7.頻域模式下的IIO示波器捕獲窗口


算法開發(fā)環(huán)境集成


至此,我們已經(jīng)介紹了大部分工程師在首次使用CN0549時會采用的低等級重要工具。首先理解這些是很重要的,這樣開發(fā)人員才能理解系統(tǒng)的靈活性以及他們可以使用的不同選擇或接口。但是,在設(shè)置和運(yùn)行基線系統(tǒng)后,開發(fā)人員希望使用MATLAB或Python等工具將數(shù)據(jù)快速遷移至算法開發(fā)。這些程序可以從硬件導(dǎo)入數(shù)據(jù)。必要時可以設(shè)計附加控制邏輯。


在機(jī)器學(xué)習(xí)開發(fā)周期中,開發(fā)人員通常會遵循通用的流程,該流程與他們想要用于處理數(shù)據(jù)的軟件環(huán)境無關(guān)。圖8簡要顯示了該流程的一個示例,其中涉及數(shù)據(jù)收集、分割數(shù)據(jù)用于測試和訓(xùn)練、開發(fā)模型和算法,最后部署模型進(jìn)行現(xiàn)場推理。在實(shí)際服務(wù)中,會持續(xù)執(zhí)行這整個流程,將新學(xué)習(xí)內(nèi)容集成到生產(chǎn)模型中。TensorFlow、PyTorch,或MATLAB Machine Learning Toolbox等工具都可以采用此流程。這個流程有其作用,但是,通常會忽視或完全忽略收集和整理數(shù)據(jù),以及管理數(shù)據(jù)這種復(fù)雜任務(wù)。為了簡化這項(xiàng)任務(wù),我們使用這些相關(guān)工具和軟件包設(shè)計出相關(guān)的軟件生態(tài)系統(tǒng)。


Python集成——連接到Python分析工具


首先,從Python開始,可以通過模塊PyADI-IIO獲得CN0549的設(shè)備特定類別。圖6顯示了一個通過以太網(wǎng)配置設(shè)備的采樣速率和提取緩沖區(qū)的簡單示例。這里沒有復(fù)雜的寄存器序列、模糊的存儲器控制調(diào)用,或要記憶的隨機(jī)位。而是由板上運(yùn)行的驅(qū)動程序、libIIO和PyADI-IIO在工作站,甚至在云中進(jìn)行遠(yuǎn)程管理。


PyADI-IIO可以通過pip和conda進(jìn)行安裝,將控制按鈕表現(xiàn)為易于使用和歸檔記錄的屬性。它還按易于理解的形式(例如NumPy陣列或原生形式)提供數(shù)據(jù),在必要時,還會處理設(shè)備的數(shù)據(jù)流轉(zhuǎn)換。這使PyADI-IIO易于添加到Jupyter Notebook之類的環(huán)境中,無需通過不同的工具或復(fù)雜的數(shù)據(jù)轉(zhuǎn)換即可輕松將數(shù)據(jù)傳輸?shù)綑C(jī)器學(xué)習(xí)管道中,讓開發(fā)人員可以集中精力開發(fā)算法,而不是處理某些困難的API或數(shù)據(jù)轉(zhuǎn)換。


8.jpg

圖8.機(jī)器學(xué)習(xí)模型開發(fā)流程


1649418904864973.jpg

圖9.PyADI-IIO示例


MATLAB集成——連接到MATLAB


在MATLAB方面,通過Analog Devices Sensor Toolbox提供對CN0549及其組件的支持。這個工具箱與PyADI-IIO類似,提供針對不同組件的特性類別,將它們實(shí)施為MATLAB系統(tǒng)對象(MSO)。MSO是MathWorks開發(fā)人員可以用來連接硬件和不同軟件組件的一種標(biāo)準(zhǔn)化方式,提供先進(jìn)功能,幫助執(zhí)行代碼生成、Simulink支持和一般狀態(tài)管理。許多MATLAB用戶能夠在不了解的情況下,使用實(shí)施為MSO的MATLAB的各種功能,例如示波器或信號生成器。在圖10中,我們使用CN0532接口和DSP頻譜分析儀示波器,兩者都實(shí)施為MSO。同樣,和PyADI-IIO一樣,提供一個易于使用的接口供傳統(tǒng)的MATLAB用戶使用。


除了硬件連接之外,Sensor Toolbox還集成適用于HDL和C/C++的代碼生成工具。這些工具適用于開發(fā)、模擬和部署IP,甚至不熟悉HDL設(shè)計或工具,但了解MATLAB和Simulink的人員也可以使用。


10.jpg

圖10.使用示波器的Sensor Toolbox流傳輸示例


使用TensorFlow的分類示例


CN0549套件提供幾個示例,從基本數(shù)據(jù)流傳輸?shù)綑C(jī)器學(xué)習(xí)分類示例。關(guān)于時間序列數(shù)據(jù)的機(jī)器學(xué)習(xí),例如來自CN0532的振動數(shù)據(jù),可以從幾個不同角度進(jìn)行理解。這可能包括支持向量機(jī)(SVM)、長短時記憶網(wǎng)絡(luò)(LSTM)模型,如果將數(shù)據(jù)直接解譯為時間序列的話,甚至包括自動編碼器。但是,在許多情況下,將時間序列問題轉(zhuǎn)換為成像處理問題,并利用在該應(yīng)用領(lǐng)域開發(fā)的工具和豐富知識可能更為方便。


我們在Python中看看這種方法。在隨PyADI-IIO提供的一個示例中,將CN0532安裝到振蕩風(fēng)扇上,然后進(jìn)行了一些測量。這些測量在不同的風(fēng)扇設(shè)置(Sleep、General、Allergen)下進(jìn)行,在每種模式下都會捕捉409,600個樣本。在圖11中查看這個數(shù)據(jù)時,可以輕松確定Allergen用例的時域,但其他兩個用例則比較難以區(qū)分。雖然可以通過檢測來確認(rèn)這些用例,但在時域中使用算法來確認(rèn)這些用例會很容易出錯。


為了幫助更好地區(qū)分這些用例,會將數(shù)據(jù)轉(zhuǎn)化為頻域,并使用頻譜圖來描繪不同頻率隨時間變化的濃度。與圖11相比,圖12所示的頻譜圖在數(shù)據(jù)上有更明顯的差異,但在時間維度上是一致的。這些頻譜圖是有效的圖像,現(xiàn)在可以使用傳統(tǒng)的圖像分類技術(shù)進(jìn)行處理。


將數(shù)據(jù)集拆分為訓(xùn)練集和測試集,將頻譜圖分別輸入僅由神經(jīng)網(wǎng)絡(luò)(NN)構(gòu)成的模型(包含三個致密層)和更小一些的卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型。這兩種方法都是在TensorFlow中實(shí)現(xiàn)的,可以在不到100次的周期內(nèi)輕松收斂到接近100%測試驗(yàn)證。CNN使用大約1%的可調(diào)參數(shù)在大約一半的時間內(nèi)收斂,是目前最高效的設(shè)計。圖13提供關(guān)于精度和周期的培訓(xùn)收斂圖,以概述CNN的快速收斂。


11.jpg

圖11.時間序列中的風(fēng)扇振蕩數(shù)據(jù)


12.jpg

圖12.捕捉的振動數(shù)據(jù)的頻譜圖


13.jpg

圖13.隨時間變化的CNN訓(xùn)練精度(用于繪制振動頻譜圖)


在GitHub的PyADI-IIO源代碼樹下提供了此示例的所有Python腳本、手冊和數(shù)據(jù)集。由于提供了數(shù)據(jù)集,甚至可以在不使用CN0549硬件的情況下使用TensorFlow來展示示例。但是,使用硬件時,可以將訓(xùn)練模型用于實(shí)時推理。


邊緣到云:轉(zhuǎn)向嵌入式解決方案


創(chuàng)建模型后,可將其部署用于推理或決策。采用CN0549時,它可以安裝在遠(yuǎn)程PC上,從CN0540傳輸數(shù)據(jù)流,或是直接在嵌入式處理器上運(yùn)行。根據(jù)實(shí)施方案,將模型放到處理器中需要更多的工程工作,但可以將功效提高一個數(shù)量級,且能夠?qū)崟r運(yùn)行。幸運(yùn)的是,在過去幾年里,用于部署機(jī)器學(xué)習(xí)模型的工具和軟件都取得了很大的發(fā)展。


使用FPGA


賽靈思公司和英特爾都提供高階合成(HLS)工具,將高階語言轉(zhuǎn)化成在FPGA上運(yùn)行的HDL代碼。它們通常會與TensorFlow、PyTorch或Caffe等Python框架集成,以幫助將模型轉(zhuǎn)換為IP內(nèi)核,從而允許工程師將IP部署到DE10-Nano、Cora Z7-07S或自定義系統(tǒng)上。然后,可以將這些IP內(nèi)核集成到ADI提供的開源HDL參考設(shè)計中。圖14顯示Vivado提供的Cora Z7-07S CN0540的屏幕截圖,其中包含注釋,其中側(cè)重顯示數(shù)據(jù)路徑。在該設(shè)計中,來自CN0540的數(shù)據(jù)通過SPI引腳讀取,24位樣本由SPI引擎解譯,傳輸?shù)紻MA控制器,再進(jìn)入存儲器。任何DSP或機(jī)器學(xué)習(xí)模型都可以直接插入數(shù)據(jù)路徑中這個管道。


14.jpg

圖14.Vivado(2019年1月)顯示的Cora Z7-07S HDL參考設(shè)計數(shù)據(jù)路徑


使用微處理器


它們無需將算法轉(zhuǎn)化為HDL層,而是可以直接在Arm內(nèi)核中運(yùn)行。根據(jù)數(shù)據(jù)速率和算法的復(fù)雜性,這個開發(fā)流程很合理,也更加簡單。相比HDL,為Arm內(nèi)核開發(fā)C代碼甚至Python所耗費(fèi)的開發(fā)資源和時間都更少,通常也更易于維護(hù)。


MATLAB Embedded Coder這樣的工具甚至可以簡化此流程,自動將MATLAB轉(zhuǎn)化為可嵌入且優(yōu)化的C代碼,供Arm內(nèi)核使用?;蛘撸琓ensorFlow提供TensorFlow Lite等工具,它們是Python代碼庫的可嵌入的C版本,能夠更輕松地轉(zhuǎn)換為嵌入式目標(biāo)。


智能決策拓?fù)?/p>


狀態(tài)監(jiān)控并非適用于所有硬件和軟件配置,所以CN0549采用了靈活的設(shè)計。我們在考慮CbM異常檢測之類的問題時,通??梢詮膬蓚€時間量程角度來解決:在一個時間量程,我們需要立即做出反應(yīng),例如在安全相關(guān)的場景中,在長期時間量程,更多的是關(guān)于維護(hù)或設(shè)備更換。兩者需要使用不同的算法、處理能力和方法。


在理想情況下,機(jī)器操作員將會擁有很大的數(shù)據(jù)湖來訓(xùn)練模型,可以無需干擾事件來處理短期檢測,也可以持續(xù)從運(yùn)行設(shè)備傳輸數(shù)據(jù)流,以便進(jìn)行未來的維護(hù)預(yù)測。但是,對大多數(shù)操作員來說,情況并非如此,數(shù)據(jù)湖嚴(yán)重干涸。由于安全考量、地理位置、網(wǎng)絡(luò)或拓?fù)涞纫?,有些現(xiàn)成的解決方案也很難執(zhí)行數(shù)據(jù)收集。面對這些困難,我們需要自定義程度更高的解決方案。


15.jpg

圖15.CbM網(wǎng)絡(luò)拓?fù)?/p>


CN0549是一個獨(dú)立系統(tǒng),提供多種連接選項(xiàng)。它運(yùn)行標(biāo)準(zhǔn)的Linux,所以傳統(tǒng)的網(wǎng)絡(luò)堆棧(例如以太網(wǎng)和Wi-Fi)可以開箱即用,甚至能在必要時連接蜂窩調(diào)制解調(diào)器。在實(shí)際應(yīng)用中,可以使用幾種出色的典型拓?fù)?,如圖15所示。


圖15最左側(cè)的配置是脫機(jī)收集數(shù)據(jù)示例,一般發(fā)生在偏遠(yuǎn)位置或無法聯(lián)網(wǎng)的地方。在這種情況下,平臺會配備大型存儲媒介,并按照計劃來收集數(shù)據(jù)。或者,其他兩個選項(xiàng)是將數(shù)據(jù)流傳輸至同一個端點(diǎn)。圖15中間的配置是隔離網(wǎng)絡(luò),可能僅供組織內(nèi)部使用,或者是偏遠(yuǎn)位置的一組用于集中收集數(shù)據(jù)的平臺。出于安全考慮,或者在無法聯(lián)網(wǎng)時,可能需要這種配置。在這些配置下,CN0549易于設(shè)置,且能夠根據(jù)終端部署的特定需求來自定義。


最后一個配置是直接云選項(xiàng),每個平臺直接訪問互聯(lián)網(wǎng),并將測量數(shù)據(jù)推送至云。CN0549在Linux上運(yùn)行,所以該平臺可以通過Python等語言輕松使用不同的云供應(yīng)商(例如Microsoft Azure IoT或Amazon IoT Greengrass)的API,提供一種為新連接的設(shè)備構(gòu)建數(shù)據(jù)湖的簡單方式。


云和本地流程之間保持穩(wěn)定連接時,如我們之前所探討的那樣,可以對不同算法進(jìn)行劃分,哪些是需要或可以在本地運(yùn)行的,哪些是可以在云中運(yùn)行的。然后自然地針對算法復(fù)雜性處理能力、事件延遲和云傳輸帶寬限制等的要求進(jìn)行權(quán)衡和取舍。但是,由于非常靈活,因此這些因素很容易考慮決斷。


結(jié)論


CN0549 CbM平臺為設(shè)計人員開發(fā)應(yīng)用提供了系統(tǒng)靈活性和大量軟件資源。本文深入探討軟件堆棧,并圍繞如何使用不同組件來實(shí)施CbM和預(yù)測性維護(hù)(PdM)開發(fā)展開討論。由于軟件、HDL、原理圖以及與數(shù)據(jù)科學(xué)工具集成的開放性,設(shè)計人員可以在整個堆棧中充分利用其終端系統(tǒng)所需的組件。總之,這種狀態(tài)監(jiān)控設(shè)計提供了一款易于使用的開箱即用解決方案,包括開源軟件和硬件,以提供靈活性,讓設(shè)計人員能夠在更短時間內(nèi)實(shí)現(xiàn)更好的自定義設(shè)計。



免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理。


推薦閱讀:


衛(wèi)星運(yùn)行狀況:航天級IC如何改進(jìn)遙測電路設(shè)計

用于狀態(tài)監(jiān)控的高保真振動采集平臺

氮化鎵和碳化硅的區(qū)別在哪里?這篇指南送給你

以更低電壓驅(qū)動更重負(fù)載,這項(xiàng)技術(shù)是?

EPS助力轉(zhuǎn)向系統(tǒng)高級功能及EMC

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
共模電感 固態(tài)盤 固體繼電器 光傳感器 光電池 光電傳感器 光電二極管 光電開關(guān) 光電模塊 光電耦合器 光電器件 光電顯示 光繼電器 光控可控硅 光敏電阻 光敏器件 光敏三極管 光收發(fā)器 光通訊器件 光纖連接器 軌道交通 國防航空 過流保護(hù)器 過熱保護(hù) 過壓保護(hù) 焊接設(shè)備 焊錫焊膏 恒溫振蕩器 恒壓變壓器 恒壓穩(wěn)壓器
?

關(guān)閉

?

關(guān)閉