Der SFC1 liefert den Datentyp DATE_AND_TIME, der ist ganz eigen aufgebaut, den kannst du nicht soooo direkt nehmen. Das was du wahrscheinlich mit den Doppelpunkten meinst ist die WinCC-Anzeige aus dem Datums/Uhrzeitfeld, oder? Setz im S7-Programm mal den Cursor auf deine #t_DateTime Variable und drücke F1. Dann siehst du wie der Datentyp aufgebaut ist. Im Datentyp selbst gibt es keine Doppelpunkte.Bis jetzt lade ich mir die Zeit aus dem SFC1
Jep Harald hat recht. Ich hab mal was zusammenkopiert.Einfach aus den Date_and_Time-Einzelbestandteilen den String/die Zeichenfolge zeichenweise selber zusammenstellen.
//SYSMTEZEIT AUSLESEN
CALL "READ_CLK"
RET_VAL:=#ERR_Code
CDT :=#DT_Temp
//DATE_AND_TIME AUFSPALTEN
L P##DT_Temp
LAR1
L LB [AR1,P#0.0]
BTI
L 2000
+I
T #YY
L LB [AR1,P#1.0]
BTI
T #MM
L LB [AR1,P#2.0]
BTI
T #DD
L LB [AR1,P#3.0]
BTI
T #hh
L LB [AR1,P#4.0]
BTI
T #min
L LB [AR1,P#5.0]
BTI
T #ss
//ZEITSTEMPEL DINT
L #YY
L L#10000
*D
T #ZeitSt_DINT
L #MM
L L#100
*D
L #ZeitSt_DINT
+D
T #ZeitSt_DINT
L #DD
L #ZeitSt_DINT
+D
T #ZeitSt_DINT //Ergebnis: 20150421
L B [AR1,P#0.0] // BCD-Wert: 1 Byte = 8 Bit = 2 Nibbles = 2 Ziffern
RRD 4 // Einer-Ziffer in Akku-H schieben
SLW 4 // 4 0-Bits hinter Zehner-Ziffer einfügen
RLD 4 // Einer-Ziffer wieder anhängen
OW W#16#3030 // BIN-->ASCII
T W [AR2,P#0.0] // 2 Zeichen in CHAR-Array schreiben
L B [AR1,P#0.0] // BCD-Wert: 1 Byte = 8 Bit = 2 Nibbles = 2 Ziffern
SLD 12 // Zehner-Ziffer in Akku-H schieben
SRW 4 // 4 0-Bits vor Einer-Ziffer einfügen
SRD 8 // Zehner-Ziffer + Einer-Ziffer rechtsbündig in Akku-L
OW W#16#3030 // BIN-->ASCII
T W [AR2,P#0.0] // 2 Zeichen in CHAR-Array schreiben
//AR2: Pointer auf Sende-Datensatz z.B. DB1.DBB0..DBB40 (z.B. ARRAY [0..40] OF CHAR)
//(oder in TEMP erstellen und dann per BLKMOV in den DB kopieren)
LAR2 P#DBX 0.0 //DB1: +0.0 SendDS ARRAY [0..40] OF CHAR
AUF DB1
//AR1: Pointer auf die DATE_AND_TIME-Variable
LAR1 P##t_DateTime
//*** Jahr '20YY': 2 Ziffern BCD-->ASCII + '2000' (Variante mit Shift)
L B [AR1,P#0.0] // DT#: Jahr
SLD 12
SRW 4
SRD 8
OD DW#16#32303030 // BIN-->ASCII + '2000'
T D [AR2,P#0.0] // '2015'
//*** Monat + Tag 'MMDD': 4 Ziffern BCD-->ASCII
L W [AR1,P#1.0] // DT#: Monat + Tag
SLD 4
SRW 4
SLD 12
SRW 4
SRD 4
SRW 4
OD DW#16#30303030 // BIN-->ASCII
T D [AR2,P#4.0] // '0421'
//*** Stunde + Minute 'hhmm': 4 Ziffern BCD-->ASCII
L W [AR1,P#3.0] // DT#: Stunde + Minute
SLD 4
SRW 4
SLD 12
SRW 4
SRD 4
SRW 4
OD DW#16#30303030 // BIN-->ASCII
T D [AR2,P#8.0] // '1234'
//*** Sekunde 'ss': 2 Ziffern BCD-->ASCII (Variante mit Rotate)
L B [AR1,P#5.0] // DT#: Sekunde
RRD 4
SLW 4
RLD 4
OW W#16#3030 // BIN-->ASCII
T W [AR2,P#12.0] // '56'
//*** WaageNr '123'
L '123x'
T D [AR2,P#14.0] // '123x'
//*** LfdNrWaage '123456789'
L '1'
T B [AR2,P#17.0] // '1' (ggf. mit WaageNr zusammenfassen)
L '2345'
T D [AR2,P#18.0] // '2345'
L '6789'
T D [AR2,P#22.0] // '6789'
//*** ArtNr '058123'
L '0581'
T D [AR2,P#26.0] // '0581'
L '23'
T W [AR2,P#30.0] // '23'
//*** Gewicht '00098.012' --> [AR2,P#32.0]...
//...
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?