Live IoT-Daten in MATLAB nutzen mit RTI Connext DDS Integration
Bei der Analyse von Sensordaten umfasst der typische Workflow das Sammeln von Rohdaten, die Konvertierung in ein nutzbares Format und dann die Nutzung von MATLABs leistungsstarken Analysefunktionen. Der Datkonvertierungsschritt kann jedoch zeitaufwendig sein. Mit MathWorks' neuer Integration kann MATLAB nun direkt Daten über DDS abonnieren und publizieren – dem de-facto Middleware-Standard für IIoT-Kommunikation. Dies ermöglicht Entwicklern, Echtzeit-Analysen mit minimalem Overhead zu prototypen und zu testen.
Erste Schritte
Stellen Sie vor Beginn sicher, dass MATLAB und RTI Connext DDS installiert sind. In den Beispielen wurden folgende Versionen verwendet:
- MathWorks MATLAB R2016b
- MathWorks DDS Blockset 2.9.2
- RTI Connext DDS 5.2.3 (Linux & Windows)
- RTI Shapes Demo Application (installiert mit Connext DDS)
- Windows 10 PC
Sehen Sie sich das Installationsvideo an, um zu prüfen, ob alle Komponenten korrekt konfiguriert sind: Installationsvideo.
Initialisierung
Nach der Installation initialisieren Sie DDS in MATLAB mit folgenden Schritten:
- Importieren Sie die für Ihr Projekt benötigten IDL-Datentyp(e).
- Erstellen Sie einen DDS Domain Participant.
- Erstellen Sie einen DDS DataWriter.
- Erstellen Sie einen DDS DataReader.
Der Import einer IDL-Datei generiert automatisch die entsprechenden .m-Dateien für MATLAB. Zum Import von ShapeType.idl:
> DDS.import('ShapeType.idl','matlab','f')
Nach dem Import ist der Datentyp für die nachfolgende DataReader/DataWriter-Erstellung verfügbar. Erstellen Sie einen Domain Participant:
> dp = DDS.DomainParticipant;
Fügen Sie Writer und Reader für den ShapeType-Datentyp auf den Topics Triangle und Square hinzu:
> dp.addWriter('ShapeType','Triangle')
> dp.addReader('ShapeType','Square')
Daten in Shapes Demo abonnieren
Die RTI Shapes Demo bietet vorkonfigurierte Topics für Square, Circle und Triangle, alle basierend auf ShapeType. Nutzen Sie die Demo, um einen Subscriber für das Triangle-Topic zu erstellen; lassen Sie QoS-Einstellungen auf Defaults.
Daten aus MATLAB publizieren
Mit dem konfigurierten DataWriter publizieren Sie ein grünes Dreieck:
%% ShapeType-Instanz erstellen myData = ShapeType; myData.x = int32(75); myData.y = int32(100); myData.shapesize = int32(50); myData.color = 'GREEN'; %% Daten an DDS schreiben dp.write(myData);
Die Shapes Demo zeigt ein einzelnes grünes Dreieck wie unten dargestellt:
Weitere Publikationsmuster:
%% Grüne Dreiecke in einer Linie bei 1 Hz for i=1:10 myData.x = int32(20 + 10*i); myData.y = int32(40 + 10*i); dp.write(myData); pause(1); end %% Grüne Dreiecke im Kreis bei 20 Hz for i=1:1000 angle = 10*pi * (i/200); myData.x = int32(100 + (50 * cos(angle))); myData.y = int32(100 + (50 * sin(angle))); myData.shapesize = int32(40); myData.color = 'GREEN'; dp.write(myData); pause(0.05); end
Die Demo visualisiert diese Muster wie gezeigt:
Daten in Shapes Demo publizieren
In der Shapes Demo erstellen Sie einen Publisher für das Square-Topic. Wählen Sie eine Farbe (z. B. Orange) und behalten Sie QoS-Defaults bei. Die Demo sendet die X,Y-Position des Quadrats alle 30 ms.
Daten in MATLAB abonnieren
Nutzen Sie den Square DataReader, um Daten von der Shapes Demo zu konsumieren. Lesen Sie zehn Samples im Sekundenabstand:
%% Daten lesen for i=1:10 dp.read() pause(1); end
MATLAB gibt zehn Nachrichten ähnlich dem Screenshot unten aus:
Erweitertes Use Case: Transformieren und Visualisieren
Nach Etablierung bidirektionaler Kommunikation transformieren Sie die empfangenen Quadratdaten durch Vertauschen der X- und Y-Koordinaten, publizieren sie als rotes Dreieck neu und plotten die X-Positionen über die Zeit. Das folgende MATLAB-Skript demonstriert diesen Workflow:
%% Array für 100 Samples allokieren
xArray = zeros(1,100);
%% Sammeln, transformieren, republizieren
for i=1:100
[myData, status] = dp.read();
if ~isempty(myData)
x = myData(1).x;
y = myData(1).y;
xArray(i) = x;
yArray(i) = y;
myData(1).y = x;
myData(1).x = y;
myData(1).color = 'RED';
dp.write(myData(1));
end
pause(0.05);
end
%% X-Position plotten
t = 1:100;
plot(t,xArray);
legend('xPos');
xlabel('Zeit');
ylabel('Position');
title('X Positionen');
Die Shapes Demo zeigt nun ein rotes Dreieck, das das orangene Quadrat spiegelt, während MATLAB den X-Positions-Plot rendert:
Die Integration von DDS mit MATLAB optimiert Dateneingabe, -injektion und -analyse. Während diese Demo die einfache Shapes-Anwendung nutzt, funktioniert der gleiche Ansatz für jede DDS-basierte IoT-Datenquelle. Für tiefere Einblicke in MATLABs DDS-Integration besuchen Sie die MATLAB DDS Integration Seite bei MathWorks. Um Connext DDS weiter zu erkunden, greifen Sie auf die Entwicklerressourcen hier zu.
Internet der Dinge-Technologie
- MQTT vs. DDS: Das richtige M2M-Protokoll für IoT wählen
- Lektionen von der Hannover Messe: 5 bewährte Strategien, IT für industrielle Operationen zu nutzen
- Datenschutz-Compliance im Internet der Dinge sicherstellen
- Ist Ihre Fertigungsstätte bereit für IoT? Ein praktischer Leitfaden
- Demokratisierung des Internet der Dinge: Next-Gen Satelliten-IoT bringt universelle, bezahlbare Konnektivität
- Den Wert von IoT-Daten erschließen: Sichere, insight-gesteuerte Strategien
- IoT-Daten in Business Value verwandeln: Ein praktischer Leitfaden
- IoT-Daten für Manufacturing Excellence nutzen
- Führende Cloud-basierte IoT-Analyseplattformen für 2026
- MATLAB Datentypen: Umfassender Leitfaden