Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Maschinendatum mit angeführter Null

Beitrag 08.03.2021, 13:07 Uhr
mockjuergen
mockjuergen
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 14.02.2019
Beiträge: 2
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
   
Beitrag 08.03.2021, 15:29 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.922
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.
   
Beitrag 09.03.2021, 06:50 Uhr
Franke2
Franke2
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 18.11.2011
Beiträge: 33
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
   
Beitrag 09.03.2021, 14:59 Uhr
mockjuergen
mockjuergen
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 14.02.2019
Beiträge: 2
Hallo Leute,

danke für den schnellen Support.
Ich werde es morgen mit meinem Programmierer besprechen.

Gruß
Jürgen
   
Beitrag 09.03.2021, 21:35 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (Franke2 @ 09.03.2021, 07: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


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





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 09.03.2021, 23:04 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.922
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?
   
Beitrag 10.03.2021, 06:45 Uhr
Franke2
Franke2
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 18.11.2011
Beiträge: 33
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
   
Beitrag 10.03.2021, 12:53 Uhr
Sokke_CAM
Sokke_CAM
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 28.10.2020
Beiträge: 33
QUOTE (CNCFr @ 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?

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
   
Beitrag 10.03.2021, 12:59 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.922
QUOTE (Franke2 @ 10.03.2021, 06:45 Uhr) *
wie gesagt bei mir klappt es schon seit Jahren

Das bezweifle ich nicht. Viele Wege führen nach Rom.
   
Beitrag 11.03.2021, 08:49 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (CNCFr @ 10.03.2021, 00: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?


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





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 11.03.2021, 08:51 Uhr
Hexogen
Hexogen
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 29.09.2004
Beiträge: 1.813
QUOTE (Sokke_CAM @ 10.03.2021, 13:53 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





-----------------------------------------------------------------------------------------------------------------------------
   
Beitrag 11.03.2021, 11:49 Uhr
CNCFr
CNCFr
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 15.09.2002
Beiträge: 1.922
QUOTE (Hexogen @ 11.03.2021, 08:49 Uhr) *
Allerdings sind keine Nullen dann auch erforderlich.

Das kann ich nicht beurteilen. Nur der Themenersteller kann wissen, ob es unbedingt führende Nullen sein müssen, oder ob auch Leerzeichen erlaubt sind.
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: