Siemens
Digital Industries, Motion Control, Machine Tool Systems
8845
Follower:innenProgrammlaufzeit
13.03.2023, 10:47 Uhr
Hallo,
ich arbeite mit der Sinumerik 840 D, Version 4.8.
Ich möchte ein Unterprogramm schreiben mit dem die Zeit des Hauptprogramms gemessen und anschließend in den Programmkopf des aktuell laufenden Hauptprogramms geschrieben wird. Im Forum habe ich bereits ein Programm für die Zeit Erfassung gefunden, mit dem wird, soweit ich verstanden habe ein Protokoll angelegt. Wie muss ich den WRITE Befehl umändern, damit die Zeit in das jeweils angewählte Hauptprogramm geschrieben wird und wie binde ich das Programm in mein Hauptprogramm ein?
Hier das Programm für die PROGRAMMLAUFZEIT:
Vielen Dank schon einmal für die Hilfe.
ich arbeite mit der Sinumerik 840 D, Version 4.8.
Ich möchte ein Unterprogramm schreiben mit dem die Zeit des Hauptprogramms gemessen und anschließend in den Programmkopf des aktuell laufenden Hauptprogramms geschrieben wird. Im Forum habe ich bereits ein Programm für die Zeit Erfassung gefunden, mit dem wird, soweit ich verstanden habe ein Protokoll angelegt. Wie muss ich den WRITE Befehl umändern, damit die Zeit in das jeweils angewählte Hauptprogramm geschrieben wird und wie binde ich das Programm in mein Hauptprogramm ein?
Hier das Programm für die PROGRAMMLAUFZEIT:
CODE
;%_N_PROGRAMMLAUFZEIT_MPF
;$PATH=/_N_MPF_DIR
N10 DEF STRING[70] Zeit_Dat="/_N_MPF_DIR/"
N20 DEF INT ERROR
N30 R99=$AC_CYCLE_TIME ;LAUFZEIT IN SEKUNDEN
N40 R98= TRUNC(R99/3600) ;STUNDEN
N50 R97= TRUNC(TRUNC(R99-R98*3600)/60) ;MINUTEN
N60 R96= TRUNC(R99-R97*60-R98*3600) ;SEKUNDEN
N70 Write (ERROR,"Zeit_Dat","Prog: "<<$P_PROG[0]<<" - "<<$A_DAY<<":"<<$A_MONTH<<":"<<$A_YEAR<<" - LAUFZEIT = "<<R98<<":"<<R97<<":"<<R96<<"")
N80 M17
;$PATH=/_N_MPF_DIR
N10 DEF STRING[70] Zeit_Dat="/_N_MPF_DIR/"
N20 DEF INT ERROR
N30 R99=$AC_CYCLE_TIME ;LAUFZEIT IN SEKUNDEN
N40 R98= TRUNC(R99/3600) ;STUNDEN
N50 R97= TRUNC(TRUNC(R99-R98*3600)/60) ;MINUTEN
N60 R96= TRUNC(R99-R97*60-R98*3600) ;SEKUNDEN
N70 Write (ERROR,"Zeit_Dat","Prog: "<<$P_PROG[0]<<" - "<<$A_DAY<<":"<<$A_MONTH<<":"<<$A_YEAR<<" - LAUFZEIT = "<<R98<<":"<<R97<<":"<<R96<<"")
N80 M17
Vielen Dank schon einmal für die Hilfe.
13.03.2023, 21:13 Uhr
Hallo
dazu gab es schon mal ein Thema:
https://de.industryarena.com/forum/index.ph...st&p=132138
Hier findest du was du suchst!
Gruß Boern
dazu gab es schon mal ein Thema:
https://de.industryarena.com/forum/index.ph...st&p=132138
Hier findest du was du suchst!
Gruß Boern
--------------------
Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.
Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
14.03.2023, 15:06 Uhr
Danke Boern,
das war schonmal hilfreich. Ich habe jetzt zwei Programme mit der die Zeit des Hauptprogramms erfasst wird. Anschließend werden die daten im Protokoll abgelegt.
Gibt es einen Befehl mit dem ich die gemessene Laufzeit an den Programmanfang des aktuell laufenden Hauptprogramms schreiben kann? Damit ich bei erneutem öffnen des Programms direkt sehen kann wie lange dieses laufen wird.
Hier die Unterprogramme zur Messung der Programmlaufzeit:
das war schonmal hilfreich. Ich habe jetzt zwei Programme mit der die Zeit des Hauptprogramms erfasst wird. Anschließend werden die daten im Protokoll abgelegt.
Gibt es einen Befehl mit dem ich die gemessene Laufzeit an den Programmanfang des aktuell laufenden Hauptprogramms schreiben kann? Damit ich bei erneutem öffnen des Programms direkt sehen kann wie lange dieses laufen wird.
Hier die Unterprogramme zur Messung der Programmlaufzeit:
CODE
;%_N_ZEIT_START_SPF
;$PATH=/_N_SPF_DIR
$AC_PROG_NET_TIME_TRIGGER=2 ;Timer wird gestartet
RET
M17
;$PATH=/_N_SPF_DIR
$AC_PROG_NET_TIME_TRIGGER=2 ;Timer wird gestartet
RET
M17
CODE
;%_N_ZEIT_STOP_SPF
;$PATH=/_N_SPF_DIR
N10 DEF STRING[70] Zeit_Dat="/_N_WKS_DIR/_N_PROTOKOLL_WPD/_N_PROGRAMMLAUFZEITEN_MPF"
N20 DEF INT ERROR
N30 $AC_PROG_NET_TIME_TRIGGER=1 ; Timer wird gestoppt
N40 R99=$AC_OLD_PROG_NET_TIME ;Programmlaufzeit in Sekunden
N50 R98=TRUNC(R99/3600) ;Stunden
N60 R97=TRUNC(TRUNC(R99-R98*3600)/60);Minuten
N70 R96=TRUNC(R99-R97*60-R98*3600) ;Sekunden
N80 Write(ERROR,Zeit_Dat,"Prog: "<<$P_PROG[0]<<" - "<<$A_DAY<<"."<<$A_MONTH<<"."<<$A_YEAR<<" - LAUFZEIT = "<<R98<<":"<<R97<<":"<<R96<<"")
N90 RET
N100 M17
;$PATH=/_N_SPF_DIR
N10 DEF STRING[70] Zeit_Dat="/_N_WKS_DIR/_N_PROTOKOLL_WPD/_N_PROGRAMMLAUFZEITEN_MPF"
N20 DEF INT ERROR
N30 $AC_PROG_NET_TIME_TRIGGER=1 ; Timer wird gestoppt
N40 R99=$AC_OLD_PROG_NET_TIME ;Programmlaufzeit in Sekunden
N50 R98=TRUNC(R99/3600) ;Stunden
N60 R97=TRUNC(TRUNC(R99-R98*3600)/60);Minuten
N70 R96=TRUNC(R99-R97*60-R98*3600) ;Sekunden
N80 Write(ERROR,Zeit_Dat,"Prog: "<<$P_PROG[0]<<" - "<<$A_DAY<<"."<<$A_MONTH<<"."<<$A_YEAR<<" - LAUFZEIT = "<<R98<<":"<<R97<<":"<<R96<<"")
N90 RET
N100 M17
14.03.2023, 20:23 Uhr
Sorry ich denke nicht das du dies in einem Hauptprogramm rein schreiben kannst.
Du wirst das Händisch selber eintragen müssen.
Was gehen könnte wäre höchstens ein Standard MSG Befehl der dir dann eben deinen gewünschte Nachricht am Diplay anzeigt, aber auch nur bei CycleSTart
Gruß Boern
Du wirst das Händisch selber eintragen müssen.
Was gehen könnte wäre höchstens ein Standard MSG Befehl der dir dann eben deinen gewünschte Nachricht am Diplay anzeigt, aber auch nur bei CycleSTart
Gruß Boern
--------------------
Das dringendste Problem der Technologie von heute ist nicht mehr die Befriedigung von Grundbedürfnissen und uralten Wünschen der Menschen, sondern die Beseitigung von Übeln und Schäden, welche uns die Technologie von gestern hinterlassen hat.
Dennis Gabor (1900-79), ungar.-brit. Physiker, Entwickler der Holographie, 1971 Nobelpr.
14.03.2023, 20:49 Uhr
Hä? Befehl?
Wenn die ts feststeht, reicht doch ein Satz am Anfang.
Bsp.
; 4min. 30sec.
Wenn die ts feststeht, reicht doch ein Satz am Anfang.
Bsp.
; 4min. 30sec.
--------------------
Eine Schraube ohne Gewinde ist ein Nagel
Grüsse aus dem Harz - InTex
Grüsse aus dem Harz - InTex
14.03.2023, 23:44 Uhr
Danke Boern,
das war schonmal hilfreich. Ich habe jetzt zwei Programme mit der die Zeit des Hauptprogramms erfasst wird. Anschließend werden die daten im Protokoll abgelegt.
Gibt es einen Befehl mit dem ich die gemessene Laufzeit an den Programmanfang des aktuell laufenden Hauptprogramms schreiben kann? Damit ich bei erneutem öffnen des Programms direkt sehen kann wie lange dieses laufen wird.
Hier die Unterprogramme zur Messung der Programmlaufzeit:
das war schonmal hilfreich. Ich habe jetzt zwei Programme mit der die Zeit des Hauptprogramms erfasst wird. Anschließend werden die daten im Protokoll abgelegt.
Gibt es einen Befehl mit dem ich die gemessene Laufzeit an den Programmanfang des aktuell laufenden Hauptprogramms schreiben kann? Damit ich bei erneutem öffnen des Programms direkt sehen kann wie lange dieses laufen wird.
Hier die Unterprogramme zur Messung der Programmlaufzeit:
CODE
;%_N_ZEIT_START_SPF
;$PATH=/_N_SPF_DIR
$AC_PROG_NET_TIME_TRIGGER=2 ;Timer wird gestartet
RET
M17
;$PATH=/_N_SPF_DIR
$AC_PROG_NET_TIME_TRIGGER=2 ;Timer wird gestartet
RET
M17
CODE
;%_N_ZEIT_STOP_SPF
;$PATH=/_N_SPF_DIR
N10 DEF STRING[70] Zeit_Dat="/_N_WKS_DIR/_N_PROTOKOLL_WPD/_N_PROGRAMMLAUFZEITEN_MPF"
N20 DEF INT ERROR
N30 $AC_PROG_NET_TIME_TRIGGER=1 ; Timer wird gestoppt
N40 R99=$AC_OLD_PROG_NET_TIME;Programmlaufzeit in Sekunden
N50 R98=TRUNC(R99/3600) ;Stunden
N60 R97=TRUNC(TRUNC(R99-R98*3600)/60);Minuten
N70 R96=TRUNC(R99-R97*60-R98*3600);Sekunden
N80 Write(ERROR,Zeit_Dat,"Prog: "<<$P_PROG[0]<<" - "<<$A_DAY<<"."<<$A_MONTH<<"."<<$A_YEAR<<" - LAUFZEIT = "<<R98<<":"<<R97<<":"<<R96<<"")
N90 RET
N100 M17
;$PATH=/_N_SPF_DIR
N10 DEF STRING[70] Zeit_Dat="/_N_WKS_DIR/_N_PROTOKOLL_WPD/_N_PROGRAMMLAUFZEITEN_MPF"
N20 DEF INT ERROR
N30 $AC_PROG_NET_TIME_TRIGGER=1 ; Timer wird gestoppt
N40 R99=$AC_OLD_PROG_NET_TIME;Programmlaufzeit in Sekunden
N50 R98=TRUNC(R99/3600) ;Stunden
N60 R97=TRUNC(TRUNC(R99-R98*3600)/60);Minuten
N70 R96=TRUNC(R99-R97*60-R98*3600);Sekunden
N80 Write(ERROR,Zeit_Dat,"Prog: "<<$P_PROG[0]<<" - "<<$A_DAY<<"."<<$A_MONTH<<"."<<$A_YEAR<<" - LAUFZEIT = "<<R98<<":"<<R97<<":"<<R96<<"")
N90 RET
N100 M17
Im Grunde ist es nicht Möglich in das Hauptprogramm mit dem WRITE eine Zeile einzufügen da es schon von der Steuerung eigelesen ist und deswegen einen Schreibschutz hat.
Du könntest aber über Indirekte Programmierung den Pfad sowie den Name vom Programm und die Zeit in einer GUD Zwischen speichern und dann im PROG_EVENT.SPF den WRITE Befehl ausführen.
Aber Vorsicht!!!
Ich arbeite für ein Maschinenbau Unternehmen.
Und wenn einer in unseren PROG_EVENT Fettfingert, ist definitiv die Garantie vorbei.
Gruß Tobi
15.03.2023, 07:31 Uhr
Morgen DED_3D
ja das kannst du in dein aktuelles Programm schreiben lassen allerdings nicht am Programmanfang sondern nur ans Programmende.
Du musst nur den Pfad deines Programmes angeben
z,B
WRITE(ERROR,"/_N_WKS_DIR/_N_XXXXXXXXX_WPD/_N_XXXXXX_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
ja das kannst du in dein aktuelles Programm schreiben lassen allerdings nicht am Programmanfang sondern nur ans Programmende.
Du musst nur den Pfad deines Programmes angeben
z,B
WRITE(ERROR,"/_N_WKS_DIR/_N_XXXXXXXXX_WPD/_N_XXXXXX_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
27.03.2023, 10:18 Uhr
Morgen DED_3D
ja das kannst du in dein aktuelles Programm schreiben lassen allerdings nicht am Programmanfang sondern nur ans Programmende.
Du musst nur den Pfad deines Programmes angeben
z,B
WRITE(ERROR,"/_N_WKS_DIR/_N_XXXXXXXXX_WPD/_N_XXXXXX_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
ja das kannst du in dein aktuelles Programm schreiben lassen allerdings nicht am Programmanfang sondern nur ans Programmende.
Du musst nur den Pfad deines Programmes angeben
z,B
WRITE(ERROR,"/_N_WKS_DIR/_N_XXXXXXXXX_WPD/_N_XXXXXX_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
Hallo Franke 02,
damit hatte ich auch schon gearbeitet. Ist es auch möglich das zu automatisieren? Also so das es automatisch in das aktuell laufende Programm geschrieben wird. Ansonsten müsste ich für jedes Programm den WRITE Befehl anpassen und das würde ich gerne vermeiden.
Gruß DED_3D
27.03.2023, 13:03 Uhr
Hallo DED_D3,
ja das kannst du das einfachste ist du machst dir in den UGUD zwei STRINGS die kannst
du Anfang deines Programmes mit dem Programmnamen beschreiben.
z.B.
WERKSTUECKORDNER="XXXXXX"
PROGRAMMNAME="XXXXXXXXX"
Die Schreibweise wäre dann
WRITE(ERROR,"/_N_WKS_DIR/_N_"<<XXXXXXXXX<<"_WPD/_N_"<<XXXXXX<<"_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
ja das kannst du das einfachste ist du machst dir in den UGUD zwei STRINGS die kannst
du Anfang deines Programmes mit dem Programmnamen beschreiben.
z.B.
WERKSTUECKORDNER="XXXXXX"
PROGRAMMNAME="XXXXXXXXX"
Die Schreibweise wäre dann
WRITE(ERROR,"/_N_WKS_DIR/_N_"<<XXXXXXXXX<<"_WPD/_N_"<<XXXXXX<<"_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
28.03.2023, 10:03 Uhr
Hallo DED_D3,
ja das kannst du das einfachste ist du machst dir in den UGUD zwei STRINGS die kannst
du Anfang deines Programmes mit dem Programmnamen beschreiben.
z.B.
WERKSTUECKORDNER="XXXXXX"
PROGRAMMNAME="XXXXXXXXX"
Die Schreibweise wäre dann
WRITE(ERROR,"/_N_WKS_DIR/_N_"<<XXXXXXXXX<<"_WPD/_N_"<<XXXXXX<<"_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
ja das kannst du das einfachste ist du machst dir in den UGUD zwei STRINGS die kannst
du Anfang deines Programmes mit dem Programmnamen beschreiben.
z.B.
WERKSTUECKORDNER="XXXXXX"
PROGRAMMNAME="XXXXXXXXX"
Die Schreibweise wäre dann
WRITE(ERROR,"/_N_WKS_DIR/_N_"<<XXXXXXXXX<<"_WPD/_N_"<<XXXXXX<<"_MPF","deine Variableen für die Zeitangaben")
gruß Franke02
Das klappt bei mir noch nicht so ganz. Wo genau muss ich die Strings definieren und muss ich das Unterprogramm dann mit einer Parameterübgabe aufrufen?
28.03.2023, 11:57 Uhr
Hallo DED_3D,
den String bei den UGUDS schreiben
z.B DEF NCK STRING[20] WERKSTUECKORDNER="" die 20 ist größe des STRINGS also max. 20 Zeichen kannst
natürlich eine höhere Anzahl wählen kommt auf deine Programmnamen an.
In deinen Programm schreibst du dann WERKSTUECKORDNER="Name des Ordners"
das gleiche halt auch bei dem PROGRAMMNAME="Name des Programmes"
dieses ziemlich am Programmanfang beschreiben das wärs eigentlich
den String bei den UGUDS schreiben
z.B DEF NCK STRING[20] WERKSTUECKORDNER="" die 20 ist größe des STRINGS also max. 20 Zeichen kannst
natürlich eine höhere Anzahl wählen kommt auf deine Programmnamen an.
In deinen Programm schreibst du dann WERKSTUECKORDNER="Name des Ordners"
das gleiche halt auch bei dem PROGRAMMNAME="Name des Programmes"
dieses ziemlich am Programmanfang beschreiben das wärs eigentlich
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: