# EL3403 kWh Zählerstand bleibt unregelmäßig nach kurzer Zeit stehen



## Crack123 (7 Februar 2016)

Hallo!

Habe mal Testweise eine EL3403 mit einem EK1100 Buskoppler zur Netzerfassung bzw Stromzählung zusammengebaut, 
laufen tut das ganze mit Twincat auf einem Zotac MiniPC und WinCC als Visu ( Testweise ), 
im Programm selber wird nur die Klemme ausgelesen und per Modbus TCP von WinCC aus ausgelesen ohne irgendwelche anderen Signale.

Jetzt kommt es vor das alle 2-3 Tage der Zähler stehen bleibt, man sieht im WinCC Trend den Zähler steigen und irgendwann friert der Wert ein ( auch im Twincat ) 
wenn man den im Programm wieder auf 0 setzt zählt er wieder ganz normal weiter, passiert meist so zwischen 1-3 kWh gezählter Energie.

im Systemmanager kommen keine Fehlermeldungen sonst läuft auch alles Ok Strom Spg. Frequenz usw. und so fort.

Bin für jeden Tipp Dankbar!


lg


----------



## borromeus (8 Februar 2016)

Ich nehme an Du addierst Du irgendwelche Leistungen auf, da kann es passieren, dass großer Wert + sehr kleiner Wert = großer Wert ist.
Aber vielleicht habe ich die Frage auch ganz falsch verstanden.


----------



## PN/DP (8 Februar 2016)

Energiezähler heißt Zähler weil er *zählt*  (ein Stromzähler zählt ganze Umdrehungen der Scheibe, welche die verbrauchte Energie integriert)

Vermutlich zählst Du nicht in Deinem Programm sondern addierst REAL-Werte (Gleitpunkt) - das wird schnell ungenau (Rundungsfehler) und funktioniert bei großen Differenzen zwischen den Summanden irgendwann (ca > 10^7) gar nicht mehr (nicht genügend Auflösung).

Du müßtest Dich auf eine Auflösung Deines Zählers festlegen (z.B. 0.1kWh = 100Wh) und ganze Einheiten dieser Auflösung zählen (oder *als Ganzzahl addieren*), dann kommt es nicht zu den Problemen, die aus der Verwendung von REAL resultieren.

Harald


----------



## Crack123 (8 Februar 2016)

Nabend!  

Ich zähle erstmal garnix, den Programmcode habe ich nicht selber geschrieben, ist ein fertiger FB der die Daten aus der Klemme ausliest.
so gesehn ist der Wert in der Klemme direkt ( ST ist nicht so meins......  )

was mich halt wundert, einmal setzt es bei 0,8 kWh aus dann bei 1,5 dann 2,7  sollte wenn dann bei Relativ gleichem Wert aussteigen oder sehe is das falsch?


Diese Zeile ist die Zählung bzw. Rechnung also TotalEnergy ist der Zählwert.

TotalEnergy := L1_Data.Energy_Wh + L2_Data.Energy_Wh + L3_Data.Energy_Wh ;




(* Current *)
L1_Data.Current_A := DINT_TO_REAL(L1_Current)*0.000001*CurrentTransformer;
L2_Data.Current_A := DINT_TO_REAL(L2_Current)*0.000001*CurrentTransformer;
L3_Data.Current_A := DINT_TO_REAL(L3_Current)*0.000001*CurrentTransformer;

(* Voltage *)
L1_Data.VoltageLine_V := DINT_TO_REAL(L1_Voltage)*0.0001;
L2_Data.VoltageLine_V := DINT_TO_REAL(L2_Voltage)*0.0001;
L3_Data.VoltageLine_V := DINT_TO_REAL(L3_Voltage)*0.0001;
L1_Data.VoltageFase_V := SQRT(3)*L1_Data.VoltageLine_V;
L2_Data.VoltageFase_V := SQRT(3)*L2_Data.VoltageLine_V;
L3_Data.VoltageFase_V := SQRT(3)*L3_Data.VoltageLine_V;

(* ActivePower *)
L1_Data.ActivePower_W := DINT_TO_REAL(L1_ActivePower)*0.01*CurrentTransformer;
L2_Data.ActivePower_W := DINT_TO_REAL(L2_ActivePower)*0.01*CurrentTransformer;
L3_Data.ActivePower_W := DINT_TO_REAL(L3_ActivePower)*0.01*CurrentTransformer;

