Probleme mit Modbus RTU Device

Kayle

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

ich habe einen intelligenten Zähler in meinem Zählerschrank. Typ: SDM630 Modbus. Diesen versuche ich jetzt mit meiner Wago 750-881 + 750-653 ( RS485 ) auszulesen. Die Verdrahtung passt soweit, ich bekomme keinen TimeOut. Auch der SDM630 zeigt eine korrekte Kommunikation an. Allerdings bekomme ich es nicht hin, die Register auszulesen. Ich nutze den Modbus Konfigurator:

Modbus.PNG

Hier ein Auszug aus dem Register Datenblatt des SDM630:

sdm630_modbus.jpg

Ich versuche die aktuelle Spannung an L1 auszulesen. Dazu habe ich zwei Wörter deklariert mit der Adresse 1 + 2. Allerdings bekomme ich als Anzeige nicht die gewünschten z.B. 231.7V sondern 6183. Ich komme hier nicht weiter und hoffe es kann mir jemand auf die Sprünge helfen.

Danke und Gruß
Kay
 
Hallo,

L1 ist auf Adresse 0, nicht 1. L2 ist dann Adresse 2. Leider wird bei Modbus immer so blöde gezählt und zum Teil implementiert. Von 30001 muß als Adresse im Telegramm 30001 abgezogen werden, so daß Du bei 0 landest. Siehst Du auch in der Spalte Modbus Protocol Start Address.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ok das habe ich verstanden. Die beiden Register werden jetzt ausgelesen.

Getestet habe ich den Zähler am PC mit RS485 Adapter. Mit den Einstellungen Float32 und Word Swap bekam ich die Spannung korrekt angezeigt. In Codesys muss ich das jetzt noch irgendwie zusammenbauen um korrekte Werte zu erhalten.

Gruß Kay
 
Hallo nochmal,

ich versuche verzweifelt die beiden ausgelesenen Register ( Word ) in ein lesbares Format zu wandeln. Auf dem PC erreiche ich das in dem ich "Word Swap" aktiviere. Wie kann ich das in Codesys realisieren ?

Gruß Kay
 
Aus der Oscat Lib:
erst DWORD_OF_WORD und dann DW_TO_REAL.

Die Bibliothek kann man auch öffnen und reinschauen wie es gemacht wird. Ist kein Hexenwerk.
 
Hi, kannst auch folgendes machen, wenn du dir nicht die Oscatlib reinladen willst. Deklarier dir einen neuen Baustein, Typ Funktion, Rückgabetyp REAL, Sprache ST, Name bspw. DW_TO_R:
In der Variablendeklaration dann:
Code:
FUNCTION DW_TO_R : REAL
VAR_INPUT
    w1: WORD;
    w2: WORD;
END_VAR
VAR
    w: ARRAY[0..1] OF WORD;
    pR: POINTER TO REAL;
END_VAR

Im Programmcode:
Code:
w[0] := w1;
w[1] := w2;

pR := ADR(w);

DW_TO_R := pR^;

In deinem gewöhnlichem Programm (PLC_PRG) oder was auch immer legst du dir dann eine Variable "Messwert : REAL" an.

Im Programmteil kannst du dann die vorher angelegte Funktion nutzen:
Code:
Messwert:= DW_TO_R(65493, 17258);

Dein Messwert besteht aus 2 Wörten, die "verdreht" sind, daher würden Sie umgekehrt in den Wert eingehen. Hatte mal das gleiche Problem. ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit der Function DW_TO_REAL sollte es auf jedenfall klappen. Verwendest du DWORD_TO_REAL klappt es nicht. Der Hintergrund ist das die Oscat Variante das BIT Muster in einer Variabele des Types REAL verschiebt. DWORD_TO_REAL würde nur den Zahlenwert transferieren.
 
Hallo an alle Helfer,

vielen Dank. Das mit der Oscat Lib hat prima funktioniert.

@SPS-A: Werde ich gleich probieren.

Gruß Kay
 
Hallo zusammen,

es funktioniert jetzt einwandfrei:

codesys_cfc.PNG
Habe gleich noch eine Funktion zum runden des Ausgangswertes mit eingebaut.

Vielen Dank nochmal an alle.

Gruß Kay
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich würde auch gern zwei Zähler SDM630 mit einer Wago 750-880 und 750-653 auslesen, aber ich habe viele Fragen.
1. Verkabelung, was ist A, was ist B ?
2. welche Bibliothek, welche Bausteine ?
Kann hier wer helfen?
Danke und Gruß
Jens
 
Ok, erledigt.
Zwei Zähler (PV-Anlage und Gesamtzähler) werden ausgelesen, Eigenverbrauch wird berechnet, zukünftig können unwichtige Verbraucher bei zu wenig Sonne abgeschalten werden.
;)
Gruß Jens
 
Hallo!

Bin leider blutiger Anfänger in Sachen Modbus RTU und Serielle Klemme! Habe einen Zähler da und weiss überhaupt nicht wie ich da anfangen soll?
Habe eine Wago 652 Klemme! Passt diese dafür?

Könnt ihr mir ev ein Demoprojekt schicken damit ich mich einlesen kann und lernen kann wie das funktioniert``?

MFG Andi
 
Zurück
Oben