Prozessvisualisierung aber wie und mit was

So Servus,

ich kann mit einem LCD ja relativ einfach schnell ein paar Daten anzeigen, aber das gefällt mir nicht, denn ich hab ca. 30 Datenpunkte (20analog) und will mich nicht laufend durch irgendwelche Menüs klicken. Bisher hatte ich Arduino -> seriell -> PC mit Logview. Das funktioniert recht gut, ist aber auch sehr eingeschränkt, außerdem will ich dafür nicht dauerhaft einen PC abstellen. Nächste Idee ist also dann ein RasberryPI allerdings hab ich da noch überhaupt keine Ahnung wie man das angehen kann. Was ich brauche: aktuelle Werte als Dezimalzahlen oder Bargraphen und natürlich mehrere Charts angezeigt auf einem kleinem LCD-Monitor. Datenübertragung soll weiterhin über serielle Schnittstelle laufen. Ethernet ist auf dem Arduino zu aufwendig und wird vermutlich meine Steuerung enorm verlangsamen. Außerdem wird später noch ein zweiter Arduino hinzukommen.

Achja das ganze wird ne Heizungssteuerung.

Danke fürs lesen usw. :)

Hab hier gerade eine wirklich interessante Seite gefunden. Es gibt ja doch deutlich mehr Scada Systeme für Linux als erwartet.

http://linuxscada.info/

Ist in Deinem Post auch eine Frage (bzgl. Arduino) versteckt? Wenn ja, dann habe ich sie noch nicht gefunden.

Danke fürs lesen usw

Gern geschehen.

Braucht es hier Fragen um Antworten zu bekommen ?
Dies ist keine Frage :wink:

Ethernet ist auf dem Arduino zu aufwendig und wird vermutlich meine Steuerung enorm verlangsamen.

Ich dachte, das Grund-Problem bei einer Heizungssteuerung ist, sie träge genug zu machen :slight_smile:
Für Webseiten gibts googlecharts und auch sonst viel Schnickschnack
— Aber eigentlich solltest du recht haben: Ein µC macht die Steuerung, aber nicht die Visualisierung —

P.S. Es gibt bedeutend weniger opensource Scada Systeme als in deinem Link

  • Warum beschränkst du dich auf Linux? ( Achso, dein PasPI )
  • warum suchst du nach Scada Systemen, für eine Heizungssteuerung ?

Es kommt drauf an, was genau Du visualisieren willst. Leider hast Du keine genauen Angaben gemacht, sondern nur allgemeine Anforderungen. Da auch keine konkrete Frage in Deinem Post stand, was soll man Dir denn dann antworten.

Wenn es um die Verbindung Arduino - Raspberry geht, dann ist das auf kurzem Wege relativ einfach, denn Du kannst einen Arduino per USB mit dem Rapsberry verbinden, der dann per Serieller Verbindung (wie jetzt schon mit Deinem PC) mit dem Raspberry "reden" kann. Netzwerktechnisch kann dann auch der Raspi die Kommunikation übernehmen.

Als Display kannst Du auch den Raspi verwenden z.B. in verbindung mit sowas hier: Ebay 10" TFT für 12V und HDMI

Ausgabe z.B. ein Browser im Kioskmodus auf einem X ohne Windowmanager. Positiver Nebeneffekt: Wenn eh schon Web, dann kann man das Ganze auch remote bedienen.

Falls meine Ideen gar nicht passen, dann evtl. nochmal Deine Fragen / Anforderungen genauer definieren.

Mario.

Dann nochmal etwas konkreter:

  1. Software für die Visulasierung: Deswegen bin ich auf ein Scada/HMI System gekommen. Hier scheint es reichlich Auswahl zu geben aber leider erfährt man relativ wenig zum Umsetzungsaufwand. Die Frage lautet also ob es hier vllt. die eine oder andere Erfahrung gibt einen Arduino als Steuerung zu visualisieren.

  2. Es kommt per se nicht in Frage den µ-controller mit Visualisierungsaufgaben zu beschäftigen. Alleine schon wegen der notwendigen Stabilität würde ich alles was irgendwie sinnvoll ist und nicht zwingend für den eigentlichen Betrieb erforderlich ist, auslagern. Deswegen möchte ich auch nur eine Ankopplung über serielle Schnittstelle. Welches Protokoll sei mal dahin gestellt. Ich hab schon vor einigen Jahren mit der Modbus-Lib gespielt, das hat aber nie richtig gut funktioniert. Wo wir auch wieder bei Punkt eins wäre, ob hier jemand Erfahrung hat wie die Ankopplung an ein etwaiges Scada funktioniert.

  3. Es muss kein fertiges Scada-System sein, allerdings habe ich sehr wenig Erfahrung mit Web-Programmierung oder Windows-Programmierung. Auf der anderen Seite hätte ich auch kein Problem mit irgendwas Neuem an zu fangen :slight_smile:

  4. Aufgabe der Visualisierung: Datenpunkte darstellen in Zahlenform sowie in Verläufen, Archivierung, Fehlermeldungen archivieren, evtl. später Parameter an den Arduino zurückgeben (z.B. Heizkurve, Einschaltzeiten) muss aber nicht. Sie soll keine übergeordneten Steuerungsaufgaben übernehmen.

  5. Mir ist klar das,dass ganze nur am Rande etwas mit Arduino zu hat, aber sonst kenne ich auch vernünftiges Forum dazu.

Nochmals danke!

  1. Ich will erstmal nur eine örtliche Visualisierung. Eben genau das Anzeigen was sonst der Arduino über LCD machen würde.

OK, jetzt wird es etwas klarer. Danke für den Konkretisierung.

Die Verbindung Raspberry und Arduino scheint mir für Deinen Zweck recht sinnvoll. Der Einsatz zweier getrennter Systeme für die eigentliche Steuerung und für die Visualisierung und Controlling ist auf jeden Fall sinnvoll. Der Arduino als stabile und robuste Steuerung und der Raspberry für die Visualisierung.

Vom rein meachnischen Aufbau würde ich den Arduino mit einem eigenen Netzteil versorgen und per USB mit dem Raspberry verbinden. Damit ist die Stromversorgung schon mal redundant, da der Arduino automatisch zwischen den Stromquellen umschaltet. Wenn Arduino-Netzteil und Rapsberry dann noch über zwei getrennte Lichtkreise versorgt werden, ist das schon mal ein guter Anfang.

Die Kommunikation zwischen beiden per serieller Verbindung ist auch simple und Du hast auf dem Raspberry jede Menge Sprachen zur Auswahl, um mit dem Arduino zu kommunizieren. (Python, PHP, Perl, C, etc...) Hauptsache es gibt eine Lib für die serielle Schnittstelle.

Was Du dann als nächstes brauchst ist ein Protokoll, das definiert wie Daten vom Arduino und an den Arduino übertragen werden. Hier hängt es natürlich stark von Deiner Programmierten Steuerung ab. Da aber vermutlich Geschwindigkeit bei Deinem Protokoll eine untergeordnete Rolle spielt, da keine riesigen Datenmengen übertragen werden, sollte das Protokoll so gebaut sein, das es sich möglichst einfach (vor allem auf dem Arduino) umsetzen läßt. Z.B. durch "Nachrichten-Pakete" die immer den gleichen Aufbau und die gleiche Länge haben. Dann definiert man noch "Kanäle" die verschiedenen Sensoren oder Steuer-Gliedern entsprechen können. Beispiel: "$KANAL:BEFEHL:WERT$"

  • $ - ist das Start- und Ende Zeichen und darf im Text nicht vorkommen
  • : - ist das Trennzeichen, das die einzelnen Elemente trennt
  • KANAL - definiert z.B. einen Sensor (Temp) oder einen Stellwert (Stellwinkel eines Servos) etc.
  • BEFEHL - sowas wie SET (setzte einen Wert) oder GET (liefere einen Wert)
  • WERT ist dann der entsprechende Wert

Nun zu einem kleinen "Trick". KANAL, BEFEHL und WERT haben immer die gleiche Länge. KANAL = 2 bytes, BEFEHL = 1 byte, WERT = 20 byte. Mit den Start-, Ende- und Trennzeichen ist ein "datagramm" immer 27 Byte gross. Nicht verwendete Bytes werden ebenfalls mit den Trennzeichen aufgefüllt. Empfängt nun der Arduino ein Datagramm, kann er zunächst die Länge prüfen und für den Empfang einen festen Puffer verwenden. Erstes und letztes Zeichen müssen ein "$" sein, dann ist das Datagramm "gültig". Nehmen wir an, das Datagramm steht in einem Puffer (char buffer[27]) Nun werden alle ":" durch den Wert '\0' (nicht das Zeichen "0") ersetzt. Zusätzlich wird mit buffer[26] = 0; das letzte Zeichen ($) auch auf den Wert \0 gesetzt. dann ist "char* kanal = buffer[1];" ein C-String mit dem Kanal-Bezeichner den Du sofort verwenden kannst. char* command = buffer[4]; ist dann ein C-String auf den Befehl und char* value = buffer[6]; ist dann ein C-String auf den Wert. Durch die festen Längen der einzelnen Teile, entfällt das lästige Suchen nach dem Anfang des nächsten Wertes.

