TIA DTL Wandlung

steffen21m

Level-1
Beiträge
71
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,
ich habe einen Datenbaustein mit einem Array (1-180) von DTL Werten. Diese DTL Werte werden über einen PC mit Snap7 byteweise mit Tag / Monat / Jahr / Stunde / Minute gefüllt.
Wenn ich die Arrays im Status anschaue, sehe ich ein gültiges Format und alle einzelnen Variablen, wie Tag Monat Jahr Stunde Minute stimmen.
Wenn ich nun das DTL Format in SCL durch DTL_TO_Date und DTL_TO_TOD umwandle, kommt totaler Müll heraus. Wenn ich eine Konstante (DTL) in die Wandlung schicke funktioniert alles.
Es gibt also definitiv Probleme mit meinen DTL Variablen vom PC.
Hat jemand eine Ahnung warum meine DTL Variablen im Status richtig anzeigen, aber trotzdem ungültig sind ?


Danke für eure Hilfe

Gruß Steffen
 
Der DTL-Datentyp besteht aus mehr Komponenten als nur Tag/Monat/Jahr/Stunde/Minute. Haben die nicht aufgeführten Komponenten zulässige Werte? Eventuell muß sogar der Wochentag zum Datum passen.
Schreibe doch mal eine DTL-Konstante in den Datenbaustein und vergleiche dann genau Byte für Byte.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,
danke für die schnelle Antwort. Ich habe schon folgendes versucht:

Variable test = DTL

test = DTL# Konstante

test.day = mein Wert
test.month = mein Wert
test.year = mein Wert
test.hour = mein Wert
test.Minute = mein Wert

so müssten dann die anderen Variablen noch von der Konstante beschrieben sein ? Der Wochentag wird laut Siemens nie beachtet. Wenn ich die Konstante lade, wird der Wochentag auch nicht automatisch generiert.
 
Das sollte so funktionieren.
Das Jahr schreibst Du komplett vierstellig, also 2014 und nicht nicht nur 14?

Wenn ich nun das DTL Format in SCL durch DTL_TO_Date und DTL_TO_TOD umwandle, kommt totaler Müll heraus. Wenn ich eine Konstante (DTL) in die Wandlung schicke funktioniert alles.
Wie sieht denn dieser "totale Müll" aus?
Hast Du mal einen Beispielcode?

Vielleicht bieten Dir diese Beispiele Inspiration:
Welche Funktionen stehen jeweils in STEP 7 V5.5 und im TIA Portal für die Bearbeitung der Datentypen DT und DTL zur Verfügung?
Wie können Sie in STEP 7 (TIA Portal) das Datum und die Uhrzeit für die CPU-Baugruppen der S7-300/S7-400/S7-1200/S7-1500 eingeben, lesen und weiter verarbeiten?
Wie können Zeitschaltuhren in einer S7-1200 im Zeit-Format DTL programmiert werden?

Harald
 
Hallo Harald,
ich habe heute die eine DTL Konstante mit dem von mir generierten Wert verglichen. Es gab nur Unterschiede bei dem Wochentag. Mehrere Tests ergaben, dass der DTL nur mit richtigem Wochentag gültig ist. Wenn Weekday generell mit "1" beschrieben wird funktioniert die Sache auch nicht. Laut Siemens Tutorial wird der Weekday nicht beachtet.

Danke für die Hilfe .....

Gruß Steffen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was für ein Schmarrn... :roll:
Funktioniert's vielleicht mit Weekday = 0 oder 7 oder 8?
Wie kann man einen DTL testen ob er gültig ist? Anscheinend liefern die tollen TIA-Funktionen ja keine Fehler-Informationen.

Da muß man wohl einen DTL mit einer Funktion/Anweisung zusammensetzen, welche automatisch den korrekten Wochentag hinzufügt.
Was ist mit T_COMBINE? Tut die das? Kann man die auch in SCL nutzen?

Harald
 
Hallo Harald,
Weekday 0 funktioniert nicht. 8 geht auch nicht, da Weekday nur von 1 (Sonntag) bis 7 (Samstag) geht. Die DTL Zeiten starten eine Maschine. Deswegen wird die aktuelle DTL Zeit mit meiner gebildeten DTL Zeit verglichen. Sobald du eine Konstante DTL Zeit vorgibst, bildet die Steuerung den passenden Weekday. Somit wird scheinbar auch geprüft, ob mein gebildetes Format gültig ist. Wenn also der Weekay in meinem Format nicht stimmt, dann gibt das Panel bei Ausgabe der Variable ###### und Fehlerzustand aus. Im Status ist aber kein Fehler sichtbar.
Ich habe mal probiert ein Datum (Date) und eine Uhrzeit (Time of Day) in SCL mit CONCAT (= T_Combine) zu einer DTL zu verbinden. Dabei ist das DTL Format gültig. (Aufruf in SCL)

Gruß Steffen
 
Zurück
Oben