Hallo
Kann man so einen superremanenten Zähler schreiben, oder ist eine Speicherung auf Speicherkarte unumgänglich?
Eventuell hat jemand ein Beispiel.
Meine bisherige Lösung:
FUNCTION_BLOCK WM_Zaehler
VAR_INPUT
Takt: BOOL; (*Zähltakt*)
END_VAR
VAR_OUTPUT
QV: DWORD; (*Zählerwert in kWh*)
END_VAR
VAR
TR1: R_TRIG; (* 1000kW Flanke *)
TR2: R_TRIG; (* 1000MW Flanke *)
END_VAR
VAR RETAIN PERSISTENT
C1: CTU; (*kW Zähler*)
C2: CTU; (*MW Zähler*)
C3: CTU; (*GW Zähler*)
END_VAR
VAR
_ImpVar_422_21: DWORD;
_ImpVar_422_23: DWORD;
_ImpVar_422_7: DWORD;
_ImpVar_422_9: DWORD;
_ImpVar_422_11: DWORD;
_ImpVar_422_12: DWORD;
END_VAR
Programmteil
CAL C1(CU := Takt, RESET := TR1.Q, PV := 1000)
CAL TR1(CLK := C1.Q)
CAL C2(CU := TR1.Q, RESET := TR2.Q, PV := 1000)
CAL C3(CU := TR2.Q)
CAL TR2(CLK := C2.Q)
LD C3.CV
WORD_TO_DWORD
ST _ImpVar_422_21
LD _ImpVar_422_21
MUL 1000000
ST _ImpVar_422_23
LD C2.CV
WORD_TO_DWORD
ST _ImpVar_422_7
LD _ImpVar_422_7
MUL 1000
ST _ImpVar_422_9
LD _ImpVar_422_23
ADD _ImpVar_422_9
ADD _ImpVar_422_12
ST _ImpVar_422_11
LD _ImpVar_422_11
ST QV
LD C1.CV
WORD_TO_DWORD
ST _ImpVar_422_12
LD TRUE
Gruß Thomas