OSCAT Forum

oscat.lib => oscat.lib fuer TwinCAT/CoDeSys => Thema gestartet von: good_mike am 29. März 2010, 20:41:45

Titel: ONTIME und METER_STAT PERSISTENT
Beitrag von: good_mike 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;

Titel: Re:ONTIME und METER_STAT PERSISTENT
Beitrag von: hugo am 30. Juni 2010, 12:29:52
du musst deine bausteine persistent remanent deklarieren

var remanent
   xxx : ontime;
end_var
Titel: Re:ONTIME und METER_STAT PERSISTENT
Beitrag von: Tom 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
...
Titel: Re:ONTIME und METER_STAT PERSISTENT
Beitrag von: hugo am 17. Januar 2011, 17:58:20
das ist eine guter vorschlag, wir werden das im nächtes release so einbauen