Problemlösung bei SEL Baustein

So.. könnte funktionieren..
Code:
FUNCTION_BLOCK AnpassungTime
VAR_IN_OUT
    TimeIN                                            : TIME;
    ZeitStr                                                : STRING;
END_VAR
VAR_OUTPUT
END_VAR
VAR
     Timehelp                                            : TIME;
    TimeWord                                            : DWORD;
    TimeStr                                            : STRING;
    hrs, mins, rest                                        : DWORD;
    Timer1                                                : TON;
    minstr, hstr                                        : STRING;
    help1                                                : DWORD;
    newh, newmin                                    : INT;
END_VAR
Code:
Timer1(IN:=NOT Timer1.Q , PT:=t#10s);                                (*Timerbaustein, Impuls alle 10s*)
IF Timer1.Q THEN TimeWord:=TIME_TO_DWORD(TimeIN);
    Zeitstr:=CONCAT(hstr,':');                                            (*Aus hstr und minstr wird 02:34*)
    Zeitstr:=CONCAT(Zeitstr, minstr);
    ELSE TimeWord:=TimeWord;
        END_IF;
TimeWord:=TIME_TO_DWORD(TimeIN);                            (*Word zum Weiterverarbeiten*)
hrs:=TimeWord/3600000;                                            (*anzahl der Std.*)
rest:=TimeWord-(hrs*3600000);                                        (*Rest*)
mins:=rest/60000;                                                    (*anzahl der min*)
minstr:=DWORD_TO_STRING(mins);                                (*Umwandlung in min String *)
hstr:=DWORD_TO_STRING(hrs);                                    (*Umwandlung in h String*)
IF LEN(hstr)=1 THEN hstr:=CONCAT('0',hstr);                        (*Für die Visu 1 wird zu 01*)
    ELSE hstr:=hstr;
        END_IF;
IF LEN(minstr)=1 THEN minstr:=CONCAT('0', minstr);                (*Für die Visu 1 wird zu 01*)
    ELSE minstr:=minstr;
        END_IF;
newh:=STRING_TO_INT(MID(zeitstr, 2,1));                            (*Aus dem Zeitstr...*)
newmin:=STRING_TO_INT(MID(zeitstr,2,4));
help1:=(newh*3600000)+(newmin*60000);
timehelp:=DWORD_TO_TIME(help1);
IF timein<>timehelp THEN TimeIN:=timehelp;
    ELSE timeIN:=TimeIN;
        END_IF;
 
Meinst du jetzt einen Eingang Startzeit, einen Endzeit und der sagt dir zB Start 12:00 Ende 13:15 entspricht 75min ? oder wie meinst du das ?
 
Pass auf,

momentan ist es ja so, dass Ich die Startzeit per TOD Wert angebe, also bspw. TOD:=TOD#8:40 und die Dauer per TIME Wert TIME:=T#13H.

Ich möchte aber in der Webvisu eine ANzeige erhalten, sodass ich den TOD Wert als 8:40 angezeigt bekomme und auch diesen ändern kann, und den TIME Wert als 21:40 angezeigt bekomme und diesen ändern kann. Wenn ich diesen änder, soll der konvertiert werden.

Es geht zwar auch so jetzt, das wäre aber das schönste :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht kannst du mir zwischenzeitlich mobil helfen. Mir ist aufgefallen, dass durch die beiden Hinauf- und Hibablauf Bausteine in einem Zyklus 2x der gleiche Ausgang angesprochen wird.... Demnach blockiert natürlich der eine Ausgang den anderen...... Welchen baustein muss ich dazwischensetzen, damit eben nur eine Variable durchgesetzt wird....
 
Hier mal Ein Foto.

Die beiden eingekreisten Ausgänge werden parallel angesprochen und überlagern sich.

Demnach muss da doch ein Baustein davor , der dafür sorgt, dass nur ein Signal an den Ausgang ausgegeben wird...


Und genau den brauche ich, sonst bekomme ich Fehler bei der Spannungsausgabe
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    67,8 KB · Aufrufe: 26
Zuletzt bearbeitet:
Und wie entscheide ich an dieser Stelle welches Signal er nehmen soll ?

Er soll ja morgens Signal 1 nehmen und abends Signal 2.... Mit schließt nicht unbedingt wie ich das bewerkstelligen könnte....
 
Na mit einem SEL. Füg den einfach ein. Die Verschaltung ist ziemlich einfach und selbsterklärend.
 
So, ich habe das nun mit dem SEL Baustein gelöst..... AAAber...

Trotz des Timerbausteins der die gleichen Infos hat wie die anderen Timerbausteine, gibt dieser ein TRUE Signal aus, obwohl Zeit es eigentlich nicht ausgeben soll.

ich habe dir das projekt einmal hochgeladen, kannst du mal schauen ob du den fehler siehst ?

Also der Baustein Analogchanger reagiert falsch......

ich seh den wald vor lauter bäumen nicht mehr....
 

Anhänge

  • Terrarienschaltung.rar
    113,9 KB · Aufrufe: 3
Zurück
Oben