TIA Anzeige Datum/Uhrzeit am Panel

schwimmer

Well-known member
Beiträge
179
Punkte Reaktionen
5
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,
ich habe ein Problem bei der Anzeige von Datum und Uhrzeit auf dem Panel.
CPU 1512
TP1200
TIA V16

Datum und Uhrzeit der CPU werden zu einem Zeitpunkt X ausgelesen und in einer Variable im Format DTL gespeichert. Wenn ich im Panel ein Ausgabefeld Datum/Uhrzeit projektiere, Datum und Uhrzeit anzeigen aktivere, wird bloß #### angezeigt. Aktiviere ich nur Datum anzeigen bzw. nur Uhrzeit anzeigen steht der richtige Wert in den Feldern.
Im Programm werte ich auch eine Zeitdifferenz zwischen zwei Datumswerte aus, die Variable ist im Format LTime. Wie kann ich diese Zeit am Panel anzeigen?

Hat vielleicht jemand hier eine Idee was ich falsch mache?
Danke für eure Unterstützung
 

Ph3niX

Well-known member
Beiträge
372
Punkte Reaktionen
102
Was die Rauten angeht, vermute ich, dass das Ausgabefeld zu klein ist, also nicht breit genug, versuch es mal ein wenig zu vergrößern.
 

Ph3niX

Well-known member
Beiträge
372
Punkte Reaktionen
102
Aber du hast schon ein Datums und Uhrzeit-Feld genommen und nicht das normale EA-Feld? Mit dem normalen EA-Feld geht's nämlich nicht.
 
OP
S

schwimmer

Well-known member
Beiträge
179
Punkte Reaktionen
5
Zuviel Werbung?
->Hier kostenlos registrieren
Genau, für die Anzeige vom Datum / Uhrzeit habe ich ein Datumsfeld genommen und es so breit gemacht wie der Bildschirm ist.
Bei dem Ausgabefeld für die LTime - Variable habe ich die maximale Anzahl an Stellen definiert.
Ich glaube es hat etwas damit zu tun, dass ich die Variable verändere. Datum und Uhrzeit kommt aus der CPU und dann geide ich mir aus der DTL-Variable das Jahr, addiere 1 hinzu und dann wird nur noch ### angezeigt. In der PLC (Beobachtungstabelle) steht aber der richtige Wert drin.
 

PN/DP

User des Jahres 2011 - 2013; 2015 - 2017; 2020
Beiträge
17.268
Punkte Reaktionen
5.076
Datum und Uhrzeit kommt aus der CPU und dann geide ich mir aus der DTL-Variable das Jahr, addiere 1 hinzu und dann wird nur noch ### angezeigt.
Wo und wie addierst Du die 1 hinzu? Da sollten die dafür vorgesehenen Funktionen verwendet werden, damit im DTL auch der korrekte Wochentag eingetragen wird. Möglicherweise kommen bei Dir die ### wegen dem nicht zum Datum passenden (ungültigen) Wochentag im DTL.

Harald
 
OP
S

schwimmer

Well-known member
Beiträge
179
Punkte Reaktionen
5
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo Harald,
da wird dann der Fehler liegen. Ich habe nur das Jahr um 1 erhöht, somit wird der Wochentag natürlich nicht stimmen.
Bei der Verwendung der Datums-/Zeitfunktionen gibt es den Baustein T_ADD, allerdings kann hier ja nur LTime addiert werden. Geht die Addition eines Jahres dann nur über 365d, also 365 Tage?
Dazu auch noch eine Frage zu der Funktion T_DIFF, hier wird die Differenz ebenfalls in LTime ausgegeben. Gibt es eine Möglichkeit die Differenz zwischen zwei DTL-Werten in Jahren/Monaten... auszugeben?
 

Heinileini

Well-known member
Beiträge
4.120
Punkte Reaktionen
827
Dazu auch noch eine Frage zu der Funktion T_DIFF, hier wird die Differenz ebenfalls in LTime ausgegeben. Gibt es eine Möglichkeit die Differenz zwischen zwei DTL-Werten in Jahren/Monaten... auszugeben?
Die Monate haben keine einheitliche Länge (28..31 Tage) und die Jahre haben keine einheitliche Länge (365 oder 366 Tage) - wie soll man also die Anzahl Tage in Anzahl Monate und Anzahl Jahre umrechnen??? :confused:
 
OP
S

schwimmer

Well-known member
Beiträge
179
Punkte Reaktionen
5
So gesehen hast du natürlich Recht, aus dem Wert LTime geht es nicht. Da müsste ich mir dann wohl etwas überlegen wie ich das aus den zwei Datumsangaben manuell berechne.
Gibt es denn eine Möglichkeit die LTime-Variable im Panel direkt anzuzeigen? Das bekomme ich nämlich auch nicht hin.
 

hucki

User des Jahres 2014
Beiträge
5.402
Punkte Reaktionen
1.547
Zuviel Werbung?
->Hier kostenlos registrieren
Ich habe nur das Jahr um 1 erhöht, somit wird der Wochentag natürlich nicht stimmen.
Ich hab' ja mal vor ewigen Zeiten die Kalenderwochenberechnung von S7 classic zu TIA umgesetzt.

Da musste ich auch nach der Datumsmanipulation anschließend den Wochentag korrigieren.
Dazu habe ich das Datum von DTL in DATE und wieder zurück gewandelt, wodurch der Wochentag automatisch korrigiert wird.
Das funktioniert vermutlich auch über DT, wenn die Zeit erhalten bleiben soll:
Code:
#MyDate := DT_TO_DTL(DTL_TO_DT(#MyDate));
 

PCS7

Active member
Beiträge
37
Punkte Reaktionen
1
Hallo Schwimmer,
splitte das Struckt auf in Wochentag, Zeit...
Ändere die Werte einzeln und kombiniere das Struckt wieder.
 

Heinileini

Well-known member
Beiträge
4.120
Punkte Reaktionen
827
Da müsste ich mir dann wohl etwas überlegen wie ich das aus den zwei Datumsangaben manuell berechne.
Du möchtest die Differenz zwischen zwei DatumsAngaben ausrechnen und es genügt Dir nicht, die Differenz in Anzahl Tagen anzuzeigen?
Wem willst Du damit einen Gefallen tun, diese Anzahl Tage in Anzahl Jahre und/oder Anzahl Monate umzurechnen? Dir selbst oder einem Bediener, dem Du erst mühsam erklären müsstest, wie er diese Anzeige deuten soll?
Würde es Dir etwas nützen, wenn Du von dem "ca.-Ansatz" ausgehst, dass 1 Jahr ca. 365,25 Tage hat? Und ein "durchschnittlicher Monat" ca. 30,4375 Tage?
Ich kann mir nicht so recht vorstellen, dass man damit etwas sinnvolles/aussagekräftiges angeben kann.
 
OP
S

schwimmer

Well-known member
Beiträge
179
Punkte Reaktionen
5
Zuviel Werbung?
->Hier kostenlos registrieren
So war es in der Tat gedacht. Ich finde, dass ein Bediener oder auch Instandhalter sich unter der Zeitangabe 2 Jahre 8 Monate 28Tage mehr vorstellen kann als wenn er nur 1.242 Tage sieht. Natürlich ist durch die Schaltjahre bzw. durch die Monatslängen eine gewisse Ungenauigkeit in der Anzeige enthalten. Werde mein Vorhaben da wohl nochmals überdenken müssen.
Trotzdem vielen Dank für eure Unterstützung
 
Oben