594.531 aktive Mitglieder*
3.799 Besucher online*
Kostenfrei registrieren
Einloggen Registrieren

SolidCam PP anpassen für KUKA Roboter, Komma setzen zwischen Positionswerten

Beitrag 30.05.2018, 08:37 Uhr
dekasi
Level 3 = Community-Techniker
***

Hy.

Ich hab mir folgende Wochenendaufgabe ausgesucht:
Ein Kumpel hat einen KUKA Roboter und ich passe gerade einen PP für Solidcam dafür an.
Nun will der Kollege bei linearen Verfahrbewegungen zwischen den pos Werten immer ein Komma haben.
Ich kann das nicht lösen..... wacko.gif
Entweder gibt er IMMER ein Komma aus, oder nie.
Er soll aber , wenn er am Ende des Satzes angekommen ist, kein Komma mehr ausgeben. z.B bei LIN { X -40 , }
Auszug aus einem Prog:

$VEL.CP=0.3; @rapid_move
$VEL.ORI1=0.3
$VEL.ORI2=0.3
$ACC.CP=0.1
$ACC.ORI1=0.1
$ACC.ORI2=0.1
LIN { X 128.5, Y -23.75, Z - 100} ----------> so solls sein
; (-------------------)
;
; (F-PROFIL1 - PROFILE)
;
; (-------------------)
;


$VEL.CP=0.3; @rapid_move
$VEL.ORI1=0.3
$VEL.ORI2=0.3
$ACC.CP=0.1
$ACC.ORI1=0.1
$ACC.ORI2=0.1
LIN { X 128.5, Y -23.75, Z - 10}


$VEL.CP=0.3; @rapid_move
$VEL.ORI1=0.3
$VEL.ORI2=0.3
$ACC.CP=0.1
$ACC.ORI1=0.1
$ACC.ORI2=0.1
LIN { Z - 3}

$VEL.CP=1600.001
$VEL.ORI1=1600.001
$VEL.ORI2=1600.001
$ACC.CP=1600.001
$ACC.ORI1=1600.001
$ACC.ORI2=1600.001
LIN { Z - 0.05}

LIN { X -40 , } ----------> so solls nicht sein

LIN { X -40 , Y 50}

--------
Auszug aus dem PP:

@rapid_move
{nb}
{nb}
{nb, '$VEL.CP=0.3; @rapid_move'}
{nb, '$VEL.ORI1=0.3'}
{nb, '$VEL.ORI2=0.3'}
{nb, '$ACC.CP=0.1'}
{nb, '$ACC.ORI1=0.1'}
{nb, '$ACC.ORI2=0.1'}
{nb,'LIN {'[' X'' 'xpos ','], [' Y'' 'ypos ','] , [' Z'' -'' 'zpos ]'}'}

endp
---------------

Kann mir jemand bitte weiterhelfen ?

Vielen Dank

Der Beitrag wurde von dekasi bearbeitet: 30.05.2018, 08:38 Uhr
TOP    
Beitrag 30.05.2018, 10:30 Uhr
G00Z0
Level 5 = Community-Ingenieur
*****

Du könntest die modale Ausgabe "selbst" in die Hand nehmen:

{nb,'LIN'}
if change(xpos) eq true then
{' X',xpos}
if ((change(ypos) eq true) or (change(zpos) eq true) then
{' , '}
endif
endif
if change(ypos) eq true then
{' Y',ypos}
if (change(zpos) eq true) then
{' , '}
endif
endif
if change(zpos) eq true then
{' Z',zpos}
endif

gibt also nach X-Ausgabe ein Komma aus, wenn sich auch Y oder Z geändert haben,
nach Y erst dann, wenn sich auch noch Z ändert.

War so Dein Gedankengang ?


anstelle von Deinem {'[' X'' 'xpos ','], [' Y'' 'ypos ','] , [' Z'' -'' 'zpos ]'}'}

Sollte funktionieren.



Wieso schmeisst der die Leerzeichen am Zeilenanfang raus ?? Hatte so schön alles eingerückt...

Der Beitrag wurde von G00Z0 bearbeitet: 30.05.2018, 10:32 Uhr


--------------------
Wir haben doch keine Zeit --> G00Z0

Diesem User wurde verliehen: "Das Norddeutsche Qualitätsposting Siegel"
TOP    
Beitrag 30.05.2018, 13:51 Uhr
dekasi
Level 3 = Community-Techniker
***

Hy und danke für die schnelle Antwort.
Das konnte jetzt nicht bis zum WE warten, ich habs gleich integriert und etwas angepasst.

Leider hab ich noch einen Fehler drin:
Wenn zwei Achse gleichzeitig verfahren werden, nimmt er erst X, dann die beiden Achsen.
Das muß ich ihm noch austreiben
Ansonsten funzts, danke ! danke.gif thumbs-up.gif

Programmausschnitt:

$VEL.CP=150
$VEL.ORI1=150
$VEL.ORI2=150
$ACC.CP=150
$ACC.ORI1=150
$ACC.ORI2=150

LIN { X 59.5}

LIN { Y -31.5}

LIN { X 0}----->sollte nicht stehen
LIN { X 0, Y 0}
LIN { Y 0}----->sollte nicht stehen

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

Ausschnitt PP:
@line

{nb}


if m_feed_flag eq 1
m_feed_flag = 0
{nl, '$VEL.CP='feed}
{nl, '$VEL.ORI1='feed}
{nl, '$VEL.ORI2='feed}
{nl, '$ACC.CP='feed}
{nl, '$ACC.ORI1='feed}
{nl, '$ACC.ORI2='feed}
endif



if change(xpos) eq true then
{nb,'LIN {'[' X'' 'xpos ]'}'}
if change(ypos) eq true or change(zpos) eq true then
{nb,'LIN {'[' X'' 'xpos ','] , [' Y'' 'ypos ]'}'}
endif
endif


if change(ypos) eq true then
{nb,'LIN {'[' Y'' 'ypos ]'}'}
if change(zpos) eq true then
{nb,'LIN {'[' Y'' 'ypos ','] , [' Z'' 'zpos ]'}'}
endif
endif



endp

Der Beitrag wurde von dekasi bearbeitet: 30.05.2018, 13:52 Uhr
TOP    
Beitrag 30.05.2018, 14:14 Uhr
G00Z0
Level 5 = Community-Ingenieur
*****

Deswegen ist das ja EINE einzige Ausgabe von LIN:

ich rück das mal mit Punkten ein, damit da deutlicher wird:
Du gibtst ja zweimal LIN aus, also kommen auch zwei Sätze raus.
So kommt nur ein einziger LIN raus. Wetten ?

{nb,'LIN'}
if change(xpos) eq true then
.....{' X',xpos}
.....if ((change(ypos) eq true) or (change(zpos) eq true) then
..........{' , '}
.....endif
endif
if change(ypos) eq true then
.....{' Y',ypos}
.....if (change(zpos) eq true) then
..........{' , '}
.....endif
endif
if change(zpos) eq true then
..... {' Z',zpos}
endif


--------------------
Wir haben doch keine Zeit --> G00Z0

Diesem User wurde verliehen: "Das Norddeutsche Qualitätsposting Siegel"
TOP    
Beitrag 31.05.2018, 10:39 Uhr
dekasi
Level 3 = Community-Techniker
***

TOP !
Jetzt hab ich`s kapiert :-)
Funzt, vielen lieben Dank spitze.gif super.gif

Auszug PP:

{nb,'LIN'}
{ ' {' }
if change(xpos) eq true then
{' X ',xpos}
if (change(ypos) eq true) or (change(zpos) eq true) then
{' , '}
endif
endif


if change(ypos) eq true then
{' Y ',ypos}
if (change(zpos) eq true) then
{' , '}
endif
endif

if change(zpos) eq true then
{' Z ',zpos}
endif

{ ' }' }
-----------------

Auszug Programm:

$VEL.CP=0.1
$VEL.ORI1=0.1
$VEL.ORI2=0.1
$ACC.CP=0.1
$ACC.ORI1=0.1
$ACC.ORI2=0.1
LIN { Z 0 }

LIN { X -300 }

LIN { X 0 , Y 100 }

LIN { Y 0 }

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

Merci nochmal !
TOP    



2 Besucher lesen dieses Thema (Gäste: 2)
0 Mitglieder: