Siemens
Digital Industries, Motion Control, Machine Tool Systems
8843
Follower:innenGeänderten Nullpunkt verfahren, Nicht mit Aufruf z.B. G54
04.09.2006, 14:26 Uhr
Hallo alle miteinander.
Ein Rundteil ist aussermittig auf einen Drehtisch gespannt.
In einem Unterprogramm wird bei jeder Änderung des Drehtisches
der neue Nullpunkt zur Werkstückmitte bestimmt und dem aktuellen
Nullpunkt in die Fine Translation (FI) übergeben.
Allerdings verfährt die Maschine den neuen Nullpunkt solange nicht,
bis ich z.B. im Unterprogramm G54 eingebe.
Da die Nullpunkte wechseln können kann ich aber nicht im UP G54
schreiben. Adresse G ist fest, sodas ich auch nicht schreiben kann
G=$P_UIFR[$P_UIFRNUM] ;Übergabe aktueller Nullpunkt an G
Nun könnte ich das ganze mit TRANS machen, aber es könnte ja sein das
TRANS im Hauptprogramm vor diesem UP schon aktiv ist, dann würde das eine das andere überschreiben.
ATRANS im UP da bin ich mir auch nicht sicher ob das in jedem Fall gut geht.
Das einzige was mir zur Zeit einfällt ist ein Vergleich des aktuellen NP
mit allen möglichen 40 Nullpunkten um dann den richtigen einzutragen.
Kurz gesagt brauche ich eine Aktualisierung so wie beim Aufruf mit G54..G540
Ein Rundteil ist aussermittig auf einen Drehtisch gespannt.
In einem Unterprogramm wird bei jeder Änderung des Drehtisches
der neue Nullpunkt zur Werkstückmitte bestimmt und dem aktuellen
Nullpunkt in die Fine Translation (FI) übergeben.
Allerdings verfährt die Maschine den neuen Nullpunkt solange nicht,
bis ich z.B. im Unterprogramm G54 eingebe.
Da die Nullpunkte wechseln können kann ich aber nicht im UP G54
schreiben. Adresse G ist fest, sodas ich auch nicht schreiben kann
G=$P_UIFR[$P_UIFRNUM] ;Übergabe aktueller Nullpunkt an G
Nun könnte ich das ganze mit TRANS machen, aber es könnte ja sein das
TRANS im Hauptprogramm vor diesem UP schon aktiv ist, dann würde das eine das andere überschreiben.
ATRANS im UP da bin ich mir auch nicht sicher ob das in jedem Fall gut geht.
Das einzige was mir zur Zeit einfällt ist ein Vergleich des aktuellen NP
mit allen möglichen 40 Nullpunkten um dann den richtigen einzutragen.
Kurz gesagt brauche ich eine Aktualisierung so wie beim Aufruf mit G54..G540
04.09.2006, 16:37 Uhr
hi mirek,
G=$P_UIFR[$P_UIFRNUM]
soeinen befehl habe ich auch schon vermißt.
aber in der dokumentation gibt eine beschreibung als unterprogramm.
hier die lösung bei uns
UP zum aktuellen Nullpunkt ermitteln.
%_N_Npv_num_SPF
;$PATH=/_N_SPF_DIR
CASE $P_UIFRNUM Of 1 Gotof _G54 2 Gotof _G55 3 Gotof _G56 4 Gotof _G57 5 Gotof _G505 ;;; usw
_G54: G54
Gotof Ende
_G55: G55
Gotof Ende
_G56: G56
Gotof Ende
_G57: G57
Gotof Ende
_G505: G505
Gotof Ende
;; usw
Ende:
M17
ich hoffe ich habe dich richtig verstanden.
gruß
cnc-wolle
G=$P_UIFR[$P_UIFRNUM]
soeinen befehl habe ich auch schon vermißt.
aber in der dokumentation gibt eine beschreibung als unterprogramm.
hier die lösung bei uns
UP zum aktuellen Nullpunkt ermitteln.
%_N_Npv_num_SPF
;$PATH=/_N_SPF_DIR
CASE $P_UIFRNUM Of 1 Gotof _G54 2 Gotof _G55 3 Gotof _G56 4 Gotof _G57 5 Gotof _G505 ;;; usw
_G54: G54
Gotof Ende
_G55: G55
Gotof Ende
_G56: G56
Gotof Ende
_G57: G57
Gotof Ende
_G505: G505
Gotof Ende
;; usw
Ende:
M17
ich hoffe ich habe dich richtig verstanden.
gruß
cnc-wolle
04.09.2006, 20:19 Uhr
nixalsverdruss
Level 7 = Community-Professor
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Mitglied seit: 16.11.2003
Beiträge: 1.511
Hallo
sucht ihr das hier ?
Indirekte G-Code-Programmierung
DEF INT INT_VAR
INT_VAR = 2
...
G[8] = INT_VAR G1 X0 Y0 ;G54
INT_VAR = INT_VAR + 1 ;G-Code-Berechnung
G[8] = INT_VAR G1 X0 Y0 ;G55
sucht ihr das hier ?
Indirekte G-Code-Programmierung
DEF INT INT_VAR
INT_VAR = 2
...
G[8] = INT_VAR G1 X0 Y0 ;G54
INT_VAR = INT_VAR + 1 ;G-Code-Berechnung
G[8] = INT_VAR G1 X0 Y0 ;G55
--------------------
There are only 10 types of people in the world: Those who understand binary, and those who don't
Wir haben einen exponentiellen Zuwachs anDoofen Pack im Forum
Wir haben einen exponentiellen Zuwachs an
04.09.2006, 20:42 Uhr
hi nixalsverdruss,
genau das habe ich gebraucht aber leider in den ganzen dokumentationen von siemens nicht richtig gesucht.
wenn man ließt ist man im vorteil
ps.
(ich hoffe den name ist nicht programm)
gruß
cnc-wolle
genau das habe ich gebraucht aber leider in den ganzen dokumentationen von siemens nicht richtig gesucht.
wenn man ließt ist man im vorteil
ps.
(ich hoffe den name ist nicht programm)
gruß
cnc-wolle
04.09.2006, 20:51 Uhr
nixalsverdruss
Level 7 = Community-Professor
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE
von siemens nicht richtig gesucht.
wenn du nicht weißt das mann über die g gruppe addresieren muss
kannst du lange suchen steht wenn ich nicht irre irgendwo bei shopmill
bei der doku ist der name programm
--------------------
There are only 10 types of people in the world: Those who understand binary, and those who don't
Wir haben einen exponentiellen Zuwachs anDoofen Pack im Forum
Wir haben einen exponentiellen Zuwachs an
05.09.2006, 08:39 Uhr
hi nixalsverdruss,
die information steht in der dokumentation siemens arbeitsvorbereitung.
das dein name sich auf siemens 840d bezieht kann ich nachvollziehen.
bei mir ist es eine ART von "HASS/LIEBE" faßt alles möglich nur wenn der zusammenhang OK ist.
gruß
cnc-wolle
die information steht in der dokumentation siemens arbeitsvorbereitung.
das dein name sich auf siemens 840d bezieht kann ich nachvollziehen.
bei mir ist es eine ART von "HASS/LIEBE" faßt alles möglich nur wenn der zusammenhang OK ist.
gruß
cnc-wolle
Angehängte Datei(en)
06.09.2006, 13:36 Uhr
für die Antworten
Indirekte Programmierung kannte ich noch nicht.
Leider funktionierte G[8]= $P_UIFR[$P_UIFRNUM] nicht.
Diese Systemvariable darf wohl nur gelesen aber nicht direkt uebergeben werden.
Ich werde es wohl so ähnlich machen wie cnc-wolle mit dem UP geschrieben hat, aber als Schleife. Hab's aber noch nicht probiert.
DEF INT IST_NP=1
REPEAT
IST_NP=IST_NP+1 ;MUSS BEGINNEN MIT 2 = G54 DA 1=G500
IF IST_NP>101 ;ABBRUCH BEI UEBER 100 MOEGLICHEN NP
MSG("FEHLER. ZAHL MOEGLICHE NP UEBERSCHRITTEN.")
M0
ENDIF
UNTIL IST_NP==$P_UIFR[$P_UIFRNUM] ;ENDE WENN NP GEFUNDEN
G[8]=IST_NP ;UEBERGABE
PS: Hatte ich vergessen. Steuerung ist SINUMERIK 840D
Indirekte Programmierung kannte ich noch nicht.
Leider funktionierte G[8]= $P_UIFR[$P_UIFRNUM] nicht.
Diese Systemvariable darf wohl nur gelesen aber nicht direkt uebergeben werden.
Ich werde es wohl so ähnlich machen wie cnc-wolle mit dem UP geschrieben hat, aber als Schleife. Hab's aber noch nicht probiert.
DEF INT IST_NP=1
REPEAT
IST_NP=IST_NP+1 ;MUSS BEGINNEN MIT 2 = G54 DA 1=G500
IF IST_NP>101 ;ABBRUCH BEI UEBER 100 MOEGLICHEN NP
MSG("FEHLER. ZAHL MOEGLICHE NP UEBERSCHRITTEN.")
M0
ENDIF
UNTIL IST_NP==$P_UIFR[$P_UIFRNUM] ;ENDE WENN NP GEFUNDEN
G[8]=IST_NP ;UEBERGABE
PS: Hatte ich vergessen. Steuerung ist SINUMERIK 840D
06.09.2006, 19:22 Uhr
hi mirek,
ab version 5.xx 840D ist die schreibweise erlaubt.
hier eine flexiblere version
========================
def INT np_zaehl
G0 g505 x12 y0
;>>>>
For np_zaehl=1 To 100;.............; 1 --> 100 Nullpunkte
If np_zaehl == $P_UIFRNUM;....; NP5 aktiv --> G505
MSG ("aktiven NP gefunden")
np_zaehl = npzaehl+1;.............; 5=G57 5+1=G505
Gotof Ende
Endif
Endfor
;<<<<
Ende:
G[8]=np_zaehl;..........................; G505
so habe ich es getestet.
gruß
cnc_wolle
ab version 5.xx 840D ist die schreibweise erlaubt.
hier eine flexiblere version
========================
def INT np_zaehl
G0 g505 x12 y0
;>>>>
For np_zaehl=1 To 100;.............; 1 --> 100 Nullpunkte
If np_zaehl == $P_UIFRNUM;....; NP5 aktiv --> G505
MSG ("aktiven NP gefunden")
np_zaehl = npzaehl+1;.............; 5=G57 5+1=G505
Gotof Ende
Endif
Endfor
;<<<<
Ende:
G[8]=np_zaehl;..........................; G505
so habe ich es getestet.
gruß
cnc_wolle
07.09.2006, 05:50 Uhr
Gut das teste ich heute nacht. Hatte in meinem letzten Beitrag auch noch
einen Fehler, der nun nicht mehr editierbar ist.
UNTIL IST_NP==$P_UIFRNUM muß es heißen.
08.09.2006, 15:50 Uhr
Manchmal sieht man den Wald vor lauter Bäumen nicht.
Schleife ist gar nicht notwendig.
DEF INT IST_NP
IST_NP=$P_UIFRNUM
IST_NP=IST_NP+1
G[8]=IST_NP
Schleife ist gar nicht notwendig.
DEF INT IST_NP
IST_NP=$P_UIFRNUM
IST_NP=IST_NP+1
G[8]=IST_NP
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: