Siemens
Digital Industries, Motion Control, Machine Tool Systems
8840
Follower:innenMaschinendatum mit angeführter Null
08.03.2021, 13:07 Uhr
Hallo,
gibt es eine Möglichkeit bei den Parametern $A_YEAR, $A_MONTH usw. die Zahlen mit angeführter Null auszugeben?
Aktuell nach Abruf der Parameter: .... <<$A_YEAR<<$A_MONTH<<$A_DAY<<$A_HOUR ....
kommt folgendes raus: 213813
Soll aber so aussehen: 21030813
Hat jemand von euch damit Erfahrung?
Gruß
Jürgen
Der Beitrag wurde von mockjuergen bearbeitet: 08.03.2021, 13:08 Uhr
gibt es eine Möglichkeit bei den Parametern $A_YEAR, $A_MONTH usw. die Zahlen mit angeführter Null auszugeben?
Aktuell nach Abruf der Parameter: .... <<$A_YEAR<<$A_MONTH<<$A_DAY<<$A_HOUR ....
kommt folgendes raus: 213813
Soll aber so aussehen: 21030813
Hat jemand von euch damit Erfahrung?
Gruß
Jürgen
Der Beitrag wurde von mockjuergen bearbeitet: 08.03.2021, 13:08 Uhr
08.03.2021, 15:29 Uhr
Das wirst du dir wohl selber zusammenbauen müssen.
Das heißt für alle Bestandteile, die einstellig sind, abfragen, ob die Zahl kleiner 10 ist und in diesem Fall eine 0 explizit einfügen.
Ein zweite Variante:
Bei dem Formatierbefehl SPRINT habe ich keine geeignete Variante gefunden mit der das unmittelbar möglich wäre. Damit könntest du aber statt führender Nullen Leerzeichen einfügen. Die könntest du dann mit den Befehlen zum Lesen und Schreiben einzelner Zeichen in Nullen umwandeln.
Das heißt für alle Bestandteile, die einstellig sind, abfragen, ob die Zahl kleiner 10 ist und in diesem Fall eine 0 explizit einfügen.
Ein zweite Variante:
Bei dem Formatierbefehl SPRINT habe ich keine geeignete Variante gefunden mit der das unmittelbar möglich wäre. Damit könntest du aber statt führender Nullen Leerzeichen einfügen. Die könntest du dann mit den Befehlen zum Lesen und Schreiben einzelner Zeichen in Nullen umwandeln.
09.03.2021, 06:50 Uhr
Guten morgen Jürgen,
ja das geht und zwar mit der Längenabfrage des Strings das wäre die Abfrage STRLEN.
Das ganze würde dann so Ausschauen
Programm Kopf
DEF STRING[3] TAG, MONAT, JAHR, STUNDE, MINUTE, SEKUNDE
dann die String länge
JAHR=<<$A_YEAR
IF STRLEN(JAHR)<2
JAHR=<<"0"<<JAHR
ENDIF
das gleiche für Tag, Monat, Stunden, Minuten und Sekunden wiederholen
; Zeile aus Datum, Uhrzeit und Kommentar zusammensetzen
DATUM=""<<TAG<<"."<<MONAT<<".20"<<JAHR<<";"<<STUNDE<<":"<<MINUTE<<":"<<SEKUNDE<<"
WRITE(ERROR,"/_N_SPF_DIR/_N_...……..._SPF", "<<DATUM<<"")
Gruß
Matthias
ja das geht und zwar mit der Längenabfrage des Strings das wäre die Abfrage STRLEN.
Das ganze würde dann so Ausschauen
Programm Kopf
DEF STRING[3] TAG, MONAT, JAHR, STUNDE, MINUTE, SEKUNDE
dann die String länge
JAHR=<<$A_YEAR
IF STRLEN(JAHR)<2
JAHR=<<"0"<<JAHR
ENDIF
das gleiche für Tag, Monat, Stunden, Minuten und Sekunden wiederholen
; Zeile aus Datum, Uhrzeit und Kommentar zusammensetzen
DATUM=""<<TAG<<"."<<MONAT<<".20"<<JAHR<<";"<<STUNDE<<":"<<MINUTE<<":"<<SEKUNDE<<"
WRITE(ERROR,"/_N_SPF_DIR/_N_...……..._SPF", "<<DATUM<<"")
Gruß
Matthias
09.03.2021, 14:59 Uhr
Hallo Leute,
danke für den schnellen Support.
Ich werde es morgen mit meinem Programmierer besprechen.
Gruß
Jürgen
danke für den schnellen Support.
Ich werde es morgen mit meinem Programmierer besprechen.
Gruß
Jürgen
09.03.2021, 21:35 Uhr
Guten morgen Jürgen,
ja das geht und zwar mit der Längenabfrage des Strings das wäre die Abfrage STRLEN.
Das ganze würde dann so Ausschauen
Programm Kopf
DEF STRING[3] TAG, MONAT, JAHR, STUNDE, MINUTE, SEKUNDE
dann die String länge
JAHR=<<$A_YEAR
IF STRLEN(JAHR)<2
JAHR=<<"0"<<JAHR
ENDIF
das gleiche für Tag, Monat, Stunden, Minuten und Sekunden wiederholen
; Zeile aus Datum, Uhrzeit und Kommentar zusammensetzen
DATUM=""<<TAG<<"."<<MONAT<<".20"<<JAHR<<";"<<STUNDE<<":"<<MINUTE<<":"<<SEKUNDE<<"
WRITE(ERROR,"/_N_SPF_DIR/_N_...……..._SPF", "<<DATUM<<"")
Gruß
Matthias
ja das geht und zwar mit der Längenabfrage des Strings das wäre die Abfrage STRLEN.
Das ganze würde dann so Ausschauen
Programm Kopf
DEF STRING[3] TAG, MONAT, JAHR, STUNDE, MINUTE, SEKUNDE
dann die String länge
JAHR=<<$A_YEAR
IF STRLEN(JAHR)<2
JAHR=<<"0"<<JAHR
ENDIF
das gleiche für Tag, Monat, Stunden, Minuten und Sekunden wiederholen
; Zeile aus Datum, Uhrzeit und Kommentar zusammensetzen
DATUM=""<<TAG<<"."<<MONAT<<".20"<<JAHR<<";"<<STUNDE<<":"<<MINUTE<<":"<<SEKUNDE<<"
WRITE(ERROR,"/_N_SPF_DIR/_N_...……..._SPF", "<<DATUM<<"")
Gruß
Matthias
Mittlerweile verwende ich für solche Formatierungen die SPRINT Funktion.
DEF STRING[32] DATE
DATE=SPRINT("DATUM : 20%2D-%2D-%2D ZEIT:%2D:%2D",$A_YEAR,$A_MONTH,$A_DAY,$A_HOUR,$A_MINUTE)
https://support.industry.siemens.com/cs/mdm...51&lc=de-DE
Der Beitrag wurde von Hexogen bearbeitet: 09.03.2021, 21:36 Uhr
--------------------
Schaut doch mal rein:
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
09.03.2021, 23:04 Uhr
Wenn ich die Doku richtig lese, kann man mit SPRINT nur führende Leerzeichen erzeugen, aber keine führenden Nullen, siehe auch #2.
Oder habe ich was übersehen?
Oder habe ich was übersehen?
10.03.2021, 06:45 Uhr
Guten morgen,
wie gesagt bei mir klappt es schon seit Jahren
das Ergebnis sieht dann so aus z.B. : 10.03.2021;06:41:10;---
mfg Matthias
wie gesagt bei mir klappt es schon seit Jahren
das Ergebnis sieht dann so aus z.B. : 10.03.2021;06:41:10;---
mfg Matthias
10.03.2021, 12:53 Uhr
Wenn ich die Doku richtig lese, kann man mit SPRINT nur führende Leerzeichen erzeugen, aber keine führenden Nullen, siehe auch #2.
Oder habe ich was übersehen?
Oder habe ich was übersehen?
Hab es selbst nicht getestet, die Doku erwähnt führende Nullen aber nirgends- wobei das irgendwie schon 'logisch' wäre, dass SPRINT führende Nullen setzen kann.
--------------------
~Sokke
10.03.2021, 12:59 Uhr
11.03.2021, 08:49 Uhr
Wenn ich die Doku richtig lese, kann man mit SPRINT nur führende Leerzeichen erzeugen, aber keine führenden Nullen, siehe auch #2.
Oder habe ich was übersehen?
Oder habe ich was übersehen?
SPRINT fügt keine nullen ein. Sondern nur Leerzeichen.
Allerdings sind keine Nullen dann auch erforderlich.
Ausgabe wäre
DATUM : 2021- 3- 4 ZEIT: 8: 2
DATUM : 2021- 3- 6 ZEIT:12: 6
DATUM : 2021-11-12 ZEIT:18:36
usw.
Das Ganze noch mit ; als CSV Trenner und kannst direkt in EXCEL importieren.
Ich benutze SPRINT für Protokolle um diese immer im gleichen Format zu halten. Auch Header schreiben, dass die werte immer im gleichen Abstand kommen.
;WERT1;WERT2;WERT3;....
;%5.D;%5.D;%5.D;
Sieht dann in der Steuerung untereinander aus (wie mit Tabulator Einzug). Im Editor sind die verschoben. Da Leerzeichen nicht der Max. space länge entsprechen.
;WERT1;WERT2;WERT3;
; 0; 2; 1234;
Der Beitrag wurde von Hexogen bearbeitet: 11.03.2021, 08:51 Uhr
--------------------
Schaut doch mal rein:
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
11.03.2021, 08:51 Uhr
Hab es selbst nicht getestet, die Doku erwähnt führende Nullen aber nirgends- wobei das irgendwie schon 'logisch' wäre, dass SPRINT führende Nullen setzen kann.
Naja Sprint wandelt alles in einen STRING um.
--------------------
Schaut doch mal rein:
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
Mein Youtube Kanal
Anwendungen, Zyklen, CAD/CAM
-----------------------------------------------------------------------------------------------------------------------------
11.03.2021, 11:49 Uhr
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: