RevPi Messwertwandler: TCPModbus Slave & Master

Hier kannst du dein Revolution Pi Projekt der Community vorstellen
Dieter
Posts: 22
Joined: 06 Sep 2017, 16:21
Answers: 0

RevPi Messwertwandler: TCPModbus Slave & Master

Post by Dieter »

Hallo Zusammen,
ich war schon lange auf der Suche nach einem für mich und mein Projekt passenden Raspberry Pi. Durch einen glücklichen Zufall bin ich dann auf euer Produkt aufmerksam geworden. Da ihr bereits einige Funktionen in eurem Produkt integriert habt, die ich benötigte, habe ich nun den RevPi Core 3 bereits bei euch gekauft.

Was war mir wichtig:
1. Vernünftige Montagemöglichkeit auf Hutschiene
2. Einfacher Anschluss an eine Stromversorgung. Im vorh. Schaltschrank gibt es bereits ein 24VDC Stromversorgung.
3. Support, der ja offensichtlich über das deutschsprachige Forum bestens gegeben ist
4. Die wirklich hilfreichen Video Tutorials

Aber dennoch habe ich so einige Fragen, wo ich leider keine Antwort zu gefunden habe. nun an. Ich habe viel gelesen und habe mir auch viele Videos angesehen, aber leider bleiben da noch so einige Fragen offen, die ich hier gerne stellen würde.
1. Wofür ist der MicroUSB an der Frontseite
2. Warum gibt es nicht eine kleine Bedienungsanleitung, die die Hardware von dem RevPiCore 3 ein wenig beschreibt? Anschluss-Schema, wofür sind die Schnittstellen da, etc.
3. Was kann ich mit der kostenlosen logiCaD 3 so machen. Handelt es sich hierbei um eine Demoversion mit irgendwelchen Einschränkungen?
4. Was würde mir der zus. Kauf von logi.RTS multi task bringen und macht der Kauf in Verbindung mit der kostenlosen logiCad 3 überhaupt Sinn?

Mit welchen Vorkenntnissen beginne ich mein Projekt:
Bezüglich dem Raspberry Pi: Absolut gar keine
Bezüglich der Reglerprogrammierung: ca. 3 jährige Erfahrung als Hobbyprogrammierer, die Programmierung erfolgt über Funktionsbausteine (Fupla).
Sonstige Programmierkenntnisse: Basicprogrammierung, Makroprogrammierung

Jetzt möchte ich mein Projekt vorstellen:
Der RevPi soll über die USB Schnittstelle von einem Feinstaubsensor zwei Datenwerte auslesen. Dies habe ich bereits soweit hin bekommen. Den Feinstaubsensor kann ich über die Konsolenebene ansprechen und die Messwerte werden auch als Hexadezimalwerte zurückgegeben. Aber genau hier frage ich mich nun, wie kann ich die Werte mit einem noch zu erstellenden Programm (z.B. durch Programmierung in Python, oder auch logiCad) die Werte einlesen und weiter verarbeiten? Die beiden Messwerte sollen dann in einem TCP Modbus-Protokoll an einen übergeordneten Regler weitergegeben werden.
Des Weiteren soll der RevPi über das IP Netzwerk Daten von einem Gateway (M-Bus/Modbus Protokollwandler) der Fa. Wachendorff Daten auslesen und diese dann dem übergeordneten Regler über TCP zur Verfügung stellen. Um die ganze Angelegenheit etwas anschaulicher zu machen, habe ich dies mal als Übersichtgrafik zu Papier gebracht.
Uebersichtsgrafik
Uebersichtsgrafik
k-Raspi_Modbus&Feinstaub.jpg (83.17 KiB) Viewed 8658 times
Und jetzt gebe ich mich der Hoffnung hin, dass mir hier geholfen werden kann. :)

Dieter
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by volker »

Hallo Dieter,

vielen Dank für Dein Vertrauen. Ja, Dir kann hier bestimmt geholfen werden. ich versuche mal den Anfang zu machen:

Generell empfehle ich Dir auch den Blog komplett vom Anfang her zu lesen. Dort hatten wir letztes Jahr systematisch alle Komponenten des Systems beschrieben, noch bevor es erhältlich war.
Auf der Seite Deines RevPi Core findest Du das gesuchte Anschlussschema. Dort ist auch die Micor-USB zu finden mit der Beschriftung: "only for eMMC programming". Die Buchse ist die einzige Möglichkeit, dass Du Dein Speicherimage irgendwie auf einem PC sichern und wieder zurückspielen kannst. Dirk beschreibt das gleich im Tutorial 01 "Erstellen eines Image". Im "Quick Start Guide" Video ab Minute 4 zeigt Dirk auch die Verwendung der micro-USB Buchse.
Bei den schriftlichen Tutorials findest Du gleich im Überblick zum Core hierdie Tabelle mit allen Buchsen und der jeweiligen Beschreibung dazu...
Die schriftlichen Tutorials sind wie ein Handbuch zu lesen und die Kapitelübersicht links erleichtert dabei die Suche nach dem passenden Thema. Außerdem gibt es eine Suchfunktion auf der Webseite (Lupe im roten Balken oben). Wenn Du dort micro USB eingibst und bei den Ergebnissen die Werbeeinträge überspringst (wir nutzen google für die Suche, weil das viel bessere Ergebnisse bringt, als die Wordpress interne Suchmaschine), dann bekommst Du u.a. die oben erwähnte Tutorialseite als 3. Ergebnis und als 7. Ergebnis den Blogeintrag vom 25. Juli 2016, in dem die Buchse ebenfalls beschrieben wird.

Logi.CAD3:
Das ist der Editor, um in Structured Text (ST, eine der Srachen in der SPSen programmiert werden) oder in Fupla/FB ("function block") Steuerungsprogramme zu schreiben, die auf dem Core dann ausgeführt werden. Die kostenlose version des Editors hat keinerlei Einschränkungen bei ST. Aber um in FB zu programmieren musst Du die kostenpflichtige logi.CAD3 FBD-Light kaufen. Damit die in diesen Editoren geschriebenen Programme dann auch auf dem Core laufen, muss dort ein Dienst aktiviert werden, dies ist das logi.RTS ("RunTimeSystem"). das RTS liest Dein Steuerungsprogramm und führt es aus. Der Editor ist ein Windows (oder Linux) Programm, welches auf einem PC ausgeführt wird und das fertige Steuerungsprogramm dann über Netzwerkkabel auf den Core überträgt. (siehe dazu auch Video Tutorial 17). Der RTS-Dienst läuft ohne gültigen Lizenzschlüssel nur 1 Stunde, dann muss das System rebootet werden. Aber damit kannst im Prinzip ohne Geld in die Hand zu nehmen erst einmal alles ausprobieren. Die RTS-Lizenz ist für jedes gerät zu bezahlen, den Editor logi.CAD3 FBD-Light würdest Du natürlich nur einmal benötigen.

Nun zu Deinem Projekt:
Das lässt sich eigentlich alles problemlos machen. Allerdings wirst Du dafür nicht mit logi.CAD alleine klar kommen. Ob Du eine Steuerungssoftware überhaupt benötigst, ist für mich fraglich, denn dazu hast Du nichts gesagt. Wenn Du eigentlich gar keine DIO / AIO Module etc. verwendest, sondern das gerät mehr als Gateway betreiben willst, dann ist eine Steuerungssprache wie FB oder ST eigentlich nicht die beste Wahl. Z.B. kannst Du ohne zusätzlichen Programmieraufwand dort nicht einfach Dein USB-Messgerät einbinden. Und wenn Du eh programmieren musst, dann kannst Du den Rest der beschriebenen Aufgaben auch gleich direkt mit programmieren.
Der Modbusdatenaustausch ist bei uns von Hause aus gleich im Gerät eingebaut. Du musst ihn nur über PiCtory konfigurieren, indem Du dort einen Modbus Master und einen Modbus Slave anlegst. Beide "virtuellen Module" wollen ihre Modbus-Daten mit dem sogenannten Prozessabbild (PA) austauschen und daher wird für die Module dort im PA Speicher jeweils 32 Doppelbyte (Word) für Modbusrgeisterdaten und 32 Bit für ModbusCoildaten reserviert (jeweils für Ein- und Ausgangswerte). Die Modbusmodule kümmern sich dann völlig eigenständig darum, dass zyklisch die Modbusdaten mit diesen Werten im PA ausgetauscht werden.
Dein Anwendungsprogramm muss nun einfach Werte in das PA schreiben oder dort lesen und entsprechend weiterverarbeiten. Der Zugriff geht recht einfach. Das einfachste wäre, Du versuchst Python zu lernen. Da gibt es sehr viele Tutorials und Bücher zu und das ist nicht wirklich viel schwerer als Basic zu lernen. Der Zugriff mit Python aufs PA wird in mehreren Tutorials von uns mit Beispiel beschrieben. Wenn Du das einfach haben willst, schau mal Sven Sagers Blogseiteim Web vorbei.
Das Auslesen des Sensors über die USB wird mit Python auch super easy gehen, da das Teil offenbar eine serielle Verbindung aufbaut. Dafür kannst Du in Python das device "tty0" öffnen und wie eine Datei beschreiben und lesen.

Eine Alternative wäre natürlich für das Weiterreichen von Daten von einem Sender zu einem Empfänger die Software "Node red". Vielleicht gibt es sogar schon einen Node für Deinen Sensor unter Linux, dann könntest Du dort sofort loslegen, denn das ist eine grafische Programmiersprache, bei der du nur Kästchen verbindest. Hier im Forum gibt es einige Leute, die sich mit Node Red befassen und vielleicht dort auch weiterhelfen können, damit Du die Modbus-Daten aus dem PA über Node red weiterverarbeiten kannst.

jedenfalls wünsche ich Dir viel Erfolg bei Deinem spannenden Projekt. Halte uns auf dem Laufenden, damit wir Dich ggf. unterstützen können.
Unser RevPi Motto: Don't just claim it - make it!
Dieter
Posts: 22
Joined: 06 Sep 2017, 16:21
Answers: 0

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by Dieter »

Hallo Volker,

vielen Dank für die schnelle und ausführliche Rückmeldung. Da habe ich wohl noch so einiges übersehen bzw. noch nicht gelesen. Aber ich habe den RevPi auch erst seit einer Woche. ;)

Den Blog und seine Einträge habe ich heute erst entdeckt. Da hatte ich deine Antwort allerdings noch nicht gelesen. Es ist gar nicht so einfach die ganzen Informationsquellen zu finden, zu lesen und zu verstehen.

Wie ich die Beschreibung für das Anschlußschema übersehen konnte ist mir ein Rätsel.

Heute habe ich mich mal mit logiCAD 3 beschäftigt. Am Ende habe ich mich schon gefragt, ob die Software für mein Projekt überhaupt geeignet ist. Du hast da ja auch so deine Zweifel angemeldet.
Komisch für mich war nur wieder, dass ich das in der Bedienungsanleitung von logiCad 3 auf Seite 131 - 132 beschriebene Beispielprogramm nicht in den RevPi laden konnte.
Bis zu dem Punkt "Anwendung auf Revolution Pi laden und testen" hat alles prima funktioniert. Bei dem Versuch das Programm in den RevPi zu laden kam folgende Fehlermeldung:
Fehlermeldung
Fehlermeldung
k-Fehlermeldung_1.jpg (31.09 KiB) Viewed 8644 times
SPS-Informationen Channel
SPS-Informationen Channel
k-Fehlermeldung_2_.jpg (41.52 KiB) Viewed 8644 times
Die IP-Adresse kann aber nicht falsch eingetragen sein und ist wohl auch übernommen worden, da der Projektexplorer auf den RevPi problemslos zugreifen kann.
IO-Informationen übernehmen
IO-Informationen übernehmen
k-Fehlermeldung_4.jpg (55.44 KiB) Viewed 8644 times
Die LogiCad Software ruft bei dem Versuch die IO-Konfiguration zu bearbeiten über meinen Browser 'PiCtory - 1.2.3' auf.
Vielleicht stimmt die Portadresse nicht, oder es liegt an dem fehlenden Steuerungsprogramm?
Auch wenn ich wahrscheinlich nicht mit logiCAD weiter machen werde, interssieren würde es mich ja schon wo ich hier was falsch gemacht habe.

Ich schaue mir mal in den nächsten Tagen die Software Node red an. Scheint ja genau das richtige für mein Projekt zu sein. Ansonsten muss ich wohl mit Python weiter machen.
Ach ja, in meinem Projekt hatte sich ein kleiner Gedankenfehler eingeschlichen. Es macht wohl wenig Sinn die Daten vom M-Bus/Modbus Gateway erst mit dem RevPi einzulesen
und dann an den SAIA Regler weiterzugeben. Damit spare ich mir die Masterfunktion am RevPi. Die Daten des Feinstaubsensors als Modbus Slave zur Verfügung zu stellen wäre
dann im Moment die einizg verbleibende Aufgabe für den RevPi. Aber da kommt in Zukunft mit Sicherheit noch etwas dazu. :lol:

Ich habe gestern den RevPi schon mal als Modbus Slave eingerichtet. Wo und wie kann ich die Modbusadresse einstellen? Die Slave-Adresse steht im Moment auf '001'

Dieter
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by volker »

Hi,
also bei logi.cad tippe ich einfach mal darauf, dass der RevPi schon länger als 1h lief und damit logi.RTS beendet wurde. Versuch mal den RevPi runter und wieder hoch zu fahren und dann das Projekt zu übertragen. Wenn das nicht funktioniert, dann beschreibe Dein Problem mal im logicad-Forum. Dort liest das Support-Team von logi.cals mit und wird sich sicher um Dein Problem kümmern...
Zum Modbus Slave: Eine Modbusadresse gibt es nur bei Modbus RTU. Unter Modbus TCP dient die IP-Adresse in Kombination mit dem Port (den kannst Du im Werteeditor bei PiCtory einstellen) als Geräteadressierung. Die "Device-ID" soll laut Modbus eigentlich ausschließlich für Gateways von TCP auf RTU genutzt werden. In einem solchen Gateway slave wird diese ID in eine Modbusadresse für RTU umgesetzt. "normale TCP-Slaves" sollten die Geräte ID eigentlich nicht auswerten. Ich befürchte, dass unser virtuelles Modul hier aber eine 1 erwartet. Mehrere Slaves in einem TCP-Netz sollten sich entweder über ihre IP unterscheiden oder aber über den Port. Reserviert ist allerdings der Port 502 (unsere Defaulteinstellung) für Modbusverbindungen.
Unser RevPi Motto: Don't just claim it - make it!
Dieter
Posts: 22
Joined: 06 Sep 2017, 16:21
Answers: 0

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by Dieter »

Hallo Volker,

ich bin wieder ein Stück weiter gekommen.
Es ist mir nun gelungen, das Problem mit dem durch das Pollen des Modbus Registers und dem damit verbundenen ständig neu schreibenden Ausgangswert für das Node zur Steuerung des Feinstaubsensors in den Griff zu bekommen. Am Ende war es ganz einfach zu lösen, auch ohne ein eigenes Skript schreiben zu müssen. Es gibt ein fertiges Node dafür, das "rbe (report by exception) ". Das Node schreibt erst bei einer Veränderung des Eingangswertes einen neuen Ausgangswert. Gefunden habe ich den entscheidenen Hinweis in einer Vorbereitung zur Bachelor-Arbeit der Hochschule für Technik in Berlin. Die Arbeit beschäftigt sich mit Node-RED als Werkzeug für die visuelle Programmierung. In einem Kapitel wird dort auch auf die einzelnen Funktionen der Nodes kurz und prägnant eingegangen.

Und nun läuft fast alles wie gewünscht, auch ohne ein Hardware-DI. :D
Feinstaubmessung.jpg
Feinstaubmessung.jpg (50.08 KiB) Viewed 8578 times
Jetzt gibt es noch einige wenige Baustellen:
1. Wie kann ich Node-Red automatisch nach Netzwiederkehr starten lassen?
2. Wie kann ich den Modbustreiber automatisch zurück setzen lassen? Denn ohne funktioniert der Modbus Slave nach einem Neustart des RevPi nicht.
ResetTreiber.JPG
ResetTreiber.JPG (33.01 KiB) Viewed 8578 times
Im Moment mache ich dies noch alles händisch. Nach meinem Verständis sollte dies nach einem Netzausfall automatisch ablaufen.

Gruß Dieter
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by volker »

Hallo Dieter,

irgendwie scheinen wir immer noch von unterschiedlichen Dingen zu reden. Du beschreibst jetzt Modbus unter Node Red. Gut, wenn es da eine Möglichkeit gibt, dass einzelne Modbustelegramme gesendet werden können (also a-zyklisch). Das hat aber gar nichts mit unserem RevPi Modbus Master / Slave zu tun, sondern für Node-Red gibt es nach meiner Kenntnis eine eigene Modbusbibliothek, die dann wahrscheinlich so einen Modbus-Node bereitstellt. Bei dieser kannst Du wahrscheinlich solche einzelnen Telegramme auch senden. Aber dafür brauchst Du unseren Modbus-Stack nicht. Im Gegenteil, Du solltest unseren Stack im Web-Status dann deaktivieren und in PiCtory auch keinen Modbus konfigurieren, da sich die beiden Stacks sonst eventuell in die Quere kommen. Die Konfiguration eine Modbus-Nodes geschieht dann auch in Node-Red.
Das ist eine Schiene, die eigentlich aktuell noch ganz an unserer Software vorbei arbeitet. Daher kann ich Dir auch leider nicht sagen, wie Du mit Node-Red automatisch nach einem Netzwerkstart Nodes aktivieren kannst. Wir wollen in den nächsten Monaten uns intensiver mit einer guten Integration von Node-red in unsere Software befassen und dann auch mit der Verwirrung bei Modbus aufräumen. Aber aktuell sind das leider 2 völlig getrennte Systeme.

Wenn der Modbus-Dienst bei Dir tatsächlich überhaupt noch verwendet wird (was mich wundern würde, denn der überträgt völlig unabhängig von was auch immer Du in Node Red machst seine Daten grundsätzlich zyklisch) und dieser Dienst nach einem Systemstart nicht automatisch anläuft, dann hast Du keine aktuelle Version der Software, sondern eine alte, die diesen Bug hatte:
https://revolution.kunbus.de/forum/view ... f=16&t=324
Bitte mach ein Upddate der Software, wie bereits mehrfach in Foren beschrieben:

Code: Select all

sudo apt-get update
und dann

Code: Select all

sudo apt-get upgrade
Danach sollte der Modbus Dienst automatisch anlaufen. Aber wie schon gesagt, wenn Du jetzt direkt über Node Red Modbus Nodes verwendest, dann brauchst Du diesen Dienst nicht, solltest ihn sogar deaktivieren.

Generell empfehle ich Dir, das Forum Neuigkeiten & Ankündigungen zu abonieren, damit Du solche Hinweise auf Bug-Releases auch zeitnah mitbekommst.
Unser RevPi Motto: Don't just claim it - make it!
Dieter
Posts: 22
Joined: 06 Sep 2017, 16:21
Answers: 0

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by Dieter »

Hallo Volker,

erst einmal vielen Dank dafür, dass du mir immer so ausführlich antwortest. Das mit den Updates werde ich umgehend machen.

Leider kann ich diese Aussage nicht bestätigen:
Danach sollte der Modbus Dienst automatisch anlaufen. Aber wie schon gesagt, wenn Du jetzt direkt über Node Red Modbus Nodes verwendest, dann brauchst Du diesen Dienst nicht, solltest ihn sogar deaktivieren.
Ohne dass ich den Modbus Dienst unter PiCtory aktiviere geht mit Modbus unter NodeRed rein gar nichts. Es entsteht absolut keine Verbindung. Deshalb bin ich bisher immer davon ausgegangen, dass man im Hintergrund erst einmal ein Modbus Modul starten muss. In der Praxis funktioniert dies dann auch mit dem RevPi so. In der Zwischenzeit hatte ich mir noch einen Raspberry Pi 3 zugelegt, alles geupdatet und geupragded inkl. Node-Red.
Ergebnis: Modbus läuft bei mir unter NodeRed nicht. Es wird von den Modbus Note Write und Read Modulen immer nur "Disconnect" angezeigt.
Da NodeRed für mich absolutes Neuland ist habe ich auch keine Idee mehr, was ich unter NodeRed noch zusätzlich machen muss, um den Modbus zu aktivieren.

Beim Raspberry Pi kann es nicht daran liegen, dass hier noch Updates/Upgrades nicht durchgeführt wurden, da ja alles auf dem aktuellen Stand ist.

