-30%
Le deal à ne pas rater :
LEGO Icons 10318 – Le Concorde à 139,99€
139.99 € 198.99 €
Voir le deal

Script pour faire les origine machine

3 participants

Aller en bas

Script pour faire les origine machine Empty Script pour faire les origine machine

Message  Littledodger Lun 22 Mai 2023 - 15:53

Bonjour à tous,

J'ai étudié le script qui est exécuté par le bouton "ref all home" de base présent sur mon écran principal de mach3 (écran de base) et ne le comprends pas...
Il est composé d'appel à la fonction DoButton (22, 23, 24 et 25) et à DoOEMButton (133, 134 et 135) mais je ne comprends pas (et j'aime bien comprendre :p) à quoi correspondent ces chiffres (j'ai lu par ci par là que ca correspondait aux axes X, Y, Z et A, mais pourquoi...?!)

Le script pour le palpeur n'est pas du tout le même, est-ce qu'il y a des fonctions qui ont été prévues pour les axes mais pas pour le palpeur, raison pour laquelle il faut faire un script entièrement (que je comprend Wink ) ?

La finalité du truc, c'est que je souhaiterais que chaque axe aille jusqu'au switch a vitesse normale, puis qu'elle recommence a vitesse très faible, pour être au plus près de la limite du contact et avoir tout le temps une bonne référence (parce que actuellement, j'ai des dérive entre deux référencement qui peuvent aller jusqu'à + d'un millimètre :/)

Merci Smile
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  gilles974 Lun 22 Mai 2023 - 19:09

salut

je vais essayer de te repondre si je me trompe david rectifira merci

DoOEMButton
Cette fonction permet à une macro d'exécuter n'importe quelle fonction de bouton à l'écran qui a un
code de bouton OEM attribué. En l'occurrence 133=X, 134=Y et 135=Z

pour le DoButton
Cette fonction héritée permet à une macro d'exécuter une fonction de bouton à l'écran qui a
un code de bouton attribué.
il conseille d'utilisez la fonction DoOEMButton au lieu de DoButton

pour ton referencement, (special) Very Happy une fois que tu à fait le 1er "ref all"
il faut deferencer tous les axes avec le code OEM 240 et refaire un référencement à vitesse reduite
cela implique de recoder la commande "ref All"

voila les grandes lignes, l'idée de 2 ref peux être sympa

++
gilles
gilles974
gilles974
acharné du forum
acharné du forum

Messages : 446
Points : 669
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Mar 23 Mai 2023 - 10:17

Bonjour et merci Smile

DoOEMButton
Cette fonction permet à une macro d'exécuter n'importe quelle fonction de bouton à l'écran qui a un
code de bouton OEM attribué. En l'occurrence 133=X, 134=Y et 135=Z
Je ne trouve pas de bouton avec ce code OEM dans la liste en vue globale :/ Est-ce que ces boutons peuvent ne pas apparaître ?
Idem pour 22, 23, 24 et 25. J'ai bien un "contrôle" qui porte le code OEM 23 mais il correspond à une LED avec la fonction Software limits...

Est-ce qu'il existe des G-Codes comme le G31 pour le palpeur ? Ca permettrait de faire un script complet, à moins que la commande "ref all" corresponde à un script éditable ?
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  gilles974 Mar 23 Mai 2023 - 11:02

slt

le code OEM 240 est sur la page MDI à gauche sur le bouton "De-Ref All Axes"

telecharge la doc des codes
macro prog reference

DoOEMButton(1024) = ref Z
DoOEMButton(1023) = ref Y
DoOEMButton(1022) = ref X

apres une petite reche, il faut utilise la fonction "setParam" et "XRefPer"
et je pense qu'il n'y a pas besoin d'utiliser le code OEM 240

une 1er approche à la volée
Code:

SetParam ("XRefPer", 40)
DoOEMButton (1022) 'home à 40%
While IsMoving()
Wend
Code "G53 X-2" 'déplacer l'interrupteur de 2mm
While IsMoving()
Wend
....

++
gilles974
gilles974
acharné du forum
acharné du forum

Messages : 446
Points : 669
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Ven 26 Mai 2023 - 19:41

Salut,

Pour identifier les codes OEM et Standard des objets, va dans MachScreen.

- Dans la fenêtre "Propriétés MachScreen", clique sur le bouton "Functions Code"

ça va t'ouvrir une autre fenêtre.

Script pour faire les origine machine Oem_st10

A partir de la, Sélectionne le type d'objet dans la liste (par exemple Visu), coche ou décoche OEM et Standard suivant le type de code que tu veux et clique sur refresh si besoin. Tu peux classer les colonnes en cliquant sur la tête de colonne.

- code OEM / standard, il faut utiliser les code OEM de préférence (avec les fonctions OEM bien sur), comme DoOEMButton() par exemple. DoButton() utilise les codes standard, c'est juste pour la compatibilité avec de (très) vielles version de Mach3 ; pour un script "neuf", il vaut mieux utiliser les code OEM avec les fonctions OEM.

Concernant le référencement, il y a 2 méthodes ; la première c'est de simuler un clic sur chaque bouton RefX, RefY, RefZ (ceux qui sont normalement sur la page 5 de MachScreen, soit "Diagnostics")

C'est le DoButton (22, 23, 24) de ton script. en code OEM, ce serait DoOEMButton(1022,1023,1024) .... il suffit de rajouter 1000 au code standard pour avoir le code OEM Wink

La deuxième méthode, c'est d'utiliser non pas une simu d'un appui sur le bouton, mais d'utiliser directement la fonction Basic RefCombination()


RefCombination

Sub RefCombination(Axes As Integer)

This function allows any combination of axes to be simultaneously referenced (homed).
Which axes will be referenced is determined by the Axes argument, which is a bitmapped
variable, with the bits mapped as defined below.

Arguments:
Axes is a bit-mapped value the defines which axes are to be referenced. The
value of Axes can be calculated by adding the values corresponding to the
individual axes to be referenced. The axis values are:

X = 1
Y = 2
Z = 4
A = 8
B = 16
C = 32

So, for example, to reference the X, Z and B axes, Axes = 1 + 4 + 16 = 21.

Return Value:
None

Example:
‘ Define some constants
RefX = 1
RefY = 2
RefZ = 4
RefZ = 8
RefB = 16
RefC = 32
‘ Reference Y, Z and C axes
RefCombination(RefY + RefZ + RefC)
See also:
VerifyAxis(), SingleVerify(), SingleVerifyReport()

par contre, attention, si tu met plusieurs RefCombination() à la suite, Mach3 va lancer le premier, mais il n'attendra pas que la machine ai fini de bouger pour lancer le suivant, et ça sèmera une belle pagaille Wink

Il faut donc impérativement ajouter un bout de code qui attendra que la machine ai fini de bouger avant de lancer le RefCombination() suivant.

Ça se fait avec une boucle While/Wend qui utilise la fonction IsMoving() pour savoir si les axes sont toujours en mouvement.

RefCombination(1) 'lancer référencement axe X

While IsMoving() 'boucle d'attente ; le sleep(100) n'est pas indispensable mais il évite que le CPU exécute la boucle à sa vitesse maxi (du CPU) pendant tout le trajet des axes (il limite à un test toutes les 100 millisecondes)
sleep(100)
Wend

RefCombination(2) 'lancer référencement axe Y

While IsMoving()
sleep(100)
Wend

RefCombination(4) 'lancer référencement axe Z

While IsMoving()
sleep(100)
Wend

On pourrait lancer le référencement simultané de XYZ en combinant 1+2+4, soit un RefCombination(7) ... mais pour que ça fonctionne il est indispansable que chaque contact de référencement utilise une entrée différente de la carte. Si les contacts sont en série ou en // sur une seule entrée, il faut référencer axe par axe.

DoOEMButton (133, 134 et 135) mais je ne comprends pas

Les boutons OEM 133,134 et 135, c'est la Ràz des encodeurs, sans intérêt à moins que tu n'ai des règles optiques qui renvoient une info à Mach3

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Ven 26 Mai 2023 - 23:23

Merci pour toutes ces précisions, j'ai tout pigé Smile

Juste une question supplémentaire :
Est-ce qu'il est possible de modifier la vitesse de déplacement avec la fonction RefCombination() ?
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Sam 27 Mai 2023 - 0:03

non, pas à ma connaissance. (et je n'ai pas trouvé de solution pour accéder aux valeurs de vitesses données dans le panneau "soft limits", à part pour les limites elles-mêmes.

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  gilles974 Sam 27 Mai 2023 - 6:57

bonjour David


On pourrait lancer le référencement simultané de XYZ en combinant 1+2+4, soit un RefCombination(7) ... mais pour que ça fonctionne il est indispansable que chaque contact de référencement utilise une entrée différente de la carte. Si les contacts sont en série ou en // sur une seule entrée, il faut référencer axe par axe.

moi qui cherche depuis un paquet de temps pourquoi RefCombination(7) ne marche pas
merci pour l'info

++
gilles
gilles974
gilles974
acharné du forum
acharné du forum

Messages : 446
Points : 669
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Mar 30 Mai 2023 - 8:58

David a écrit:non, pas à ma connaissance.

Arf..., du coup, il n'y a pas la possibilité de faire un double référencement (le second plus lent que le premier) ?
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Mar 30 Mai 2023 - 19:03

Un double référencement oui, mais pas à des vitesses différentes. (en tout cas, si c'est possible, je ne sais pas comment faire)

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Mar 30 Mai 2023 - 21:22

Re...

Je retire ce que j'ai dit ; la V de référencement est accessible via la fonction SetParam() ; elle permet de changer la valeur "Speed %"

SetParam

Sub SetParam(ParamName As String, ParamVal As Double)

This function allows a number of Mach3 internal parameters (not to be confused with Gcode
parameters) to be set. Each Mach3 parameter is identified by name. The parameter
whose name is given by ParamName is set to the value given by ParamVal

ex:

SetParam ("ZRefPer", 20) mettra à 20% la vitesse de référencement du Z.

Pour X et Y, bien sur c'est "XRefPer" et "YRefPer".

voir la fonction SetParam de la doc "Macro_prog_ref" pour la liste des autres paramètres accessibles.

bien sur, il y a aussi une fonction GetParam() pour lire le paramètre au lieu de le modifier Wink

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Mer 31 Mai 2023 - 16:07

Ah bonne nouvelle ça !

Du coup, j'ai fait un test avec quelques lignes mais rien ne bouge... ca set juste l'axe X à -2.55 :/

Voilà le code que j'ai fait :
Code:

'Appel de la fonction de référencement des axes à vitesse max
If GetParam ("XRefPer") < 50 Then
   SetParam   ("XRefPer", 100)
End If
If GetParam ("YRefPer") < 50 Then
   SetParam ("YRefPer", 100)
End If
If GetParam ("ZRefPer") < 50 Then
   SetParam ("ZRefPer", 100)
End If

RefCombination(1)

message ("ref ok")

'Boucle d'attente de 100ms durant le mouvement de la machine
While IsMoving()
   Sleep 100
Wend

message ("Fin")

A chaque fois que j'exécute le script je n'ai pas le même message ! un coup sur deux, j'ai l'un ou l'autre.
Et si c'est "ref OK" que je reçoit, je suis obligé de faire un reset pour pouvoir faire autre chose, sinon, tout est bloqué, je pense donc que le script reste bloqué dans le while alors que aucune axe n'est en déplacement...

Quelqu'un aurait une idée ? Very Happy
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Mer 31 Mai 2023 - 16:53

Je viens d'essayer avec le même script mais avec  2 refcombination à la suite, pour X et Y avec une boucle d'attente après chacun.

Ça fonctionne normalement pour ce qui est du mouvement des axes et de la boucle d'attente, par contre les messages sont effectivement à l'ouest et ne semblent pas tenir compte du While IsMoving()

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Mer 31 Mai 2023 - 17:00

Bizarre que ça ne fonctionne pas pour moi, aucun axe ne bouge :/
Est-ce qu'il pourrait y avoir une configuration qui ne correspondrait pas au niveau du contrôleur ?
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Mer 31 Mai 2023 - 17:07

de ce que j'ai vu en faisant des essais (avec émulation par une touche pour les contacts de ref), ça ne fonctionne que si tes contact Xhome, Yhome, etc sont activés dans le ports&pins, sinon il ne se passe rien.

edit:

Est-ce qu'il pourrait y avoir une configuration qui ne correspondrait pas au niveau du contrôleur ?

C'est quoi comme carte d'axe ?

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Jeu 1 Juin 2023 - 15:53

Bonjour,

Je ne vais pas avoir la référence de la carte en tête, mais c'est un contrôleur raccordé en RJ45.
J'ai réussi à faire bouger les axes (le problème venait bien de la config de ports&pins...). En fait, étant donné que la fraiseuse est en réseau, je n'ai pas utilisé le PC de la fraiseuse pour faire le script (et je n'avais pas la bonne configuration Sad ).

Bon du coup, j'ai fait un code qui me parait cohérent, par contre, la fraiseuse fait un peu n'importe quoi ! Je m'explique :
Elle fera toujours les 3 axes dans le bon ordre et le bon nombre de fois, par contre, au niveau des vitesses, c'est complètement aléatoire... Parfois elle fera les bonnes vitesses (80% pour les 3 axes la première fois, puis 10%), parfois, elle fera l'axe Z à 10% puis X et Y à 80% les deux fois fois, parfois tous les axes à 10% les deux fois...
Je ne comprend pas trop pourquoi elle se comporte comme ca !
J'ai l'impression que à partir du moment où elle me renvoie un "HomeSwitch Triggered." dans les messages, elle fera n'importe quoi ensuite...

(d'ailleurs, je ne sais pas si c'est normal m'ai j'ai toujours 3 fois chaque message dans l'historique...)

Je sèche !
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Jeu 1 Juin 2023 - 19:00

Salut,

Tu peux tenter de mettre un sleep(100) (ou plus) après le SetParam() pour laisser le temps à Mach3 d'actualiser les valeurs.

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Littledodger Ven 2 Juin 2023 - 9:22

Je me suis rendu compte hier soir avant de m'endormir que je n'avais pas mit le code dans le message !
Code:
'Assignation des valeurs de référencement des axes dans des variables
RefX = 1
RefY = 2
RefZ = 4

Speed1 = 10
Speed2 = 80

'Appel de la fonction de référencement des axes simultanément en aditionnant le code de chaque axe et à vitesse max
If (GetParam("XRefPer") < 50) Then
   SetParam   ("XRefPer", Speed2)
End If
If (GetParam("YRefPer") < 50) Then
   SetParam ("YRefPer", Speed2)
End If
If (GetParam("ZRefPer") < 50) Then
   SetParam ("ZRefPer", Speed2)
End If

Sleep(200)

'Référencement de l'axe Z en premier
RefCombination(RefZ)
While IsMoving()
   Sleep(100)
Wend

'Référencement de l'axe X
RefCombination(RefX)
While IsMoving()
   Sleep(100)
Wend

'Référencement de l'axe Y
RefCombination(RefY)
While IsMoving()
   Sleep(100)
Wend

'Passage de la vitesse à Speed1 (%) pour un nouveau référencement axe par axe
SetParam("ZRefPer", Speed1)
Sleep(200)
RefCombination(RefZ)
While IsMoving()
   Sleep(100)
Wend

SetParam("XRefPer", Speed1)
Sleep(200)
RefCombination(RefX)
While IsMoving()
   Sleep(100)
Wend

SetParam("YRefPer", Speed1)
Sleep(200)
RefCombination(RefY)
While IsMoving()
   Sleep(100)
Wend

'On repasse la vitesse de référencement à Speed2 (%)
SetParam("XRefPer", Speed2)
SetParam("YRefPer", Speed2)
SetParam("ZRefPer", Speed2)

J'ai ajouté des temps de pause dans tout le code, ça semble mieux mais j'ai parfois au moins l'axe Z qui fait le premier référencement à 10%...
Ce qui est bizarre, c'est que j'ai ajouté un msgbox juste avant la commande RefCombination de l'axe Z pour m'afficher le getparam de la vitesse de ce même axe, il me retourne 80 mais fait quand même le déplacement à 10%... Script pour faire les origine machine 1f615
Je pense que ça va tourner comme ça...

Merci en tout cas !
Littledodger
Littledodger
petit nouveau
petit nouveau

Messages : 8
Points : 10
Date d'inscription : 22/05/2023
Age : 35
Localisation : Nantes

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  dh42 Ven 2 Juin 2023 - 17:58

tu as tenté de remplacer les Refcombination() par des DoButtons() pour voir si c'est mieux ?

tu peux aussi référencer via une commande GCode ; sur Mach3 c'est le G28.1

par exemple, un G28.1 X0 référencera l'axe x.

pour utiliser un GCode depuis un script Basic, il faut utiliser l'instruction Code""

par exemple:

Code "G28.1 X0"

Attention, le résultat peut varier en fonction de la carte d'axe, car au final c'est elle qui gère le référencement ; de ce que j'ai vu sur CNc Zone, le G28.1 ne fonctionne pas très bien sur les XHC par exemple.

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25654
Points : 38363
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

Script pour faire les origine machine Empty Re: Script pour faire les origine machine

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum