Autor Thema: superremanenter kWh Zähler so möglich ?  (Gelesen 6728 mal)

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 712
  • Think easy!
    • mollgruppe
superremanenter kWh Zähler so möglich ?
« am: Mai 12, 2012, 15:45:58 Nachmittag »
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
Weil Einfach einfach Einfach ist!

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 712
  • Think easy!
    • mollgruppe
Re:superremanenter kWh Zähler so möglich ?
« Antwort #1 am: Juni 21, 2012, 11:59:46 Vormittag »
Hallo

Nach ein bisschen überlegen und testen hab ich es nun so gelöst:

FUNCTION_BLOCK Zaehler
(* Z_Wert ist in GLOBAL_VAR persistent remenent
Takt von Janitza 1Imp / kWh *)

VAR_INPUT
   Takt: BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
   Z_Flanke: F_TRIG;
END_VAR
_______________________________________________
   CAL      Z_Flanke(CLK := Takt)

   LD      Z_Flanke.Q
   NOT
   JMPC   Sprung

   LD      Z_Wert
   ADD      1
   ST      Z_Wert

Sprung:

return
Weil Einfach einfach Einfach ist!

Offline Ole

  • Newbie
  • *
  • Beiträge: 5
Re:superremanenter kWh Zähler so möglich ?
« Antwort #2 am: Oktober 05, 2013, 20:59:05 Nachmittag »
Ich denke die Speicherung auf die Speicherkarte ist unumgänglich, da die Aufgezeichneten Daten bei CPU Tausch so verloren gehen.

Allerdings müssen die Daten dann von der Speicherkarte wieder zurück gelesen werden.

Hat dafür jemand ein Beispiel?


Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 712
  • Think easy!
    • mollgruppe
Re:superremanenter kWh Zähler so möglich ?
« Antwort #3 am: Oktober 15, 2013, 22:25:01 Nachmittag »
Hallo Ole,

das ständige schreiben auf die Karte sollte vermieden werden. Man könnte den Wert um 24:00 Uhr jeweils abspeichern.
Den aktuellen Zählerstand vom eigentlichen Zähler, nach CPU-Tausch, wieder im Programm zu hinterlegen ist das kleinste Problem. Bei meiner Lösung force ich die Variable Z_Wert kurz mit dem richtigen Wert vom Janitza und fertig ist der Abgleich.
Ein zurücklesen von der Karte macht da keinen Sinn, weil wärend des CPU Ausfalls der eigentliche Zähler weiter läuft und die Werte nicht mehr übereinstimmen.

Gruß Thomas
Weil Einfach einfach Einfach ist!

Offline E-Herry

  • Jr. Member
  • **
  • Beiträge: 29
Re:superremanenter kWh Zähler so möglich ?
« Antwort #4 am: Oktober 16, 2013, 22:36:04 Nachmittag »
Hallo radar17892,
Das Programm hört sich gut an, meine Frage da ich mich nicht so gut aus kenne .
Mit welcher Easy funktioniert das?
Funktioniert das auch mit dem Gaszähler (Reedkontakt  100 imp =1m³ Gas hab ich schon)
Danke für die Hilfe!
Gruß
E-Herry

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 712
  • Think easy!
    • mollgruppe
Re:superremanenter kWh Zähler so möglich ?
« Antwort #5 am: Oktober 17, 2013, 20:30:50 Nachmittag »
Hallo E-Herry,

das sollte mit jeder Codesys Steuerung funktionieren. es sind keine Speziellen Bausteine verwendet.
Beachten sollte man die Impulslänge, sie sollte länger als die Zykluszeit sein.

Gruß Thomas
Weil Einfach einfach Einfach ist!