Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

Programmlaufzeit

Beitrag 13.03.2023, 10:47 Uhr
DED_3D
DED_3D
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 23.02.2023
Beiträge: 5
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:

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


Vielen Dank schon einmal für die Hilfe.
   
Beitrag 13.03.2023, 21:13 Uhr
Boern
Boern
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 27.11.2004
Beiträge: 2.484
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


--------------------

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.
   
Beitrag 14.03.2023, 15:06 Uhr
DED_3D
DED_3D
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 23.02.2023
Beiträge: 5
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:
CODE
;%_N_ZEIT_START_SPF
;$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
   
Beitrag 14.03.2023, 20:23 Uhr
Boern
Boern
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 27.11.2004
Beiträge: 2.484
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


--------------------

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.
   
Beitrag 14.03.2023, 20:49 Uhr
InTex
InTex
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 19.02.2007
Beiträge: 4.191
Hä? Befehl?
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
   
Beitrag 14.03.2023, 23:44 Uhr
Tobe87
Tobe87
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 14.12.2017
Beiträge: 87
QUOTE (DED_3D @ 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:
CODE
;%_N_ZEIT_START_SPF
;$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


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. thumbs-up.gif

Gruß Tobi
   
Beitrag 15.03.2023, 07:31 Uhr
Franke2
Franke2
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 18.11.2011
Beiträge: 33
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
   
Beitrag 27.03.2023, 10:18 Uhr
DED_3D
DED_3D
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 23.02.2023
Beiträge: 5
QUOTE (Franke2 @ 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


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
   
Beitrag 27.03.2023, 13:03 Uhr
Franke2
Franke2
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 18.11.2011
Beiträge: 33
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
   
Beitrag 28.03.2023, 10:03 Uhr
DED_3D
DED_3D
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 23.02.2023
Beiträge: 5
QUOTE (Franke2 @ 27.03.2023, 12: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


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?
   
Beitrag 28.03.2023, 11:57 Uhr
Franke2
Franke2
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 18.11.2011
Beiträge: 33
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
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: