Sonstiges Simotion DATE_AND_TIME zu STRING?

RoThe

Level-1
Beiträge
11
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Simotion DATE_AND_TIME zu STRING & Int zu HEX-String

Hallo zusammen,

Von meiner Simotion sollen über TCP/IP in bestimmten Abständen Statusnachrichten zu Loggingzwecken gesendet werden.

Teil dieser Nachricht soll ein Zeitstempel, in der Form eines STRINGs, sein.
Nun habe ich keine derartigen Konvertierungsfunktionen gefunden um DATE_AND_TIME in einen String umzuwandeln.

Der Umweg Time_of_Day in einen INT umzuwandeln geht auch nicht ganz auf zumal ich nur einen ms-Wert erhalte und dann würde immer noch das Datum fehlen.

Gibt es eine relativ einfache Lösung?
Auslesen würde ich den Zeitstempel mit dem RTC FB, oder gibt es bessere Möglichkeiten?

Zudem lese ich einige Parameter per readdrivemultiparameter aus. Kann ich die im HEX Format in einem String darstellen?


Gruß,
RoThe
 
Zuletzt bearbeitet:
Was für eine Simotion hast Du denn? In welcher Programmiersprache ist die programmierbar?
Einen DATE_AND_TIME in einen Zeitstempel-String umzuwandeln ist eigentlich ziemlich einfach, weil die Datum/Uhrzeit-Bestandteile in dem DATE_AND_TIME schon einzeln/strukturiert vorliegen und nur noch in der gewünschten Verkettung in ASCII-Zeichen umgewandelt werden müssen. Wie soll denn der Zeitstempel-String aussehen?

Einfach mit den Suchworten "DATE_AND_TIME String" kannst Du mit der Forumssuche einige Beispielcodes finden, z.B.
DATE_AND_TIME zu String in SCL
DATE_AND_TIME zu String in AWL

Umwandeln von Bytes oder Words in eine Hex-Zeichenfolge ist auch sehr einfach machbar.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es handelt sich um eine D445, arbeite im SIMOTION SCOUT.
Programmiert wird das ganze in ST.

Die Date_and_Time Umwandlung werde ich so mal testen, nur meine ich mal gelesen zu haben, dass auf der Simotion die Bytes von Datum und Zeit verdreht sind zu S7 oder?

Wei geht man bei der Umwandlung eines DINTs in Hex vor? Wirklich so, als würde ich auf einem Blatt Papier eine Umwandlung einer Ganzzahl zu Hex durchführen oder gibts da Tricks?

Gruß,
Rothe
 
Wei geht man bei der Umwandlung eines DINTs in Hex vor?
Mit SIMOTION kenne ich mich nicht aus, ist das wirklich ST oder eher SCL?
Vielleicht gibt es schon eine fertige Funktion für die Umwandlung eines DWord in eine Hex-Zeichenkette wie den FC95 HTA aus den TI-S7 Converting Blocks in Step7?

Ansonsten hier mal kurz gefaßt das Prinzip der Umwandlung:
Code:
hexStr : ARRAY [0..7] OF CHAR;     //für 8 Zeichen HEX-ASCII-Zeichenkette

TempDWord := InDWord;
FOR i := 0 TO 7 DO
  TempDWord := ROL(TempDWord, 4);  //höchstes Nibble/Tetrade zu Bits 3..0 rotieren
  TempByte := DWORD_TO_BYTE(TempDWord) AND 16#F; //Bits 3..0 isolieren
  IF TempByte > 9 THEN             //Tetraden 10...15?
    TempByte := TempByte + 7;      //--> 'A'...'F'
  END_IF;
  hexStr[i] := TempByte + 48;      //BIN-->ASCII
END_FOR;

Harald
 
Vielen Dank für deine Mühe! Da kann ich mir definitiv was abschauen.

Es handelt sich wirklich um ST. Im Scout werden diese Programme auch "ST-Programme" genannt.
 
Zurück
Oben