Autor Thema: ONTIME und METER_STAT PERSISTENT  (Gelesen 7651 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline good_mike

  • Newbie
  • *
  • Beiträge: 39
    • Profil anzeigen
ONTIME und METER_STAT PERSISTENT
« am: 29. März 2010, 20:41:45 »
Hallo,

ich bekomme es einfach nicht hin das mein METER_STAT die Werte nach einem Neutart behalten.
Ich denke das das Problem im Bereich des ONTIME Bausteins liegt. Ich bastel schon länger an dem Problem rum und komme einfach nicht weiter. Ich denke ich habe auch die relevanten Forenbeiträge gelesen. Aber.....
 
Das Problem mit dem Datum ...1970 bei dem METER_STAT Baustein habe ich, so denke ich wenigstens, gelöst.

Ich habe Euch mal die Var. Deklaration und eine Teil des Programms angehängt.

Wäre super wenn jemand eine Tip hätte.

PROGRAM Betriebsstunden
VAR
Betriebsstunden_Brenner: BOOL;
B_Betriebsstunden_Heizungspumpe1requested: BOOL;

Betriebsstunden_Brenner_MIN: UDINT;
Betriebsstunden_Zirkulationspumpe_MIN: UDINT;

ONTIME_Betriebsstunden_Brenner: ONTIME;
ONTIME_Betriebsstunden_Zirkulationspumpe: ONTIME;
ONTIME_Betriebsstunden_Heizungsspumpe1: ONTIME;
ONTIME_Betriebsstunden_Heizungsspumpe1requested: ONTIME;


METER_STAT_Betriebsstunden_Brenner: METER_STAT;
METER_STAT_Betriebsstunden_Zirkulationspumpe: METER_STAT;

B_Heizungspumpe1_Freigabe: BOOL;
Betriebsstunden_Heizungspumpe1_DIV: UDINT;
END_VAR

VAR  RETAIN PERSISTENT

Betriebsstunden_Brenner_SEC: UDINT;
Zyklen_Brenner: UDINT;

Betriebsstunden_Zirkulationspumpe_SEC: UDINT;
Zyklen_Zirkulationspumpe: UDINT;

Betriebsstunden_Heizungspumpe1_SEC: UDINT;
Zyklen_Heizungspumpe1: UDINT;

Betriebsstunden_Heizungspumpe1requested_SEC: UDINT;
Zyklen_Heizungspumpe1requested: UDINT;


Betriebsstunden_Brenner_Last_Day : REAL;
Betriebsstunden_Brenner_Current_Day : REAL;
Betriebsstunden_Brenner_Last_Week: REAL;
Betriebsstunden_Brenner_Current_Week : REAL;
Betriebsstunden_Brenner_Last_Month : REAL;
Betriebsstunden_Brenner_Current_Month : REAL;
Betriebsstunden_Brenner_Last_Year: REAL;
Betriebsstunden_Brenner_Current_Year: REAL;

Betriebsstunden_Zirkulationspumpe_Last_Day: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Day: REAL;
Betriebsstunden_Zirkulationspumpe_Last_Week: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Week: REAL;
Betriebsstunden_Zirkulationspumpe_Last_Month: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Month: REAL;
Betriebsstunden_Zirkulationspumpe_Last_Year: REAL;
Betriebsstunden_Zirkulationspumpe_Current_Year: REAL;




END_VAR

ONTIME_Betriebsstunden_Brenner(
IN:=Betriebsstunden_Brenner ,
RST:= FALSE,
SECONDS:=Betriebsstunden_Brenner_SEC ,
CYCLES:=Zyklen_Brenner);

Betriebsstunden_Brenner_MIN:=
Betriebsstunden_Brenner_SEC/60;

METER_STAT_Betriebsstunden_Brenner(
IN:=UDINT_TO_REAL(Betriebsstunden_Brenner_MIN) ,
DI:=SDT_TO_DATE(TimeSTD) ,
RST:=FALSE,
Last_Day:=Betriebsstunden_Brenner_Last_Day ,
Current_Day:=Betriebsstunden_Brenner_Current_Day ,
Last_Week:=Betriebsstunden_Brenner_Last_Week ,
Current_Week:=Betriebsstunden_Brenner_Current_Week ,
Last_Month:=Betriebsstunden_Brenner_Last_Month ,
Current_Month:=Betriebsstunden_Brenner_Current_Month ,
Last_Year:=Betriebsstunden_Brenner_Last_Year ,
Current_Year:=Betriebsstunden_Brenner_Current_Year );

METER_STAT_Betriebsstunden_Brenner_Current_Day_global:=
Betriebsstunden_Brenner_Current_Day;

ONTIME_Betriebsstunden_Zirkulationspumpe(
IN:=Zirkulationspumpe_laeuft_global ,
RST:=FALSE ,
SECONDS:=Betriebsstunden_Zirkulationspumpe_SEC ,
CYCLES:=Zyklen_Zirkulationspumpe);

Betriebsstunden_Zirkulationspumpe_MIN:=
Betriebsstunden_Zirkulationspumpe_SEC/60;



METER_STAT_Betriebsstunden_Zirkulationspumpe(
IN:=UDINT_TO_REAL(Betriebsstunden_Zirkulationspumpe_MIN) ,
DI:=SDT_TO_DATE(TimeSTD) ,
RST:=FALSE ,
Last_Day:=Betriebsstunden_Zirkulationspumpe_Last_Day ,
Current_Day:=Betriebsstunden_Zirkulationspumpe_Current_Day ,
Last_Week:=Betriebsstunden_Zirkulationspumpe_Last_Week ,
Current_Week:=Betriebsstunden_Zirkulationspumpe_Current_Week ,
Last_Month:=Betriebsstunden_Zirkulationspumpe_Last_Month ,
Current_Month:=Betriebsstunden_Zirkulationspumpe_Current_Month ,
Last_Year:=Betriebsstunden_Zirkulationspumpe_Last_Year ,
Current_Year:=Betriebsstunden_Zirkulationspumpe_Current_Year );

METER_STAT_Betriebsstunden_Zirkulationspumpe_Current_Day_global:=
Betriebsstunden_Zirkulationspumpe_Current_Day;


Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re:ONTIME und METER_STAT PERSISTENT
« Antwort #1 am: 30. Juni 2010, 12:29:52 »
du musst deine bausteine persistent remanent deklarieren

var remanent
   xxx : ontime;
end_var

Offline Tom

  • Newbie
  • *
  • Beiträge: 40
    • Profil anzeigen
Re:ONTIME und METER_STAT PERSISTENT
« Antwort #2 am: 14. Oktober 2010, 04:25:31 »
Das Problem beim ONTIME liegt am init-Teil, dort werden beim Start die Zähler genullt. Man könnte doch den Teil so ändern:


IF NOT init THEN
init := TRUE;
last := tx;
cycles := cycles + BOOL_TO_UINT(in);
ms := 0;
ELSIF rst THEN
SECONDS := 0;
CYCLES := BOOL_TO_UINT(in);
ELSIF IN THEN
...
« Letzte Änderung: 14. Oktober 2010, 04:36:58 von Tom »

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re:ONTIME und METER_STAT PERSISTENT
« Antwort #3 am: 17. Januar 2011, 17:58:20 »
das ist eine guter vorschlag, wir werden das im nächtes release so einbauen