Welcome, Guest. Please login or register.
Did you miss your activation email?
April 19, 2018, 04:42:49 AM

Login with username, password and session length
Search:     Advanced search
* Home Help Search Calendar Links Login Register
+  Machsupport Forum
|-+  Mach Discussion
| |-+  Non English Forums
| | |-+  German
| | | |-+  Bauteil ausrichten
Pages: « 1 2   Go Down
Print
Author Topic: Bauteil ausrichten  (Read 1597 times)
0 Members and 1 Guest are viewing this topic.
TPS
Active Member

Offline Offline

Posts: 753



View Profile
« Reply #10 on: December 29, 2017, 01:51:24 PM »


[/quote]
Ich glaube ich verstehe jetzt, wo der Knackpunkt liegt. Der Nullpunkt liegt ja bei einem verschobenen Prüfling nicht da, wo ich ihn erwarten würde. Da muss ich noch mal drüber nachdenken.



das meinte ich, warum der Winkel alleine nicht reicht.

Gruß Tom
Logged

anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
ocram12
Active Member

Offline Offline

Posts: 9


View Profile
« Reply #11 on: December 29, 2017, 01:53:29 PM »

Danke. Ich werde jetzt erst Mal selber versuchen weiter zu kommen. Wenn ich noch  Probleme bekomme, würde ich noch Mal melden.
Schon Mal danke im voraus.
Gruß Marco
Logged
TPS
Active Member

Offline Offline

Posts: 753



View Profile
« Reply #12 on: December 29, 2017, 01:54:18 PM »

ich denke mal, man braucht mindesten 3 Punkte (Geometrie ist nicht meins),
einen an der Y Richtung, zwei in X Richtung,
um X0,Y0 auch zu bestimmen.

Gruß Tom
Logged

anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
TPS
Active Member

Offline Offline

Posts: 753



View Profile
« Reply #13 on: December 29, 2017, 01:57:32 PM »

wäre schön, wenn Du die Lösung hast, diese hier zu posten.
Dann könnte ich das bei meiner Fräse auch implementieren.

Gruß Tom
Logged

anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
TPS
Active Member

Offline Offline

Posts: 753



View Profile
« Reply #14 on: December 30, 2017, 03:05:05 AM »

Servus Marco,

diesen Code:

Code:

Angle = GetOemDro(118)

pi=4*Atn(1)

CurrentToolDiameter = GetOemDRO(43)
X = GetUserDro (1053)
Y = GetUserDro (1054)
Z = GetUserDro (1055)

CurrentFeed = GetOemDRO(818) 'Get the current feedrate to return to later
CurrentAbsInc = GetOemLED(48) 'Get the current G90/G91 state
CurrentGmode = GetOemDRO(819) 'Get the current G0/G1 state
CurrentToolDiameter = GetOemDRO(43) 'gets the current tool diameter
PlateThickness = GetUserDRO(1051)
ToolLength = GetOemDRO(42)

MoveXDistance = ((X * 1.1) + CurrentToolDiameter)
MoveYDistance = ((Y * 1.1) + CurrentToolDiameter)
MoveDistance = .5 + CurrentToolDiameter
MoveZDistance = .5

If GetOemLed (825) <> 0 Then 'Check to see if the probe is already grounded or faulty
    Call ProbeGrounded()
    Exit Sub
Else

'Get top of part

'DoOEMButton (1010) 'zero the Z axis so the probe move will start from here
Code "G4 P4" ' this delay gives me time to get from computer to hold probe in place
Code "G91 G31Z-2.0 F4" 'probing move, can set the feed rate here as well as how far to move
While IsMoving() 'wait while it happens
Wend
'Call SetDro (2, PlateThickness)

ZProbePos = GetVar(2002) 'get the axact point the probe was hit
'Code "G0 Z" &PlateThickness
'While IsMoving ()
'Wend
Code "G1 G91 F40 Z" &MoveZDistance 'put the Z retract height you want here
While IsMoving ()
Wend

