Siemens
Digital Industries, Motion Control, Machine Tool Systems
Variable bei Reset mit Wert belegen

Folgendes "Problem"
Eine Variable (GUD) "VARIABLE_1" soll bei jedem Reset auf einen bestimmten Wert gesetzt werden.
Bzw. z.B. am Programmende auf einen anderen.
Es gibt ja $P_PROG_EVENT die mir den Kanalzustand zurückgibt.
Wie muss ich so eine Routine aufbauen bzw. wie sage ich der Steuerung dass sie diese eben immer durchläuft?
Danke!
Eine Variable (GUD) "VARIABLE_1" soll bei jedem Reset auf einen bestimmten Wert gesetzt werden.
Bzw. z.B. am Programmende auf einen anderen.
Es gibt ja $P_PROG_EVENT die mir den Kanalzustand zurückgibt.
Wie muss ich so eine Routine aufbauen bzw. wie sage ich der Steuerung dass sie diese eben immer durchläuft?
Danke!

Das geht ganz leicht.
Bei diversen Ereignissen, wie z.B. Hochlauf, Reset PG-Ende... wird das PROG_EVENT.SPF aufgerufen. In diesem wird dann zusätzlich, falls es existiert das Unterprogramm CYCPE1US.SPF aus dem Anwenderzyklenverzeichnis aufgerufen.
Gleichzeitig steht in der Systemvariable $P_PROG_EVENT welches Ereignis stattgefunden hat. (z.B. 3=Reset)
Du musst also im Anwenderzyklenordner ein Programm CYCPE1US.SPF anlegen und dort über IF die $P_PROG_EVENT Variable abfragen, und dann jeweils deine GUD so beschreiben wie du willst.
z.B. ca so:
Bei diversen Ereignissen, wie z.B. Hochlauf, Reset PG-Ende... wird das PROG_EVENT.SPF aufgerufen. In diesem wird dann zusätzlich, falls es existiert das Unterprogramm CYCPE1US.SPF aus dem Anwenderzyklenverzeichnis aufgerufen.
Gleichzeitig steht in der Systemvariable $P_PROG_EVENT welches Ereignis stattgefunden hat. (z.B. 3=Reset)
Du musst also im Anwenderzyklenordner ein Programm CYCPE1US.SPF anlegen und dort über IF die $P_PROG_EVENT Variable abfragen, und dann jeweils deine GUD so beschreiben wie du willst.
z.B. ca so:
CODE
PROC CYCPE1US DISPLOF SBLOF
;
; Programm Ende
IF $P_PROG_EVENT == 2
VARIABLE_1=11
ENDIF
;
; Bedientafel Reset
IF $P_PROG_EVENT == 3
VARIABLE_1=22
ENDIF
;
M17
;
; Programm Ende
IF $P_PROG_EVENT == 2
VARIABLE_1=11
ENDIF
;
; Bedientafel Reset
IF $P_PROG_EVENT == 3
VARIABLE_1=22
ENDIF
;
M17
QUOTE
INT $P_PROG_EVENT ereignisgesteuerter Programmaufruf
Beschreibung:
Mit der Systemvariable $P_PROG_EVENT kann abgefragt werden, ob das Programm implizit
durch ein mit $MC_PROG_EVENT_MASK oder $MN_SEARCH_RUN_MODE projektiertes
Ereignis aktiviert wurde. $P_PROG_EVENT liefert einen Integerwert zwischen 0 und 6 mit
folgender Bedeutung:
0:explizite Aktivierung durch NC-Start oder Asup-Start über VDI- bzw.
Asup-Schnittstelle
1: implizite Aktivierung durch Ereignis "Teileprogramm-Start"
2:implizite Aktivierung durch Ereignis "Teileprogramm-Ende"
3:implizite Aktivierung durch Ereignis "Bedientafel-Reset"
4:implizite Aktivierung durch Ereignis "Hochlauf"
5:implizite Aktivierung nach Ausgabe des letzten Aktionssatzes nach Satzsuchlauf
6:implizite Aktivierung von /_N_CST_DIR/_N_SAFE_SPF durch Ereignis "Hochlauf" (Poweron-Safety-Event)
Beschreibung:
Mit der Systemvariable $P_PROG_EVENT kann abgefragt werden, ob das Programm implizit
durch ein mit $MC_PROG_EVENT_MASK oder $MN_SEARCH_RUN_MODE projektiertes
Ereignis aktiviert wurde. $P_PROG_EVENT liefert einen Integerwert zwischen 0 und 6 mit
folgender Bedeutung:
0:explizite Aktivierung durch NC-Start oder Asup-Start über VDI- bzw.
Asup-Schnittstelle
1: implizite Aktivierung durch Ereignis "Teileprogramm-Start"
2:implizite Aktivierung durch Ereignis "Teileprogramm-Ende"
3:implizite Aktivierung durch Ereignis "Bedientafel-Reset"
4:implizite Aktivierung durch Ereignis "Hochlauf"
5:implizite Aktivierung nach Ausgabe des letzten Aktionssatzes nach Satzsuchlauf
6:implizite Aktivierung von /_N_CST_DIR/_N_SAFE_SPF durch Ereignis "Hochlauf" (Poweron-Safety-Event)
--------------------
Freundliche Grüsse
DMC635V
DMC635V

Das geht ganz leicht.
Bei diversen Ereignissen, wie z.B. Hochlauf, Reset PG-Ende... wird das PROG_EVENT.SPF aufgerufen. In diesem wird dann zusätzlich, falls es existiert das Unterprogramm CYCPE1US.SPF aus dem Anwenderzyklenverzeichnis aufgerufen.
Gleichzeitig steht in der Systemvariable $P_PROG_EVENT welches Ereignis stattgefunden hat. (z.B. 3=Reset)
Du musst also im Anwenderzyklenordner ein Programm CYCPE1US.SPF anlegen und dort über IF die $P_PROG_EVENT Variable abfragen, und dann jeweils deine GUD so beschreiben wie du willst.
z.B. ca so:
Bei diversen Ereignissen, wie z.B. Hochlauf, Reset PG-Ende... wird das PROG_EVENT.SPF aufgerufen. In diesem wird dann zusätzlich, falls es existiert das Unterprogramm CYCPE1US.SPF aus dem Anwenderzyklenverzeichnis aufgerufen.
Gleichzeitig steht in der Systemvariable $P_PROG_EVENT welches Ereignis stattgefunden hat. (z.B. 3=Reset)
Du musst also im Anwenderzyklenordner ein Programm CYCPE1US.SPF anlegen und dort über IF die $P_PROG_EVENT Variable abfragen, und dann jeweils deine GUD so beschreiben wie du willst.
z.B. ca so:
CODE
PROC CYCPE1US DISPLOF SBLOF
;
; Programm Ende
IF $P_PROG_EVENT == 2
VARIABLE_1=11
ENDIF
;
; Bedientafel Reset
IF $P_PROG_EVENT == 3
VARIABLE_1=22
ENDIF
;
M17
;
; Programm Ende
IF $P_PROG_EVENT == 2
VARIABLE_1=11
ENDIF
;
; Bedientafel Reset
IF $P_PROG_EVENT == 3
VARIABLE_1=22
ENDIF
;
M17
Vielen Dank, werde ich heute mal testen.
PROG_EVENT.SPF gibts in der Tat und hier habe ich auch bei anderen Anlagen meine Variable verbaut. An ein paar Anlagen scheint es aber so als ob die PROG_EVENT.SPF gar nicht durchlaufen wird.
Gibt es eigentlich ein MD oder ähnliches dass das Verhalten steuert oder führt die Sinumerik immer eine "PROG_EVENT.SPF" aus wenn diese vorhanden ist?
Und gibt es einen bestimmtes Verzeichnis wo sie stehen muss oder wird hier auch alles durchsucht?

Vielen Dank, werde ich heute mal testen.
PROG_EVENT.SPF gibts in der Tat und hier habe ich auch bei anderen Anlagen meine Variable verbaut. An ein paar Anlagen scheint es aber so als ob die PROG_EVENT.SPF gar nicht durchlaufen wird.
Gibt es eigentlich ein MD oder ähnliches dass das Verhalten steuert oder führt die Sinumerik immer eine "PROG_EVENT.SPF" aus wenn diese vorhanden ist?
Und gibt es einen bestimmtes Verzeichnis wo sie stehen muss oder wird hier auch alles durchsucht?
PROG_EVENT.SPF gibts in der Tat und hier habe ich auch bei anderen Anlagen meine Variable verbaut. An ein paar Anlagen scheint es aber so als ob die PROG_EVENT.SPF gar nicht durchlaufen wird.
Gibt es eigentlich ein MD oder ähnliches dass das Verhalten steuert oder führt die Sinumerik immer eine "PROG_EVENT.SPF" aus wenn diese vorhanden ist?
Und gibt es einen bestimmtes Verzeichnis wo sie stehen muss oder wird hier auch alles durchsucht?
Es gibt ein MD indem ein Alternativprogramm für PROG_EVENT angegeben werden kann, und es gibt ein MD welches die Ausführung von PROG_EVENT verhindert. Ich weiss sie jedoch nicht auswendig, sie stehen im "Funktionshandbuch Grundfunktionen".
Laut Handbuch muss PROG_EVENT im CMA.DIR sein wie das genau gehandhabt wird, weiss ich jedoch nicht. Habe gestern am SinuTrain das erste mal so etwas gemacht und dort hat es funktioniert.
--------------------
Freundliche Grüsse
DMC635V
DMC635V



Level 3 = Community-Techniker



Gruppe: Mitglied
Mitglied seit: 02.01.2009
Beiträge: 160
Mitglied seit: 02.01.2009
Beiträge: 160
Hallo,
das Progevent ist eigentlich Siemens vorbehalten.
Der Maschinenhersteller sollte im CYPEMA verwenden, der Enduser hat eine eigenes CYPExxx (hab ich auswendig nicht parat) hier ist der geeignete Platz für die Änderung.
Es ist nach mir keine gute Idee das ProgEvent über MD auszuschalten.
Gruss
das Progevent ist eigentlich Siemens vorbehalten.
Der Maschinenhersteller sollte im CYPEMA verwenden, der Enduser hat eine eigenes CYPExxx (hab ich auswendig nicht parat) hier ist der geeignete Platz für die Änderung.
Es ist nach mir keine gute Idee das ProgEvent über MD auszuschalten.
Gruss

Hallo,
das Progevent ist eigentlich Siemens vorbehalten.
Der Maschinenhersteller sollte im CYPEMA verwenden, der Enduser hat eine eigenes CYPExxx (hab ich auswendig nicht parat) hier ist der geeignete Platz für die Änderung.
das Progevent ist eigentlich Siemens vorbehalten.
Der Maschinenhersteller sollte im CYPEMA verwenden, der Enduser hat eine eigenes CYPExxx (hab ich auswendig nicht parat) hier ist der geeignete Platz für die Änderung.
Wurde oben so erläutert.
Es ist nach mir keine gute Idee das ProgEvent über MD auszuschalten.
Gruss
Gruss
Dies ist auch nicht das Ziel. Da er sich jedoch nicht sicher ist, ob das PROG_EVENT überhaupt durchlaufen wird, könnten diese MD möglicherweise Aufschluss geben, ob z.B. ein alternatives PROG_EVENT definiert wurde...
Anpassungen sollten hier natürlich nur in Absprache mit dem Maschinenhersteller vorgenommen werden.
Der Beitrag wurde von DMC635V bearbeitet: 23.07.2014, 20:39 Uhr
--------------------
Freundliche Grüsse
DMC635V
DMC635V

ja, FB1 gibt Auskunft - Danke für den Tipp! (Hätte man ja auch einfach mal suchen können
)
Hier wird auch klar auf den Pfad verwiesen, vielleicht liegt es dann auch einfach daran, dass es im falschen Ordner liegt?!
Werde ich mal testen/checken. Immer wieder gut wenn man "gleiche Maschinen" hat und manche einfach "gleicher" sind.

QUOTE
2.5.3 Automatischer Start eines ASUPS nach Satzsuchlauf Aktivierung
Der automatische ASUP-Start nach Satzsuchlauf wird im bestehenden Maschinendatum:
MD11450 $MN_SEARCH_RUN_MODE
mit Bit 1 = 1 (TRUE) projektiert:
Bit 1 = 1: Automatischer Start vom Anwenderprogramm
/_N_CMA_DIR/_N_PROG_EVENT_SPF als ASUP.
Mit dem Einwechseln des letzten Aktionssatzes wird das Anwenderprogramm
/_N_CMA_DIR/_N_PROG_EVENT_SPF als ASUP gestartet.
Der automatische ASUP-Start nach Satzsuchlauf wird im bestehenden Maschinendatum:
MD11450 $MN_SEARCH_RUN_MODE
mit Bit 1 = 1 (TRUE) projektiert:
Bit 1 = 1: Automatischer Start vom Anwenderprogramm
/_N_CMA_DIR/_N_PROG_EVENT_SPF als ASUP.
Mit dem Einwechseln des letzten Aktionssatzes wird das Anwenderprogramm
/_N_CMA_DIR/_N_PROG_EVENT_SPF als ASUP gestartet.
Hier wird auch klar auf den Pfad verwiesen, vielleicht liegt es dann auch einfach daran, dass es im falschen Ordner liegt?!
QUOTE
Ereignisauswahl
Im MD20108 $MC_PROG_EVENT_MASK (Ereignisgesteuerter Programmaufruf)
kann kanalspezifisch eingestellt werden, welches der folgenden Ereignisse das
Anwenderprogramm aktivieren soll:
● Bit0 = 1: Teileprogramm-Start
● Bit1 = 1: Teileprogramm-Ende
● Bit2 = 1: Bedientafel-Reset
● Bit3 = 1: Hochlauf (Hochlauf der NC-Steuerung)
Das Anwenderprogramm kann unter dem festen Pfadnamen
/_N_CMA_DIR/_N_PROG_EVENT_SPF abgelegt sein oder ein anderer Programmname
kann im MD11620 $MN_PROG_EVENT_NAME angegeben werden.
Im MD20108 $MC_PROG_EVENT_MASK (Ereignisgesteuerter Programmaufruf)
kann kanalspezifisch eingestellt werden, welches der folgenden Ereignisse das
Anwenderprogramm aktivieren soll:
● Bit0 = 1: Teileprogramm-Start
● Bit1 = 1: Teileprogramm-Ende
● Bit2 = 1: Bedientafel-Reset
● Bit3 = 1: Hochlauf (Hochlauf der NC-Steuerung)
Das Anwenderprogramm kann unter dem festen Pfadnamen
/_N_CMA_DIR/_N_PROG_EVENT_SPF abgelegt sein oder ein anderer Programmname
kann im MD11620 $MN_PROG_EVENT_NAME angegeben werden.
QUOTE
Anderer Programmname
Im MD11620 $MN_PROG_EVENT_NAME (Programmname für PROG_EVENT)
wird ein Name angegeben. Das Anwenderprogramm wird dann in den Verzeichnissen:
/_N_CUS_DIR/ für Anwender-Zyklen
/_N_CMA_DIR/ für Hersteller-Zyklen
/_N_CST_DIR/ für Standard-Zyklen
in der angegebenen Reihenfolge gesucht. Das zuerst gefundene Programm mit dem
hinterlegten Namen wird beim Eintreffen eines projektierten Ereignisses aufgerufen.
Es greifen die Schutzmechanismen, wie sie allgemein für Zyklen aktivierbar sind
(Schutzstufen für Schreiben, Lesen usw.).
Das MD20108 $MC_PROG_EVENT_MASK wird in der Simulation ignoriert.
Im MD11620 $MN_PROG_EVENT_NAME (Programmname für PROG_EVENT)
wird ein Name angegeben. Das Anwenderprogramm wird dann in den Verzeichnissen:
/_N_CUS_DIR/ für Anwender-Zyklen
/_N_CMA_DIR/ für Hersteller-Zyklen
/_N_CST_DIR/ für Standard-Zyklen
in der angegebenen Reihenfolge gesucht. Das zuerst gefundene Programm mit dem
hinterlegten Namen wird beim Eintreffen eines projektierten Ereignisses aufgerufen.
Es greifen die Schutzmechanismen, wie sie allgemein für Zyklen aktivierbar sind
(Schutzstufen für Schreiben, Lesen usw.).
Das MD20108 $MC_PROG_EVENT_MASK wird in der Simulation ignoriert.
Werde ich mal testen/checken. Immer wieder gut wenn man "gleiche Maschinen" hat und manche einfach "gleicher" sind.

so, nun bin ich zum testen gekommen und es funktioniert wie gewünscht.
Musste lediglich die PROG_EVENT_MASK Optionen ändern (6H) und die CYCPE1US.SPF anlegen
Musste lediglich die PROG_EVENT_MASK Optionen ändern (6H) und die CYCPE1US.SPF anlegen

so, nun bin ich zum testen gekommen und es funktioniert wie gewünscht.
Musste lediglich die PROG_EVENT_MASK Optionen ändern (6H) und die CYCPE1US.SPF anlegen
Musste lediglich die PROG_EVENT_MASK Optionen ändern (6H) und die CYCPE1US.SPF anlegen

Gut wenigstens mal ab und zu Rückmeldung zu bekommen.
--------------------
Freundliche Grüsse
DMC635V
DMC635V
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: