750-493 Leistungsmessung an PFC200

eloee

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

ich verwende eine 750-493 Leistungsmessklemme an einem PFC200 mit e!Cockpit.
Alles ist richtig verkabelt und ich kann mittels I/O Check auf der Klemme Strom, Spannung und Leistung ablesen, also eigentlich alles OK.

Im Programm verwende ich den FbMaster3Phase aus der WagoAppPowerMeasurement, allerdings bekomme ich dort in den Arrays der einzelnen Phasen nur Strom und Spannung angezeigt, die Leistungswerte (aEffectivePower) sind immer 0...
Hat jemand ne Ahnung was man da machen kann? Wie gesagt im I/O Check kann ich die Leistung sehen, grundsätzlich sollte die Klemme das also schonmal richtig berechnen.

Schöne Grüße
Eloee
 
Hi,
ich hab zwar leider keine Lösung für dein Problem, aber eine Frage.
Was hast du an deinem Baustein am Eingang I_Port angegeben.
Ich steh da irgendwie auf dem Schlauch, den Datentyp der da hin soll kennt mein eCockpit nicht.

Vielleicht kannst du mal nen Screenshot hochladen.
Einen Anwendungshinweis von Wago hab ich leider keinen gefunden.

Gruß
Otwin

PS
Das aEffectivePower ein Array aus 3 Einzelwerten ist weisst du?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, am I_Port Eingang musst du auf deine Klemme Verweisen, die kann im e!cockpit direkt angesprochen werden, mit dem Namen den du ihr in der Hardwareconfig gegeben hast. Kannst dich aber auch einfach über F2 zur Klemme durchdrücken, ist unter IoConfig_Globals.

Code:
FbMaster3Phase_Gesamtverbrauch(xEnable:= TRUE, I_Port := Hauptstromverbrauch, tCycleTime:=T#1S, wCurrentTransformerRatioL1:=20, wCurrentTransformerRatioL2:=20, wCurrentTransformerRatioL3:=20, typConfig3Phase := Config_493);
So verwende ich die Klemme in ST, das das Array je 3 Einzelwerte hat, weiß ich...
Code:
Stromzaehler_Gesamt.L1_Leistung := DWORD_TO_REAL(FbMaster3Phase_Gesamtverbrauch.aEffectivePower[1]) / 1000;
Stromzaehler_Gesamt.L2_Leistung := DWORD_TO_REAL(FbMaster3Phase_Gesamtverbrauch.aEffectivePower[2]) / 1000;
Stromzaehler_Gesamt.L3_Leistung := DWORD_TO_REAL(FbMaster3Phase_Gesamtverbrauch.aEffectivePower[3]) / 1000;

Schöne Grüße
Eloee
 
Zuviel Werbung?
-> Hier kostenlos registrieren
DWORD als REAL interpretieren

Ich kenne mich mit Codesys V3 nicht aus, doch anscheinend hat folgender Tipp schon mehrmals geholfen:
  • Ein Kopieren des Bitstrings von DWORD unverändert in eine REAL-Variable ist meines Wissens in Codesys nur per Pointer möglich, oder man muß eine DWORD-Variable und eine REAL-Variable per AT-Konstrukt auf die selbe Speicheradresse legen und kann dann DWORD hineinspeichern und REAL herauslesen und umgekehrt.
In dem Beitrag steht auch, warum das DWORD_TO_REAL nicht das erwartete Ergebnis liefert.

In Codesys V3 gibt es auch UNION, mit dem man Variablen verschiedenen Typs auf die selbe Adresse legen kann und dann z.B. ein DWORD hineinspeichern und das Bitmuster als REAL wieder herauslesen kann, ohne daß das Codesys da irgendwas konvertiert.

Wie man das mit einer UNION in Codesys formuliert weiß ich nicht genau, doch versuche es mal so:
Code:
TYPE VAR32 : UNION
  dwVar : DWORD;
  rVar : REAL;
END_UNION
END_TYPE

VAR
  copyVar : VAR32;
END_VAR

copyVar.dwVar := FbMaster3Phase_Gesamtverbrauch.aEffectivePower[1];
Stromzaehler_Gesamt.L1_Leistung := copyVar.rVar / 1000.0;

Und eine Pointer-Variante:
Code:
VAR
  dwVar : DWORD;
  rVar : REAL;
  pt_REAL : POINTER TO REAL;
END_VAR

pt_REAL := ADR(dwVar);
rVar : = pt_REAL^;

//bzw. mit Deinen Variablen:
pt_REAL := ADR(FbMaster3Phase_Gesamtverbrauch.aEffectivePower[1]);
Stromzaehler_Gesamt.L1_Leistung : = pt_REAL^ / 1000.0;

Harald
 
Also die Bibliothek war fehlerhaft, habe vom Wago Support eine neue erhalten, damit läuft alles perfekt :)

Schöne Grüße
Eloee
 
Zurück
Oben