WinCC flexible 2005 - Uhrzeiteingabe am TP

knabi

Level-3
Beiträge
1.298
Reaktionspunkte
338
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es bei WinCC flexible irgendwas vorgefertigtes, um eine Uhrzeit vom Benutzer eingebn zu lassen (in meinem Fall: Startzeit für einen Ofen), soll über ein TP270 realisiert werden. Natürlich kann ich mir das auch selber aus Tagen, Stunden, Minuten und den entsprechenden Schaltflächen basteln, aber vielleicht weiß ja jemand eine elegantere Methode?

Gruß

Holger
 
Was Fertiges habe ich da leider auch nicht.

Ich habe mir mit Textfeldern weitergeholfen. (siehe Bild) Es kann nur ein numerischer Wert von 0 bis 23 bzw. 0 bis 59 eingegeben werden.
Die Auswerung erfolgt dann in der CPU.

Elegant oder nicht. Der Bediener kommt klar damit ... das ist das Wichtigste

Gruß
Thomas
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    53,9 KB · Aufrufe: 86
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab da Was

Vielleicht hilfts...
Musste mal für nen Kunde ne Startzeit "Stunde,Tag usw" Programmieren, das war über :

FC12 (GE_DT) mit ner Flankenabfrage
(geht aber in meiner Version nur 1x keine Wochenschaltuhr)

Und in Der Visu wie im Bild

Grüsse vom Wälder
 

Anhänge

  • Prog.jpg
    Prog.jpg
    62,6 KB · Aufrufe: 77
  • visu.jpg
    visu.jpg
    14,3 KB · Aufrufe: 26
Ja OK, so ungefähr dachte ich mir das auch mit den Textfeldern ;) . Der Weckalarm ist auch genau das, was ich hier noch einbauen muß. Ist dieser Vergleicherbaustein Teil der Standard-Bibliothek?

Gruß

Holger
 
Fc12

Klaro findest ihn unter

-Standart Lib.
-IEC Fun. Blocks
-FC12

Für Info zu FC 12 :

Die Funktion FC 12 vergleicht die Inhalte zweier Variablen im Format DATE_AND_TIME auf größer oder gleich und gibt das Vergleichsergebnis als Rückgabewert aus. Der Rückgabewert führt Signalzustand ”1", wenn der Zeitpunkt am Parameter DT1 größer (jünger) ist als der Zeitpunkt am Parameter DT2 oder wenn beide Zeitpunkte gleich sind. Die Funktion meldet keine Fehler.


Parameter Deklaration Datentyp Speicherbereich Beschreibung
DT1 INPUT DATE_AND_TIME D, L Eingangsvariableim Format DT
DT2 INPUT DATE_AND_TIME D, L Eingangsvariableim Format DT
RET_VAL OUTPUT BOOL E, A, M, D, L Vergleichsergebnis
Die Eingangsparameter können nur mit einer symbolisch definierten Variablen belegt werden.

Quelle : Onlinhilfe S7

Grüsse Wälder
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja OK, das habe ich hin bekommen, danke ;) .

Und damit es nicht langweilig wird:

Kann ich mit Variablen Date_And_Time rechnen? In meinem Fall gibt der Bediener eine Stundenzahl von 1-99 vor; kann ich diese Stunden zu einer in einer Date_And_Time gespeicherten Uhrzeit so addieren, daß auch die korrekte Zeit (also ursprünglich gespeicherte Zeit+eingegebene Stunden, natürlich inklusive Tages- oder sogar Monats-/Jahreswechsel) hinten heraus kommt?

Gruß

Holger
 
Ich denke mit DT kannst du nicht direkt rechnen, da ja die Infos in einzelnen Bytes liegen. Du mußt die eine Routine bauen, die die Bytes ausliest, die Addition vornimmt, auf einen Überlauf (z.Bsp. 12 Uhr + 13 Stunden ergibt 25 Stunden, alsi 1 Tag + 1 Stunde) achtet und ihn behandelt. Zweite Möglichkeit DT in Time of Day (TOD) wandeln (mit FC8). Darin ist dann die Uhrzeit im ms ab Mitternacht enthalten. Damit kann man auch rechnen, allerdings wäre es angebracht mal auszuprobieren, was rauskommt, wenn man mehr als 24 Stunden als Ergebnis bekommt.

DIe Hilfefunktion von Step7 ist da nicht ganz eindeutig:

TOD:
Datentyp Länge (Bit) Format
TIME_OF_DAYoder TOD 32 Tageszeit in Stunden:Minuten:Sekunden.Millisekunden
Beispiele für das Format (oberer und unterer Grenzwert)
TOD#00:00:00.000
TOD#23:59:59.999
Stunden, Minuten und Sekunden müssen angegeben werden. Die Angabe der Millisekunden ist nicht erforderlich.
MSB: Most Significant Bit
LSB: Least Significant Bit
Hinweis:
Der Datentyp TOD wird als vorzeichenlose Ganzzahl in Millisekunden gespeichert, wobei Null gleich Mitternacht ist.

und

TIME_OF_DAY
Wenn der Formalparameter der SFC bzw. des SFB vom Datentyp TIME OF DAY (Uhrzeit 32 Bit) ist, dann können Sie dem Formalparameter folgende Aktualparameter zuweisen:

Direkte Eingabe (Beispiel) Eingabe eines Globaldatums Eingabe symbolisch
T#0D_1H_1M_0S_0MS MD 100 #TYP_TOD
TIME_OF_DAY#0D_1H_1M_0S_0MS ED 0
AD 0
DBD 1

Du siehst, bei TOD scheint auch der Tag dabei zu sein.
Vielleicht gibt es ja einen FC, der das Dateum und die errechnete Zeit wieder in einen DT wandelt?
Also ist an dieser Stelle mal ausprobieren angesagt :rolleyes: .

Die Subtraktion zweier TOD habe ich schon gemacht, das funktioiert und läßt sich am TP/OP schön anzeigen (Laufzeit einer Station).

HA, gefunden, schau dir mal FC1 aus der Standard-Library an, der sollte das können!
 
Zuletzt bearbeitet:
knabi schrieb:
Kann ich mit Variablen Date_And_Time rechnen?
Schau dir die Bausteine unter:
Bibliotheken/Standard Library/IEC Funktion Blocks an. Da sind alle Bausteine aufgeführt, die zum Rechnen mit Zeitvariablen zur Verfügung stehen. Markiere einfach mal den FC1, drücke die F1-Taste und gehe in dem Hilfe-Fenster auf Inhalt. Es öffnet sich ein neues Fenster, indem die Funktionen erklärt werden. Das hier sind die Uhrzeitfunktionen:
FC 3 D_TOD_DT
FC 6 DT_DATE
FC 7 DT_DAY
FC 8 DT_TOD
FC 33 S5TI_TIM
FC 40 TIM_S5TI
FC 1 AD_DT_TM
FC 34 SB_DT_DT
FC 35 SB_DT_TM

Ralle ist so früh am Morgen etwas flinker mit der Tastatur:)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jau, das funktioniert hervorragend mit dem FC1 :ROFLMAO: !

Ich habe jetzt mal die Startzeit der Maschine mit SFC1 von der CPU in einen DB geschrieben.
In meinem Fall will ich nur Stunden aufaddieren, die müssen vor dem Addieren mit 3.600.000 (1000x60x60) multipliziert werden (1000ms pro Sekunde, 60 Sekunden pro Minute, 60 Minuten pro Stunde) und dann mit FC1 zur Startzeit aufaddiert, in eine zweite Date_And_Time Variable geschrieben - fertig. Zwischendurch muß nur ungefähr 30mal der Datentyp gewandelt werden:rolleyes: , aber sonst alles easy :-D !

Vielen Dank für Eure Hilfe!
 
Zurück
Oben