Raspberry Pi per Modbus einen Beckhoff BC9000 auslesen

SPSMichi

Level-2
Beiträge
38
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,
ich bin neu im Forum und suche Hilfe beim meinem folgendem Problem.

Ich habe vor mit einem Raspberry Pi 4 Model B einen Beckhoff BC9000 auszulesen und werte auf ihm zuschreiben. Ich habe mir dazu den besagten Rspi besorgt und Codesys 3.5 heruntergelden.
Das hat alles geklappt. Ich kann den Rspi programmieren und bespielen. Soweit so gut.

Jetzt war mein nächster Schritt den Beckhoff Controller per Modus die Eingänge auszulesen, zu verknüpfen und Ausgänge zu schreiben.

Ich habe in Codesys den Modbus Master und den Modbus Slave angelegt. Das Problem ist das mir Codesys beim "Online gehen" sagt das der Bus vom Modbus Slave (BC9000) nicht läuft.

Ich habe in meinen Einstellungen nichts gefunden, was damit zusammen hängen könnte. Theoretisch müsste man ja eigentlich nur den Bus starten. Ich weiß leider nicht wie und ob es in Codesys möglich ist die Beckhoff anzusprechen.

Hat jemand spontan eine Idee.

Vielen Dank im voraus.

Gruß SPSMichi
 
Das hat prinzipiell zu funktionieren.

Ob BC oder irgend was anderes ist egal solange Modbus (in deinem Fall TCP) gesetzt ist.
Die Gretchenfrage = und hier fand ich die Doku von Beckhoff immer etwas schwer zu lesen ist welche Modbus-Register du im BC ansprechen sollst.

Damit man dir hier weiterhilft wäre es hilfreich wenn du uns sagst was du in der TC-Welt, d.h. auf dem BC9000 lesen/schreiben willst.
E.g. die EA am BC oder auf Variablen im Programm (auf welcher Adresse sind diese dann...)

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Guga,
Danke für deine Antwort.
Ich habe aktuell zwei Eingangs Karten(8x 24V Input DI) und zwei Ausgangs Karten (8x Output DQ).
Ich habe mir von einem SPS Coach sagen lassen, das bei wago die Modbus-Adressen immer identisch mit den gesteckten Karten ist. Also sprich= erste Karte erste Eingang Adresse 1, erste Karte zweiter Eingang Adresse 2. So habe ich das auch in den technischen Unterlagen von beckhoff gelesen.

Mein Ziel ist es fürs erste, wenn ich an meinem BC den Eingang 1 schalte, will ich das in Codesys der Wert von false auf true gesetzt wird.

Eigentlich nichts dramatisches, aber anscheinend ist der Bus auf Stop gesetzt.

Ich hoffe ich habe deine Frage beantwortet.

Danke im voraus

Gruß SPSMichi
 
Warum Master und Slave, also 2 unterschiedliche Verbindungen?
Normal ist einer der Client (bei RTU Master) und der andere der Server (bei RTU Slave).
Wenn der Raspi die Fragen stellt, ist er nur Client, kann lesen und schreiben. Beckhoff ist Server und macht alles, was der Client fragt.
 
Zuletzt bearbeitet:
MMhm. Wie Ludewig schon sagt musst die Arbeit (der Master oder Client je nach Sprachgebrauch) im Raspi gemacht werden, der BC9000 reagiert nur (Slave oder Server je nach Sprachgebrauch).
Die Regeln für die Adressen sind noch ein bisschen komplizierter wenn man Analog und Digitale Baugruppen mischt. In deinem Fall ist das aber uninteressant und die 2 DI-Klemmen sollten auf der Adresse %MW0 liegen. Die Analog-Karte dann auf %QW0 und %QW1.
(wobei ich hier europäisch zähle und mit 0 anfange, die Amis starten mit 1).
Ich bin kein Freund von den digitalen Modbus-Funktionen. Insofern würde ich die Modbus-Register lesend und schreibend mit der Funktion 3 nutzen. D.h. du liest und schreibst auf den Offset 0 (was manchmal gedanklich etwas tricky ist, aber es werden tatsächlich auf 2 verschiedenen Adress-Bereichen gearbeitet).

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Bereich Adressierung herrscht beim Modbus nach all den Jahren ziemlicher Wildwuchs, vor allem wenn man erst mal über Wortgrenzen hinausgeht. Das war wohl am Anfang nie vorgesehen. Ohne Probieren habe ich das noch nie hinbekommen. Ein bisschen Swappen und Umsortieren gehört irgendwie dazu, aber sonst ist das eigentlich robust.
 
Zurück
Oben