Im Internet bin ich leider zum Thema Modbus unter NodeRed nicht weiter fündig geworden. Da wird immer nur gezeigt wie einfach es funktioniert und nachdem was man dort sieht würde ich deine oben zitierte Aussage auch zu 100% bestätigen.

Ich werde heute mal die ausstehenden Updates und Upgrades am RevPi durchführen. Node Red hatte ich schon vor Wochen auf den aktuellen Stand gebracht.

Ich werde hier weiter berichten und vielleicht hat ja auch noch jemand eine Idee wie Modbus unter NodeRed direkt lauffähig wird. Manchmal sind es ja nur Kleinigkeiten und meistens sitzt das Problem ja vor dem Computer.

Gruß Dieter
Dieter
Posts: 22
Joined: 06 Sep 2017, 16:21
Answers: 0

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by Dieter »

Hallo Volker,

ich hatte bisher noch keinen Modbus Server eingerichtet, deshalb kam es zu folgenden Fehlermeldungen. Diese blieben aus, wenn ich das Server Modbus Modul unter Pictory gestartet habe.
Start Node-RED

Once Node-RED has started, point a browser at http://192.168.xxx.xx:1880
On Pi Node-RED works better with the Firefox or Chrome browser

Use node-red-stop to stop Node-RED
Use node-red-start to start Node-RED again
Use node-red-log to view the recent log output
Use sudo systemctl enable nodered.service to autostart Node-RED at every boot
Use sudo systemctl disable nodered.service to disable autostart on boot

To find more nodes and example flows - go to http://flows.nodered.org

Starting as a systemd service.
Started Node-RED graphical event wiring tool..
12 Oct 10:25:44 - [info]
Welcome to Node-RED
===================
12 Oct 10:25:44 - [info] Node-RED version: v0.17.5
12 Oct 10:25:44 - [info] Node.js version: v6.11.4
12 Oct 10:25:44 - [info] Linux 4.4.50-rt66-v7+ arm LE
12 Oct 10:25:46 - [info] Loading palette nodes
12 Oct 10:25:53 - [warn] [modbustcp-no-pooling-server] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
12 Oct 10:25:53 - [warn] [modbustcp-no-pooling-write] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
12 Oct 10:25:53 - [warn] [modbustcp-no-pooling-read] Deprecated call to RED.runtime.nodes.registerType - node-set name must be provided as first argument
12 Oct 10:25:55 - [info] Dashboard version 2.4.3 started at /ui
12 Oct 10:25:56 - [warn] ------------------------------------------------------
12 Oct 10:25:56 - [warn] [pythonshell] Error: Cannot find module './PythonshellNode' (line:19)
12 Oct 10:25:56 - [warn] ------------------------------------------------------
12 Oct 10:25:56 - [info] Settings file : /home/pi/.node-red/settings.js
12 Oct 10:25:56 - [info] User directory : /home/pi/.node-red
12 Oct 10:25:56 - [info] Flows file : /home/pi/.node-red/flows_RevPi2787.json
12 Oct 10:25:56 - [info] Server now running at http://127.0.0.1:1880/
12 Oct 10:25:57 - [info] Starting flows
12 Oct 10:25:57 - [info] Started flows
12 Oct 10:25:57 - [info] [rpi-sds011:SDS011] Serial port is open
12 Oct 10:25:59 - [warn] [modbus-write:Write1] FSM Reset On State INIT
12 Oct 10:25:59 - [warn] [modbus-write:Write2] FSM Reset On State INIT
12 Oct 10:25:59 - [warn] [modbus-write:Write3] FSM Reset On State INIT
12 Oct 10:25:59 - [warn] [modbus-write:Write4] FSM Reset On State INIT
........
Nachdem ich nun einen Server auf meiner zentralen Steuereineinheit eingerichtet habe, geht die Fehlermeldung im Modbus Read (Disconected) nun weg. Ich glaube, ich muss hier noch einmal ran, so ganz verstehen tue ich dass alles noch nicht.

