Comment éditer un script dans Mach3?

  • Auteur de la discussion DakotaSport07
  • Date de début
DakotaSport07
DakotaSport07
Apprenti
Bonjour a tous!

Étant toujours novice dans le domaine, j'aurais besoin d'aide pour créer une fonction supplémentaire dans Mach3.
Alors voici ce que je cherche a faire.

En résumer; Je vient de m'acheter une nouvelle sonde (palper), avec l'option de nettoyage de sa surface par jet d'air, et je désir utiliser cette fonction.
En cherchant comment dois je faire pour mettre en œuvre cette fonction, je suis venue a cette conclusion;

Exemple: Si je demande a Mach3 un palpage d'outil, je croie qu'il serais bien que Mach3 envoi (avant tout déplacement des axes), une information a ma carte de contrôle, qui a sont tour activerais un relais électronique a retardement réglable, qui a sont tour, activerais un électrovanne (solénoïde valve), pour permettre a l'air pressurisé de soufflé la surface du palper.

Mais pour en arriver la, (et si je suis dans la bonne voie) je croie qu'il faut éditer le fichier VBScript de la sonde. Et bien entendu je ne sait pas comment faire.

Note: après une courte recherche dans la documentation de ma carte de contrôle, j'ai pu identifier très facilement le fichier en question. Reste le plus difficile, créer une nouvelle ligne de commande pour permettre cette nouvelle action.

Si il y a quel qu'un ici qui peut m'aider, sa serait vraiment merveilleux.

Merci d'avance. :wink:

Capture d’écran 2021-04-22 163922.png
 
dh42
dh42
Compagnon
Salut,

Dans un 1ier temps, il te faut paramétrer une sortie que tu utilisera pour activer ton relais dans Ports&pins/outpus signals

Supposons que tu utilise la sortie 4, tu active Output#4 (enabled), avec un n° de port et de pin que tu veux activer sur ta carte, par exemple port 1, pin 14 (c'est juste un exemple, je ne connais pas ta carte)

Ensuite, du point de vue programmation, tu peux activer cette sortie 4 par le code:

ActivateSignal(OUTPUT4)

et pour désactiver la sortie 4

DeactivateSignal(OUTPUT4)

Tu peux mettre la ligne d’activation en tête du texte de la macro, et la désactivation en dernière ligne.

Si ta sortie 4 est déjà utilisée pour autre chose, choisis en une autre et modifie la commande en conséquance.

++
David
 
DakotaSport07
DakotaSport07
Apprenti
Bonjour David!
Tes vraiment hot toi alors, je t'aime :smt055

J'exécute ....................

et sa fonctionne no1. Tes le meilleurs des meilleurs.

Je sait pas ce que je ferais sans toi! Merci milles fois David! A+ :wink:
 
DakotaSport07
DakotaSport07
Apprenti
Salut David!

bon... sa fonctionne très bien, mais seulement sur la page de la macro. sa ne fonctionne pas si je clique sur le bouton palper dans Mach3 :confused:
a tu une idée du pourquoi?
 
dh42
dh42
Compagnon
Salut David!

bon... sa fonctionne très bien, mais seulement sur la page de la macro. sa ne fonctionne pas si je clique sur le bouton palper dans Mach3 :confused:
a tu une idée du pourquoi?

Et tu sûr que le bouton palper fait appel à la même macro ? car je vois que ta macro c'est M930.m1s, je ne connais pas, mais je suppose qu'elle est fournie avec une télécommande ?

Le bouton palper dans mach3 doit utiliser sa propre macro ; tu peux l'éditer comme suit:

menu operator/edit button script
les boutons VB vont clignoter, dont celui du palpeur, clique dessus pour entrer en mode edition. La suite de la modif, c'est comme pour ton fichier M930, ensuite tu ferme la fenêtre d'édition et tu répond OK quand il te demande "Save change to Hidden script.m1s" ; le script fait ainsi parti du screenset lui-même et non pas d'une macro séparée. (tu a donc 2 macros de palpage distinctes)

++
David
 
DakotaSport07
DakotaSport07
Apprenti
Et tu sûr que le bouton palper fait appel à la même macro ?
salut!

Je vient de trouver. J'ai fais fonctionné mes neurones hihihihihi. ses comme tu le dit ici, le bouton palper ne savait pas.

Merci encore David pour ton aide. Tes super cool :)
 
DakotaSport07
DakotaSport07
Apprenti
J'ai utilisé la sortie no.5. A vrai dire ils y en a 8 sortie en tout.
la no.1 est pour ma broche en CW,
la no.2 en CCW,
la no.3 est pour activé mon relais de pompe de liquide de refroidissement,
et la no.4 est préprogrammé pour une aspiration ou un brumisateur en utilisant M7.
Alors j'ai préférer prendre la sortie no.5.

J'ai beaucoup de nouvelle composante. J'ai seulement garder les moteur pas a pas et leur pilote.

J'ai opté pour les produits XHC. Carte 4 axes avec télécommande. Vraiment facile a mettre en marche.
Aucune comparaison avec les produit Novusun.

A oui, J'ai aussi remplacer CamBam par Fusion360. Je suis en apprentissage, mais ce logiciel est beaucoup plus puissant, on peu quasiment dire intelligent.

Il y a une version gratuite d'un an pour usage personnel.
et j'ai vue dans une vidéo quel serais renouvelable sans frais, si elle est toujours utiliser pour un usage personnel.
Mais je ne peut pas confirmé cette affirmation. je vais avoir la réponse d'ici un an.
 
Dernière édition:
DakotaSport07
DakotaSport07
Apprenti
Bonjour David!

Concernant ma macro 930, est-ce possible d'incorporer un temps de fonctionnement? Exemple: 3 a 4 seconde suffirais?
Le relais a temps réglable que j'ai acheter fonctionne pas dans le bon sens. :( et avant d'en racheter un autre je me demandais si y a moyen de faire cela.

Merci!
 
dh42
dh42
Compagnon
Salut,

Tu veux que ça souffle 3 à 4s puis que ça s'arrête avant que ça ne commence à bouger ?

Après le ActivateSignal() tu peux intercaler une pause.

C'est comme en Gcode, un G4Pxxx pour la durée ; le xxx est la durée en s ou ms (suivant le réglage dans la config générale - G04 Dwell in ms)

par exemple si tu est réglé en ms, un G4P5000 fera une pause de 5s

Pour que ce Gcode soit généré par la macro il suffit d'utiliser l'instruction Code, donc tu écris:

Code "G4P5000"

ensuite tu met le DeactivateSignal()

... et début des instructions de mouvement.

++
David
 
DakotaSport07
DakotaSport07
Apprenti
Bonjour David!

Bon... C'est presque que sa! :-D ''je m'explique''

J'ai écrit cette ligne de commande, et la macro exécute parfaitement cette commande.

Cependant, ses pas exactement ce que je voudrai, mais ses très proche.

Voici ce qui ce passe.

Je clique sur le bouton ''Palper'' , la macro active ma sortie no.5, qui elle, active mon relais, qui lui, mes en marche mon électrovanne, qui a son tour, autorise l'air comprimé de passer. Toute qu'une procédure hein? :smt043

(Au même moment, G4P3000 s'exécute, donnant ainsi une ''pause'' de 3seconde ''avant'' que le Z exécute un palpage).

Une fois le 3seconde ''de pause'' passer, le palpage ce mes en marche, complète la procédure, et ses seulement a la fin de la procédure que la macro désactive ma sortie, qui arrête l'air comprimé de passer.

Et en y réfléchissant bien, je croie que Tout est normal, Par ce que G4 ''ses pour une pause avant exécution'' du programme.
Moi j'aurais besoin ''d'un temp de marche'' avant exécution du programme.

J'ai regarder dans la liste des G-code et M-code, mais je trouve rien qui s'apparente a un ''temps de marche''.

J'ai tenter quelque code pour voir ce qui ce passe, mais sachant pas exactement quoi écrire, tout ce que j'obtiens, sont des erreurs de syntaxe.

J'ai aussi remarquer qu'il faut écrire en anglais dans les fichiers VB. J'ai fait le test en français pour la commande ''ActiverSortie5'' et sa fonctionne pas, hihihihi

Et voila! Je vais attendre pour la suite. S'il n'existe pas de fonction, je vais opté pour un nouveau relais a temporisation réglable. Cette fois-ci je vais acheter le bon. :whistle: A+ :wink: Et merci encore!
 
dh42
dh42
Compagnon
ton DeactivateSignal() ne dois pas être au bon endroit je pense.

tu devrais avoir

.....
Code "G90F200"
ActivateSignal(OUTPUT4) ' active la sortie
Code " G4P3000 " 'attend 3s
DeactivateSignal(OUTPUT4) 'désactive la sortie
Code "G31 Z" & ZNew 'palpage
....
....

++
David
 
DakotaSport07
DakotaSport07
Apprenti
Salut!
Ouais, ta raison pour le DeactivateSignal().
En fait, je vient de m'apercevoir que j'ai mélanger (dans mon explication) deux manières différente de ligne de code que j'ai essayer.

Première manière, voir photo option no1.
De cette manière, la macro ne donne aucun signal pour activer et désactiver ma sortie no.5 Mais la pause de 3sec. fonctionne.
Note: (La pause fonctionne! ''Mais pour l'axe Z,'' pas pour un temps de fonctionnement Signal de sortie)

Deuxième manière, voir photo option no.2
de cette manière, (la macro donne le signale pour activer et désactiver ma sortie no5. mais la pause est toujours pour l'axe Z, pas pour un temps de fonctionnement du signal.

Voir photo option no.3 pour la macro de ma télécommande.

J'ai remarquer que, si j'écrit la ligne de code ainsi,

ActivateSignal(OUTPUT5)
Code "G4 P3000" *** au début et *** (sur les deux première ligne)

DeactivateSignal(OUTPUT5) *** a la fin *** (a la dernière ligne)

La macro donne le signale pour activer et désactiver ma sortie no.5.

mais si j'écrit les trois ligne de code au début, et rien a la fin. la macro ne donne aucun signal pour activer et désactiver ma sortie.



En tout cas, regarde mes macro, tu vas fort probablement trouver mon erreur.

Capture d'écran option no1.PNG


Capture d'écran option no.2.PNG


Capture d'écran option no.3  (télécommande).PNG
 
DakotaSport07
DakotaSport07
Apprenti
j'ai oublier de dire que j'ai 3 macro en tout, pour la fonction ''palpage''

une pour le bouton (palper sur place),
une autre pour le bouton (palper l'outil)
et la troisième pour ma télécommande.

Mais sa change en rien l'exécution de la fonction. la macro exécute ce qu'on écrit dedans.

Dommage qu'on ne puisse pas mettre de vidéo ici, sa serais plus facile a comprendre que de l'expliquer.
Pas facile de bien expliquer ce que je veut dire.

Ce qui est sur, ses que la pause fonctionne pour l'axe Z. pas pour la sortir qui control mon relais.
c'es sa que je sait pas si je m'explique bien.

Si ta des questions tu te gêne pas la, demande moi, A+ et merci beaucoup beaucoup beaucoup :wink:
 
DakotaSport07
DakotaSport07
Apprenti
 
dh42
dh42
Compagnon
100Mo pour une vidéo de 1 minute :smt017 (pour moi, 30min de téléchargement environ LOL)

++
David
 
DakotaSport07
DakotaSport07
Apprenti
100Mo pour une vidéo de 1 minute
Tu veut dire???
100Mo ses beaucoup?
J'ai du la compresser un peu elle passait pas.
Je suis surpris de la qualité vidéo. j'avais peur qu'on ne voit plus les témoins LED.

Et puis? pense tu qui y une solution.

Mais casse toi pas trop la tête avec mon problème, A moins que t'aime les défies. Par ce que j'ai commander un nouveau relais ce matin, cette fois j'ai acheter off delay. mon premier est on delay.

Moi j'ai passer plusieurs heures a chercher comment on doit faire pour créer des ligne de code, mais malheureusement je comprend rien a tout sa. J'aurais besoin d'un cours de programmateur complet. :wink: A+ et si tu trouve, j'aimerais quand même savoir comment ta fait. stp, merci!
 
dh42
dh42
Compagnon
Remarque que j'ai pas pensé de regarder combien de temps sa la pris, mais sa pas été long, environ 2 a 3 min.

Lol, suis en ADSL 1024 (quand le vent souffle dans le bon sens) :-D

Pour tes macro, sur la 1ière image, le soufflage devrais s'activer puis s’arrêter au bout de 3s, et ensuite seulement toute l'opération de palpage devrait se faire sans soufflage.

sur les 2 suivants par contre, vu que le DeactivateSignal() est à la fin, ça devrait souffler pendant la totalité de l'opération de palpage.

Moi j'ai passer plusieurs heures a chercher comment on doit faire pour créer des ligne de code, mais malheureusement je comprend rien a tout sa. J'aurais besoin d'un cours de programmateur complet. :wink: A+ et si tu trouve, j'aimerais quand même savoir comment ta fait. stp, merci!

J'ai commencé un truc, ici, mais ça n'avance pas vite :wink: ça dépend un peu de l'inspiration du moment ..


++
David
 
dh42
dh42
Compagnon
Ps, on ne peut pas lancer le soufflage, puis tout de suite le palpage et faire ne sorte que le souflage s'arrête au bout de 3s alors que l'on est en train de palper ; les actions doivent se faire à la suite l'une de l'autre, pas simultanément, donc au mieux ce que l'on peut faire c'est.

- on démarre le soufflage
- on attend 3s
- on arrête le souflage
jusque l'axe Z n'a pas bougé
- on démarre l'action de palpage.

pour avoir une tempo indépendante qui puisse fonctionner pendant l'action de palpage mais se couper au bout de 3s même si le palpage n'est pas fini, le plus simple (et le plus fiable) c'est bien le relais temporisé.

++
David
 
dh42
dh42
Compagnon
a oui, j'ai oublié de dire. que la macro correspondante a cette vidéo, est la photo no.2

Je vais en faire une autre vidéo avec la macro de la photo no.1 pour te montrer comment sa ce passe, quand ses configurer ainsi.

de ce que je vois sur la vidéo, ça fonctionne exactement comme c'est cencé fonctionner de la manière dont c'est programmé en image 2, mais c'est sûr qu'avec le DeactivateSignal() à la fin, la pause Code "G4P3000" ne sert strictement à rien.
 
dh42
dh42
Compagnon
par contre attention, dans les 2 macros d'origine du sreenset FR, tu a une instruction qui n'est pas gérée par les carte USB/ETH Chinoises ; ça ne se voit pas vraiment en simulation, mais ça pose des problèmes en utilisation réelle.

il te faut remplacer les lignes ZPALP = GETVAR (2002) par ZPALP=GETOEMDRO(802)

pour la petite histoire, GetVar(2002) retourne la valeur de la variable interne 2002 qui est censée contenir la position Z au moment du contact avec le palpeur, sauf que les cartes Chinoises ne mettent pas cette valeur à jour, elle peut donc contenir n'importe quoi ... et comme cette valeur est utilisée pour calculer la hauteur de remontée après palpage, ça peut faire n'importe quoi, comme descendre se planter dans le palpeur ou remonter trop haut et taper en buté ...

Juste une question, tu a quelle version de Mach3 ? .. la dernière 3.043.066 est connue pour avoir pas mal de bugs avec les scripts ; quand je l'ai essayée il m'est arrivé que le script de palpage s'arrête en cours de route sans raison apparente, même chose pour le référencement qui référençait un axe puis ignorait les 2 autres, et même, certains de mes scripts ne fonctionnent pas du tout sur la .066

++
David
 
DakotaSport07
DakotaSport07
Apprenti
la pause Code "G4P3000" ne sert strictement à rien.
oui oui ce code sert a quel chose. il compte les secondes avant de faire démarrer le moteur de l'axe. Ici c'est l'axe Z.
J'ai fait beaucoup de test sur le temps en seconde avec ce code, et sa fonctionne sans problème,
sur la vidéo c'est la macro no.2 qui est en fonction, et on peu facilement compter les secondes avant que le moteur de l'axe z démarre. Ici ses 3 seconde,
si je change le temps a 10 seconde ''G4P10000'' ou ''G4P10'' (sa fonctionne aussi écrit de cette manière), bien le moteur vas démarrer seulement après le 10 seconde passer. je vais faire une vidéo avec 10seconde, et on vas voir que le moteur va démarrer après ce délais passer.
 
dh42
dh42
Compagnon
Oui, la pause fonctionne mais ne sert à rien ; ce que je veux dire, c'est que le but de la pause c'était de définir pendant combien de temps il faut attendre avant de couper le relais (donc de souffler pendant 3s), pas de faire attendre le palpage 3s .... si tu veux souffler pendant toute l'opération de palpage, il suffit d'un ActivateSignal() au début et d'un DeactivateSignal() à la fin du code, c'est la durée d’exécution de toute la procédure de palpage qui déterminera le temps de soufflage

j'ai l'impression qu'on ne se comprends pas :smt017
 
DakotaSport07
DakotaSport07
Apprenti
ce que je veux dire, c'est que le but de la pause c'était de définir pendant combien de temps il faut attendre avant de couper le relais (donc de souffler pendant 3s),
Oui je comprend, et c'est en plein ce que je voudrais, mais sa fonctionne pas.
 

Sujets similaires

Sobschack
Réponses
3
Affichages
191
Sobschack
Sobschack
B
Réponses
4
Affichages
271
Bambi
B
M
Réponses
3
Affichages
502
pascalp
P
Gabrielp
Réponses
74
Affichages
2 928
dh42
DakotaSport07
Réponses
111
Affichages
2 849
DakotaSport07
DakotaSport07
CNC_FONTAINE
Réponses
15
Affichages
1 077
CNC_FONTAINE
CNC_FONTAINE
Haut