Hello Guest it is November 14, 2019, 01:05:38 AM

Author Topic: Bauteil ausrichten  (Read 7019 times)

0 Members and 2 Guests are viewing this topic.

Offline TPS

*
  •  1,406 1,406
    • View Profile
Re: Bauteil ausrichten
« Reply #30 on: July 11, 2019, 01:57:34 PM »
eigentlich müsstest Du drei Funktionen reinkopiert haben

TouchG()
Probe()
WaitforMove()

Habe mir gerade die modifizierte Funktion Probe() noch mal angesehen, die hat ein "Loch", wenn der Probe Eingang
nicht innerhalb von 100mm (maximale Probe Distanz) kommt. Hier muss ich mir noch was überlegen. Wie gesagt
bei der CSMIO ist das alles ein bisschen anders, in der Originalversion (CSMIO) wird das berücksichtigt und ggf. eine
Fehlermeldung ausgegeben.

Der generelle Ablauf zum Antasten eines Punktes sollte so ablaufen:
-Achse fährt mit F200 bis der Probeeingang betätigt wird
-Achse fährt so lange in die entgegengesetzte Richtung (F600) bis der Probe Eingang wieder frei wird
-Achse fährt mit F2 bis der Probeeingang betätigt wird
-dieser zweite genauere Wert wird dann für die Berechnung genommen

wie geschrieben kann ich das momentan hier leider nicht testen.

Gruß Tom



anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
Re: Bauteil ausrichten
« Reply #31 on: July 11, 2019, 02:22:03 PM »
Sorry, ist mein Fehler. Ich habe nur „Probe“ auf den Button gelegt und „ProbeFunktionen“ abgelegt. Für „TouchG“ und „WaitforMove“ eine m1s anlegen?

Offline TPS

*
  •  1,406 1,406
    • View Profile
Re: Bauteil ausrichten
« Reply #32 on: July 11, 2019, 02:38:22 PM »
schau dir reply#26 noch mal an, da habe ich das schon beschrieben.

die Code für den button würde dann lauten

Code: [Select]
Sub Main()

TouchG
end sub

#Expand <\..\..\macros\Dein Profilname\ProbeFunktionen>

Achtung die Expand Anweisung muss auf deine Profilnamen angepasst werden

alle drei Funktionen in eine Datei (ProbeFunktionen.M1S)
« Last Edit: July 11, 2019, 02:40:09 PM by TPS »
anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
Re: Bauteil ausrichten
« Reply #33 on: July 12, 2019, 05:25:43 AM »
So, ich habe nun die Codes in die Datei eingepflegt.
Zum Test:
Button drücken --> Statusmeldung: "1. Anstastung" - X wird zügig angefahren --> danach sehr langsames Freifahren. Jetzt  kommt die Fehlermeldung "Probe während Positionierfahrt aktiv"

Kann es ein, dass da eine Überwachungszeit für das Freifahren aktiv ist und das Freifahren zu langsam ist?

Offline TPS

*
  •  1,406 1,406
    • View Profile
Re: Bauteil ausrichten
« Reply #34 on: July 12, 2019, 05:38:08 AM »
schaue Dir bitte mal die Datei C:\Mach3\lasterrors.txt an.
ich vermute, das Du nicht alle Statusmeldungen siehst, da die zu schnell hintereinander kommen.
anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
Re: Bauteil ausrichten
« Reply #35 on: July 12, 2019, 08:05:59 AM »
Hier mal ein Ausschnitt aus der "Lasterrors".
Ich kann hier keinen Fehler erkennen. Was ja wohl auch richtig sein kann, da das Makro ja ordnungsgemäß abbricht.
Re: Bauteil ausrichten
« Reply #36 on: July 12, 2019, 10:53:47 AM »
Ich habe jetzt mal den Code von Hand durchgesteppt. Soweit ich das überblicken kann läuft er von Hand.
Was nicht paßt, ist das der 2. Meßpunkt nur ca. 1 - 2 mm neben dem ersten Meßpunkt liegt.
Mir ist immer noch nicht klar woher einige der Variablen kommen:
- 2000
- 2001

und deren Bedeutung im Code, hier z.B:
Quote
'Softlimits ggf. wieder einschalten
   If ((Not GetOEMLed(23)) And (SoftLimitswhereon = True)) Then      'lt. Handbuch ist OEMLED (23) = SpindleSpeed true Acc. ???????
      Sleep(500)
      DoOEMButton(119)                                          ' SoftLimits Off/On toggle
   End If
und hier:

Quote
   'Bewegung abwarten
   Sub WaitForMove (Check as Boolean)
      While IsMoving()
      'prüfen ob wir gegen das Bauteil fahren
      If ((GetOEMLed(825) = True) and (Check = True)) Then      '825 = Digitize Input
         MSGBox "Probe während Positionierfahrt aktiv",vbOK + vbCritical ,"Fehler !"
         DoButton(21)
         End
      End If   
      Sleep(5)
      Wend
   End Sub

Gruß

Offline TPS

*
  •  1,406 1,406
    • View Profile
Re: Bauteil ausrichten
« Reply #37 on: July 12, 2019, 01:49:12 PM »
die Variablen 2000,2001,2002 kommen aus der G31 Funktion,
hier werden die exakten Koordinaten X/Y/Z eingtragen, wenn der Probe Eingang kommt,
macht das System selbständig.

Du müsstest mal folgende Zeilen ändern, da Du ja keine EIngabefelder für DeltaX und DeltaY hast:

   'Parameter holen
   X = 50 'GetUserDro (1055) 'delta der X-Punkte
   Y = 50 'GetUserDro (1056) 'delta der Y-Punkte
   CurrentToolDiameter = 8 'GetUserDro (1027) 'hier wird der Durchmesser des Messtasters vorbesetzt

bloß das wir das grundsätzlich ans Laufen bekommen.

hier mal ein Auszug aus Lasterrors:

Sat - 13:07:54 ---Probe X+
Sat - 13:07:54 ---1. Antastung
Sat - 13:07:58 ---Probe 1.Kontakt bei: 8.79,0,-68.9725,382.1625,195.8975,-85.74
Sat - 13:07:58 ---Probe freifahren
Sat - 13:07:58 ---2. Antastung
Sat - 13:08:02 ---Probe 2.Kontakt bei: 8.8,0,-68.9725,382.1625,195.8975,-85.74
Sat - 13:08:02 ---Vorposition P2 anfahren
Sat - 13:08:07 ---EStop Button Pressed.
Sat - 13:08:07 ---External EStop Requested.

grundsätzlich schaut das mal gut aus, der erste Punkt wird angetastet, und beim Verfahren zu zweiten Punkt
(es war ja kein DeltaX/DeltaY vorhanden) seinen wir gegen das Bauteil zu fahren.

Gruß Tom

PS: in irgend einem Post habe ich ein Bild angehängt, in dem man die Antastreihenfolge sehen kann.




anything is possible, just try it.
if you find some mistakes, in my bad bavarian english,they are yours.
Re: Bauteil ausrichten
« Reply #38 on: July 12, 2019, 03:07:22 PM »
Hallo,
ich habe jetzt nochmals mit den Delta-Werten getestet. In meinem Fall 15 mm und ToolDiameter 3 mm.
Wenn ich mit Hand durchsteppe geht das prinzipiell. Beim Automatikbetrieb steigt das Programm mit der bereits genannten Fehlermeldung immer noch aus.

Offline TPS

*
  •  1,406 1,406
    • View Profile
Re: Bauteil ausrichten
« Reply #39 on: July 12, 2019, 03:17:53 PM »
hier noch mal ein Version der Funktion TouchG()

ACHTUNG Deltas und Durchmesser wieder entsprechend anpassen

Code: [Select]
'Antasten Werkstück (gedreht)
Public Function TouchG()
Message "Antasten schraeges Bauteil"

'Parameter holen
X = GetUserDro (1055) 'delta der X-Punkte
Y = GetUserDro (1056) 'delta der Y-Punkte
CurrentToolDiameter = GetUserDro (1027)