Es hat sich noch ein weiteres Problem aufgetan. Ich habe, wie von dir empfohlen, alle Updates und Upgrades durchgeführt. Wenn ich unter APPS PiCtory aufrufe (grünen Start Button), dann steht in der Statuszeile https//127.0.0.1/pictory/index.html?hn=HUB87NFYFG und der Bildschirm bleibt vollständig grau. Den Modbus Server habe ich, nachdem der Bildschirm beim Aufruf von PiCtory immer grau bleibt, nun unter Service abgeschaltet.
k-2017-10-12-124551_1920x1200_scrot.png
k-2017-10-12-124551_1920x1200_scrot.png (9.93 KiB) Viewed 8555 times
k-2017-10-12-125421_1920x1200_scrot.png
k-2017-10-12-125421_1920x1200_scrot.png (168.64 KiB) Viewed 8555 times

Gruß Dieter
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by volker »

Hallo Dieter,
ich denke wir kommen am besten weiter, wenn du nun erst einmal deine Lösung mit Node-Red genauer beschreibst und mit Screenshots vor allem mal zeigst, wie Du unter Node-Red auf Modbus zugreifst. Woher hast du die Infos dazu und woher die Nodes? ich wüsste nicht, dass jemand Nodes geschrieben hat, die mit unserem Modbus deinst von RevPi kommunizieren? Wenn cih da besser verstehe, was du eigentlich machst, dann kann ich vielleicht besser weiterhelfen. Du hast jetzt eine ganze reihe Probleme und Fehler beschrieben und wir müssen systematisch vorgehen, um alles zu sortieren und dann zu lösen. Also erts inemal muss ich daher deine Anwendung besser verstehen und genau wissen, was du da in Node-red eigentlich verwendest.
Danach müssen wir verstehen, waurm Dein Slave bei dieser Art der Modbus-nutzung im Sleep bleibt, obwohl mit unserem Modbus Master definitiv zyklisch weiter Kommandos gesendet werden. Dafür wäre es gut, wenn Du mir einen Link auf das Manual des Slavegerätes zusendest. dann kann ich da mal reinschauen und prüfen, wie sich das mit dem Sleep und Modbuszugriffen verhält.
Wenn ich das dann soweit geprüft und verstanden habe, dann kümmern wir uns um die konkreten Probleme mit PiCtory nach dem Update.
Unser RevPi Motto: Don't just claim it - make it!
Dieter
Posts: 22
Joined: 06 Sep 2017, 16:21
Answers: 0

Re: RevPi Messwertwandler: TCPModbus Slave & Master

Post by Dieter »

Hallo Volker,

ich bin gerade schon dabei, noch einmal ganz neu zu starten. Vergiss bitte die sleep und work Befehle, diese werden seriell an den Feinstaunsensor geschickt. Das Problem habe ich ja bereits gelöst.

Fangen wir mit NodeRed und Modbus an.

Ich möchte mehrere Daten am RevPi auslesen, nehmen wir einmal die CPU Temperatur. Der Temperaturwert soll in ein Register geschrieben werden und dann über Modbus an den SAIA-Regler übergeben werden. Dies alles funktioniert ja auch soweit, wenn ich das Slave Modbus Modul unter Pictory eingerichtet habe.

Ich habe gerade diese Anleitung nachgestellt: https://www.youtube.com/watch?v=tO5XB2NGRPc

Man sieht dort, das NodeRed unter der IP Adresse 192.168.0.21:1880 läuft. Bei der Einrichtung der Modbus Node Module für den Server für Read und Write wird die IP-Adresse 192.168.0.15 eingegeben. Dass heißt für mich, im Netzwerk muss ein Modbus-Server vorhanden sein. Node Red stellt keinen Server oder Master zur Verfügung.

Hier das Ergebnis des nachgestellten Beispiels am RevPi:
Beispiel1.JPG
Beispiel1.JPG (17.61 KiB) Viewed 8544 times
Im oberen Modbus LeseNode habe ich die IP Adresse meines Reglers eingegeben, auf dem ein Modbus-Server läuft. Dieser wird gepollt.
Im unteren Modbus LeseNode habe ich die IP Adresse des RevPi mit deaktiviertem Modbus Slave eingegeben.

Nach meinem Verständnis stellt NodeRed keinen Master oder Slave zur Verfügung.

Liege ich damit richtig?

Gruß Dieter
Post Reply