Frage von vionr, 45

Messdatenerfassung und Übertragung per TCP/IP, HTTP oder ähnliches?

Hallo zusammen,

ich habe mehrere Sensoren, die diverse Daten erfassen, das können zum Beispiel Temperaturen, Drücke und andere gemessene Größen sein. Die Analogsignale der Sensoren sind zugänglich. Die Abtastrate wäre im Sekundenbereich, nichts hochfrequentes.

Ich möchte diese Daten erfassen (das schreit nach Datenlogger) und diese über ein bestehendes Netzwerk übertragen. Hierzu gibt es sicher viele Lösungen.

Es gibt jedoch folgende Anforderungen:

  • Die Messdaten sollen live auf einem Bildschirm in einem Foyer dargestellt werden. Dieser ist ein kleiner PC der am Netzwerk hängt.
  • Es muss möglich sein mit MATLAB auf die Daten zuzugreifen, während diese geloggt werden. Schön wäre eine Funktion, die zwei Datums- und Uhrzeitangaben bekommt und dann die dazwischenliegenden Messwerte zurückgibt. Wie kompliziert das ist spielt keine Rolle, da wir über sehr gute MATLAB-Programmierer verfügen. Es muss nur irgend eine Schnittstelle geben.
  • Eine offene, vielleicht sogar Open-Source-Lösung wäre wünschenswert, dies ist aber kein Muss.
  • Es soll möglichst keine Drittanbietersoftware installiert werden, es wäre wünschenswert, wenn die Daten über das Netzwerk durch bestehende, bekannte Protokolle übertragen werden können, zum Beispiel HTTP oder FTP oder sogar per "read" über TCP durch MATLAB.

Es handelt sich dabei rein um einen lesenden Prozess, sodass eine Integration in das bestehende Netzwerk kein Sicherheitsrisiko darstellt, daher sind besondere Sicherheits-Lösungen nicht erforderlich und eine Schreibmöglichkeit auf die Messwerte auch nicht erwünscht.

Vielen Dank schon einmal für jede Antwort!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von PeterKremsner, 34

Mit welchem Gerät machst du die Abtastung der Signale?

Hast du da an einen Mikrocontroller oder an einen Computer gedacht?

Soll Matlab direkt auf dem Computer laufen der die Daten von den Sensoren ausliest?

Ist jetzt nur so eine Frage muss es unbedingt Matlab sein? Was willst du mit den Daten machen?

Wenn du einen "PC" haben willst der die Daten der Sensoren ausliest ist ein RaspberryPi vollkommen ausreichend und auch schon fast überdimensioniert. Du kannst dann zum PI eine ADC Karte kaufen, die kannst du einfach aufstecken und da sollten Treiber auch schon dabei sein und dann kannst du deine Daten auch auf mehrere Weisen anbieten.

Zum einen kannst du mit Perl Python, C, C++ usw ein kleines Script schreiben dass nur als TCP Server arbeitet und zum anderen kannst du auch einen Apache Webserver mit PHP aufsetzen dann kannst du die Daten einfach anzeigen indem du mit einem Webbrowser die HTML Seite vom PI aufrufst, die Aktuallisierung könnte dann auch über AJAX laufen.

Kommentar von vionr ,

Bisher haben wir noch kein Gerät, dass die Signale aufnimmt. Generell wäre die Devise: Je einfacher, desto besser. Das Problem ist, dass wir durch regelmäßig neu kommende Studenten und Doktoranden "fluktuierendes Personal" haben. Wenn da jetzt jemand ein Programm auf einem µC oder einem RaspberryPi schreibt, muss das auch in 4 Jahren noch von einem Außenstehenden komplett verstanden werden können.

Ich schaue mir diese Variante definitiv auch an, mit der entsprechenden Dokumentation sollte das ja machbar und auch langfristig einsetzbar sein.

Vielen Dank soweit!

Kommentar von PeterKremsner ,

Dadurch dass die Treiber für den Pi ja schon beim Analogboard dabei sind (vermutlich) reduziert sich das Problem ja nur noch auf das Auslesen einer Textdatei, die wird dann vermutlich den ADC Wert oder direkt die Spannung am ADC als Text enthalten, das restliche Programm sollte dann eigentlich recht klein sein.

Ein einfacher Server ist in wenigen Zeilen C geschrieben und wenn die ausreichend Dokumentiert sind sollte es anderen nicht sonderlich schwer fallen das Programm zu verstehen.

Wenn HTTP aber reicht dann musst du die Datei nur noch über PHP auslesen, da kannst du den Text gleich als Text formatiert lassen und du steckst ihn in deine Ausgabe, das Update kannst du auch ganz spartanisch über einen kontinuierlichen Refresh der Seite lösen, ist ein Einzeiler.

Du kannst wenn du ganz auf C verzichten willst in Matlab auch das HTML Parsen und die Zeilen mit dem Wert auslesen und dann in Matlab in eine Zahl konvertieren.

Ich verwende privat oft den PI weil er billig ist und recht viel auf kleinem Platz vereint und grade wo es aufs Daten auslesen (nur nicht in Echtzeit), formatieren und präsentieren geht ist der PI nahezu unschlagbar. Außerdem kann man das ganze in Zukunft gut erweitern, wenn ihr euch vielleicht mal denkt ihr wollt auch einen Videostream könnt ihr eine Kamera an den PI hängen und einen einfachen Streamingserver draufspielen, das ganze dann noch ins HTTP rein und du siehst im Webbrowser die Messwerte und deinen Videostream.

Antwort
von JohnSchmitt, 28

Hallo,
ich benutze für sowas einen LabJack (LabJack.com) Die sind vertretbar teuer und gibt's sowohl als USB als auch per LAN- Variante. Ich habe mein Modell damals genau aus dem Grund gekauft, weil es von MATLAB unterstützt wird.

Antwort
von harry52, 17

Die beschriebenen Anforderungen sollte ein ein Controller von WAGO. z.B. PFC100 erfüllen. Auch Panels sind verfügbar (Perspecto) die ebenfalls als Control-Panel die Aufgabe lösen können.

Keine passende Antwort gefunden?

Fragen Sie die Community