ChristianVogel
Level-2
- Beiträge
- 401
- Reaktionspunkte
- 53
Guten Morgen Herr Namensvetter,
also grundsätzlich kannst du ja zu einem Datum einen Zeitwert addieren (z.B. DTL + TIME), das Ergebnis wäre dann wieder ein Datum. Was aber schlecht geht ist ein Datum mit einem Datum addieren. Da stellt sich das TIA vermutlich quer. Das Problem ist, das Format Time. Das geht wie du ja schon herausgefunden hast nur bis 24 Tage. Auf der 1500er löse ich das mit dem LTIME Format. Das hast du leider bei der 1200 nicht. Da es auf der 1200er laut Datentyptabelle nur das TIME Format gibt wird das jetzt schwierig.
Ich vermute mal 24 Tage reichen dir nicht? Dann fallen mir jetzt auf anhieb zwei unfeine Lösungen ein.
1.) Du addierst hintereinander mehrere TIME Variablen. Damit kannst du dann x mal 24 Tage, wird aber für die Eingabe am HMI unschön.
2.) Du schaust dir an, wie das Format DTL aufgebaut ist und fuscht dann z.B. durch INT (Tage) -> DTL irgendwie rum. Wenn ich mir den Aufbau von DTL so ansehe wird das allerdings recht aufwändig.
Ich hoffe ich konnte weiterhelfen,
Gruß (auch) Christian
#MyDate.Day := #MyDate.Day + INT_TO_USINT(30);
#MyDate := DATE_TO_DTL(DTL_TO_DATE(#MyDate))
DTL ist ja ein Struct aus Jahr, Monat, Tag, Wochentag usw., welche jeweils als UINT oder USINT definiert sind
Du kannst auf die einzelnen Member direkt zugreifen, z.B. #MyDate.Day.
Somit kannst Du zum Tag direkt Deine 30 Tage durch einfache Addition hinzufügen, in etwa:
(PS: Vielleicht funktioniert es sogar ohne die Typwandlung bei der 30, solange sie am Ende der Addition kommt)Code:#MyDate.Day := #MyDate.Day + INT_TO_USINT(30);
Mit:
korrigiert die S7-1200 nicht passende Einträge, wie z.B. den Wochentag (mache ich z.B. bei der Berechnung der aktuellen KW).Code:#MyDate := DATE_TO_DTL(DTL_TO_DATE(#MyDate))
Vermutlich betrifft das auch zu große Tagesangaben, also den nötigen Übertrag in Monat und eventuell ins Jahr. Würde ich einfach mal ausprobieren.
Wenn nicht kann man diese Überträge ja auch selber behandeln. Allerdings finde ich da SCL dann etwas geeigneter für als FUP/KOP.
PS:
Eine Überlegung ist dann vlt. noch, ob man der Einfachheit halber den Monat mit 1 addiert.
Allerdings ist der Zyklus dann je nach Monatslänge etwas "wackeliger".
Und in den letzten Monatstagen ist diese Addition u.U. auch nicht ganz unkritisch.
Wie gesagt, nicht zum angegebenen Datum passende Wochentage werden mit der Wandlung in DATE und zurück zu DTL korrigiert., was das Ergebniss ist wenn ich einfach den Tageswert +30 eingebe, es wird warscheinlich nicht der 42. August dabei rauskommen, ...
ich habe mir durchaus Gedanken gemacht, dass ich Tage und Stunden eingebbar machen könnte und dann im Hintergrund mit dem 1Hz-Taktmerker hochzähle und bei "größergleich" eben Meldungen auslösen könnte, da bin ich ganz Eurer Meinung.
-> Mein Hintergedanke war der, ein "Reales Datum" anzeigen zu können, wo eben ein Instandhalter nachkucken kann, wann er denn das nächste Mal an die Maschine muß, bzw. er nachschauen kann wann das letzte mal jemand an der Maschine eine Wartung etc durchgeführt hat.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?