-> Hier kostenlos registrieren
Halli Hallo,
ich bin gerade dabei eine Aufsummierung in Abhängigkeit von der Sys_CLK zu programmieren. (Aufsummierung eines Gewichtes)
Soweit auch alles gut, nur hab ich nun an der Stelle Monatswert das Problem das ich keine festen "Konstanten" wie 24h oder 60sek pro min habe...Es gibt ja Monate mit mehr oder wenige Taage.
Wenn ich nun z.B. den Monat 1 aufsummiere(alle 30 sek) muss ja der aufsummierte Wert wieder auf 0.0 gestellt werden, sobald die Sys_CLK einen neuen Monat meldet. --> Bsp: Monat 2. Dies auch bei Monat 3 usw..
Aber irgendwie hab ich im Moment eine Denkblockade und komm einfach nicht weiter.
Hier mal mein Code
ich bin gerade dabei eine Aufsummierung in Abhängigkeit von der Sys_CLK zu programmieren. (Aufsummierung eines Gewichtes)
Soweit auch alles gut, nur hab ich nun an der Stelle Monatswert das Problem das ich keine festen "Konstanten" wie 24h oder 60sek pro min habe...Es gibt ja Monate mit mehr oder wenige Taage.
Wenn ich nun z.B. den Monat 1 aufsummiere(alle 30 sek) muss ja der aufsummierte Wert wieder auf 0.0 gestellt werden, sobald die Sys_CLK einen neuen Monat meldet. --> Bsp: Monat 2. Dies auch bei Monat 3 usw..
Aber irgendwie hab ich im Moment eine Denkblockade und komm einfach nicht weiter.
Hier mal mein Code
FUNCTION_BLOCK FB200 //Aufsummierung Tageswert ->Vortag Monatswert -> Jahreswert
VAR_INPUT
Bandwaage {S7_m_c:='true'} : REAL ;
END_VAR
VAR_IN_OUT
END_VAR
VAR_OUTPUT
Tageswert_Akt {S7_m_c:='true'} : REAL:=0.0;
Vortag {S7_m_c:='true'} : REAL:=0.0;
Monatswert {S7_m_c:='true'} : REAL:=0.0;
Jahreswert {S7_m_c:='true'} : REAL:=0.0;
TESTSek :INT;
TESTMin :INT;
TESTStun :INT;
TESTTag :INT;
TESTMon :INT;
TESTJahr :INT;
END_VAR
VAR
Sekunden : INT;
Minuten : INT;
Stunden : INT;
Tag : INT;
Monat : INT;
Jahr : INT;
Monatswert : REAL :=0.0;
S_Tageswert_Akt : REAL; //Summe Tageswert;
x : INT;
END_VAR
BEGIN
//----------------------------------------------Aus DB Uhrzeit und Datum auslesen-------------------------------------------------------------
Sekunden :=BYTE_TO_INT(WORD_TO_BLOCK_DB(1).DB[33]);
Minuten :=BYTE_TO_INT(WORD_TO_BLOCK_DB(1).DB[32]);
Stunden :=BYTE_TO_INT(WORD_TO_BLOCK_DB(1).DB[31]);
Tag :=BYTE_TO_INT(WORD_TO_BLOCK_DB(1).DB[30]);
Monat :=BYTE_TO_INT(WORD_TO_BLOCK_DB(1).DB[29]);
Jahr :=BYTE_TO_INT(WORD_TO_BLOCK_DB(1).DB[28]);
TESTSek := Sekunden;
TESTMin := Minuten;
TESTStun :=Stunden;
TESTTag :=Tag;
TestMon :=Monat;
TESTJahr :=Jahr;
//-------------------------------------------------Atueller Tageswert aufsummieren-------------------------------------------------------------
IF Stunden = 16#0000 AND Sekunden = 16#0000 THEN //Neuer Tag : 0 h 0 min
S_Tageswert_Akt := 0.0;
ELSE
IF Sekunden = 16#0030 THEN
S_Tageswert_Akt := S_Tageswert_Akt + Bandwaage;
Tageswert_Akt := S_Tageswert_Akt;
END_IF;
END_IF;
//--------------------------------------------------------Tageswert Vortag---------------------------------------------------------------------
IF Stunden = 16#0023 AND Sekunden = 16#0059 THEN
Vortag := S_Tageswert_Akt;
END_IF;
//------------------------------------------------------------Monatswert-----------------------------------------------------------------------
??????????????????????????????????
IF Monat = 16#0001 THEN
IF Sekunden = 16#0030 THEN
Monatswert := Monatswert + Bandwaage;
END_IF
END_IF;
???????????????????????????????????