Modbus zweier Geräte untereinanderdolmetschen

Hallo,
eventuell hat jemand eine Idee dazu.

Gerät A, ein Controller, kommuniziert mit einen Frequenzumrichter über Modbus RTU.
Der Frequenzumrichter ist defekt und nicht mehr lieferbar und soll gegen einen Geräte-fremden Frequenzumrichter ersetzt werden.

Meine Idee, man könnte einen Arduino zwischen den alten Controller und den neuen Frequenzumrichter schalten.

Ist es möglich zuerkennen, welches Register der Controller gerade anfragt, sendet?
Oder muss ich exakt wissen welchen Register ich lesen oder schreiben möchte.
Knackpunkt, ich kenne die Register-adressen vom Controller nicht.
Die vom alten Frequenzumrichter aber schon.
Wird etwas kritisch oder?

Das geht schon, ist aber Frickelei.

Du könntest einen ESP32 (WROOM oder WROVER, du brauchst zwei UARTs und zwei RS485-Adapter dafür) mit meiner eModbus-Library als RTU/RTU-Bridge aufsetzen und dazwischen hängen.

Dann kannst du zunächst als Sniffer mitlesen, was der Controller da fragt. Mit der Registerliste von altem und neuem Frequenzumrichter kannst du dann geduldig eine Übersetzungsliste (Register, Werte und Formate) zusammenstellen.

Schließlich lässt du die Bridge (jetzt tatsächlich in dieser Funktion) anhand der Liste das Übersetzen übernehmen.

Schönes Projekt, aber aufwendig. :thinking:

du müsstest nicht nur rausfinden, welche Register der Controller anfordert sondern du müsstest auch rausfinden was dein kaputter Frequenzumrichter zurückgesandt hat bzw wie die Daten aufbereitet wurden.

Die Doku zum kaputten Frequenzumrichter hat er - die könnte helfen.

@Ralle66
... wenn du nicht weist was der Controller normalerweise alles anfragt aber ein Datenblatt für den kaputten Frequenzumrichter hast dann würde ich beginnen "alles" zu implementieren. Du weist ja gar nicht was der Controller unter welcher Bedingung eventuell anfragen könnte und zu welchen Überraschungen es dann im laufenden Betrieb kommen kann falls dein Nachbau mit einem Fehler antwortet weil du es nicht implementiert hast.

1 Like

Hi,
ich gehe morgen zum Kunden und schau mir das noch einmal genau an.

Ich benötige zwei RS485 weil einer als Master und einer als Client läuft?

Controller <----> RS485 Master - Arduino - RS485 Client <----> FU

Sehe ich das so richtig?

Der alte Umrichter ist ein Siemens und ich weiß nicht ob die noch als Schutz ein Register mit Password oder Erkennungs-Code belegt haben.

Ich werde den Controller checken und eventuell ausbauen.
Als Test werde ich mit Python am Linux-Rechner ein Script schreiben und schauen ob der Controller ohne Fehler läuft.
Dazu werde ich die Register, wenn ich die vom Siemens-FU habe mit Fake-Werten belegen.
Wenn das funktioniert, kommt der Arduino ins Spiel :slight_smile:

Gruß
Ich werde berichten.

du wirst zwei Buse brauchen.

ich würde das so beschreiben:

controller (master) -> RS485_BUS1 -> Arduino (slave)
Arduino (master) -> RS485_BUS2 -> Neuer FU (slave)