CASE State OF
0: (* ApparentPower *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.ApparentPower_VA := DINT_TO_REAL(L1_VariantValue)*0.01*CurrentTransformer  ;
        L2_Data.ApparentPower_VA := DINT_TO_REAL(L2_VariantValue)*0.01*CurrentTransformer  ;
        L3_Data.ApparentPower_VA := DINT_TO_REAL(L3_VariantValue)*0.01*CurrentTransformer  ;
        State:=State+1;
    END_IF

1: (* ReactivePower *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.ReactivePower_VAR := DINT_TO_REAL(L1_VariantValue)*0.001*CurrentTransformer  ;
        L2_Data.ReactivePower_VAR := DINT_TO_REAL(L2_VariantValue)*0.001*CurrentTransformer  ;
        L3_Data.ReactivePower_VAR := DINT_TO_REAL(L3_VariantValue)*0.001*CurrentTransformer  ;
        State:=State+1;
    END_IF

2: (* Energy *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.Energy_Wh := DINT_TO_REAL(L1_VariantValue)*0.000001*CurrentTransformer  ;
        L2_Data.Energy_Wh := DINT_TO_REAL(L2_VariantValue)*0.000001*CurrentTransformer  ;
        L3_Data.Energy_Wh := DINT_TO_REAL(L3_VariantValue)*0.000001*CurrentTransformer  ;
        State:=State+1;
    END_IF

3: (* CosPhi *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.CosPhi := DINT_TO_REAL(L1_VariantValue)*0.001  ;
        L2_Data.CosPhi := DINT_TO_REAL(L2_VariantValue)*0.001  ;
        L3_Data.CosPhi := DINT_TO_REAL(L3_VariantValue)*0.001  ;
        State:=State+1;
    END_IF

4: (* Frequency *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.Frequency_Hz := DINT_TO_REAL(L1_VariantValue)*0.1  ;
        L2_Data.Frequency_Hz := DINT_TO_REAL(L2_VariantValue)*0.1  ;
        L3_Data.Frequency_Hz := DINT_TO_REAL(L3_VariantValue)*0.1  ;
        State:=State+1;
    END_IF

5: (* EnergyNegative *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.EnergyNegative_Wh := DINT_TO_REAL(L1_VariantValue)*0.001*CurrentTransformer ;
        L2_Data.EnergyNegative_Wh := DINT_TO_REAL(L2_VariantValue)*0.001*CurrentTransformer  ;
        L3_Data.EnergyNegative_Wh := DINT_TO_REAL(L3_VariantValue)*0.001*CurrentTransformer  ;
        State:=0;
    END_IF
END_CASE

(* Power and Energy *)
CurrentActivePower := L1_Data.ActivePower_W + L2_Data.ActivePower_W + L3_Data.ActivePower_W;
TotalEnergy := L1_Data.Energy_Wh + L2_Data.Energy_Wh + L3_Data.Energy_Wh ;
TotalEnergyNegative := L1_Data.EnergyNegative_Wh + L2_Data.EnergyNegative_Wh + L3_Data.EnergyNegative_Wh ;

(*===============*)
(*    Reset Energy   *)
(*===============*)
Trigger(CLK:= ResetEnergy);

(* Register communication *)
FB_EcCoESdoWrite_EL3403(
    sNetId:=                 F_CreateAmsNetId( EL3403_NetId ),
    nSlaveAddr:=         EL3403_Port,
    nSubIndex:=             16#01,
    nIndex:=                 16#FB00,
    tTimeout:=             t#30s);

CASE i OF
0: (* Start sequence *)
    IF Trigger.Q THEN
        FB_EcCoESdoWrite_EL3403.bExecute := FALSE;
        Value := 16#0004;
        i := i + 1;
    END_IF

1: (* Start sending Value *)
    FB_EcCoESdoWrite_EL3403(
        pSrcBuf:=             ADR(Value),
        cbBufLen:=             SIZEOF(Value),
        bExecute:=             TRUE);
    i := i + 1;

2: (* Stop sending Value *)
    IF FB_EcCoESdoWrite_EL3403.bBusy THEN
        FB_EcCoESdoWrite_EL3403.bExecute := FALSE;
        i := i + 1;
    END_IF

3: (* Ready *)
    IF NOT FB_EcCoESdoWrite_EL3403.bBusy THEN
        Value := 16#0000;
        i := i + 1;
    END_IF

4: (* Start sending Value=0 *)
    FB_EcCoESdoWrite_EL3403(
        pSrcBuf:=             ADR(Value),
        cbBufLen:=             SIZEOF(Value),
        bExecute:=             TRUE);
    i := i + 1;

5: (* Stop sending Value *)
    IF FB_EcCoESdoWrite_EL3403.bBusy THEN
        FB_EcCoESdoWrite_EL3403.bExecute := FALSE;
        i := i + 1;
    END_IF

6: (* Ready *)
    IF NOT FB_EcCoESdoWrite_EL3403.bBusy THEN
        i := 0;
    END_IF
END_CASE


----------



## MasterOhh (8 Februar 2016)

Was kommen denn für Werte von der Klemme rein? Wenn die noch Daten liefert, dann ist es ein Berechnungsproblem (Gleitkommazahlen sind tükisch).


----------



## PN/DP (9 Februar 2016)

Sind alle Status-LEDs auf der Klemme OK/kein Error?
Wenn der TotalEnergy-Wert stehenbleibt, steigt dann TotalEnergyNegative?
Bleibt nur der TotalEnergy-Wert stehen? Oder frieren auch andere Werte ein (ApparentPower, ReactivePower, Energy, CosPhi, Frequency)?
Sind die Strom- und Spannungswerte der Phasen plausibel?
Bleibt nur der Wert in WinCC stehen oder auch im SPS-Programm? Hast Du das Programm beim Problemfall beobachtet? Ändert sich State noch?
Welchen Wert hat CurrentTransformer? Ist der Wert konstant? Stimmt der Wert auch im Problemfall?
Wie sind die an der Datenerfassung beteiligten Variablen deklariert? Sind da TEMP-Variablen dabei?
Werden Variablen im Programm noch anderswo überschrieben, insbesonders State?
Wie kommt der Zählerstand ins WinCC? Wird der in WinCC irgendwie beeinflußt? Hast Du in WinCC nur TotalEnergy oder auch TotalEnergyNegative und L1_Data.Energy_Wh, L2_Data.Energy_Wh, L3_Data.Energy_Wh? Frieren alle ein?

Harald


----------



## Crack123 (9 Februar 2016)

PN/DP schrieb:


> Sind alle Status-LEDs auf der Klemme OK/kein Error?
> Wenn der TotalEnergy-Wert stehenbleibt, steigt dann TotalEnergyNegative?
> Bleibt nur der TotalEnergy-Wert stehen? Oder frieren auch andere Werte ein (ApparentPower, ReactivePower, Energy, CosPhi, Frequency)?
> Sind die Strom- und Spannungswerte der Phasen plausibel?
> ...




Hallo!

Status Leds muss ich nächstes mal schauen

TotalEnergyNegative muss ich auch nächstes mal schauen

es bleibt nur TotalyEnergy bzw halt alle 3 Zähler von L1/2/3 die den Wert ja bilden stehen

Strom Spgs. Phasensignale sind Ok soweit die Aufzeichnungen anzeigen

Wert bleibt natürlich im PLC Programm bzw der Visu dort stehen ( ist nicht perma eingelogt ) und im WinCC da es dort ja per Modbus TCP ausgelesen wird. der State also raufzählen bzw durchschalten der Werte läuft noch

Current Transformer ist ein Fixwert im Programm ändert sich nicht

WinCC liest nur Daten und schreibt nichts in die Steuerung, sind nur 13 Variablen angelegt für Strom Spg. Frequenz Leistung und Zählen


----------



## borromeus (9 Februar 2016)

> Jetzt kommt es vor das alle 2-3 Tage der Zähler stehen bleibt, man sieht  im WinCC Trend den Zähler steigen und irgendwann friert der Wert ein (  auch im Twincat )
> wenn man den im Programm *wieder auf 0 setzt* zählt er wieder ganz normal  weiter, passiert meist so zwischen 1-3 kWh gezählter Energie.


Der Zähler zählt doch im Gerät. Wo setzt Du dann null?




> TotalEnergy := L1_Data.Energy_Wh + L2_Data.Energy_Wh + L3_Data.Energy_Wh


Bei 1-3kWh in 3 Tagen (bis der Zähler stehen bleibt) heisst, dass da zwischen 15 und 40 Watt draufhängen.
Was ist denn das?

Mir kommt das etwas seltsam vor......


----------



## Thomas_v2.1 (9 Februar 2016)

Das liegt an den "ungünstigen" Faktor 0.000001. Wenn die DINT Zahl groß genug wird, dann führt eine Änderung in der letzten Stelle nicht mehr zu einer Änderung in der Gleitkommazahl. Sobald du in deiner Gleitkommazahl mehr als 2 Stellen vor dem Komma hast, dürfte es zu dem Problem kommen.
Was für ein Wert hat denn CurrentTransformer? Wenn dieser groß (> 10) ist, könnte es etwas bringen die zweite Multiplikation zu klammern, oder so umzustellen, dass diese zu erst berechnet wird.

Oder du stellst die Berechnung schrittweise auf Ganzzahlen um, oder setzt automatisch die Zählewerte der Karte zurück wenn diese einen bestimmten Wert überschreiten.

Mir kommt der Faktor aber sehr spanisch vor, misst die Karte in µW Auflösung?


----------



## PN/DP (9 Februar 2016)

Ob man eine Gleitpunktzahl mit 10er-Potenzen z.B. 1000, 0.000001 oder 10^20 multipliziert, sollte imho kaum Einfluss auf die Ziffern der Mantisse haben. (Wird da nicht im Grunde mit 1 multipliziert und die Exponenten addiert?) "Ungünstig" wird es, wenn man um einige Zehnerpotenzen unterschiedlich große Zahlen addiert oder subtrahiert, was hier aber nicht der Fall ist.

Ich meine, die Klemme liefert den Zählerstand als DINT in mWh - da wäre eine Multiplikation mit 0.000001 vermutlich erstmal korrekt um auf x.y kWh zu kommen. 1.234567 kWh wären da als DINT 1234567 gekommen, was eigentlich problemlos in 1.234567E06 wandelbar sein sollte und nach der Multiplikation mit 0.000001 immer noch 1.234567E00 ergeben sollte.

Mir scheint, daß da irgendein Softwarefehler vorliegt. Eventuell in der Kommunikation mit der Klemme oder in der Firmware der Klemme selbst? Ich glaube nicht, daß das Verhalten so normal ist, daß Zählerstände ab ein paar kWh nicht mehr in Gleitpunktzahl übernehmbar sind. Ich glaube nicht, daß das Problem in der Wandlung an sich liegt.


@Crack123
Kannst Du mal zum Beobachten des SPS-Programms die DINT-Rohwerte abspeichern? Ändern die sich auch nicht mehr?

```
2: (* Energy *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
[COLOR="#0000FF"]        DIntVar1 := L1_VariantValue ;
        DIntVar2 := L2_VariantValue ;
        DIntVar3 := L3_VariantValue ;[/COLOR]
        L1_Data.Energy_Wh := DINT_TO_REAL(L1_VariantValue)*0.000001*CurrentTransformer  ;
        L2_Data.Energy_Wh := DINT_TO_REAL(L2_VariantValue)*0.000001*CurrentTransformer  ;
        L3_Data.Energy_Wh := DINT_TO_REAL(L3_VariantValue)*0.000001*CurrentTransformer  ;
        State:=State+1;
    END_IF
```
Kannst Du uns vielleicht einen Screenshot von dem Trend in WinCC zeigen wo man sieht, wie der Wert einfriert?
Ich frage nochmal: Welchen Wert hat CurrentTransformer?
Gibt es für das Auslesen der EL3403 ein Beispielprogramm? Hast Du Beckhoff mal befragt?

Harald


----------



## PN/DP (10 Februar 2016)

Wenn Du feststellst, daß der Trend im WinCC nicht mehr ansteigt - hast Du da mal deutlich länger als die 10-fache bisherige "Stufenzeit" gewartet und nochmal nachgesehen? Also wenn man z.B. anfänglich alle 2 Minuten ein Ansteigen des Trend um 1 Einheit (Stufe, mWh ?) sehen kann, dann wird man wegen der begrenzten Auflösung von REAL-Zahlen auf ca. 7 Ziffern irgendwann nur noch alle 20 Minuten ein Ansteigen (Sprung) um ca. 10 Einheiten sehen und irgendwann nur noch alle 200 Minuten einen Sprung um ca. 100 Einheiten ...

REAL-Zahlen haben eine begrenzte Auflösung und sind immer auf den nächsten darstellbaren Wert gerundet, was so ca. 7 signifikante Dezimalziffern sind. Dadurch werden vom DINT-Wert nur die höchsten 7 Ziffern im REAL-Wert vorkommen. Bei 1'234'567 sind das noch alle Ziffern, 12'345'67x wird aber nur noch als ungefähr 12345670 im REAL-Wert dargestellt, 123'456'7xx wird als ungefähr 123456700 dargestellt. Dadurch ändert sich die Trendkurve nur noch in größeren Sprüngen.

*Beobachte mal die DINT-Rohwerte der Zählerstände.* Wenn Du für Anzeige oder Berechnungen alle Ziffern des Zählerstandes brauchst, dann darfst Du nicht in REAL wandeln sondern mußt in DINT bleiben - der Wert stellt dann vermutlich mWh dar. Nur für Anzeigezwecke kannst Du für die gewünschte Einheit ein Dezimalkomma einfügen (6 Stellen von hinten für kWh) oder in REAL wandeln und dann höchstens 6 Ziffern anzeigen (z.B. 1234.56 kWh). 

Für einfache Berechnungen sind REAL-Zahlen mit 7 Ziffern Auflösung meistens ausreichend, für Zähler und andere Ketten-Rechnungen sind REAL-Zahlen aber generell ungeeignet.

Ein Zählerstand gibt die Anzahl gezählter ganzer Einheiten einer bestimmten Größe an und ist deshalb "natürlicherweise" eine Ganze Zahl. Rechnen mit Ganzen Zahlen ergibt keine Rundungsfehler und keine Auflösungsprobleme. Der darstellbare Größen-Bereich ist allerdings viel mehr begrenzt als bei REAL-Zahlen (welche dafür aber den Nachteil der begrenzten Auflösung/Genauigkeit haben).

Harald


----------



## Crack123 (10 Februar 2016)

Hallo!

Kurze Informationen was so noch offen ist :

der Aufbau ist 3 Stromwandler 50/1 also Current Transformator Wert 50 was Fix eingetragen ist

Leds an der Klemme Normalzustand

habe mal die Index bzw State Variable geforced, die Zählerstände in der Klemme stehen Aktuell still bzw. alle ka 5 Minuten springt die 4te Kommastelle um 5 weiter also so gut wie garnix obwohl ca 400-500 W anliegen momentan.

zum Thema WinCC die Werte stehen ja in der PLC schon still bzw. extrem langsam, das man in der Visu nichts steigen sieht ist für mich schon klar  

Was mich Aktuell wundert, nach dem Forcen und Deforcen läuft der L1_DataEnergy bzw Negativ Zähler wieder normal weiter, L2 und 3 sind unverändert in Ihrem Wert.


Zum Thema Zahlensystem muss ich erstmal nochmal alles genau Studieren.






borromeus schrieb:


> Der Zähler zählt doch im Gerät. Wo setzt Du dann null?
> 
> 
> 
> ...



im Main Baustein gibt es eine Variable ResetEnergy dann sind die Zähler wieder auf 0  von dem FB3403
das mit den 1-3 Tagen war etwas falsch ausgedrückt, so im Nachinein waren es teilweise nur 4h dann mal 12h, Minimalleistung sind dann so 85W bis 800W Peak




Habe mal Testhalber Currenttransformer auf 5 und den Multi Faktor auf 0.00001 gesetzt, zusätzlich die DINT_TO_REAL umwandlung entfernt


----------



## weißnix_ (10 Februar 2016)

Hast Du im Systemmanager mal die Werte der Variablen direkt auf der Klemme beobachtet. Das würde zumindest Hinweise darauf liefern, ob jetzt die Klemme ein Problem hat oder das Programm.


----------



## Crack123 (10 Februar 2016)

Meinst du bei den Klemmen*variablen* oder im COE ?

>bei den Klemmen Variablen sieht man das sie ebenfalls stehen bzw. extrem langsam laufen, COE sehe ich das mit meinem Wissenstand jetzt nicht.


----------



## PN/DP (10 Februar 2016)

Crack123 schrieb:


> Habe mal Testhalber Currenttransformer auf 5 und den Multi Faktor auf 0.00001 gesetzt, zusätzlich die DINT_TO_REAL umwandlung entfernt


Das Entfernen des DINT_TO_REAL nützt Dir gar nichts. Der ST-Compiler weiß, daß man einen DINT-Wert nicht mit 0.00001 multiplizieren darf und macht die Wandlung zu REAL dann eben "heimlich" an einer Stelle, wo er meint daß es da am besten ist.

Besser wäre es wenn Du testhalber die DINT-Rohwerte beobachtest. (wie schon zwei- oder dreimal empfohlen wurde)

Harald


----------



## Crack123 (10 Februar 2016)

Ja der Rohwert bleibt eben auch stehen , hatte ich schon geschrieben  
zb. Rohwert ware 16300 * 0,000001 * 50  waren dann 8154500000  oder in meinem Fall 0,815 kWh wo er stehen blieb, und nach dem Forcen von State bzw Index und wieder entfernen lief dieser Wert wieder weiter Hoch.


----------



## PN/DP (10 Februar 2016)

Crack123 schrieb:


> zb. Rohwert ware 16300 * 0,000001 * 50  waren dann 13284500000  oder in meinem Fall 1,328 kWh


Hmm, bei der Rechnung sollte aber 0.815 kWh rauskommen 

Harald


----------



## Crack123 (10 Februar 2016)

Ah Verdammt, ja...das war der L1 Energy Wert mit den 16300 Roh , 1,328 war der Gesamte sorry !

Zähler auf L1 ist jetzt  bei 0,941 kWh nach den paar Änderungen nur so am Rande mal sehen.


----------



## PN/DP (10 Februar 2016)

Crack123 schrieb:


> zb. Rohwert ware 16300 * 0,000001 * 50  waren dann 8154500000  oder in meinem Fall 0,815 kWh


Wo hast Du diesen riesigen Wert 8154500000 her? Kannst Du den irgendwo beobachten? In meiner Rechnung kommt der nirgendwo vor.
Welchen Datentyp haben TotalEnergy, L1_Data.Energy_Wh, L2_Data.Energy_Wh, L3_Data.Energy_Wh?

Dein L1 liefert offensichtlich den größten Anteil an TotalEnergy. Kann es sein, daß irgendwann ein "Groß"verbraucher an L1 einfach ausgeht und deswegen die Summe scheinbar einfriert?
Oder ist eine Phase verkehrt herum angeschlossen? Ist ein Strom negativ oder zeigt einer der EnergyNegative einen Wert?

Harald


----------



## Crack123 (10 Februar 2016)

Obwohl in der Doku steht das die Energie in Wh ausgegeben wird sehe ich bei Aktuell 1,463(55000...)  also werden wohl mehr Stellen angezeigt, darum die große Zahl.
Momentan läuft das ganze schon über den *normalen* Freeze Wert drüber ( Ok 1,4853kWh Zähler blieb einige Zeit stehen, danach lief er Tickweise weiter....dann wieder einige Zeit Stop, also auch direkt der Messwert aus der Karte)

L1 ist quasi der Hauptteil, ist ja nur mal ein Testaufbau für später, Aktuell 1500VA USV diverse E-Gerät usw. L2 nur 1 Gerät, L3 is Quasi leer nur Spg. + Stromwandler angeklemmt ( Steht auf 0 Wh bzw 0 A )


Datenwerte werden wohl DINT sein wenn da eine DINT_TO_REAL eingebaut ist/war.



Kann das ein Problem mit der Zykluszeit sein bzw. sollte man speziell auf irgendwas achten bei solchen Messkarte auf der Beckhoff Seite, bin Prinzipiell nur auf Siemens S7 Baugruppen *Groß* geworden.


----------



## PN/DP (10 Februar 2016)

Crack123 schrieb:


> Obwohl in der Doku steht das die Energie in Wh ausgegeben wird sehe ich bei Aktuell 1,463(55000...)  also werden wohl mehr Stellen angezeigt, darum die große Zahl.


Also ich lese in der Doku: *UINT32 * "0,001 Wh"* (entspricht mWh)
Was ist dieses "_bei Aktuell_" genau? Du hast bisher noch keine Variable "Aktuell" erwähnt...
Und Du hast nicht meine Frage beantwortet wo genau Du die große Zahl siehst, welche kein Dezimalkomma enthält und so viele 00000 am Ende hat.



Crack123 schrieb:


> (Ok 1,4853kWh Zähler blieb einige Zeit stehen, danach lief er Tickweise weiter....dann wieder einige Zeit Stop, also auch direkt der Messwert aus der Karte)


Das könnte mit meiner Vorhersage der sprunghaften Anzeige in Beitrag #10 zu tun haben, könnte aber auch bedeuten, daß es Kommunikationsprobleme mit der Klemme gibt.



Crack123 schrieb:


> Datenwerte werden wohl DINT sein wenn da eine DINT_TO_REAL eingebaut ist/war.


"_werden wohl DINT sein_" ist keine Antwort die eines Programmierers würdig ist.  Da kann auch eine implizite Typkonvertierung des ST-Compilers versteckt sein. Nach meiner Interpretation des Handbuchs müßten das korrekterweise UDINT (UINT32) sein.



Wenn ich Dir weiter bei Deinem Job der Fehler-Analyse helfen soll dann möchte ich durch Deine Augen sehen.  Weil Deine Beiträge irgendwie keine eindeutigen Antworten enthalten.

So, mal Butter bei die Fische. Ich will diesen Code beobachten:

```
2: (* Energy *)
    L1_IndexOut:=State;
    L2_IndexOut:=State;
    L3_IndexOut:=State;
    IF (L1_IndexIn=State) AND (L2_IndexIn=State) AND (L3_IndexIn=State) THEN
        L1_Data.Energy_Wh := DINT_TO_REAL(L1_VariantValue)*0.000001*CurrentTransformer  ;
        L2_Data.Energy_Wh := DINT_TO_REAL(L2_VariantValue)*0.000001*CurrentTransformer  ;
        L3_Data.Energy_Wh := DINT_TO_REAL(L3_VariantValue)*0.000001*CurrentTransformer  ;
        State:=State+1;
    END_IF
...
TotalEnergy := L1_Data.Energy_Wh + L2_Data.Energy_Wh + L3_Data.Energy_Wh ;
```

Welchen *Datentyp* und welchen *Wert* haben/hatten die Variablen zu dem Zeitpunkt, wo das IF erfüllt ist (*):
CurrentTransformer
L1_VariantValue
L2_VariantValue
L3_VariantValue
L1_Data.Energy_Wh
L2_Data.Energy_Wh
L3_Data.Energy_Wh
TotalEnergy

(*) entweder speichere die Werte im IF auf Hilfsvariablen oder verzögere das Weiterschalten "State:=State+1" 
schreibe die Werte bitte genauso auf wie sie angezeigt werden, keine Kommas dazu-interpretieren oder sonstige Verfälschungen.

Kannst Du vielleicht einen Screenshot machen während Du den Code beobachtest, wo man Werte der Variablen sieht?
Kannst Du vielleicht irgendeinen Screenshot vom Beobachten des Codes zeigen - nicht das wir hier grandios total aneinander vorbeireden und Deine Software irgendwas völlig anderes ist als ich mir darunter vorstelle?

Kannst Du den kompletten Baustein inklusive Variablen-Deklarationen als Quelltext hier anhängen? (also als normale Textdatei, nicht als Twincat-Projekt)

Harald


----------



## Crack123 (11 Februar 2016)

Nabend !

Also der Baustein bzw. das Programm des FBs hatte ich schon zuvor gepostet.

Die Energy Variablen sind DINT wenn ich sie mit der Maus anvisiere beim Beobachten. 

Bei Aktuell meinte ich jediglich beim Beobachten sind diese Werte Aktuell so und so, gibt keine Variable die sich so schimpft!

Anbei 2 Bilder von den Variablen Energy bei State 2 und 5 bzw Index.

http://www.fotos-hochladen.net/view/energynegativmjdaryo16t.jpg
http://www.fotos-hochladen.net/view/energywhrduvxhfmte.jpg



Variablendekla :


----------



## Thomas_v2.1 (11 Februar 2016)

Dein Screenshot zeigt den Zustand für die Datenübertragung in State=3, d.h. CosPhi.
Bei Codesys wird der Onlinestatus anders als bei Siemens auch bei Codeteilen die nicht bearbeitet werden angezeigt. Das kann etwas verwirrend sein.

Kannst du die Schrittkette nicht deaktivieren, bzw. fest auf State=2 setzen?


----------



## Crack123 (11 Februar 2016)

Die Werte sind aber die Richtigen, IndexIn ist 2 und 5, Werte sind die selben als wenn ich State Forcen würde.

L1  Energy WH        16610 *0,00001*5 = 0,8305      ( da ist die Formel verändert zum Test wegen der extrem kleinen Zahl 0,0...  )

L1  Energy Negativ  16650*0,001*50=  832  ( da versteh ich nicht wieso der Rechnerische Wert mit dem Angezeigten nicht übereinstimmt... ? )


----------



## Thomas_v2.1 (11 Februar 2016)

Ok, stimmt.
Bei dir ist L1_ActivePower auch schon negativ (-890 mit Umrechnung -44,5 W) , und diese Werte werden nicht gemultiplext sondern direkt übertragen. Ich würde vielleicht erstmal alles so anklemmen, dass bei den Messwerten auch die Vorzeichen korrekt sind. Oder da ist noch ein anderer Fehler (Adressierung?).
Wobei laut Doku der eine Energiezähler nur positive und der andere nur negative Energie zählen soll (d.h. beide vorwärts). Demnach sollte da nie ein negatives Vorzeichen zu sehen sein.


----------



## Crack123 (11 Februar 2016)

Ja das mit den Vorzeichen hab ich auch bemerkt, wie ja in der Doku angesprochen sollte das ja eigentlich nicht sein das beide Negativ sind.
Wegen Adressierung, die Daten werden von dem FB aus einem Datenarray rausgeholt die in der Klemme mit den ELektrischen Werten generiert werden, 
anders Adressieren geht fast nicht da man nur die Basisadressen verknüpft und halt Index  bzw. State.


EDIT: Habe mal Testweise den Wandler L1 umgedreht, Negativ Zähler läuft weiter mit - Vorzeichen , der *Normale* bleibt bei 0.


----------



## Thomas_v2.1 (11 Februar 2016)

Ich würde mal drei ohmsche Lasten mit z.B. 50 Watt anschließen. Dann sehen, dass die Werte in den Phasen (Ströme, Spannungen, CosPhi) alle korrekt sind. Dann die Zähler zurücksetzen und in festen Abständen die Zählerstände vergleichen, ob das zusammen plausibel ist.


----------



## Crack123 (11 Februar 2016)

Die Werte für Strom Spg Leistung bzw. kWh sind auf jeden Fall Plausibel, Cos Phi kann ich nicht sagen, 
das müsste ich noch extra nachmessen bei Gelegenheit liegt aber lt. Anzeige in einem Normalen bereich.

Muss gerade gestehen das ich mich verguckt habe, der EnergyNegativ Zähler ist auf 0 und der Normale läuft...Sorry dafür!



Manchmal wäre mir ein Siemens PAC3200 mit Modbus so viel lieber gewesen....


----------



## PN/DP (11 Februar 2016)

Crack123 schrieb:


> Die Energy Variablen sind DINT wenn ich sie mit der Maus anvisiere beim Beobachten.


Komisch, wieso werden die Werte beim Programm beobachten mit Dezimalpunkt und Nachkommastellen angezeigt?  DINT ist Ganzzahl ohne Dezimalpunkt (Komma).
Die Deklaration der Energy_Wh-Variablen ist nicht in der angehängten Programmdatei. Die Deklaration des Struct ST_EL3403 fehlt, ist wohl irgendwo global deklariert. Die Energy_Wh sollten REAL sein, was zu der Dezimalpunkt-Anzeige und zum Programmcode paßt.


Nabend !

Zu den Programm-Bildern:
Ist das denn so schwer, mal die Variablenwerte exakt bei dem CASE-Durchgang auf Hilfsvariablen zu speichern? (brauchst doch nur mal den Code von Beitrag #10 in Dein Programm kopieren und die Variablen anlegen) Dann hat man alle Zeit der Welt, die Werte anzuschauen und nachzurechnen.
Naja, nicht mehr so wichtig... Ich glaube nicht, daß das Einfrieren der Zählerwerte von der REAL-Wandlung und Skalierung in dem uns gezeigten Code kommt. (ich habe den Code mal mit Step7 simuliert (ich habe kein Twincat) - Siemens rechnet da korrekt. Bei den wenigen kWh ist man noch weit ab von auffälligen Rundungsfehlern)

Mir fällt auf, daß in der rechten Spalte die Werte für jeden CASE exakt gleich sind. Das können unmöglich die Werte sein, wie sie beim Durchlauf an der Programmstelle waren. Das sind vermutlich Werte, die die Variablen am Ende des Zyklus haben. Sehr wahrscheinlich sind die auch nicht aus dem Durchlauf, wo State von 2 auf 3 geschaltet wurde, sondern ein paar Zyklen später, wo vielleicht schon einige neue Werte aus der Klemme vorliegen. Anders kann ich mir nicht erklären, wie aus L3_VariantValue = 142 --> L3_Data.Energy_Wh = 7.1e-003 werden und aus L3_VariantValue = 0 ebenfalls. Oder wie aus L1_VariantValue = -16610 und -16650 beide male -0.8305 werden. Und wie kann L1_IndexIn = 5 sein an einer Stelle wo State = 3 ist??
Werden da Variablen mehrfach benutzt? Hast Du in Deinem Programm irgendwo indirekte Adressierung mit Pointern drin oder schreibt was von außerhalb des FB auf seine Instanzvariablen oder auf die IO-Variablen? Rufst Du den FB womöglich mehrmals im Programm auf? Ist es möglich, daß Du mal ein neues Programm nur mit dem Auslesen der Klemme machst?

Wo kommen jetzt die negativen Werte bei Lx_VariantValue und Lx_Data.Energy_Wh her?
Bis heute wurde dieses "unwichtige" Detail noch nicht erwähnt. Das dürfte doch gar nicht möglich sein.
Mir schein, da stimmt was mit dem Multiplexen nicht. Oder mit der Kommunikation mit der Klemme.
Ist das Mapping der IO der EL3403 korrekt?


Sind die Zählerwerte Energy_Wh plausibel?

Ich würde mal nur eine 60W Glühbirne 1 Stunde lang brennen lassen und die Zähler beobachten:

```
60W * 1 Stunde = 60 Wh

    60 Wh = 0.060000 kWh / Stunde
     1 Wh = 0.001000 kWh / Minute
  100 mWh = 0.000100 kWh / 6 sekunden
ca 17 mWh = 0.000017 kWh / Sekunde
```


btw: Was ist das überhaupt für eine Schlamperei (von Beckhoff?), in dem Baustein ein nicht weiter überprüftes (signed) DINT_TO_REAL(Lx_VariantValue) einzubauen, wo in der Dokumentation zur Klemme steht, daß der Lx_VariantValue bei den Energiezählern ein UINT32 (unsigned!) ist? Glaubt der Programmierer, daß das niemals auffallen wird? Ich würde bei 1'000'000'000 Wh oder 2'000'000'000 Wh und bei < 0 ein Reset der Zähler auf 0 machen.

Harald


----------



## Thomas_v2.1 (11 Februar 2016)

Das mit den Datentypen ist etwas verwirrend. Bei VariantValue steht INT32, und an der Stelle an der die Energiezähler gespeichert werden kann steht UINT32. An der Stelle steht zuätzlich, dass der Gesamtzähler bei negativer Energie auch rückwärts laufen kann.

Zitat:


> Der negative Energiewert ist der Wert, der durch eine negative Leistung erzeugt wird
> (generatorischer Betrieb). Der Energiewert in Subindex 01 bis 03 setzt sich aus generatorischer und
> verbrauchter Energie zusammen, d.h. im Generatorbetrieb wird dieser Wert kleiner. Um die positive Energie
> zu berechnen, müssen beide Werte zusammengefasst werden.



In dem von ihm gezeigten Screenshots kann man oben in der Variablendeklaration den Online-Wert der aktuellen Leistung sehen. Diese wird nicht gemultiplext, und ist negativ. Genauso hat er einen negativen CosPhi, was ebenfalls für generatorischen Betrieb spricht. Dann könnte es durchaus plausibel sein, dass der Energiewert negativ wird. Das würde von der Wertigkeit her auch dafür sprechen, dass der Wert wirklich korrekt vorzeichenbehaftet übertragen wird (wie dieser dann persistent in ein UINT32 gespeichert werden soll ist eine andere Frage).


----------



## Crack123 (12 Februar 2016)

Hallo!

Habe mal noch einige Dinge auf Digitales Papier gebracht, unter anderem das Struct wo auch die Wh Variable als REAL Zahl Deklariert ist, also d.h. DINT > REAL 

Möchte auch nochmal darauf hinweisen das ich mit dem Baustein nichts zu tun habe, ich benutze diesen nur um mit der Klemme was anfangen zu können ! 


Habe auch nochmal wegen den Stromwandlern geschaut, obwohl die Einbaurichtung richtig ist laut Markierung waren die Werte Negativ....nach dem Umdrehen nun nicht mehr, möglich das die Wandlerbeschriftung falsch ist.

Mapping ist korrekt, Variablen werden keine mehrfach verwendet, das mit indexIn und State liegt daran das ich Index geforced habe, habs auch nochmal getestet es macht laut Anzeige keinen Unterschied ob Index oder State auf 1-5 geforced wird, zeigt die selben Werte in den Spalten an.

FB wird auch nur 1x aufgerufen ( siehe Main screen ) das Programm besteht ja nur aus den 2 Sachen.

Die Angezeigten Werte waren bis auf die kleine Abweichung bei der Umrechnung eigentlich auch Ok, ob das nun 832Wh oder 830Wh ist wäre mir egal solange es weiter läuft, natürlich sollte das so nicht sein!


Möchte mich auch Vielmals bei allen bedanken die sich an dieser Odyssee beteiligen !


----------



## PN/DP (12 Februar 2016)

Ich habe mir nochmal alles lange angesehen, auch die Doku zur EL3403. Daß die ausgelesenen Energy-Zählerstände nur positiv sein können war wohl eine Fehlinterpretation von mir nach erstem Überfliegen der Doku. Die Doku ist in der Hinsicht ziemlich verwirrend geschrieben und nicht ganz vollständig und vielleicht auch nicht ganz korrekt. Z.B. finde ich in der Doku keine Erklärung dafür, wieso die "Energy"-Zähler und die "EnergyNegative"-Zähler bei generatorischer Stromrichtung beide exakt gleich rückwärts zählen. OK, man sieht nun, daß der Energy-Zähler vorwärts und rückwärts zählt je nach Stromrichtung. Doch wieso macht der "EnergyNegative"-Zähler exakt das gleiche??? Wieso zählt der bei negativer Stromrichtung ebenfalls rückwärts?

Lange Rede, kurzer Sinn - ich bin zu der Überzeugung gekommen, daß Dein Programm richtig arbeitet und es ziemlich sicher auch richtig in REAL wandelt und rechnet (man kann sehen, daß das Programm tatsächlich *0.00001*5 genauso gut rechnet wie *0.001*50). Nur Deine ungenauen Aussagen am Anfang haben alles ein bisschen konfus aussehen lassen.

Ich empfehle, daß Du zunächst
- die elektrische Schaltung kontrollierst, so daß die Ströme und Leistungen in die richtige Richtung gemessen werden und Verbräuche als positive Leistung und positive Energy-Zählung erscheinen.


			
				Handbuch schrieb:
			
		

> Falls Sie in einem Pfad negative Leistungswerte messen, überprüfen Sie bitte, ob Sie den zugehörigen Stromwandlerpfad richtig herum angeschlossen haben.



- Dann beobachtest Du das Programm ob die Skalierung der Energy-Zähler stimmt, z.B. ob nach 1 Stunde lang 60W der Zähler um 60 Wh ansteigt.


PN/DP schrieb:


> Ich würde mal nur eine 60W Glühbirne 1 Stunde lang brennen lassen und die Zähler beobachten:
> 
> ```
> 60W * 1 Stunde = 60 Wh
> ...



- Und dann beobachtest Du weiter, ob Dein urprüngliches "Einfrieren"-Phänomen wieder auftritt.

Zur Skalierung:
Weil die Variablen "Energy_*Wh*" heißen sollten die Werte darin auch Wh darstellen und nicht kWh. Insbesondere sollten die Zählerwerte ...Energy_Wh und ...EnergyNegative_Wh *gleich* skaliert sein. Brauchst Du für Anzeigezwecke kWh dann teile die Wh durch 1000 (oder multipliziere mit 0.001) und schreibe in eine zweite kWh-Variable.

```
L1_Data.Energy_Wh := DINT_TO_REAL(L1_VariantValue) * 0.001 * CurrentTransformer ;
...
    L1_Data.EnergyNegative_Wh := DINT_TO_REAL(L1_VariantValue) * 0.001 * CurrentTransformer ;

...
    L1_Energy_kWh := L1_Data.Energy_Wh * 0.001 ;
    L1_EnergyNegative_kWh := L1_Data.EnergyNegative_Wh * 0.001 ;
...
```

Harald


----------



## Crack123 (12 Februar 2016)

PN/DP schrieb:


> Lange Rede, kurzer Sinn - ich bin zu der Überzeugung gekommen, daß Dein Programm richtig arbeitet und es ziemlich sicher auch richtig in REAL wandelt und rechnet (man kann sehen, daß das Programm tatsächlich *0.00001*5 genauso gut rechnet wie *0.001*50). Nur Deine ungenauen Aussagen am Anfang haben alles ein bisschen konfus aussehen lassen.
> 
> Ich empfehle, daß Du zunächst
> - die elektrische Schaltung kontrollierst, so daß die Ströme und Leistungen in die richtige Richtung gemessen werden und Verbräuche als positive Leistung und positive Energy-Zählung erscheinen.
> ...




  Kontrolliert jetzt ist alles Positiv

Verbraucher 280~W  lt Watt anzeige und laut Energy_Wh 245 W verbraucht in 1h  hmm etwas sehr daneben


PS: wie stellt sich Beckhoff eigentlich den CosPhi vor wenn er von 0.5-1,5 geht?  
oder gibt es außer selber umrechnen einen anderen Weg für  Cap  -0,5 / 1 / +0,5 Ind




PN/DP schrieb:


> I
> 
> Zur Skalierung:
> Weil die Variablen "Energy_*Wh*" heißen sollten die Werte  darin auch Wh darstellen und nicht kWh. Insbesondere sollten die  Zählerwerte ...Energy_Wh und ...EnergyNegative_Wh *gleich*  skaliert sein. Brauchst Du für Anzeigezwecke kWh dann teile die Wh  durch 1000 (oder multipliziere mit 0.001) und schreibe in eine zweite  kWh-Variable.
> ...



Erledigt




PN/DP schrieb:


> - Und dann beobachtest Du weiter, ob Dein urprüngliches "Einfrieren"-Phänomen wieder auftritt.
> 
> 
> 
> Harald




Also bei 0,850 kWh blieb L1 stehen, L2 ( 0,250 kWh ) lief noch einige Zeit weiter und blieb dann ebenfalls stehen, 
nach ein paar Minuten fiel mir auf das bei L1 ab und zu weitergezählt wurde, 
vieleicht alle 3-4 Minuten ein Tick, bei der Leistung die aufgenommen wurde war es aber auf jeden Fall im Sekundenbereich wo man eine änderung sehen konnte....


schön langsam nervt das Ding  werde mal 123 Bemühen vieleicht gibts Günstig ein PAC Gerät


----------



## Crack123 (16 Februar 2016)

Nabend !

Ich hab mich mal an den Beckhoff Support gewandt, mal sehen was die Kollegen dort rausfinden.

Seltsam ist zb. bei 300-400 W läuft der Zähler brav, dazwischen war ca 12h 70-80W Last drauf wo der Zähler stehen blieb, nach dem wieder 300-400 W anlagen lief er wieder etwas weiter....
denke da ist irgend ein Problem mit der Minimal Leistung bzw. eventuell ist die Messgröße einfach zu klein....ka


----------



## Crack123 (18 Februar 2016)

Hallo!

Die Kollegen von Beckhoff haben sich gemeldet, weder die Österreichischen noch die Deutschen Kollegen hatten dieses Phänomen jemals als Problem....Super  
Es wurde mir angetragen die Klemme einzuschicken zur Kontrolle bzw. eine Neue zu kaufen, das dies natürlich nicht umsonst ist bin ich grade echt sauer...!


----------



## ohm200x (18 Februar 2016)

Kann deinen Frust ein Stück weit verstehen. 

Aber je nachdem wie wichtig die Klemme / der Fortgang des Projektes ist, ist eine neue Klemme schneller geliefert als auf die Diagnose und den Tausch der jetzigen zu warten.
Wirst ja sicher Gewährleistung drauf haben, dann kannst die reparierte Klemme danach verkaufen. 

Die Teile sind noch jung und können Bugs haben. 
Ich weiß von nem Bug in ner RS232 Klemme der aufgrund der seltenen Konfiguration erst nach Jahren auftauchte und auch daher erst dann gefaxt werden konnte.

Gruß ohm200x


----------



## Crack123 (18 Februar 2016)

Hallo,

Die Klemme gibts ja schon 6 Jahre, denke doch das da jemand auch mal die Energie mitgezählt hat  
denke auch nicht das es ein Bug ist sondern das da irgendwas defekt ist oder etwas das ich nicht nachvollziehen kann!

Nebenbei ist das eher ein Privatprojekt da ist es jetzt nicht Wichtig es in 1 Tag ans laufen zu bekommen, aber trotzdem kann es ja passieren das es mal schneller gehen muss.



EDIT :


nach einem letzten Test kann ich auf jeden Fall sagen das ab einer Leistung 400++W zb. auf L1 der Zähler Normal weiter läuft.

Testmessung Aktuell :

L1 525W  Zähler läuft Normal
L2 250W  Zähler setzt ab und zu aus, fehlt ca 25%
L3 55W    Zähler IST 0,033 kWh nach 2h, SOLL 0,110 kWh also da geht garnix ab und an springt er weiter

Habe nochmal nachgefragt ob das Verhalten *Normal* ist oder ob es da ein Problem gibt mal sehen 


mfg


----------



## ohm200x (18 Februar 2016)

Hi,

Ups das wusste ich nicht. Dann lag es daran, dass sie für EtherCat ist und ich sie daher beim Hausbau vor 5 Jahren nicht mit eingebaut hatte.

Wenn es "nur" privat ist wirst um ne Reparatur/Diagnose mit gewisser Laufzeit nicht umhin kommen.

Gruß ohm200x


----------



## PN/DP (18 Februar 2016)

Crack123 schrieb:


> L1 525W  Zähler läuft Normal
> L2 250W  Zähler setzt ab und zu aus, fehlt ca 25%
> L3 55W    Zähler IST 0,033 kWh nach 2h, SOLL 0,110 kWh also da geht garnix ab und an springt er weiter


Hast Du mal die Phasen hinter der Klemme vertauscht und geschaut, ob das Problem "mitwandert"?

Passt der angezeigte Strom und die Leistungswerte zur Last 55W? (Was ist das für ein Verbraucher?)

Es wäre immer noch interessant, mal so einen Trend zu sehen, wo der Zählerwert springt.

Harald


----------



## NieZuSpaet (18 Februar 2016)

Ich würde auch mal alle Stromwandler auf eine Phase legen. Dann sollten ja alle Werte exakt gleich sein (abgesehen von der Toleranz). Wenn nicht, dann die Eingänge an der Klemme tauschen. Damit solltest du schon rausfinden, wo der Fehler liegt.


----------



## PN/DP (18 Februar 2016)

Ja, hier ist eigentlich "nur" konzentriertes Überprüfen der Elektroschaltung und der Anzeigewerte und ggf. Kreuztauschen nötig - dann kann man ziemlich schnell eindeutig feststellen, ob das Problem an (einem Fehler) der Klemme liegt.

Harald


----------



## Crack123 (19 Februar 2016)

NieZuSpaet schrieb:


> Ich würde auch mal alle Stromwandler auf eine Phase legen. Dann sollten ja alle Werte exakt gleich sein (abgesehen von der Toleranz). Wenn nicht, dann die Eingänge an der Klemme tauschen. Damit solltest du schon rausfinden, wo der Fehler liegt.



Nabend!

Dieser Zustand läuft gerade, alle 3 Zähler stehen nun momentan bei 0,8500 kWh  bedingt durch toleranzen sind sie natürlich etwas auseinander aber noch OK

EDIT : Zählerstände Aktuell L1 - 1,5152   L2 -   1,5504    L3 - 1,5551      L1 Leistung ist für eine kurze zeit unter 400 W gefallen und blieb wie ich vermutet habe kurz stehen bzw. setzte aus, erst bei erhöhung lief er wieder Ordnungsgemäß weiter, ich weis nur nicht ob das so richtig ist mometan aber ich werde nochmal auf den Beckhoff Support warten nächste Woche!

EDIT 2 : so Testweise Leistung auf 350W runter gesetzt, alle 3 Zähler blieben stehen, nach dem es wieder auf 500W war lief L1 weiter L2/L3 blieben weiterhin stehen.



Alle anderen Elektrischen Werte sind auch in etwa gleich +- paar %

Wenn das nun so weiter läuft hatte ich Recht das die Klemme bei zu geringer Leistung einfach irgendwann aufhört zu zählen ( warte da noch auf eine Beckhoff Antwort ) bzw. aussetzt oder irgendwas macht.

Anbei kleiner Screenshot vom WinCC Trend



lg


----------



## Otwin (19 Februar 2016)

Was hast du denn da für Wandler dran? (Wandlerverhältnis)
Kann es evtl, sein, dass der Wandler-Sekundärstrom einfach zu klein ist, um von der Klemme gemessen zuwerden?

Gruß
Otwin


----------



## PN/DP (19 Februar 2016)

Crack123 schrieb:


> Anbei kleiner Screenshot vom WinCC Trend


Irgendwie sehe ich da kein "Stehenbleiben" eines kWh-Zählers 

Harald


----------



## MasterOhh (19 Februar 2016)

Also für mich sehen die Kurven auch ganz plausibel aus. Die Spannung ist konstant. Die Leistung folgt dem Strom und der Anstieg der Verbrauchskurven deckt sich mit den Schwankungen der Leistungs-/Strom Kurven.


----------



## NieZuSpaet (20 Februar 2016)

Man sieht höchstens, dass ab ca. 17:30 der Stromzähler L1 (graue Kurve) einen Offset zu L2und L3 hat. 
Tausche doch jetzt mal die Wandler von L1 und L3. Dann kann man wenigstens ausschließen, dass ein Wandler ne Macke hat.


----------



## Crack123 (20 Februar 2016)

PN/DP schrieb:


> Irgendwie sehe ich da kein "Stehenbleiben" eines kWh-Zählers
> 
> Harald



Hallo!

Das war auch im *Normal* Zustand, danach sieht man einfach nur gerade Linien der Zähler und Leistung/Strom Werte die geringer sind sonst ändert sich nichts.




NieZuSpaet schrieb:


> Man sieht höchstens, dass ab ca. 17:30 der Stromzähler L1 (graue Kurve) einen Offset zu L2und L3 hat.
> Tausche doch jetzt mal die Wandler von L1 und L3. Dann kann man wenigstens ausschließen, dass ein Wandler ne Macke hat.



L1 nimmt laut Watt Anzeige ca 10-15W weniger auf als 2 und 3, ich  sage mal Toleranz die Zählerwerte passen damit eigentlich, der kurze  *Aussetzer* war das wo die Leistungsaufnahme kurz unter 450W ( ca 17:45 ) war und er  stehen blieb bzw. aussetzte.

Was interessant ist, das ganze passiert erst wenn die Energiezähler so bei 0,8 kWh etwa angelangt sind....davor funktioniert das ganze auch bei geringerer Leistung....




Otwin schrieb:


> Was hast du denn da für Wandler dran? (Wandlerverhältnis)
> Kann es evtl, sein, dass der Wandler-Sekundärstrom einfach zu klein ist, um von der Klemme gemessen zuwerden?
> 
> Gruß
> Otwin




Wandlerverhältnis 50/1 , laut der Theorie würde das gleiche aber auch passieren wenn diese 500/1 wären oder so bzw sogar noch schlimmer werden.
Außerdem stimmt die Stromanzeige ja, alle 3 Phasen zeigen korrekte Werte an ( nachgemessen ! )


lg


----------



## Otwin (20 Februar 2016)

Crack123 schrieb:


> Wandlerverhältnis 50/1 , laut der Theorie würde das gleiche aber auch passieren wenn diese 500/1 wären oder so bzw sogar noch schlimmer werden.
> Außerdem stimmt die Stromanzeige ja, alle 3 Phasen zeigen korrekte Werte an ( nachgemessen ! )
> 
> 
> lg



Bei 50/1 sollten solche Probleme nicht auftreten.
Bei ~450W hast du da noch ca.40mA über den Strompfad der Klemme fliessen.

Bei höheren Wandlerverhältnissen und recht kleiner Leistungsaufnahme erreichst du halt irgendwann mal die Auflösungsgrenze der Klemme.
Hätte ja sein können ......

Gruß
Otwin


----------



## Crack123 (20 Februar 2016)

Hallö!

Ja natürlich wäre das möglich gewesen  kein Thema.

Im System Manager sieht man ja den Eingangsstrom von wie du geschrieben hast 40mA und mehr.

Bin gespannt was der Beckhoff Support noch dazu schreibt nächste Woche!

ansonsten werde ich die Klemme nur dazu benutzen um Strom Spg. etc zu messen und den Zähler mit einer IR Lichtschranke Impulse abzählen ( Drehscheibe ) und in einer Variable hochzählen...


----------



## Thomas_v2.1 (20 Februar 2016)

Crack123 schrieb:


> ansonsten werde ich die Klemme nur dazu benutzen um Strom Spg. etc zu messen und den Zähler mit einer IR Lichtschranke Impulse abzählen ( Drehscheibe ) und in einer Variable hochzählen...


Wenn nur die Zählwerte der Karte (Wh) nicht korrekt sind, die Anzeigen der aktuellen Leistungen (W) aber richtig, kannst du diese auch selber zu einem Zählwert integrieren. Was anderes macht die Karte intern auch nicht.


----------



## NieZuSpaet (20 Februar 2016)

Crack123 schrieb:


> L1 nimmt laut Watt Anzeige ca 10-15W weniger auf als 2 und 3, ich  sage mal Toleranz die Zählerwerte passen damit eigentlich, der kurze  *Aussetzer* war das wo die Leistungsaufnahme kurz unter 450W ( ca 17:45 ) war und er  stehen blieb bzw. aussetzte



Was ist denn, wenn du den Wandler von L1 an L3 anschließt? Welcher Kanal ist dann der mit der geringsten Leistungsaufnahme? Setzt dann immer och der L1 bei weniger als 450W aus?


----------



## Crack123 (20 Februar 2016)

Hallo

Wenn doch die Stromwerte indentisch sind auf allen 3 Phasen was würde ein tauschen dann ändern? 
Klar, sollte ein Unterschied sein würde der Fehler mitwandern aber so ..

Lg


----------



## NieZuSpaet (20 Februar 2016)

Crack123 schrieb:


> Hallo
> 
> Wenn doch die Stromwerte indentisch sind auf allen 3 Phasen was würde ein tauschen dann ändern?
> Klar, sollte ein Unterschied sein würde der Fehler mitwandern aber so ..
> ...



Na wenn du sicher bist, dass kein Wandler irgend einen Fehler hat...
Welche Variante der Klemme hast du eigentlich? Also EL3403-0xxx?


----------



## Crack123 (20 Februar 2016)

EL3403-0000-0017  hardware 02 software 05


----------



## Crack123 (6 März 2016)

Nabend,

Da jemand die Idee geäußert hatte ich soll doch die kWh selber zählen hatte ich das mal getestet, 
also Leistung W / 60 / 60 /1000 und jede MS mit einem ADD Baustein aufaddiert, tja Pech, bei 1MS Zykluszeit geht der Bus in die Knie (Frames missed etc.), 
also auf 10 MS gestellt und die Rechnung auf W/60/60/100 gestellt, 
wie genau kann sowas werden also ist der Zyklus immer genau 10 oder Maximal 10, sowas gibts ja in der Form für die S7 nicht außer den Weck OBs und da gehts meist nicht um so kleine Zeiten.

Im Vergleich zum Internen Zähler der Karte hab ich auch mit etwas nacharbeit meiner Seite immer recht hohe Abweichungen nach einiger Zeit.


Beckhoff hatte sich leider dazu nicht mehr gemeldet, da gäbe es außer einschicken bzw. Austausch wohl keine Alternative oder ich habe einfach irgendwas Grundlegend falsch gemacht,
ich benutze Beckhoff im Prinzip nur Privat zu Lernzwecken bzw. aus Neugierde aber wäre toll wenn das eventuell doch Funktionieren würde ,
Alternativ muss ich am Stromzähler die Drehscheibe abtasten


----------



## borromeus (6 März 2016)

Es reicht wenn Du das alle 5s addierst.
Im Prinzip ist es ja eine Integration. Welche Verbraucher schalten sich denn in 5s weg oder zu.


----------



## Crack123 (6 März 2016)

Also als Beispiel ein Plasma TV, nach einiger Beobachtung schwankt der Verbrauch zwischen 70 und 300W je nach Beleuchtung/Bild, 
wenn der jetzt sagen wir 4h läuft bin ich mir sehr sicher das der Zählwert der Energie schon nicht mehr so genau ist.

Aber schon klar das 5sek reichen würden wenn der Verbauch Stabil wäre.


EDIT: also in der Doku steht bei der Klemme 10x20ms Messdurchgang und daraus wird der Mittelwert zur Zählung berechnet zumindest Standartmäßig, müsste ich nur ein Array anfüllen und den Durchschnittswert dann weiterzählen.


----------



## Onkel Dagobert (6 März 2016)

Du musst auch bedenken dass deine Messwerte mehr oder weniger fehlerbehaftet sind. Wenn du jede Millisekunde einen Messwert addierst, dann hast du den Messfehler innerhalb einer Sekunde bereits vertausendfacht! Ich würde den Wert mitteln oder einfach dämpfen und dann aufaddieren. Die genannten 5s sind erst einmal nicht verkehrt.


----------



## borromeus (6 März 2016)

Crack123 schrieb:


> Also als Beispiel ein Plasma TV, nach einiger Beobachtung schwankt der Verbrauch zwischen 70 und 300W je nach Beleuchtung/Bild,
> wenn der jetzt sagen wir 4h läuft bin ich mir sehr sicher das der Zählwert der Energie schon nicht mehr so genau ist.
> 
> Aber schon klar das 5sek reichen würden wenn der Verbauch Stabil wäre.
> ...



Was wird denn an dem Verteiler für eine wahrscheinliche Leistung gefahren werden, wenn mal in Betrieb?
Nennstrom = ?


----------



## PN/DP (7 März 2016)

Crack123 schrieb:


> Beckhoff hatte sich leider dazu nicht mehr gemeldet, da gäbe es außer einschicken bzw. Austausch wohl keine Alternative oder ich habe einfach irgendwas Grundlegend falsch gemacht,
> ich benutze Beckhoff im Prinzip nur Privat zu Lernzwecken bzw. aus Neugierde aber wäre toll wenn das eventuell doch Funktionieren würde


Warum schickst Du die Klemme nicht zu Beckhoff oder tauschst sie mal aus?

Die Klemme zählt (integriert) bereits intern die kWh, von außen wirst Du das nicht halb so genau hinkriegen. Und bei Differenzen zur Klemme weißt Du nicht, ob es an Deinem Verfahren oder der Klemme liegt. Warum dieser Aufwand - kapitulierst Du vor dem Problem?

Am liebsten würde ich sagen, schicke mir mal Deine Klemme... doch ich habe kein Twincat zum testen.

Ist das so schwer, die Klemme mal mit einer geschickt gewählten definierten Belastung ein paar Stunden zu testen um das Problem kontrolliert und reproduzierbar zu erzeugen? Dann die Wandler vertauschen und erneut testen. Um eindeutig zu sehen, das Problem ist ein Fehler der Klemme? Ist da keine Gewährleistung auf der Klemme? Willst Du keine einwandfrei funktionierende Klemme und einwandfrei funktionierende Gesamtlösung?

Harald


----------



## MasterOhh (7 März 2016)

Wie PN/DP schon erwähnt, die Klemme speichert den Energierwert intern persistent ab. Im Systemmanger sollte man die Werte im CoE Reiter der Klemme (Index F801) beobachten können. Wenn die bei einer definierten Last auch nicht mehr weiterzählen, dann ist mit der Klemme wirklich was faul.

Der Vorteil bei den Komplex-Klemmen ist ja, das sie einem schon den Großteil der Berechnungen abnehmen. Im Prinzip muss man im Programm dann nur noch die Werte auslesen.


----------



## weißnix_ (7 März 2016)

Ich hab keine Ahnung, woher Du die Klemme hast. Da Dir nur kostenpflichtige Optionen zur Auswahl stehen, vermute ich, das die Gewährleistungsfrist abgelaufen ist.
That's life....shit happens


----------



## Crack123 (7 März 2016)

Hallo !



Onkel Dagobert schrieb:


> Du musst auch bedenken dass deine Messwerte  mehr oder weniger fehlerbehaftet sind. Wenn du jede Millisekunde einen  Messwert addierst, dann hast du den Messfehler innerhalb einer Sekunde  bereits vertausendfacht! Ich würde den Wert mitteln oder einfach dämpfen  und dann aufaddieren. Die genannten 5s sind erst einmal nicht  verkehrt.



Das Stimmt natürlich, wenn der Messfehler pro Tick kommt ist der natürlich umso höher bei mehr Zählticks :???:





borromeus schrieb:


> Was wird denn an dem Verteiler für eine wahrscheinliche Leistung gefahren werden, wenn mal in Betrieb?
> Nennstrom = ?



Normaler Hausanschluss  3x400V  35A Vorsicherung ebend 




weißnix_ schrieb:


> Ich hab keine Ahnung, woher Du die Klemme hast.  Da Dir nur kostenpflichtige Optionen zur Auswahl stehen, vermute ich,  das die Gewährleistungsfrist abgelaufen ist.
> That's life....shit happens




Die Klemme ist schon 6 Jahre alt da ist sowieso nix mehr mit Gewährleistung, wie du schreibst Shit happens!




MasterOhh schrieb:


> Wie PN/DP schon erwähnt, die Klemme speichert  den Energierwert intern persistent ab. Im Systemmanger sollte man die  Werte im CoE Reiter der Klemme (Index F801) beobachten können. Wenn die  bei einer definierten Last auch nicht mehr weiterzählen, dann ist mit  der Klemme wirklich was faul.
> 
> Der Vorteil bei den Komplex-Klemmen ist ja, das sie einem schon den  Großteil der Berechnungen abnehmen. Im Prinzip muss man im Programm dann  nur noch die Werte auslesen.



EDIT : weil du es erwähnst, Index F801 dieser Wert bzw. Werte  müssen aber Manuel per Programm in diesen Persistenten Speicher geschrieben werden, von Alleine sind diese Werte alle 3 Null sofern ich da nichts falsch interpretiert habe!



PN/DP schrieb:


> Warum schickst Du die Klemme nicht zu Beckhoff oder tauschst sie mal aus?
> 
> Die Klemme zählt (integriert) bereits intern die kWh, von außen wirst Du  das nicht halb so genau hinkriegen. Und bei Differenzen zur Klemme  weißt Du nicht, ob es an Deinem Verfahren oder der Klemme liegt. Warum  dieser Aufwand - kapitulierst Du vor dem Problem?
> 
> ...






Ich kann es reproduzieren, bis 0,8xxx kWh läuft alles Normal ( da ist es egal welcher Stromwandler und welche Phase ) danach wird nur noch ab 450-500W Last weitergezählt, nach einem Zählerreset läuft das ganze bis 0,8xxxx wieder usw. 
Das hatte ich schon geschrieben, wie genau es zu diesem komischen Ablauf kommt keine Ahnung, da wird wahrscheinlich nur ein Beckhoff besuch der Klemme helfen können.


----------



## Crack123 (21 März 2016)

Hallo!

Mal ein Nachtrag, meine Lösung sieht jetzt so aus :

Der Energiezähler in der Klemme läuft bis 0,1 kWh rauf wird dann Reseted auf 0 und gleichzeitig addiere ich diesen Wert und speichere Ihn in eine Variable, 
Nebenbei läuft noch eine Addition wo man dann Laufend den gespeicherten Wert + den laufenden Zählerwert sehen kann ( also quasi Normaler Energiezähler ) 
Interessant wäre für mich ob dieser Ablauf die Klemme endgültig zerstört in Punkto Speicher, 
ich speichere den EnergieWert NICHT in dem Remanenten Speicherbereich in der Klemme sondern nur Lokal in einer Variable.


----------



## Crack123 (27 März 2016)

Also Ok so  gehts auch nicht, nach 3 Tagen blieb der Zähler auch mit meinem Spezialreset stehen obwohl immer bei 100Wh auf 0 zurückgesetzt wurde.

Ich gebe nun mit der Klemme auf, also back to the roots IR Leuchtdiode und Fotowiderstand in den Zählerkasten reinbauen und mir die Flanke selber zählen!


----------



## weißnix_ (27 März 2016)

Hat Beckhoff möglicherweise eine (akzeptable) Reparaturpauschale für sowas? Möglicherweise lässt sich die Klemme ja für einen erträglichen Obulus wiederbeleben?
Einschicken un erstmal kostenpflichtiges Angebot ist natürlich doof.


----------



## NieZuSpaet (27 März 2016)

Moin,
du hattest am Anfang mal geschrieben, dass der eine Kanal rückwärts zählt. Wie hast du das korrigiert? Durch umklammen oder durch setzen des Flags?
Ich habe seit ein paar Wochen eine KL3403 hier im Haus. Auf L1 ist bei uns die PV angeschlossen. Anfangs hatte ich auf L1 mehr Bezug als Leistung der PV. Da war alles i.O. Solange die Gesamtleistung noch positiv war, zählt die Klemme in beide Richtungen. Irgendwann war der Ertrag vom Dach so groß, dass die Gesamtleistung ins Negative ging. Da blieb dann P bei Null stehen, zählte aber irgendwas im Überlaufregister. Irgendwann bewegte sich garnichts mehr.
Tausche doch noch mal die Anschlüsse am Stromwandler und schließe nur einen Kanal an. Vielleicht ist da doch irgendwo der Wurm drin.
Gruß
Holger


----------



## Crack123 (27 März 2016)

Hallo!

Also die Klemme hat ja 2 Zähler einer für nur Negativ und einer für Pos und Neg. ,
hatte ja die Stromwandler verkehrt rum angeschlossen bzw. eingeschleift, 
darum zählte dann der normale Zähler Rückwärts.
 aus der Doku:
Die Energiewerte können unter Zuhilfenahme des Command-Objekts (siehe Index 0xFB00 [} 100])
gesichert werden. Der negative Energiewert ist der Wert, der durch eine negative Leistung erzeugt wird
(generatorischer Betrieb).* Der Energiewert in Subindex 01 bis 03 setzt sich aus generatorischer und
verbrauchter Energie zusammen, d.h. im Generatorbetrieb wird dieser Wert kleiner. Um die positive Energie
zu berechnen, müssen beide Werte zusammengefasst werden*.



Die Elektrische Verdrahtung ist jetzt auf jeden Fall richtig, alle Werte sind plausibel, warum aber die Klemme trotz des zurücksetzens auch wieder stehen blieb...keine Ahnung.

Betreffs Beckhoffs, hatte nochmal eine Mail geschrieben mit ein paar Fragen in Bezug auf die Messgrößen, 
ob die Klemme denn überhaupt mit so kleinen Leistungen/Strömen zurecht kommt aber da kahm leider keine Antwort mehr zurück.

Wenn ich die Klemme doch einschicken sollte bekomme ich sicher dann als Antwort alles Ok damit wette ich darauf


----------



## NieZuSpaet (27 März 2016)

Was ist denn, wenn du die Skalierung der Klemme rauf setzt? Bei welchem Wert bleibt sie dann stehen?


----------



## Crack123 (27 März 2016)

Die Skalierung betrifft nur einzelne Werte V/A/W  die Energie kommt als fertige Zahl aus der Klemme und wird dann nur mit dem Stromwandlerwert verrechnet damit die Zahl stimmt, da lässt sich nichts ändern.


----------

