CN0549 基于條件的簡介 監控平臺
在本文中,我們將重點介紹軟件生態系統、數據分析工具和 軟件集成可用于CN0549的不同組件和 工程師和數據科學家如何利用它們進行應用程序開發。這是關于基于條件的兩部分系列文章中的第二篇 使用 CN0549開發平臺。新平臺旨在加速 定制CbM解決方案的開發流程,從原型到生產。第 1 部分重點介紹 MEMS 振動技術和捕獲高質量振動數據 用于 CbM 應用。
生產之旅和操作方法 它更快!
構建狀態監測解決方案時,它們必須包含本地傳感器 處理、連接以及某種形式的軟件或固件來實現這一切 功能。CN0549通過提供可定制的產品來解決所有這些挑戰 硬件和軟件方面的選項,因此工程師和軟件 開發人員可以在使用通用應用程序的同時在其應用程序中進行設計權衡 工具和基礎設施。例如,如果您想選擇特定的微控制器或FPGA進行處理,則更喜歡使用Python編碼,或者具有 您想要重復使用的常用傳感器。這使得CN0549成為一個功能強大的平臺 對于那些希望構建優化的CbM解決方案的人,其中處理,電源, 性能、軟件和數據分析可以根據他們的需求進行定制。
嵌入式系統開發流程
讓我們考慮一個嵌入式系統從概念到生產的通用開發流程。圖 1 提供了抽象流的頂級概述。
圖1.嵌入式系統開發流程。
圖 1 所示設計過程的第一步是數據研究 階段。在此階段,用戶將其需求映射到不同的硬件 以及其應用程序所需的軟件要求。從硬件的角度來看,這些可能是沖擊容限、模擬信號帶寬、 或測量范圍。在考慮軟件要求時, 采樣數、采樣率、頻譜、過采樣和數字 過濾是 CbM 應用的重要參數。該平臺非常 有用且靈活,允許研究人員使用不同的傳感器組合 并根據自己的應用需求調整數據采集參數。
數據研究階段之后是算法開發階段,其中 該系統的應用或使用已得到證明。這通常需要開發 在高級工具中建模或設計算法,最終將移植到 嵌入式系統。但是,在優化設計之前,必須對其進行驗證 使用真實數據和硬件在循環中,這確實是CN0549 之所以出色,是因為它不僅提供了與流行的高級的直接集成 分析工具,但它也允許硬件在環驗證。
一旦設計得到證明,優化和獲得必要的工作 開始嵌入軟件組件。在嵌入式設計闡述中 階段,這可能需要重新實現某些算法或軟件層才能在FPGA或資源受限的微控制器中工作。非常小心 在將設計移植到原型上時,必須對其進行持續驗證,或者 接近生產硬件進行最終驗證。
最后,我們進入生產階段,這可能與 設計開始使用的原始開發環境,但盡管如此 仍然需要滿足相同的要求。由于最終系統可能有 遠離原始研究系統遷移,運行相同的代碼或 測試可能是不可能的或極其困難的。這可能會導致生產 測試問題和單元故障,可能需要額外的時間和金錢 投資補救。
通過最大化重用來降低風險
在設計過程中降低風險的最簡單方法之一是重用 每個階段都有盡可能多的硬件和軟件組件, CN0549提供了許多開箱即用的資源供開發人員利用 直接在開發流程的所有階段。CN0549解決方案提供 原理圖和電路板布局文件,一個開放的軟件堆棧,用于優化 和功能齊全的環境,以及更高級別工具的集成選項 比如MATLAB和Python。最終用戶可以利用來自 ADI并選擇他們想要維護或更改的部分 從研究到生產。這也使最終用戶能夠專注于算法開發和系統集成,而不是使用ADI器件或接地進行原理圖輸入。 向上軟件開發。利用硬件模塊和重用軟件 ADI的設備驅動程序、HDL或應用固件等層可降低 構建系統所需的開發時間,可以大大加快時間 到市場。?
軟件開發流程和流程
CN0549在開發過程中為工程師提供了無數選擇,允許 他們使用通用語言工作,包括 C 或 C++,同時使用數據分析 他們有經驗的工具,如MATLAB或Python。這主要是 通過利用和構建開放標準以及現有的 支持來自不同制造商的多個嵌入式平臺的解決方案。
CN0549 系統堆棧
圖 2 所示的系統堆棧提供了不同 組成CN0549系統的組件。在頂部的深藍色框中 左邊是傳感器和數據采集(DAQ)板,而淺藍色和 紫色框概述了用于數據處理的FPGA分區。該平臺直接支持英特爾DE10-Nano和Xilinx CoraZ7-07s,涵蓋 兩家主要的 FPGA 供應商。綠色框表示連接回 主機電腦。這提供了從硬件到高級的直接數據訪問 用于算法開發的數據分析工具。?
圖2.CN0549平臺的系統堆棧。
所有硬件描述語言(HDL)代碼都是開源的,允許 開發人員進行修改以將數字信號處理 (DSP) 插入 可編程邏輯(PL)內的數據流,如圖2所示。這 可以是任何東西,從過濾器到狀態機,甚至是機器學習,以及 根據您的系統分區,此步驟也可以在用戶中完成 空間或應用層。由于代碼是公開可用的,因此可能是 移植到來自不同制造商或不同處理器的其他 FPGA 系列取決于您的最終應用需求。
在 Arm 處理器內部有兩個軟件選項。它們的使用將是 取決于用例,大多數開發人員都可能使用這兩種情況:?
Linux:為輸入中內置的DAQ擴展板提供內核內驅動程序 內核內的輸出工業 (IIO) 框架。這與完整的 嵌入式Linux發行版稱為Kuiper Linux,運行在Arm核心中 用戶空間,基于樹莓派操作系統。?
X No-OS:裸機項目提供的驅動程序與 Linux內核,將與Xilinx或Intel的SDK一起使用。這也可以 在實時操作系統 (RTOS) 環境中實現為 另一種實現。
建議開發人員從Linux開始學習并開始開發 使用他們的系統,因為它提供了最多的工具。Linux也 提供了大量的軟件包和驅動程序,從而營造出理想的開發環境。一旦系統設計穩定并準備就緒 優化,通常切換到No-OS并且僅提供以下軟件 必要。但是,這高度依賴于應用程序,許多將滿載 Linux 系統,因為它們提供了靈活性。
就像用于可編程邏輯的HDL一樣,整個內核源代碼Kuiper Linux 圖像和No-OS項目是完全開源的,允許最終用戶 根據需要修改任何組件。這些代碼庫也可以移植到 如果需要,不同的處理器系統或不同的運行時環境。
圖 2 的最后一個組件是與主機 PC 的連接,如 綠色框。運行系統時,可以配置設備,數據 流式傳輸到主機系統進行分析,開發人員將利用 MATLAB 或 TensorFlow 等標準工具在其主機上創建算法。 然后將這些算法最終轉移到嵌入式目標上,允許它們使用 它們的本地處理能力可實現更快的算法開發迭代。
訪問 CbM 數據 — 入門
使用 Arm 處理器和 PL 通常發生在更進一步的階段 針對部署優化系統時的設計流程。因此 開發人員的常見入口點最初將涉及遠程連接到 工作站中的嵌入式系統。在嵌入式系統上運行Linux時,在工作站上遠程或本地運行代碼是相對的 由于基礎設施的設計方式,流程透明。這主要是 由于一個名為libIIO的開放庫。libIIO 是一個接口庫,允許 用于對構建的不同設備驅動程序的簡化且一致的訪問模型 在內核中的 Linux IIO 框架內。這個庫是核心 使CbM平臺的使用如此靈活,并提供數據功能 流式傳輸和設備控制。
libIIO本身分為兩個主要部分:
libIIO 庫,它是用于訪問不同 IIO 驅動程序屬性或函數的 C 庫。這包括與ADC等設備之間的流數據, DAC和傳感器。
稱為 iiod 的 IIO 守護進程,負責管理之間的訪問 libIIO 庫,或使用該庫和內核接口的客戶端 實際驅動程序。
libIIO 和 iiod 本身是由不同的組件編寫的,允許 訪問所謂的后端驅動程序的不同方法。后端 允許來自本地和遠程用戶的libIIO控制和數據流,并且由于它們是 組件化的新后端可以添加到系統中。目前有 libIIO 支持的四個后端:
本地:允許訪問本地可訪問的硬件驅動程序 到同一臺機器上。
USB:利用libusb,該后端允許遠程控制驅動程序 通過 USB 鏈接。
串行:為通過串行連接的電路板提供更通用的接口 連接。UART是最常見的用途。
網絡:最常用的遠程后端,基于 IP 進行訪問 跨網絡的驅動程序。
圖 3 提供了 libIIO 組件的系統級概述 被使用以及它們如何適應整個系統。在圖表的左側是 嵌入式系統,安裝了 libIIO 庫并運行 IIOD 守護進程。 從嵌入式系統,用戶可以訪問本地后端,甚至 網絡后端。在他們的代碼中,他們可以通過 單行更改以解決任一后端。目標無其他更改 代碼是必需的。
圖3.libIIO系統概述使用網絡后端。
圖 3 的左側表示可能正在運行的遠程主機 任何操作系統。有適用于Windows,macOS,Linux的官方軟件包, 和 BSD。在圖中使用了網絡或基于 IP 的后端,但這 也可以是串行、USB 或 PCIe 連接。從用戶的角度來看,libIIO 可以從 C 庫本身或許多可用的綁定中利用 其他語言包括:Python,C#,Rust,MATLAB和Node.js。提供 對于需要與不同接口的用戶來說,這是一個重要的選擇 來自其應用程序的驅動程序。
圖4.libIIO 遠程與本地示例。
應用程序和工具
開始使用新設備時,通常不建議直接使用 libIIO。因此,存在許多構建在 libIIO,通過命令為任何IIO設備提供基本可配置性 行和 GUI 格式。這些分別是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文檔。
圖6.CN0540 IIO 示波器插件選項卡。
OSC 的最后一個重要方面是捕獲窗口。捕獲窗口 為從ADC或任何基于libIIO的緩沖器收集的數據提供繪圖功能。圖7顯示了在頻域模式下使用的捕獲窗口, 其中繪制了數據的光譜信息。其他情節,包括時間 域圖、相關性圖和星座圖可用。這對于 抽查設備、調試或在評估過程中。劇情 包括標記、峰值檢測、諧波檢測甚至相位估計等常見實用程序。由于 OSC 也是開源的,因此可以通過 任何人都可以添加更多插件或繪圖,甚至修改現有功能。
圖7.頻域模式下的IIO示波器捕獲窗口。
算法開發環境集成
到目前為止,我們已經介紹了大多數工程師在以下情況下開始的核心低級工具 首先使用CN0549。首先了解這些很重要,以便開發人員可以了解系統的靈活性和不同的選擇或 他們可以使用的接口。但是,在建立基線系統并 運行時,開發人員將希望使用 MATLAB 或 Python 等工具將數據快速移動到算法開發中。這些程序可以導入 來自硬件的數據。必要時可以設計額外的控制邏輯。
在機器學習開發周期的上下文中,通常有一個 開發人員將遵循的通用流程,獨立于他們所需的軟件 用于處理數據的環境。中概述了此過程的示例 圖 8,其中收集數據,分為測試和訓練,開發模型或算法,最后部署模型以在現場進行推理。 對于實際服務,此整個過程會不斷執行以引入新的 學習生產模型。TensorFlow、PyTorch或MATLAB等工具。 機器學習工具箱在工作時考慮了此過程。這個過程使 感覺,但通常是收集、組織和復雜任務的努力 可以忽略或完全忽略數據的管理。為了簡化 這項任務,一個相關的軟件生態系統就是用這些工具設計的,并且 牢記包。
圖8.機器學習模型開發流程。
Python 集成 — 連接到 Python 分析工具
首先,從 Python 開始,可以使用 CN0549 的設備特定類 通過模塊PyADI-IIO。配置設備的簡單示例 采樣速率和以太網拉取緩沖器如圖6所示。有 沒有復雜的寄存器序列、模糊的存儲器控制調用或隨機位 記住。這是由驅動程序,libIIO和PyADI-IIO為您管理的。 電路板本身,遠程在工作站上,甚至在云中。
圖9.PyADI-IIO示例。
PyADI-IIO可通過pip和conda安裝,將控制旋鈕公開為: 易于使用和記錄的屬性。它還提供通常可消化的類型(如 NumPy 數組或本機類型)的數據,并將處理 數據流(如果可用)。這使得PyADI-IIO易于添加到諸如 Jupyter Notebook,并輕松地將數據輸入機器學習管道,而無需 不得不求助于不同的工具或復雜的數據轉換 - 允許開發人員 專注于他們的算法,而不是一些困難的 API 或數據對話。
MATLAB 集成 — 連接到 MATLAB
在MATLAB方面,提供了對CN0549及其組件的支持 通過ADI公司傳感器工具箱。這個工具箱,就像PyADI-IIO一樣,有 針對不同部件的設備特定類,并將它們實現為 MATLAB 系統 對象 (MSO)。MSO是MathWorks作者可以交互的標準化方式 到硬件和不同的軟件組件,并提供高級功能 協助代碼生成、Simulink 支持和常規狀態管理。許多 MATLAB 用戶可能會利用 MATLAB 的功能,這些功能被實現為 不知情的 MSO,例如示波器或信號發生器。在圖 10 中,我們 使用CN0532接口和DSP頻譜分析儀示波器,兩者都有 作為 MSO 實施。同樣,與PyADI-IIO一樣,有一個友好的界面用于 傳統的 MATLAB 用戶。
圖 10.帶示波器的傳感器工具箱流式處理示例。
除了硬件連接之外,傳感器工具箱還與 用于 HDL 和 C/C++的代碼生成工具。這些是開發的絕佳工具, 模擬和部署 IP,即使對于那些不熟悉 HDL 設計的人也是如此 或工具,但了解 MATLAB 和 Simulink。
使用TensorFlow的分類示例
CN0549套件提供了幾個來自基本數據流的示例 到機器學習分類示例。時序機器學習 數據,如來自CN0532的振動數據,可以從幾個不同的數據中獲取 觀點。這可能包括支持向量機 (SVM)、長期短期 存儲器 (LSTM) 模型,甚至是自動編碼器(如果數據直接解釋) 作為時間序列。但是,在許多情況下,轉換 時間序列問題轉化為圖像處理問題并利用豐富的 在該應用領域開發的知識和工具。
讓我們看看 Python 中的這種方法。在提供的示例之一中 PyADI-IIO,通過將CN0532安裝到一個 擺動風扇。這是在風扇的不同設置下完成的(睡眠、常規、 過敏原),在每種模式下,捕獲了 409,600 個樣本。檢查時 圖11中的這些數據,過敏原病例的時域很容易識別 但另外兩種情況更難區分。這些可能可以通過檢查識別,但讓算法識別這些情況可能是錯誤的 在時域中容易。
圖 11.時間序列中的風扇振動數據。
為了幫助更好地區分用例,數據被轉換為 頻域圖和頻譜圖用于繪制不同頻率隨時間變化的濃度。圖 12 所示的頻譜圖有很多 數據差異更明顯,并且在整個時間維度上保持一致 與圖 11 相比。這些頻譜圖實際上是圖像,現在 可以使用傳統的圖像分類技術進行處理。
圖 12.捕獲的振動數據的頻譜圖。
將數據集拆分為訓練集和測試集,頻譜圖為 饋送到具有三個密集層的僅中性網絡 (NN) 模型和 較小的卷積神經網絡 (CNN) 模型。兩者都是在 TensorFlow,能夠在100%的測試驗證中輕松收斂到接近100% 時代。CNN在大約一半的時間內收斂,大約1%的可調諧 參數,使其成為迄今為止更高效的設計。培訓趨同 圖 13 提供了精度與紀元的關系圖,以概述 CNN 的快速收斂。
圖 13.CNN 隨時間推移的振動頻譜圖訓練精度。
所有 Python 腳本、筆記本和數據集都可用于此示例 在 GitHub 上的 PyADI-IIO 源代碼樹下。由于提供了數據集,因此 甚至可以在沒有CN0549的情況下使用TensorFlow的示例演示 硬件。但是,使用硬件,訓練好的模型可用于 實時推理。
邊緣到云:遷移到嵌入式解決方案
創建模型后,可以部署該模型以用于推理目的或決策 制作。使用CN0549,可以將其放置在數據所在的遠程PC上 從CN0540流式傳輸或直接在嵌入式處理器上運行。取決于 在實現中,將模型放置在處理器中將需要更多 工程工作,但能效可以提高一個數量級,并且將 能夠實時操作。幸運的是,在過去的幾年里,有 用于部署的工具和軟件的巨大發展增長 機器學習模型。
利用 FPGA
Xilinx 和英特爾都擁有高級綜合 (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.Cora Z7-07S HDL 參考設計數據路徑顯示在 Vivado 2019.1 中。
利用微處理器
而不是將算法轉換為HDL層,它們可以是 直接在 Arm 核心中運行。取決于數據速率和復雜性 算法,這是一個合理的開發路徑,通常更多 簡單。為 Arm 核心開發 C 代碼甚至 Python 將比HDL花費更少的開發資源和時間,并且 通常更容易維護。
像 MATLAB Embedded Coder 這樣的工具甚至可以簡化這個過程,并自動將 MATLAB 轉換為 Arm 內核的可嵌入和優化的 C 代碼。 或者,TensorFlow具有可嵌入的TensorFlow Lite等工具。 他們的 Python 庫的 C 版本,允許向 嵌入式目標。
智能決策拓撲
基于狀態的監控不是一刀切的硬件和 軟件,這就是CN0549設計靈活的原因。當我們 考慮諸如CbM的異常檢測等問題,通常可以解決 從兩個時間尺度:一個我們需要立即做出反應,例如在 與安全相關的場景,或長期時間尺度上與維護或設備更換更相關的場景。兩者都需要不同的算法,處理 權力和方法。
在理想情況下,作為機器操作員,我們將擁有一個大型數據湖 訓練我們的模型,并且兩者都處理短期檢測而不會造成麻煩 事件,以及從正在運行的設備連續傳輸數據以備將來使用 維護預測。但是,對于大多數運營商來說,情況可能并非如此。 數據湖更像是干涸的河床。對某些人來說也可能很困難 考慮到安全問題,執行數據收集的現成解決方案, 物理位置、網絡或拓撲要求。這些困難 推動對更多定制解決方案的需求。
CN0549是一個具有多種連接選項的獨立系統。因為它運行 標準 Linux、以太網和 Wi-Fi 等傳統網絡堆棧無法正常工作 盒子,如果需要,甚至可以連接蜂窩調制解調器。在實踐中 在應用中,有一些典型的拓撲結構非常突出,如圖 15 所示。
圖 15.CbM 網絡拓撲。
圖 15 所示的最左側配置是脫機收集案例, 這可能發生在遠程站點或連接到互聯網的地方 不可能。在這種情況下,大型存儲介質將與平臺共存 并按計劃手動收集。或者,其他兩個選項 將數據流式傳輸到公共終結點。圖 15 的中間配置為 一個隔離的網絡,可能只是組織內部的網絡,或者只是一個 遠程位置中集中收集數據的平臺集群。這可能會 出于安全考慮或只是缺乏連接而必需。的設置 CN0549對于任何這些配置都很容易,并且可以針對 終端部署的特定需求。
最終配置是直接云選項,其中每個平臺都直接 訪問互聯網并將測量推送到云端。由于 CN0549 運行 在Linux上,該平臺可以利用不同云供應商(如Microsoft)的API。 Azure IoT 或 Amazon IoT Greengrass 從 Python 等語言輕松創建 開始為新連接的設備構建數據湖的簡單途徑。
當云和本地進程之間存在一致的連接時, 正如我們在需要或可以之間討論的那樣,可以拆分不同的算法 在本地運行以及可以在云中運行的內容。這將有自然的權衡 在對算法復雜性、延遲的處理能力要求之間 事件,以及可發送到云的內容的帶寬限制。然而 由于它非常靈活,因此可以輕松探索這些因素。
結論
CN0549 CbM平臺提供系統靈活性和多種軟件 為設計人員開發應用程序時提供的資源。深入了解 軟件堆棧已經提供了關于如何不同的討論 組件可用于 CbM 和預測性維護 (PdM) 開發。由于軟件、HDL、原理圖和集成的開放性 借助數據科學工具,設計人員可以利用他們所需的組件 整個堆棧的終端系統。綜上所述,此狀態監測 Design 提供了一個易于使用的開箱即用解決方案,并配有開源 軟件和硬件,提供靈活性并允許設計人員實現 在更短的時間內獲得更好的定制結果。
審核編輯:郭婷
-
傳感器
+關注
關注
2550文章
51035瀏覽量
753074 -
FPGA
+關注
關注
1629文章
21729瀏覽量
602986 -
python
+關注
關注
56文章
4792瀏覽量
84627
發布評論請先 登錄
相關推薦
評論