BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   CNC e Stampanti 3D (https://www.baronerosso.it/forum/cnc-e-stampanti-3d/)
-   -   Problema con ATZ non rilevato in mach3 (https://www.baronerosso.it/forum/cnc-e-stampanti-3d/356565-problema-con-atz-non-rilevato-mach3.html)

gattodistrada 16 marzo 16 20:48

Problema con ATZ non rilevato in mach3
 
Salve a tutti, ho un problemino che non riesco a risolvere...

premessa:
la mia cnc autocostruita credo funzioni perfettamente, anchde se ho notato alcune cose...
ho in uso mach3 R3.043.066 (l'ultima) originale, viene pilotata tramite una interfaccia USB/parallela acqusitata da un francese su ebay, (non ricordo il modello).

aggiornamento:
in questi giorni mi sono deciso ad implementare la cnc di un sistema di azzeramento dell'utensile, ho quindi acquistato un sensore ad induzione ed ho provveduto a collegarlo al pin 15 della Breack-out board, avvicinando quindi il sensore ad un corpo metallico si accende la relativa spia del digitize di mach3.

Problema1:
all'accensione mach3 segna xyz a zero, ma appena premo su star mette dei valori casuali, e se faccio ref all home la macchina parte alla ricerca dei finecorsa quando li tocca si ferma, correttamente ma i vari DRO non vengono azzerati automaticamente e devo farlo manualmente.
e' normale?

Problema2:
ho quindi provveduto a copiare vari script trovati in rete per il rilevamento dell ATZ, la macchina parte e va in ricerca dello zero, ma pur vedendo la psia del digitize accendersi, mach3 non rileva l'avvenuto contatto e prosegue nella ricerca.
pensando che il sensore fosse difettoso o provato a utilizzare un microswitch meccanico, ma ho ottenuto lo stesso effetto, spia accesa e mach3 che continua la ricerca.

uno degli scritp che ho usato e' questo

CurrentFeed = GetOemDRO(818) 'Memorizzazione feedrate corrente
DoSpinStop() 'Fermo in ogni caso per sicurezza il motore M5
ZMove = 2.0 'Misura di Ricerca del probe
ZOffset = 30 'Altezza del probe
ZSal = ZOffset + 5 'Altezza di risalita dopo l'azzeramento utenise
StopZmove = 0 'Blocco programma con Zmove oltrepassata


If GetOemLed (825)=0 Then 'Controllo se il probe è OK o difettoso
DoOEMButton (1010) 'Azzero asse Z Cosi che la sonda comincerà a muoversi da qui
Code "G4 P2.5" 'Tempo di posizionamento del probe sotto la Z
Code "G31 Z-"& ZMove & "F25" 'Comando discesa Z , Distanza Ricerca probe e feedrate
While IsMoving() 'Attesa del segnale d'ingresso digitalize
Wend
Probepos = GetVar(2002) 'Rilevo il punto esatto di contatto al probe
If Probepos = - ZMove Then 'Se distanza Zmove = Probepos Azzeramento non possibile
responce = MsgBox ("**ERRORE** Utensile non Inserito o Probe non posizionato" , 4 , "Probe **ERRORE**" )
Code "G0 Z10" 'Alzo la Z di (x)mm in rapido
StopZmove = 1 'Mando StopMove a 1 per bloccare la sub successiva
Code "F" &CurrentFeed 'Ritorno al feedrate Originale
End If
If StopZmove = 0 Then 'Con Stepmove a 0 continuo ciclo
Code "G0 Z" & Probepos 'ritorno al punto di touch, eliminando eventuli errori
While IsMoving ()
Wend
Call SetDro (2, ZOffset) 'Azzeramento Z con somma altezza probe
Code "G4 P1" 'Attesa Aggiornamento Dro.
Code "G0 Z" & ZSal 'Quota Z di ritorno (x)mm dopo dall'azzeramento
Code "(Asse Z Azzerata)" 'Messaggio visualizzato con azzeramento a buon fine
Code "F" &CurrentFeed 'Ritorno al feedrate Originale
End If
Else
Code "(Segnale Probe a terra, Controlla connesioni e riprova)" 'Messaggio visualizzato con azzeramento fallito
End If
Exit Sub

qualcuno ha qualche idea di come risolvere? grazie infinite

gattodistrada 18 marzo 16 19:22

oggi dopo un bel po di prove sono riuscito a far muover ela Z in ricerca del digitize solo alla prima accensione.. diversamente quando premo ATZ la z scende veloce, fino alla massima escursione indicata nel programma e poi risale aggiungendo lo spessore del sensore...
sembra che il problema grosso sia la difficolta nell'eseguire il codice G31 che chedo avvia la in ricerca del probe...

nella fattispecie non eseguiva la linea contenente " Code "G31 Z-"& ZMove & "F25" "

ma ho dovuto separare i comandi su piu righe
qualche anima pia ?

posto il listato adottato...

CurrentFeed = GetOemDRO(818) 'Memorizzazione feedrate corrente
DoSpinStop() 'Fermo in ogni caso per sicurezza il motore M5
ZMove = 2.0 'Misura di Ricerca del probe
ZOffset = 30 'Altezza del probe
ZSal = ZOffset + 5 'Altezza di risalita dopo l'azzeramento utenise
StopZmove = 0 'Blocco programma con Zmove oltrepassata


If GetOemLed (825)=0 Then 'Controllo se il probe è OK o difettoso
DoOEMButton (1010) 'Azzero asse Z Cosi che la sonda comincerà a muoversi da qui
Code "G4 P2.5" 'Tempo di posizionamento del probe sotto la Z
rem Code "G31 Z-"& ZMove & "F25" 'Comando discesa Z , Distanza Ricerca probe e feedrate

Code "G31"

Code " Z -"& ZMove & "F25"

rem Code "G31 Z-"& ZMove & "F25"


While IsMoving() 'Attesa del segnale d'ingresso digitalize
Wend
Probepos = GetVar(2002) 'Rilevo il punto esatto di contatto al probe
If Probepos = - ZMove Then 'Se distanza Zmove = Probepos Azzeramento non possibile
responce = MsgBox ("**ERRORE** Utensile non Inserito o Probe non posizionato" , 4 , "Probe **ERRORE**" )
Code "G0 Z10" 'Alzo la Z di (x)mm in rapido
StopZmove = 1 'Mando StopMove a 1 per bloccare la sub successiva
Code "F" &CurrentFeed 'Ritorno al feedrate Originale
End If
If StopZmove = 0 Then 'Con Stepmove a 0 continuo ciclo
Code "G0 Z" & Probepos 'ritorno al punto di touch, eliminando eventuli errori
While IsMoving ()
Wend
Call SetDro (2, ZOffset) 'Azzeramento Z con somma altezza probe
Code "G4 P1" 'Attesa Aggiornamento Dro.
Code "G0 Z" & ZSal 'Quota Z di ritorno (x)mm dopo dall'azzeramento
Code "(Asse Z Azzerata)" 'Messaggio visualizzato con azzeramento a buon fine
Code "F" &CurrentFeed 'Ritorno al feedrate Originale
End If
Else
Code "(Segnale Probe a terra, Controlla connesioni e riprova)" 'Messaggio visualizzato con azzeramento fallito
End If
Exit Sub

gattodistrada 19 marzo 16 12:47

nessun suggerimento ? :D

carcan 20 marzo 16 18:08

Appena riesco copio ed incollo il mio script che ha funzionato al primo colpo.

carcan 22 marzo 16 09:06

Io lo uso con un blocchetto alto 20mm quindi la riga "SetOEMDRO(ZaxisDRO, 20)" è da modificare con il valore di altezza del proprio blocchetto/interuttore


Sub Main()

Dim ConfirmReady As String
Dim DoXY As String
Dim DoZ As String
Dim XaxisDRO As Integer
Dim YaxisDRO As Integer
Dim ZaxisDRO As Integer
Dim ToolDia As Double


' Define some constants for MachMsg dialog types
MachMsgTypeOK = 0
MachMsgTypeOKCancel = 1
MachMsgTypeAbortRetryIgnore = 2
MachMsgTypeYesNoCancel = 3
MachMsgTypeYesNo = 4
MachMsgTypeRetryCancel = 5
MachMsgTypeCancelTryAgainContinue = 6

' Define some constants for MachMsg return codes
MachMsgReturnOK = 1
MachMsgReturnCancel = 2
MachMsgReturnAbort = 3
MachMsgReturnRetry = 4
MachMsgReturnIgnore = 5
MachMsgReturnYes = 6
MachMsgReturnNo = 7
MachMsgReturnTryAgain = 10
MachMsgReturnContinue = 11

' notice the SetDRO() command use single digit value for xyzabc
' uncomment for the correct version
'XaxisDRO=0
'YaxisDRO=1
'ZaxisDRO=2

' notice the SetOEMDRO() command uses three digit values for xyzabc
' uncomment for the correct version
XaxisDRO=800
YaxisDRO=801
ZaxisDRO=802

'ConfirmReady = MachMsg("Confirm Touch plate leads are connected and ready.","",4)
'ConfirmReady = MachMsgReturnYes Then GoTo 1 Else GoTo 5

1:
DoXY = MachMsg("Zero X and Y also?","",4)
If DoXY = MachMsgReturnYes Then GoTo 2 Else GoTo 3

2:
ToolDia = Question("What is the tool diameter?")
Message( "Auto Zeroing X..." )
'SetDRO(XaxisDRO, 0.0000)
SetOEMDRO(XaxisDRO, 0.0000)
Sleep 100
If IsSuchSignal (DIGITIZE) Then
code "G31 X-10 F10"
While IsMoving()
Sleep 100
Wend
'SetDRO(XaxisDRO, ToolDia/2)
SetOEMDRO(XaxisDRO, ToolDia/2)
Sleep 100
'code "G1 X.5"
code "G1 X" & ToolDia / 2 + 5 & " F500"
While IsMoving()
Sleep 100
Wend
End If

Message( "Auto Zeroing Y..." )
'SetDRO(YaxisDRO, 0.0000)
SetOEMDRO(YaxisDRO, 0.0000)
Sleep 100
If IsSuchSignal (DIGITIZE) Then
code "G31 Y-10 F10"
While IsMoving()
Sleep 100
Wend
'SetDRO(YaxisDRO, ToolDia/2)
SetOEMDRO(YaxisDRO, ToolDia/2)
Sleep 100
'code "G1 Y.5"
code "G1 Y" & ToolDia / 2 + 5 & " F500"
While IsMoving()
Sleep 100
Wend
End If

code "G1 X20 Y20 F500"

3:
DoZ = MachMsg("Position the touch plate to zero Z. y to continue or n to skip.","",4)
If DoZ = MachMsgReturnYes Then GoTo 4 Else GoTo 6

4:
Message( "Auto Zeroing Z..." )
'SetDRO(ZaxisDRO, 0.0000)
SetOEMDRO(ZaxisDRO, 0.0000)
Sleep 100
If IsSuchSignal (DIGITIZE) Then
code "G31 Z-30 F10"
While IsMoving()
Sleep 100
Wend
'SetDRO(ZaxisDRO, .180)
'SetOEMDRO(ZaxisDRO, .180)
SetOEMDRO(ZaxisDRO, 20)
Sleep 100
code "G1 Z25 F500"
While IsMoving()
Sleep 100
Wend
End If
GoTo 6

5:
Message ("Tool zeroing aborted. Try again when ready.")
GoTo 7

6:
Message "Tool zeroing complete. Check the results on the DROs."

7:
End Sub

gattodistrada 22 marzo 16 11:08

grazie stasera o domani faro una prova, il principale problema e che sembra non digerire il G31 presente in tutti i listati... o non parte in ricerca o se parte non si ferma anche se il digitize si accende..

carcan 22 marzo 16 11:37

Molto strano, io ho configurato il contatto sul pin "probe" ed ha funzionato subito. Stessa versione di mach3 (ultima) e con licenza regolare come te. di differente c'è che uso una breakboard sulla parallela direttamente

gattodistrada 22 marzo 16 11:43

appunto, appena riesco faro dell eprove con un altro pc via parallela, e non via usb, lo strano e che il digitize si accende, quindi mach lo vede di sicuro..

ma ancor più strano e che il G0 viene eseguito mentre il G31 no, o se viene eseguito poi non rileva il digitize.. :(


Tutti gli orari sono GMT +2. Adesso sono le 23:23.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002