String_to_tod

enter

Level-2
Beiträge
83
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo gibt es eine Funktion unter Step 7 die diese Wandlung STRING_TO_TOD kann ? Habe da einen String 'TOD#12:00' im db stehen wollte ihn jetzt in Tod
wandeln
 
Hallo,
dafür gibt es meines Wissens keine Funktion. Du kansst das aber doch umrechnen :
TOD = Zeit vergangen seit 0:00 Uhr in Milli-Sek.
D.H. z.B. 12:00 entspricht 12 Std. * 3600 Sek. * 1000 ms = 43.200.000 ms

Vielleicht hilft dir das ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich würde auch gerne einige Leute nach Tod wandeln:p .

Zur Sache:
Es gibt keine String to irgendeinen zusammengesetzten Datentyp.

Du musst dir den String selber wandeln, keine Funktion weiß, in welchem Format deine Daten kommen. Wenn der String immer gleich ist, dann kannst du ja die Stunden und Minuten adressieren, weißt du wie man die Adressen findet? Dann z.B. Sting_DI oder String_I Funktion einsetzen.

Gib bitte Rückmeldung, wo du hängst.

Gruß, pt
 
@ plc_tippser Hi erstmal :p
ich weiß nicht wie man die Adressen findet :confused:

Ich Schilder erstmal das Problem was ich habe,also der Benutzer kann am PC wo eine Visu läuft 50 Startzeiten (also z.B. 13:00) eingeben diese Startzeiten liegen mir als String im db vor jetzt muss die Benutzer Startzeit mit der Cpu Zeit vergleichen wenn beide gleich dann sollte eine Aktion ausführt werden.
 
Hi,

das ist nicht so einfach zu erklären.

Wie sieht der String genau aus? Wie verhält er sich bei Uhrzeiten kleiner 10:00? Steht dann da 9:00 oder 09:00?

Du kannst dir eine Variablentabelle anlegen. Diese füllst du mit der Stringlänge + 2 Byte ab der Adresse, wo der String abgelegt ist (DB100.DBB0)

Dann kannst du dir den schon mal im Onlinestatus anschauen.

Kennst du die Variablentabelle?
Kennst du das Format des Strings?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi
also der String besteht aus 5 Zeichen,der User bzw Nutzer muss die Uhrzeit immer so eingeben 03:00 sonst gehts nicht.Habe die Variablentabelle angelegt
und die einzelnen Werte werden jetzt angezeit Jetzt könnte ich doch diese einzelnen werte auslesen und umwandeln oder sehe ich das falsch ?
 
Gibt es wirklich kein STRING_TO_TOD bei Step7?

Ich kann jetzt nicht sagen ob das bestandteil der IEC61131-3 ist aber bei einem andern System geht das.
 

Anhänge

  • TOD.gif
    TOD.gif
    25,8 KB · Aufrufe: 41
Ja du kannst das auslesen und denn so berechnen:

Hallo,
dafür gibt es meines Wissens keine Funktion. Du kansst das aber doch umrechnen :
TOD = Zeit vergangen seit 0:00 Uhr in Milli-Sek.
D.H. z.B. 12:00 entspricht 12 Std. * 3600 Sek. * 1000 ms = 43.200.000 ms

Vielleicht hilft dir das ...

Du mußt natürlich den Doppelpunkt rausnehmen. Das Ergebnis in ms dann in ein DBD (Doppelwort) und du hast ein TOD, mit dem du arbeiten kannst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Ralle,
Irgendwie komme ich damit noch nicht ganz klar hast du vieleicht ein Beispiel für mich ?

@zotos
Ja wohl war sollte eigentlich bestandteil der IEC61131-3 sein Programmiere sonst unter CoDeSys da gehts auch - tja
 
Hi Ralle,
Irgendwie komme ich damit noch nicht ganz klar hast du vieleicht ein Beispiel für mich ?

Schreib mal, was wo genau in den 5 Byte steht.
Für einen String mit 5 Byte müßten in dem DB ja 7 Byte belegt sein (2 Byte Kopf, 5 Byte String). Schreib mal so einen String auf und dann für jedes Byte den Wert dazu.
 
@ Ralle meinst du das so ?
Startzeit wäre in den Fall 9 Uhr.



DB1.DBB 12 HEX B#16#05
DB1.DBB 14 "Uhrzeiten".Startzeit[1] ZEICHEN '0'
DB1.DBB 15 "Uhrzeiten".Startzeit[2] ZEICHEN '9'
DB1.DBB 16 "Uhrzeiten".Startzeit[3] ZEICHEN ':'
DB1.DBB 17 "Uhrzeiten".Startzeit[4] ZEICHEN '0'
DB1.DBB 18 "Uhrzeiten".Startzeit[5] ZEICHEN '0'
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So hier mal auf die Schnelle ein FB, der diesen String in eine TOD wandelt. Allerdings wird hier keinerlei Kontrolle durchgeführt, ob der String korrekt ist.

09:61 wird also zu 10:01 und
24:22 wird falsch, da TOD kleiner als 24:00 sein muß.

Gleiches gilt, wenn im String andere Zeichen als die für Ziffern auftauchen.
Also entweder sicherstellen, daß das OP nichts anderes durchgibt oder in den FB noch eine Typprüfung einbauen.
 

Anhänge

  • Tod.zip
    32,7 KB · Aufrufe: 21
Ich habe das Programm von Ralle noch etwas optimiert. :cool:

Die Vorteile sind, dass man nur noch einen FC statt eínes FB mit Instanz-DB benötigt, und der SFC20 (BLKMOV) nicht mehr benötigt wird.

Gruß Kai
 

Anhänge

  • OB1.pdf
    3,2 KB · Aufrufe: 24
  • FC100.pdf
    4,5 KB · Aufrufe: 27
  • DB100.pdf
    3,1 KB · Aufrufe: 16
  • VAT.pdf
    11,4 KB · Aufrufe: 12
  • Uhrzeit.zip
    201,2 KB · Aufrufe: 17
Hallo,
jetzt hätte ich zu der Sache noch eine Frage :
Warum wird in der Visu die Eingabe nicht gleich als Uhrzeit abgefragt ? (Eigenschaften Eingabefeld - Darstellung : Zeit)
Hier muss man zwar als Variable ein Doppelwort angeben, aber man muss es nicht mehr umrechnen ... es ist schon im Format TOD. Außerdem werden syntaktische Unrichtigkeiten bei der Eingabe gleich nicht angenommen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
jetzt hätte ich zu der Sache noch eine Frage :
Warum wird in der Visu die Eingabe nicht gleich als Uhrzeit abgefragt ? (Eigenschaften Eingabefeld - Darstellung : Zeit)
Hier muss man zwar als Variable ein Doppelwort angeben, aber man muss es nicht mehr umrechnen ... es ist schon im Format TOD. Außerdem werden syntaktische Unrichtigkeiten bei der Eingabe gleich nicht angenommen ...

Woher weisst Du das die verwendete Visu das unterstützt?
 
@ Zotos : Weiß ich natürlich nicht ...! Ich habe aber bisher keinen Hinweis darauf erhalten, dass es nicht so ist ... und dann wäre es ja eine schöne Möglichkeit, die Sache zu vereinfachen ...

@ Alle : Selbstverständlich finde ich den erarbeiteten Umwandlungs-Baustein sehr schön (vor allem in der letztem Version - ich baue mir selbst auch gerne Bausteine, die in sich geschlossen sind).

Gruß
 
@ Zotos : Weiß ich natürlich nicht ...! Ich habe aber bisher keinen Hinweis darauf erhalten, dass es nicht so ist ... und dann wäre es ja eine schöne Möglichkeit, die Sache zu vereinfachen ...

Das wäre IMHO auch der bessere weg.

Ich habe aber auch keinen Hinweis auf die verwendete Visu gefunden und mich gewundert das Du mit "(Eigenschaften Eingabefeld - Darstellung : Zeit)" Ziemlich genaue Angaben machen konntest.

Aber ich finde es gut das hier der Weg und sogar ein Baustein gezeigt/erstellt wurde um das Problem zu lösen. Man bekommt ja des öfteren Zahlen die in ASCII-Strings eingebettet sind (z.B. via RS232 von irgendeinem Gerät).

Also noch mal ein dickes Lob an den Ralle und den Kai.
 
Zurück
Oben