Heidelberger Energy Control über Modbus RTU mit Beckhoff CX verbinden

good_mike

Level-1
Beiträge
55
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte meine neue Wallbox "Heidelberger Energy Control" mit meine Beckhoff CX9020 (TwinCat 2) verbinden.
Im CX ist einen KL6021 verbaut.
Die ModbusRTU.lib Bibliothek habe ich eingebunden.

Mit dem Beispiel und der Doku auf der Beckhoff Seite (siehe Anhang) komme ich einfach nicht klar.

Es wäre echt super wenn jemand einem "Newbie" etwas Starthilfe geben könntet.
Hab zwar schon einiges mit meinem CX in Bezug auf meine Haussteuerung gemacht, aber Modbus ist absolut neu für mich.


Vielen Dank im Voraus

good_mike
 

Anhänge

  • ModBus_register_table.pdf
    81,3 KB · Aufrufe: 19
  • ModbusRtuMasterPc.zip
    12,6 KB · Aufrufe: 9
na so schlimm ist das jetzt auch nicht.
Du musst einen n ModbusRtuMaster_KL6x5B -Baustein zyklisch aufrufen. Die Auswahl dieses Bausteins erfolgt durch die EA-Größte deiner seriellen Schnittstelle (5Byte). Und der Baustein hat intern %I* und %Q*-Variablen die du entsprechend verknüpfen musst.

On top musst du jetzt deine Befehle über die zum lesen/schreiben aufrufen.
ModbusFunktion 3: <ModbusMaster>.ReadRegs
ModbusFunction 6: <ModbusMaster>.WriteSingleRegister

Ich an deiner Stelle würde z.B. einen ReadRegs-Aktion aufrufen mit einer Union für ein WordArray und deiner Struktur (mit {attribute 'pack_mode' := '1'}) das dir die Register 4-18 abbildet und das Ganze dann lesen. Bei Modbus ist es immer etwas unsicher ob die jeweiligen Stellen mit 1 oder 0 anfangen zu zählen insofern musst du da probieren. Also eine länge von 12 Wörtern ab Register 4 (oder eben 3) lesen....

Guga
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, vielen Dank für die Antwort! Das bringt mich, glaube ich zumindest, schon mal ein Stück weiter.
Leider komme ich nur am Wochenende dazu mich mit der Sache intensiv zu beschäftigen.

Muss ich noch irgendwo die Verbindungsparameter der KL6021 Karte konfigurieren? - Wahrscheinlich schon....

Danke!!

good_mike
 
Schau in diesen Thread und die Doku der Klemme und deiner Wallbox. Ich vermute du wirst noch Halb-Duplex konfigurieren müssen ...

 
Hallo,

das zitierte Beispiel
ist echt super zu verstehen.
Leider kommt aber schon bei der Config der KL6021, sobald ich das Bit "bExecuteConfiguration" setze ein Fehler
Fehler_Com.png

Im Systemmanager habe ich die Variablen wie folgt verknüpft:
Systemmanager.png

Leider sehe ich aktuell keinen Ansatz wo der Fehler liegen könnte!

Habt Ihr evtl. einen Tip für mich?

Besten Dank im Voraus!


good_mike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn man im Ctrl der Klemme ein Befehl (Bit) setzt dann gibt es immer eine Reaktion im Status.
Das ist im Screenshot bei dir nicht zu sehen.
Ctrl = 0x4 bedeutet das die Klemme (re-)initialisiert wird. Es müsste (aus dem Gedächntis) auch im Status eine 0x4 zu sehen sein.

Warum weshalb... keine Ahnung. Läuft der K-Bus sauber? Kannst das Ctrl mal auf der EA-Ebene forcen und schauen was sich im Status tut.

Guga
 
K-Bus schein zu laufen. Ich habe noch einen DI und eine DO Klemme dran und habe dafür einen einfache Zuweisung gemacht (DOxx := DIxx) und das funktioniert.
Wenn ich das Ctrl Force tut sich im Status nichts:
Systemmanager_2.png
 
Zuletzt bearbeitet:
Da liegtdein Problem.
Ich würde allerdings den Wert 4 Forcen (init) und dann müsstest du auch eine 4 (init done) erhalten (siehe Klemmendoku).

Warum ist nun die gute Frage. Ich habe keine Ahnung. Klemme defekt?
Ansonsten würde ich mal ein neues Projekt aufsetzen und die HW scannen (nur KL6021 + KL9010).
 
Hallo, der Tip hinsichtlich eine möglichen Problem mit der Klemme hat mir enorm weitergeholfen!
Das Problem schein zu sein das die Klemme als KL6021-A erkannt. Was bedeutet das die Klemme als 3Bit Alternativ konfiguriert ist. Dies ist wohl auch der Auslieferungszustand. Für Modbus RTU brauch ich aber 5 Bit Standard.
Wie kann ich die Klemme umkonfigurieren - KS2000 Software ist nicht vorhanden.

Ich weis das es über Anpassung der Register funktionieren sollt.
ABER.... Ich habe absolut keine Ahnung wie das funktioniert. D.h. ich würde mich über eine etwas detaillierte Anleitung für den Einstieg freuen!

2022-03-20 09_42_22-Test_Modbus_RTU_20220315.tsm - TwinCAT System Manager - ''.png
 
Eventuell reichen dir ja die 3 Byte. Bei 10ms Zykluszeit hättest du eine max tatsächliche Baudrate von 3*8*100 Bit/s. Modbus RTU ist zwar per default 19.6 aber "so what". Ich habe jetzt nicht nachgeschaut aber ein paar kByte "Buffer" hat die Klemme für die Empfangsrichtung. Nur wenn du entsprechend viele oder Lange Telegramme hättest wird es dann natürlich irgendwann der GAU.

Zum Umsetzen: Doku lesen welches Bit du umsetzen musst und hier schauen.
 
Zurück
Oben