Das Ganze ist nur ein Anregung, sollte als Ausgangspunkt für eine eigene Entwicklung aber reichen.

Auf der Raspberry-Seite liest Du dann einfach nur die vom Arduino kommenden Daten die er regelmäßg schickt aus und kannst sie beliebig weiterverarbeiten. Z.B. in eine sqlite Datenbank schreiben und dann mittels Web-Scripten (z.B. PHP in Verbindung mit dem Apache-Webserver) zu einer für Dich sinnvollen Darstellung aufbereiten. Am Anfang vielleicht erstmal nur "lesend", also rein informative Darstellung der Daten. Später dann evtl. mit der Möglichkeit aktiv eingreifen zu können. Sprich über die Weboberfläche wieder Befehle an den Arduino zurück zu schicken.

So,ich hoffe das war jetzt nicht komplett "neben den Eimer gemolken" :)

Mario.

Danke. Ja so in der Art wäre das durch aus denkbar. Aber ich möchte erstmal bevor ich mich mit php auseinandersetze auf was "fertiges" setzen. Ich habe heute mal Mango m2m aufgesetzt. Soweit ich sehen kann macht das eigentlich so wie ich will. Aber wird nicht auf einem raspberry laufen. Zumindest nicht als client. Außerdem ist es leider nicht mehr opensource für den Privatanwender aber weiterhin kostenlos verwendbar. Das Schöne an Mango: Es ist klicki bunti :D

Sorry, aber dann ist das hier das falsche Forum. Wenn es um spezielle, proprietäre Software geht, solltest Du Dir für diese Software das passende Forum suchen. Wenn es um die Programmierung Deiner Steuerung auf dem Arduino geht, oder ggf. noch den Datenaustausch mit dem Raspberry, dann bist Du hier richtig.
Bisher scheint es Dir aber mehr um die Darstellung von Daten auf einem Fremdsystem zu gehen, als um das eigentliche Erzeugen von Daten auf dem Arduino. Dabei wird Dir hier vermutlich keiner großartig helfen können.
Solltest Du aber eine Anbindung des Arduino an das Protokoll eine passenden Software hinbekommen, wäre es natürlich toll, wenn Du dafür dann die passende Arduino-Lib bauen und hier (ggf. hier) vorstellen könntest. Zu allen dabei anfallenden Arduino-Fragen findest Du hier sicher Hilfe und Anregungen.

Mario.

Hallo an alle :)

da ich mich grad an Processing ran wage..... Wäre das nicht auch schon ausreichend für die Visualisierung auf anderen Geräten?

Wenn man so durchs Internet stöbert, taucht das auch immer mal wieder auf. Ich hab mich aber damit noch nicht beschäftigt und kann mir momentan auch nicht viel drunter vorstellen.

Momentan hab ich den folgenden Plan: Die wichtigsten Parameter auf einem seriellen LCD darstellen, das kostet wenig Ressourcen aufm Mega weil Hardware UART.

In der ersten Stufe werde ich weiterhin Logview laufen lassen, da extrem schnell Implementierbar. Wenn ich dann soweit glücklich bin und meine Steuerung fertig ist und stabil arbeitet werde ich mich nochmal im Detail mit einer Visualisierung beschäftigen, da man da wohl weichen stellen muss die dann das "ganze Leben" beeinflussen insbesondere wenn man wenig Zeit hat. Ein wesentlichen Faktor ist für mich einfach Stromverbauch vs. Prozessorleistung. Eigentlich wollte ich keinen PC dafür dauerhaft mehr abstellen. Auf der anderen Seite wird das mit Raspberry Ressourcentechnisch ziemlich eng. Mal schauen.

Auf der anderen Seite wird das mit Raspberry Ressourcentechnisch ziemlich eng.

Welche der von Dir beschriebenen Aufgaben soll den Raspberry nun genau überfordern? Die paar Zahlenreihen und Grafen auf dem Bildschirm darstellen bringt ihn sicher nicht aus der Ruhe.

Sicherlich nicht wenn man ne php Anwendung macht :).

Im übrigen hab ich mich heute mit www.proview.se auseinandergesetzt und mir gefällt das ganz gut. Hat auch einen Arduinotreiber als GPIO. Das Demo ist schnell geladen und man kann sich einen groben Überblick schaffen.

Sicherlich nicht wenn man ne php Anwendung macht.

Selbst das wird ihn nicht überfordern, vorausgesetzt, die Anwendung ist nicht katastrophal programmiert. Das Teil ist ein ausgewachsener PC, der meinen Server von vor zehn Jahren (damals eine High-End-Maschine) ganz schön alt aussehen lassen würde.

Jap das wollte ich damit sagen. PHP, mysql ist sicher kein Problem.