'Code "(Z axis is now zeroed)" 'puts this message in the status bar
Code "F" &CurrentFeed 'Returns to prior feed rate


'Call SetDro (2,GetDro(2)-Z)

'Probe The X sides

    XCurrent = GetDro(0)
    YCurrent = GetDro(1)

    Code "G4 P1" 'Pause 1 second to give time to position probe plate
    While IsMoving ()
    Wend
    Call SetDro (0,0.000)
    While IsMoving ()
    Wend
    Call SetDro (1,0.000)
    Code "F4" 'slow feed rate to 4 ipm


Rem Probe Y Face Side

    Code "G90 G0 X" &-MoveDistance
    Code "G4 P0.25"
    Code "G91 G0 Z" &-MoveZDistance-.2
    Code "G4 P0.25"
    XNew = Xcurrent + 3
    Code "G31 X" &XNew 'Probe X1,Y1 (P1) location
    While IsMoving() 'wait for the move to finish
    Wend
    X1 = GetVar(2000) 'get the probe touch location
    Y1=0 ' Should always be zero
    Y2 = Y-0.5 '1/2 inch back from end of block

    Code "G91 G0 X-.25"
    Code "G4 P0.25"
    Code "G91 G0 Y" &Y2
    Code "G4 P0.25"
    Code "G31 X" &XNew 'Probe X2,Y2 (P2) location
    While IsMoving() 'wait for the move to finish
    Wend
    X2 = GetVar(2000) 'get the probe touch location
    'Y2= Block length - 1/2 inch

    Code "G91 G0 Z" &MoveZDistance+.2
    Code "G4 P0.25"
    Code "G91 G0 Y" &-Y2 'Go back to the first spot
    Code "G4 P0.25"
    Code "G91 G0 X" &CurrentToolDiameter+.1 'rapid move back to start point
    Code "G4 P0.25"

Rem Probe X Face Side

    Code "G90 G0 Y" &-MoveDistance
    Code "G4 P0.25"
    Code "G91 G0 Z" &-MoveZDistance-.2
    Code "G4 P0.25"
    YNew = YCurrent + 3
    Code "G31 Y" &YNew 'Probe X3,Y3 (P3) location
    While IsMoving()
    Wend
    Y3 = GetVar(2001)   'get the probe location
    'X3=0
    X4 = X-0.5 '1/2 inch back from end of block

    Code "G91 G0 Y-.25"
    Code "G4 P0.25"
    Code "G91 G0 X" &X4
    Code "G4 P0.25"
    Code "G31 Y" &YNew 'Probe X4,Y4 (P4) location
    While IsMoving() 'wait for the move to finish
    Wend
    Y4 = GetVar(2001) 'get the probe touch location
    'X4= Block Width - 1/2 inch

    Code "G90 G0 Z" &MoveZDistance+1    'Back up and clear
    Code "G4 P0.25"

t1= (x4-x3)*(y1-y3)-(y4-y3)*(x1-x3)
b1= (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1)
ua=t1/b1

t2= (x2-x1)*(y1-y3)-(y2-y1)*(x1-x3)
b2= (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1)
ub=t2/b2

XH=x1+ua*(x2-x1) ' X Home  distance away
YH=y1+ua*(y2-y1) ' Y Home  distance away


If X>Y Then
   'LongestSide=X
   a=(Y4-Y3)
   b=(X4-X3)
   v=a/b
   NewAngle=Atn(v)*(180/pi)
Else
   'LongestSide=Y
   a=(X2-X1)
   b=(Y2-Y1)
   v=b/a
   NewAngle=Atn(v)*(180/pi)
   If NewAngle > 0 Then
     NewAngle=NewAngle-90
   Else
     NewAngle=NewAngle+90
   End If
End If

Rem move To the Block Lower Corner

    Code "G90 G0 Y" &YH + CurrentToolDiameter/2
    Code "G90 G0 X" &XH + CurrentToolDiameter/2
    While IsMoving ()
    Wend
    Call SetDro (1,0.000)
    While IsMoving ()
    Wend
    Code "G4 P0.25"
    Call SetDro (0,0.000)
    Call SetDro (1,0.000)

    Call SetOemDro (118,NewAngle) ' now you can rotate the block


'Call SetDro (2,Z + PlateThickness)

    Code "G4 P0.25"

    Code "F" &CurrentFeed 'restore starting feed rate
Call ReturnG90G91State()
Exit Sub
End If
 
Sub ProbeGrounded()
Code "(Probe plate is grounded, check connection and try again)"
Call ReturnG90G91State()
End Sub

Sub ReturnG90G91State()
If CurrentAbsInc = 0 Then 'if G91 was in effect before then return to it
Code "G91"
Else
Code "G90"
End If
If CurrentGMode = 0 Then 'if G0 was in effect before then return to it
Code "G0"
Else
Code "G1"
End If
End Sub                 


habe ich hier im Forum gefunden, vielleicht hilft er ja ein bisschen.

Gruß Tom
Logged

anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
ocram12
Active Member

Offline Offline

Posts: 9


View Profile
« Reply #15 on: December 30, 2017, 04:25:02 AM »

Moin Tom,

danke für das Beispiel.

Ich hatte mich gestern noch mal hin gesetzt und die Mathematik dahinter durchdacht. Ist alles garnicht so schwer, wie es aussieht.
Man(n) muss halt nur mal mit jemanden darüber reden.
Ich habe dir die Berechnung mal aufgeschrieben und ein Beispiel dazu gepackt. Der Rest sollte nur noch Programmieren sein.
Ich weiß nicht, wann ich da weiter machen kann. Ab Montag bin von der Arbeit aus in Brasilien tätig. Da weiß ich immer nicht, wann ich nach hause kommen.
Wenn ich es am laufen habe, versuche ich mich zu melden.

Gurß
Marco


* Berechnung.jpg (618.16 KB, 1237x1753 - viewed 49 times.)

* Beispiel.jpg (615.58 KB, 1275x1753 - viewed 39 times.)
Logged
TPS
Active Member

Offline Offline

Posts: 753



View Profile
« Reply #16 on: December 30, 2017, 04:38:27 AM »

Hallo Marko,

bei der Berechnung bin ich bei Dir.

Wo ich jetzt noch drüber nachgedacht habe habe, ist das Antasten der 3 Punkte.
Wenn die Koordinaten der 3 Punkte genau bestimmt sind, ist die Rechnung IMHO richtig.

Da aber beim Antasten einer "verdrehten" Geraden der Tastkopf, welchen ja einen gewissen Durchmesser hat,
das Bauteil nicht am Quadranten trifft, sondern tangential leicht daneben, kann man den Radius des Tastkopfes
nicht einfach zur entsprechender (X/Y) Achse Sub- oder Addieren.

Bei der Bestimmung des Winkels der Y-Geraden dürfte das egal sein, da ja 2x mit dem gleichen Fehler gearbeitet wird.
Aber beim berechnen des Schnittpunktes der X und Y Geraden ist das glaube ich nicht egal.

Werde die Aufgabe mal meinem Sohn stellen, dem sein Abi ist erst 4 Jahre her, nicht 40 wie meine mittlere Reife.
Gruß Tom

Wir können uns ja hier weiter Austauschen bis zur Realisierung. 
Logged

anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
ocram12
Active Member

Offline Offline

Posts: 9


View Profile
« Reply #17 on: December 30, 2017, 07:22:29 AM »

Da hast du recht. Das ist mir nicht aufgefallen. Währe wohl erst beim Testen heraus gekommen. Soviel zur Theorie und der Praxis.
Das Problem könnte man aber umgehen, indem man auch für die Y Achse 2 Punke sich holt.
Macht die Sache ein bisschen komplizierter, aber sollte gehen.

Gruß
Marco
Logged
Pages: « 1 2   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!