TOP
SSV Software Systems Register  Register
Log in to check your private messages  Log in to check your private messages
Startseite FAQ Search Mitglieder Profile  Log in 
SSV Support-Forum
MLS/160A als (I)IoT-Sensor …

 
Post new topic   Reply to topic    SSV-Forum Forum Index >>> RMG/941
<<< Previous topic - Next topic >>>  
Display posts from previous:   
Author Message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 13.11.2020, 22:27    Post subject: MLS/160A als (I)IoT-Sensor … Reply with quote

Hallo Forum.

Die Anforderungen an Sensoren für das Internet der Dinge verändern sich nach wie vor in einem beachtlichen Tempo. Vor einiger Zeit reichte noch ein Sensorelement mit einer geeigneten Signalverarbeitung plus eine hochwertige Kommunikationsschnittstelle (z. B. Ethernet oder Wi-Fi) aus. Inzwischen werden komplexe Softwarefunktionen aus dem Umfeld der künstlichen Intelligenz erwartet, um die Sensordaten in Echtzeit zu analysieren. Die folgende Abbildung zeigt die Bausteine einer IoT-Beispielsensorlösung für Maschinen und Anlagen, die mit Hilfe der Amazon-IoT-Cloud realisiert wurde:



1. (I)IoT-Sensorik (Maschinensensor + Gateway). Dient zum Sammeln „gelabelter“ Trainingsdaten und zum Erfassen von Echtzeit-Merkmalsvektoren für die Inferenzmaschine. Das Gateway wird nicht nur für die Sensordatenerfassung, sondern auch für Fernzugriffsaufgaben verwendet (z. B. Fernzugriff auf eine Antriebswellen-SPS oder den Controller eines Frequenzumrichters).

2. AWS S3-Dienst (S3 = Simple Storage Service). Wird zur Speicherung der Machine-Learning-Trainingsdaten und des für den Sensor erzeugten Modells genutzt.

3. AWS SageMaker-Service: Wird zum Erstellen des Machine-Learning-Modells (ML-Modell) und für die Inferenzphase verwendet (Iot-Sensor-Inferenz = Klassifizieren eines Datenvektors an Hand des ML-Modells, die Inferenz Engine des virtuellen Sensors).

4. AWS IoT Core. Schnittstelle zur Entgegennahme eines Datenvektors von der Sensor-Hardware, um die Inferenz auszuführen und um das Inferenzergebnis anderen Anwendungen zur Verfügung zu stellen (entspricht dem "Datenausgang" eines virtuellen Sensors).

5. AWS Lambda-Service. Als I/O-Daten-Dispatcher wird eine AWS-Lambda-Funktion eingesetzt.

6. AWS SNS-Dienst. Ereignisbenachrichtigung mit der Inferenz-Engine-Ausgabe. Bei bestimmten Ereignissen kann der virtuelle Sensor Benachrichtigungen verschicken (z. B. eine SMS, E-Mail usw.).

VG KDW

Siehe auch: https://github.com/SSV-embedded/RMG-941-and-AWS
Siehe auch: https://github.com/SSV-embedded/MLS160A-SDK
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 15.02.2021, 15:21    Post subject: MLS/160A mit USB ... Reply with quote

Hallo Forum.

Den Softsensor MLS/160A gibt nicht nur mit einer RS485-Datenschnittstelle. Alternativ ist auf Anfrage auch eine USB-Variante mit Typ A-USB-Stecker verfügbar. Sie kann ohne weitere mechanische und elektrische Anpassungen direkt an jedem PC oder Edge-Gateway mit USB-Steckverbinder betrieben werden. Da USB-Kabel nur relativ kurz sein dürfen, kann der Abstand zwischen einer Maschine als Messdatenquelle und dem PC/Edge-Gateway zur Datenauswertung nur sehr gering ausfallen.



Als MLS/160A-USB-Zubehör kann über GitHub ein Jupyter-Notebook mit einem einfachen Datenerfassungs- und Analysebeispiel geladen werden. Siehe MLS160A-USB.ipynb unter https://github.com/SSV-embedded/MLS160A-SDK/tree/master/notebooks.

Wenn Sie dieses Jupyter-Notebook auf Ihrem PC ausprobieren wollen, muss zunächst einmal die Python-Bibliothek PyDSlog nachinstalliert werden. Siehe hierzu auch https://pypi.org/project/PyDSlog/. Des Weiteren muss im folgenden Einstellungs-Codeblock der „serial_port“ an Ihr System angepasst werden. „COM10“ war die entsprechende Einstellung auf dem Windows-Rechner, auf dem dieser Code zuletzt überprüft wurde.

Code:
### Modify here ###

# Channels
chan = ["ACCX","ACCY","ACCZ"]
# Frequency
frequency = 400
# Signal length
size_signal = 400
# Port
serial_port = "COM10"

###


Ersetzen Sie bitte die Zeichenfolge „COM10“ durch den Namen der virtuellen Schnittstelle, über der MLS/160A-USB mit Ihrem Rechnersystem verbunden ist.

Die weiteren Parameter im Einstellungs-Codeblock legen fest, dass alle drei Achsen (X = ACCX, Y = ACCY und Z = ACCZ) des MLS/160A-Beschleunigungssensors mit 400 Hz jeweils eine Sekunde abgetastet werden. Dadurch entstehen jeweils 400 Messpunkt je Achse.

Wenn Sie die zweite Codezelle des Jupyter-Notebooks in einer Jupyter-Notebook-Sitzung per Run starten, erhalten Sie eine grafische Datendarstellung mit zwei Spalten und jeweils drei Diagrammen. Die linke Spalte enthält die aktuellen MLS/160A-Daten für die drei Achsen X, Y und Z im Zeitbereich. Jedes Diagramm zeigt 400 Datenpunkte, also eine Sekunde an. Die rechte Spalte liefert die gleichen Daten im Frequenzbereich, also nach einer FFT.



Die erste Darstellung mit den zwei mal drei Diagrammen oberhalb dieses Textblocks zeigen ein starkes Rauschen, also einen nicht weiter definierbaren Zustand. Die Daten für die zweite Darstellung weiter unten wurden an einem rotierenden Lüfter erfasst. Man kann im Frequenzbereich der drei Achsen eindeutig die Rotationsfrequenz erkennen.



Der Beispielcode in MLS160A-USB.ipynb läuft in einer „Endlosschleife“ für immer. Wird die USB-Verbindung zum MLS/160A-Sensor getrennt, endet die Codeausführung mit zahlreichen Fehlermeldungen (siehe Beispiel unter GitHub am Ende der Datei MLS160A-USB.ipynb).

VG KDW

P.S.: Das MLS/160A-Handbuch findet man hier https://www.ssv-embedded.de/doks/manuals/sr_mls160a_en.pdf
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 18.02.2021, 17:47    Post subject: In-System-MQTT-Broker … Reply with quote

Hallo Forum.

Wird ein RMG/941 zusammen mit dem MLS/160A ausgeliefert, ist ein Beispiel vorinstalliert, dass per Python den Sensordaten-Stream des MLS/160A empfängt und innerhalb des RMG/941-Linux an einen Node-RED-Flow weiterleitet. Dort kommen die Sensordaten als JSON-Objekt in einem Node mit dem Namen mls160a an.



Innerhalb der RMG/941-Node-RED-Umgebung können die Sensordaten gemäß den jeweiligen Anforderungen weiterverarbeitet werden. Mit Hilfe der mls160a-Konfigurationsschnittstelle lassen sich des Weiteren die einzelnen MLS/160A-Achsen auswählen sowie die Abtastfrequenz (eine Einstellung für alle ausgewählten Achsen) konfigurieren.

Die Kommunikation zwischen der Python-Datenerfassungssoftware und dem Node-RED-Flow erfolgt über den In-System-MQTT-Broker (ISMB) des RMG/941. Der ISMB ermöglicht mehreren in ihrer jeweiligen Laufzeitumgebung isolierten Anwendungen den bidirektionalen Datenaustausch per MQTT.



Der Python-Code läuft in der RMG/941-Python3-Laufzeitumgebung. Er ist in einem Skript mit dem Namen ssvmq-pydslogd im Verzeichnis /usr/local/sbin gespeichert. Grundsätzlich ist dieser Code zusammen mit dem entsprechenden Node-RED-Node in andere Systemumgebungen übertragbar. Dabei sind allerdings die hier folgenden Code-Fragmente in https://ssv-comm.de/forum/dokumente/ssvmq-pydslogd zu beachten.

Code:
import paho.mqtt.client as mqtt
import PyDSlog.stream as stream
import time
from datetime import datetime
import json

import sys
import logging
import logging.handlers
import signal


Zunächst einmal müssen alle benötigten Bibliotheken in der Python3-Laufzeitumgebung vorhanden sein. Dazu gehört auch die SSV-Python-Bibliothek PyDSlog. Siehe hierzu auch https://pypi.org/project/PyDSlog/.

Code:
port="/dev/ttyR1"


Weiterhin ist der Name für die benutzte serielle Schnittstelle zum MLS/160A in der Codezeile 151 an die jeweiligen Gegebenheiten anzupassen ("/dev/ttyR1" ist der Device-Name der RS485-Schnittstslle eines RMG/941).

Code:
mqhost = "127.0.0.1"
mqport = 7883


Die Codezeilen 231 und 232 adressieren den RMG/941-ISMB (IP-Adresse plus TCP-Portnummer). Falls der zum Einsatz kommende MQTT-Broker unter anderen Adressparametern betrieben wird, sind diese beiden Zeilen entsprechend anzupassen.

Code:
SysLogHandler(address = '/dev/log')


Grundsätzlich ist der Beispiel-Code https://ssv-comm.de/forum/dokumente/ssvmq-pydslogd auch mit einer Python3-Laufzeitumgebung unter Windows einsetzbar. Es muss allerdinge der Name „/dev/log“ in der Codezeile 199 durch einen gültigen Windows-Dateinamen (z. B. „log.txt“) ersetzt werden. Ansonsten entsteht eine dieser auf den ersten Blick nicht sehr aussagefähigen Python-Laufzeitfehlermeldungen.

Zum Schluss noch eine Anmerkung: Die hier beschriebenen Funktionen lassen sich auf einem RMG/941 auch nachträglich als App installieren. Siehe http://www.ssv-embedded.de/downloads/igw941/. Die Bausteine sind in der App node-red-contrib-pydslog enthalten.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 14.04.2021, 22:41    Post subject: MQTT (lokal) … Reply with quote

Hallo Forum.

Ein Sensordaten-Stream eines MLS/160A, der an einem RMG/941 betrieben wird, ist über die LAN-Integration des RMG/941 auch von anderen Systemen innerhalb eines lokalen Netzwerks nutzbar. Das lässt sich zum Beispiel mit einem PC sehr einfach ausprobieren. Dafür sind nur zwei Voraussetzungen erforderlich:

1) Der PC muss per LAN sowohl mit dem Internet als auch lokal mit dem RMG/941 verbunden sein.

2) Auf dem PC muss bereits eine Node-RED-Installation existieren (falls dies nicht der Fall ist, siehe https://nodered.org/docs/getting-started/).

Starten Sie Node-RED auf dem PC und installieren Sie über den Palettenmanager (Menü => Palette manager) den PyDSlog-Node (dafür wird die Internetverbindung des PCs benötigt). Wählen Sie hierzu den Install-Reiter des Palettenmanager aus und geben Sie den Suchbegriff „pydslog“ ein. Ihnen wird dann eine Komponente mit dem Namen „node-red-contrib-pydslog2mqtt“ vorgeschlagen. Sie enthält den erforderlichen PyDSlog-Node. Nach einer erfolgreichen Installation finden Sie in der „Network“-Gruppe Ihrer Palette den neuen PyDSlog-Node (siehe die hier folgende Abbildung).



Öffnen Sie den folgenden Link https://ssv-comm.de/forum/dokumente/pydslog-demo.json und kopieren Sie den gesamten Text im Browserfenster in die Zwischenablage. Der Text ist ein JSON-Objekt und bildet den Node-RED-Flow aus der hier folgenden Abbildung.



Importieren Sie den Text aus der Zwischenablage als Flow in Node-RED (Menü => Import => Clipboard). Beachten Sie bitte die IP-Adresseinstellung des RMG/941 in diesem Beispiel. Sie ist im PyDSlog-Node mit dem Titel „MLS/160A“ auf 192.168.0.86 voreingestellt. Verändern Sie diese Adresse auf die IP-Adresse des RMG/941 in Ihrem Netzwerk.

VG KDW
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    SSV-Forum Forum Index >>> RMG/941 All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511  ·  40 000-0
Fax: +49(0)511  ·  40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2023 SSV SOFTWARE SYSTEMS GmbH. Alle Rechte vorbehalten.

ISO 9001:2015