Eaton easy

Dieter.pf

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich möchte eine Zeitschaltuhr erstellen, welche jeden Tag um ca. 1 Minute und 20 sekunden später startet bzw der Ausgang auf 1 geht.
Bsp: Heute: um 14:00 geht der Ausgang auf 1 bis um 17:00
Morgen: geht der Ausgang um 14:01 und 20 sekunden auf 1 bis 17:00 Uhr
Mittwoch: 14:02 und 40 Sekunden usw.
Wie kann ich diesen Baustein realisieren?
Die 1 Minute und 20 Sekunden sollten auch einstellbar sein.
Sollte jmd. eine Möglichkeit kennen, dann die Bausteine mit Verschaltung benennen.
Danke im voraus.
 
Guugle sagt mir :"Die easySoft V7 stellt Anwendern vier Programmiersprachen (EDP, KOP, FBS, ST) zur Verfügung und reduziert so den Einarbeitungsaufwand für alle Anwender."
Sollte jmd. eine Möglichkeit kennen, dann die Bausteine mit Verschaltung benennen.
:unsure: Was meinst Du damit?

Kommst Du mit folgendem, völlig ungestesteten, hoffentlich halbwegs ST-konformen ProgrammSchippsel klar?
Code:
FUNCTION_BLOCK DIETER

VAR_INPUT
    idAktu_Zeit     : DINT ; // wie alle Zeiten hier in s :  h * 3600 + m * 60 + s
    idStoppZeit     : DINT ; // Z.B. für 17:00:00  -> 17 * 3600 +  0 * 60 +  0 = 61200 s
    idAdditZeit     : DINT ; // Z.B. für 00:01:20  ->  0 * 3600 +  1 * 60 + 20 =    80 s
END_VAR                      // wird addiert in dem Moment, wenn Ausgang AUSgeschaltet wird

VAR_IN_OUT
    iodStartZeit    : DINT ; // Z.B. für 14:04:00  -> 14 * 3600 +  4 * 60 +  0 = 50640 s
END_VAR                      // wird addiert in dem Moment, wenn Ausgang AUSgeschaltet wird

VAR_OUTPUT
    obAusgang       : BOOL ; // Ergebnis
END_VAR

VAR
    tbAusgangAkt    : BOOL ; // temp;
    tbDeMo          : BOOL ; // temp; tbDeMo ("DeMorgan") bei "Stopp am FolgeTag" -> OR statt AND
    sbAusgangZuv    : BOOL ; // "FlankenMerker"
END_VAR

tbDeMo           := iodStartZeit > idStoppZeit ;
tbAusgangAkt     := tbDeMo XOR (tbDeMo XOR (iodStartZeit <= idAktu_Zeit) AND tbDeMo XOR (idAktu_Zeit < idStoppZeit)) ; 
IF sbAusgangZuv AND NOT tbAusgangAkt THEN   // bei negativer Flanke des Ausgangs ...
    iodStartZeit := (iodStartZeit + idAdditZeit) MOD 84600 ; // -> iodStartZeit aktualisieren
END_IF ;
sbAusgangZuv     := tbAusgangAkt ; // "FlankenMerker" aktualisieren
obAusgang        := tbAusgangAkt ;

END_FUNCTION_BLOCK

Die 1 Minute und 20 Sekunden sollten auch einstellbar sein.
Das o.g. beinhaltet nur den Vergleich der aktuellen Uhrzeit mit den (jeweils gültigen) Start- und Stopp-Zeiten und das Erhöhen der StartZeit beim Ausschalten des Ausgangs, um beim nächsten Starten die neue StartZeit verfügbar zu haben.
Die vier ZeitWerte haben alle dasselbe Format, nämlich die Anzahl Sekunden (0..86399) mit dem DatenTyp DINT.
Ist die StartZeit kleiner als die StoppZeit, so wird am selben Tag gestoppt wie gestartet.
Ist die StartZeit grösser als die StoppZeit, so wird am FolgeTag gestoppt.
Woher Du diese Werte nimmst bzw. wie Du diese Werte eingebbar/einstellbar machst ... keine Ahnung.
 
Zuletzt bearbeitet:
Hat das was mit Sonnenauf- oder -untergängen zu tun?
Gibt es da vielleicht fertige Astro-Bausteine?

Harald
Nicht direkt. Worum es direkt geht:
Ich habe eine PV Anlage, welche Nachlaufgesteuert ist. Sprich die PV Module werden über einen Verstellmotor der Sonne nachgeführt. Das Programm für die Nachführung habe ich schon programmiert funktioniert top.

Zum Problem: Am Nachmittag je nach Jahreszeit wenn die Sonne langsam untergeht, werfen die Module einen Schatten auf die andere Module, welches zu einem Leistungsverlust führt. Deshalb gibt es die sogenannte "Abendstellung". Dabei werden die Module immer weiter zurück gefahren, damit kein Schatten für die anderen Module entsteht.
Nun suche ich einen Baustein (oder eine Kombination aus mehreren) im Easy E4 Programm, mit welchem ich jeden Tag um ca.1 Minute und 20 Sekunden später oder früher (je nach Jahreszeit) diese Abendstellung starten kann.
Guugle sagt mir :"Die easySoft V7 stellt Anwendern vier Programmiersprachen (EDP, KOP, FBS, ST) zur Verfügung und reduziert so den Einarbeitungsaufwand für alle Anwender."

:unsure: Was meinst Du damit?

Kommst Du mit folgendem, völlig ungestesteten, hoffentlich halbwegs ST-konformen ProgrammSchippsel klar?
Code:
FUNCTION_BLOCK DIETER

VAR_INPUT
    idAktu_Zeit     : DINT ; // wie alle Zeiten hier in s :  h * 3600 + m * 60 + s
    idStoppZeit     : DINT ; // Z.B. für 17:00:00  -> 17 * 3600 +  0 * 60 +  0 = 61200 s
    idAdditZeit     : DINT ; // Z.B. für 00:01:20  ->  0 * 3600 +  1 * 60 + 20 =    80 s
END_VAR                      // wird addiert in dem Moment, wenn Ausgang AUSgeschaltet wird

VAR_IN_OUT
    iodStartZeit    : DINT ; // Z.B. für 14:04:00  -> 14 * 3600 +  4 * 60 +  0 = 50640 s
END_VAR                      // wird addiert in dem Moment, wenn Ausgang AUSgeschaltet wird

VAR_OUTPUT
    obAusgang       : BOOL ; // Ergebnis
END_VAR

VAR
    tbAusgangAkt    : BOOL ; // temp;
    tbDeMo          : BOOL ; // temp; tbDeMo ("DeMorgan") bei "Stopp am FolgeTag" -> OR statt AND
    sbAusgangZuv    : BOOL ; // "FlankenMerker"
END_VAR

tbDeMo           := iodStartZeit > idStoppZeit ;
tbAusgangAkt     := tbDeMo XOR (tbDeMo XOR (iodStartZeit <= idAktu_Zeit) AND tbDeMo XOR (idAktu_Zeit < idStoppZeit)) ;
IF sbAusgangZuv AND NOT tbAusgangAkt THEN   // bei negativer Flanke des Ausgangs ...
    iodStartZeit := (iodStartZeit + idAdditZeit) MOD 84600 ; // -> iodStartZeit aktualisieren
END_IF ;
sbAusgangZuv     := tbAusgangAkt ; // "FlankenMerker" aktualisieren
obAusgang        := tbAusgangAkt ;

END_FUNCTION_BLOCK


Das o.g. beinhaltet nur den Vergleich der aktuellen Uhrzeit mit den (jeweils gültigen) Start- und Stopp-Zeiten und das Erhöhen der StartZeit beim Ausschalten des Ausgangs, um beim nächsten Starten die neue StartZeit verfügbar zu haben.
Die vier ZeitWerte haben alle dasselbe Format, nämlich die Anzahl Sekunden (0..86399) mit dem DatenTyp DINT.
Ist die StartZeit kleiner als die StoppZeit, so wird am selben Tag gestoppt wie gestartet.
Ist die StartZeit grösser als die StoppZeit, so wird am FolgeTag gestoppt.
Woher Du diese Werte nimmst bzw. wie Du diese Werte eingebbar/einstellbar machst ... keine Ahnung.
Danke für deine Arbeit, leider kann ich nicht sehr viel mit der Arbeit anfgangen, da ich es nur gewohnt bin mit (in) FBS zu programmieren.
 
Zuletzt bearbeitet:
... der Sonne nachgeführt.
Also doch abhängig vom SonnenStand!
Nun suche ich einen Baustein (oder eine Kombination aus mehreren) im Easy E4 Programm, mit welchem ich jeden Tag um ca.1 Minute und 20 Sekunden später oder früher (je nach Jahreszeit) diese Abendstellung starten kann.
"Früher" hatte ich nicht erwähnt, geht aber mit 'FUNCTION_BLOCK DIETER' (#2) auch mit einem negativen Wert für 'idAdditZeit'.
 
Zurück
Oben