'Parameter prüfen
If X = 0 Then
MSGBox "Delta X zu klein!",vbOK + vbCritical ,"Fehler !"
Exit function
End If
If Y = 0 Then
MSGBox "Delta Y zu klein!",vbOK + vbCritical ,"Fehler !"
Exit function
End If

'PI vorbesetzen -----------------------------------------------
pi=4*Atn(1)

'Koordinatendrehung ausschalten
Code "G69"
Sleep(200)

'X / Y auf null setzen
    Call SetDro (0,0)
    Call SetDro (1,0)
Sleep(200)

'die Y Seite vermessen

'P1 antasten
Probe 100,0,0
'Koordinaten P2
    X1 = GetVar(2000)
    Y1=0

'Vorposition P2 anfahren
Message("Vorposition P2 anfahren")
    Y2 = Y
    Code "G91 G1 X-" &X & "F1800"
WaitForMove(False)
    Code "G91 G1 Y" &Y2
WaitForMove(True)

'P2 antasten
Probe 100,0,0
'Koordinaten P2
    X2 = GetVar(2000)

    'die X Seite vermessen -----------------------------------------------

'Vorposition P3 anfahren
Message("Vorposition P3 anfahren")
X3 = X1 + (CurrentToolDiameter/2) + 10
    Code "G91 G1 X-" &X & "F1800"
WaitForMove(False)
    Code "G90 G1 Y-30"
WaitForMove(True)
    Code "G90 G1 X" &X3
WaitForMove(True)

'P3 antasten
Probe 0,100,0
'Koordinaten P3
    Y3 = GetVar(2001) 

'Vorposition P4 anfahren
Message("Vorposition P4 anfahren")
    X4 = X3 + X
    Code "G91 G1 Y-20 F1800"
WaitForMove(False)
    Code "G90 G1 X" &X4
WaitForMove(True)

'P4 antasten
Probe 0,100,0
'Koordinaten P4
    Y4 = GetVar(2001) 'get the probe touch location

'Z auffahren
Code "G91 G01 Y-0.2 F1800"
WaitForMove(False)
    Code "G91 G1 Z20"
WaitForMove(True)

'Brechnung
t1= (X4-X3)*(Y1-Y3)-(Y4-Y3)*(X1-X3)
b1= (Y4-Y3)*(X2-X1)-(X4-X3)*(Y2-Y1)
ua=t1/b1

'Nullpunkt berechnen
XH=X1+ua*(X2-X1) ' X Home  distance away
YH=Y1+ua*(Y2-Y1) ' Y Home  distance away

' Message("Koordinaten Nullpunkt : X " &XH &" Y " &YH)
' Sleep(200)


'Winkel aus der längeren Seite berechnen
If X>Y Then
'längere Seite=X
a=(Y4-Y3)
b=(X4-X3)
v=a/b
NewAngle=Atn(v)*(180/pi)
Else
'längere Seite=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
' Message("Neuer Winkel : " &NewAngle )
' Sleep(200)

'zum neuen Nullpunkt fahren
'Winkel = errechneter Winkel + 45°
siWi = 2*Pi/360*(NewAngle+45)
hyWi = SQR((CurrentToolDiameter/2)*(CurrentToolDiameter/2)*2)

Dx = hyWi * Cos(siWi)
Dy = hyWi * Sin(siWi)
' Message("Koordinaten Berechnung : X " &Dx &" Y " &Dy)
' Sleep(200)

'Zu neuen Nullpunkt fahren
    Code "G90 G1 X" &XH+Dx & " Y" &YH+Dy
WaitForMove(True)

'neuen Nullpunkt setzen
    Call SetDro (0,0)
    Call SetDro (1,0)

'Koordinatendrehung setzen
    Call SetOemDro (118,NewAngle)

'Koordinaten ausgeben
' Message "X1 " &X1 &" Y1 " &Y1 & "   X2 " &X2 &" Y2 " &Y2 & "   X3 " &X3 &" Y3 " &Y3 & "   X4 " &X4 &" Y4 " &Y4

'wieder auf absolut stellen
Code "G90"
Message ""

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