Zustandsüberwachung in Echtzeit

Do it yourself: Condition based Monitoring

16. März 2022, 11:10 Uhr | Von Travis Collins
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Integration der Entwicklungsumgebung für Algorithmen

Bisher ging es um die wichtigsten Low-Level-Tools, mit denen die meisten Ingenieure beginnen, wenn sie eine Entwicklungsplattform wie die CN0549 erstmals nutzen. Es ist wichtig, diese zuerst zu verstehen, damit die Systemflexibilität des Systems und die verschiedenen Auswahlmöglichkeiten oder Schnittstellen nachvollziehbar sind.

Wurde ein Basissystem aufgebaut und in Betrieb genommen, möchten Entwickler die Daten schnell in die Algorithmenentwicklung mit Tools wie Matlab oder Python übernehmen. Diese Programme können die Daten von der Hardware importieren. Falls erforderlich, kann zusätzliche Steuerungslogik entwickelt werden.

Anbieter zum Thema

zu Matchmaker+
Der Entwicklungsablauf eines Machine-Learning-Modells
Bild 8. Der Entwicklungsablauf eines Machine-Learning-Modells.
© ADI

Bei einem Entwicklungszyklus für Machine Learning (ML) gibt es in der Regel einen gemeinsamen Ablauf, dem Entwickler folgen, unabhängig von ihrer gewünschten Software- umgebung für die Arbeit mit Daten. Ein Beispiel für diesen Prozess zeigt Bild 8. Zunächst werden Daten gesammelt und in Test- und Trainingsdaten aufgeteilt. Anschließend wird ein Modell oder Algorithmus entwickelt und abschließend das Modell zur Inferenzierung im Feld eingesetzt.

Bei echten Services wird der Gesamtprozess kontinuierlich durchgeführt, um neue Erkenntnisse in Produktionsmodelle einzubringen. Tools wie TensorFlow, PyTorch oder die Matlab Machine Learning Toolbox sind auf diesen Prozess abgestimmt. Der Prozess ist durchaus sinnvoll, wobei in der Regel der Aufwand für das Sammeln, Organisieren und die komplexe Aufgabe der Verwaltung der Daten übersehen oder völlig ignoriert wird. Um diese Aufgabe zu vereinfachen, wurde ein Software-Ökosystem entwickelt, welches die Tools und Pakete berücksichtigt.

Python-Anbindung

Beim Start in Python sind über das Modul PyADI-IIO gerätespezifische Klassen für die Entwicklungsplattform verfügbar. Ein einfaches Beispiel für die Konfiguration der Abtastrate des Bauteils und das Abrufen eines Puffers über Ethernet zeigt Bild 9.

Beispiel für die Konfiguration der Abtastrate und das Abrufen eines Puffers per PyADI-IIO
Bild 9. Beispiel für die Konfiguration der Abtastrate und das Abrufen eines Puffers per PyADI-IIO.
© ADI

Es gibt keine komplexen Registerfolgen, verborgene Speichersteuerungsaufrufe oder zufällige Bits, die man sich merken muss. Dies wird für Anwender durch den Treiber, libIIO und PyADI-IIO verwaltet, die auf dem Board selbst, entfernt auf einer Workstation oder sogar in der Cloud laufen.

PyADI-IIO, das über pip und conda installiert werden kann, stellt Steuerknöpfe als einfach nutzbare und dokumentierte Eigenschaften zur Verfügung. Es hält auch Daten in allgemein lesbaren Typen wie NumPy-Arrays oder nativen Typen bereit und konvertiert Einheiten von Datenströmen in Einheiten, sofern verfügbar. Dadurch lässt sich PyADI-IIO leicht zu Umgebungen wie Jupyter Notebook hinzufügen und Daten können leicht in Pipelines für Machine Learning eingespeist werden, ohne dass auf andere Tools oder komplexe Datenkonvertierungen zurückgegriffen werden muss – so können sich Entwickler statt auf schwierige APIs oder Datenkonversationen auf ihre Algorithmen konzentrieren.

Matlab-Integration
Auf der MATLAB-Seite werden die Referenzplattform und deren Komponenten von einer Sensor-Toolbox unterstützt. Die Toolbox verfügt wie PyADI-IIO über gerätespezifische Klassen für verschiedene Bauteile und implementiert diese als Matlab-Systemobjekte (MSOs). Mit MSOs können MathWorks-Autoren Schnittstellen zu Hardware und verschiedenen Softwarekomponenten realisieren. Außerdem bieten MSOs weiterentwickelte Funktionen zur Unterstützung der Codegenerierung, der Simulink-Unterstützung und der allgemeinen Zustandsverwaltung. Viele Matlab-Anwender nutzen wahrscheinlich als MSOs implementierte Funktionen ohne dies zu wissen, wie beispielsweise Oszilloskope oder Signalgeneratoren.

Bild 10. Sensor-Toolbox Streaming-Beispiel mit Scope
Bild 10. Sensor-Toolbox Streaming-Beispiel mit Scope.
© ADI

 In Bild 10 werden die CN0532-Schnittstelle und ein DSP Spectrum Analyzer Scope verwendet, die beide als MSOs implementiert sind. Auch hier gibt es, wie bei PyADI-IIO, eine einfach handhabbare Schnittstelle für traditionelle MATLAB-Benutzer. Neben der Hardwareschnittstelle ist die Sensor-Toolbox auch in die Code-Generierungstools für HDL und C/C++ integriert. Dies sind leistungsstarke Werkzeuge für die Entwicklung, Simulation und Implementierung von IP, selbst für Entwickler, die mit HDL-Design oder Tooling nicht vertraut sind, aber Matlab und Simulink verstehen.

Klassifizierung mit TensorFlow
Das Entwicklungskit enthält mehrere Beispiele, angefangen beim einfachen Daten-Streaming bis hin zu einem Machine-Learning-Klassifizierungsbeispiel. Machine Learning für Zeitreihendaten, wie die Vibrationsdaten eines Referenzdesigns, kann aus verschiedenen Blickwinkeln betrachtet werden. Dazu können Support-Vektor-Maschinen (SVM), Modelle mit Lang/Kurzzeit-Memory (LSTM) oder sogar Autoencoder gehören, wenn die Daten direkt als Zeitreihen interpretiert werden. Jedoch kann es in vielen Fällen komfortabler sein, ein Zeitreihen- in ein Bildverarbeitungsproblem umzuwandeln und das Wissen sowie Werkzeugen zu nutzen, die in diesem Anwendungsbereich entwickelt wurden.

Die Vibrationsdaten eines Ventilators in Zeitreihen
Bild 11. Die Vibrationsdaten eines Ventilators in Zeitreihen.
© ADI

Im Folgenden wird dieser Ansatz in Python betrachtet. In einem der mit PyADI-IIO bereitgestellten Beispiele wurden mehrere Messungen durchgeführt, indem das Referenzdesign CN0532 an einem oszillierenden Ventilator befestigt wurde. Die Messungen erfolgten bei verschiedenen Gebläseeinstellungen (Sleep, General, Allergen), und in jedem Modus wurden 409.600 Messwerte erfasst. Bei der Untersuchung der Daten in Bild 11 ist der Zeitbereich für den Allergen-Fall leicht zu erkennen. Die beiden anderen Fälle sind schwieriger zu unterscheiden. Diese könnten durch Überprüfung identifiziert werden. Jedoch könnte die Identifizierung dieser Fälle durch einen Algorithmus im Zeitbereich fehleranfällig sein.

Die Spektrogramme der erfassten Vibrationsdaten
Bild 12. Die Spektrogramme der erfassten Vibrationsdaten.
© ADI

Um die Anwendungsfälle besser unterscheiden zu können, wurden die Daten in den Frequenzbereich transformiert. Spektrogramme wurden verwendet, um die Häufung der verschiedenen Frequenzen im Zeitverlauf grafisch darzustellen. Die Spektrogramme in Bild 12 weisen im Vergleich zu Bild 11 einen viel stärkeren Unterschied in den Daten auf und sind über die Zeit hinweg konsistent. Die Spektrogramme sind im Endeffekt Bilder und lassen sich nun mit herkömmlichen Bildklassifizierungsverfahren verarbeiten. Die Datensätze wurden in Trainings- und Testsätze aufgeteilt und die Spektrogramme in ein reines neuronales Netzwerkmodell (NN) mit drei dichten Schichten sowie in ein kleineres faltendes neuronales Netzwerk (CNN) eingespeist. Beide Modelle wurden in TensorFlow implementiert und konnten in weniger als 100 Epochen auf nahezu 100 % Testvalidierung konvergieren. Das CNN konvergierte in etwa der Hälfte der Zeit mit etwa 1 % der einstellbaren Parameter und ist somit das weitaus effizientere Design.

Die Trainingsgenauigkeit eines CNN über die Zeit für Vibrationsspektrogramme
Bild 13. Die Trainingsgenauigkeit eines CNN über die Zeit für Vibrationsspektrogramme.
© ADI

Eine Trainingskonvergenzkurve der Genauigkeit im Vergleich zur Epoche zeigt Bild 13 zur Verdeutlichung der schnellen Konvergenz des CNN.

Alle Python-Skripte, Notebooks und Datensätze stehen für dieses Beispiel auf GitHub unter dem PyADI-IIO Sourcetree zur Verfügung. Da die Datensätze bereitgestellt werden, ist die Beispieldemonstration mit TensorFlow auch ohne die Hardware CN0549 verwendbar. Mit der Hardware könnte man das trainierte Modell jedoch für Echtzeit-Inferenz verwenden.

Edge to Cloud: Der Weg zu einer Embedded-Lösung

Sobald ein Modell erstellt ist, lässt es sich für Inferenzzwecke oder zur Entscheidungsfindung einsetzen. Mit dem Entwicklungskit könnte dies auf einem Remote-PC platziert werden oder direkt auf dem Embedded-Prozessor laufen. Je nach Implementierung erfordert die Platzierung des Modells innerhalb des Prozessors einen höheren technischen Aufwand, kann aber um eine Größenordnung energieeffizienter sein und in Echtzeit arbeiten. Erfreulicherweise gab es in den vergangenen Jahren viele Weiterentwicklungen bei Tools und Software für den Einsatz von Machine-Learning-Modellen.

FPGAs wirksam einsetzen
Xilinx und Intel verfügen über High-Level-Synthese-Tools (HLS), die Hochsprachen in HDL-Code übersetzen, der auf dem FPGA läuft. Die Tools lassen sich in der Regel in Python-Frameworks wie TensorFlow, PyTorch oder Caffe integrieren, um die Modellübersetzung in IP-Cores zu unterstützen. So lässt sich IP entweder auf dem DE10-Nano, dem Cora Z7-07S oder einem kundenspezifischen System einsetzen.

 Cora Z7-07S HDL-Referenzdesign-Datenpfad, dargestellt mit der Design Suite Vivado 2019.1
Bild 14. Cora Z7-07S HDL-Referenzdesign-Datenpfad, dargestellt mit der Design Suite Vivado 2019.1.
© ADI

Diese IP-Cores werden dann in die Open HDL-Referenzdesigns eingefügt. Bild 14 zeigt einen Screenshot des Cora Z7-07S CN0540 der Design-Suite Vivado, der sich auf den Datenpfad konzentriert. Im Design werden die CN0540-Daten über den SPI-Pin gelesen, und die 24-Bit-Samples werden von der SPI-Engine interpretiert und an den DMA-Controller in den Speicher weitergeleitet. Jedes DSP- oder Machine-Learning-Modell könnte direkt in die Pipeline im Datenpfad eingefügt werden.

Mikroprozessoren nutzen
Statt die Algorithmen in die HDL-Schicht zu konvertieren, könnten sie auch direkt im Arm-Core ausgeführt werden. Je nach Datenraten und Komplexität der Algorithmen ist dies ein vernünftiger Entwicklungspfad und in der Regel viel einfacher. Die Entwicklung von C-Code oder möglicherweise sogar Python für den Arm-Core erfordert wesentlich weniger Entwicklungsressourcen und -zeit als HDL und ist normalerweise einfacher zu warten.

Tools wie Matlab Embedded Coder können diesen Prozess vereinfachen und Matlab automatisch in embeddable und optimierten C-Code für den Arm-Core konvertieren. Alternativ dazu verfügt TensorFlow über Tools wie TensorFlow Lite, die embeddable C-Versionen ihrer Python-Bibliotheken sind, um einen einfacheren Übergang zu einem Embedded-Ziel zu ermöglichen.

Intelligente Entscheidungsfindung

Für das CbM gibt es keine Universallösung für Hard- und Software. Deshalb wird bei der Konzipierung der Entwicklungsplattformen auf Flexibilität geachtet.

Wenn man Probleme wie die Erkennung von Anomalien für CbM in Betracht zieht, kann man normalerweise von zwei Zeitskalen ausgehen: Einer, bei der man sofort reagieren muss, wie in einem sicherheitsrelevanten Szenario, oder einer langfristigen Zeitskala, auf der eher eine Wartung oder ein Austausch von Komponenten erfolgt. Beide Zeitskalen erfordern unterschiedliche Algorithmen, Verarbeitungsleistungen und Ansätze.

Maschinenbediener hätten im Idealfall einen großen Datensee, von dem aus sie ihre Modelle trainieren und sowohl kurzfristige Erkennungen ohne störende Ereignisse verarbeiten als auch kontinuierlich Daten von laufenden Anlagen für zukünftige Wartungsprognosen streamen könnten. Für die meisten Maschinenbediener ist dies jedoch wahrscheinlich nicht der Fall, und die Datenseen erscheinen eher ausgetrocknet.

Außerdem kann es für einige Standardlösungen aufgrund von Sicherheitsbedenken, physischen Standorten, Netzwerken oder Topologieanforderungen schwierig sein, die Datensammlung durchzuführen. Diese Schwierigkeiten treiben die Notwendigkeit für mehr kundenspezifische Lösungen voran.

Beispiele für CbM-Netzwerk-Topologien
Bild 15. Beispiele für CbM-Netzwerk-Topologien.
© ADI


Die als Referenz genutzte Entwicklungsplattform CN0549 ist ein eigenständiges System mit verschiedenen Anschlussmöglichkeiten. Da auf ihr Standard-Linux läuft, funktionieren herkömmliche Netzwerk-Stacks wie Ethernet und WiFi sofort und es ist sogar möglich, bei Bedarf Mobilfunkmodems anzuschließen. In praktischen Anwendungen gibt es einige typische Topologien, die hervorstechen (Bild 15).

Die links gezeigte Konfiguration sammelt Daten offline und kann für entfernte Standorte oder Anlagen ohne Internetverbindung verwendet werden. In diesen Fällen kommen große Speichermedien mit der Plattform zum Einsatz, die Verantwortliche nach einem Zeitplan abholen. Alternativ dazu können die Topologien in der Mitte und rechts in Bild 15 Daten an einen gemeinsamen Endpunkt leiten. Die mittlere Konfiguration in Bild 15 ist ein isoliertes Netz, welches nur innerhalb der Organisation bestehen kann, oder ein Cluster von Plattformen an einem entfernten Standort, die Daten zentral sammeln. Dies kann aus Sicherheitsgründen oder einfach nur wegen fehlender Anschlussmöglichkeiten erforderlich sein.

Das Set-up der Entwicklungsplattform CN0549 ist für jede dieser Konfigurationen einfach und lässt sich an die spezifischen Anforderungen einer Endeinrichtung anpassen. Die rechts in Bild 15 gezeigte Konfiguration ist eine Option mit direkter Cloud-Anbindung, bei der jede Plattform direkt auf das Internet zugreift und Messungen in die Cloud überträgt. Da auf der Entwicklungsplattform CN0549 Linux läuft, kann die Plattform APIs für verschiedene Cloud-Anbieter wie Microsoft Azure IoT oder Amazon IoT Greengrass einfach mit Sprachen wie Python nutzen und so einen einfachen Weg zum Aufbau eines Datensees für neu angeschlossene Geräte schaffen.

Besteht eine einheitliche Verbindung zwischen Cloud und lokalem Prozess, können verschiedene Algorithmen zwischen dem, was lokal ausgeführt werden muss oder kann, und dem, was in der Cloud ausgeführt werden kann, aufgeteilt werden.

Dies führt zu einem natürlichen Kompromiss zwischen den Anforderungen an die Verarbeitungsleistung, die Komplexität des Algorithmus, die Latenzzeit für Ereignisse und die Bandbreitenbegrenzungen für die an die Cloud zu übertragenden Daten. Da das System jedoch so flexibel ist, lassen sich diese Faktoren leicht erforschen.

Time to Market

Entwickler, die sich zur Realisierung ihrer Anwendungen für die CbM-Plattform CN0549 von Analog Devices entscheiden, erhalten damit eine hohe Systemflexibilität und eine Vielzahl von Softwareressourcen. Im Rahmen dieses Beitrags wurde ein tiefer Einblick in die Software-Stacks gegeben und erörtert, wie die Komponenten für CbM- und PdM-Entwicklungen genutzt werden können. Aufgrund der Offenheit von Software, HDL, Schaltplänen und Integrationen mit Data-Science-Tools können Entwickler die Komponenten, die für ihr Endsystem erforderlich sind, über den gesamten Stack hinweg nutzen. Zusammenfassend lässt sich sagen, dass dieses CbM-Design eine einfach zu bedienende, sofort einsatzbereite Lösung mit Open-Source-Software und -Hardware bietet, die flexibel ist und es Entwicklern erlaubt, in kürzerer Zeit bessere, individuelle Ergebnisse zu erzielen.

 

Der Autor

 

Travis Collins von ADI
Travis Collins von ADI.
© ADI

Travis Collins

hat einen Ph.D. und einen Master of Science in Electrical und Computer Engineering des Worcester Polytechnic Institute, USA. Collins arbeitet derzeit in der System Development Group bei Analog Devices und konzentriert sich auf Anwendungen der Bereiche Kommunikation, Radar und allgemeine Signalverarbeitung.
travis.collins@analog.com


  1. Do it yourself: Condition based Monitoring
  2. Erste Schritte mit CbM-Daten
  3. Integration der Entwicklungsumgebung für Algorithmen

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Analog Devices GmbH

Weitere Artikel zu IoT / IIoT / Industrie 4.0

Weitere Artikel zu Betriebssysteme

Weitere Artikel zu Automatisierung