Gambas France BETA


Pas de compte ? Incription

Arrêt d'urgence (samedi, 8 août 2009, 11:46) par PIERRE

1
AuteurMessages
Admin#1 Posté le 27/12/2009 à 21:59:00
Bonjour à tous,

J'ai une petite question pratique concernant mon projet de pilotage du port //.

Je suis en cours de réalisation d'un programme qui va me permettre de faire des déplacements par exemple d'une table X, Y et Z d'une fraiseuse.

Vu qu'il s'agit d'une machine-outils avec des pièces en mouvement, je dois prévoir un système d'arrêt d'urgence.

J'ai déjà des machines qui possèdent des cartes et logiciels du commerce. Sur ce type de matériel, il existe un bouton poussoir d'arrêt d'urgence ainsi qu'un bouton logiciel.
Ces boutons stop l'exécution du programme. Mais il ne se ferme pas.

Dans ma programmation, j'ai comme vous m'avez expliqué sur ce forum des boutons qui lancent une fonction. Une variable est activée. Suivant sa valeur ma boucle peut être interrompue.
Maintenant, j'ai aussi des boucles qui qui sont lancées par un bouton mais qui s'arrête au moyen d'un while et d'une variable inc.

Justement, c'est pour arrêter ce type de boucle que j'ai un soucis

Avec le bouton logiciel d'arrêt d'urgence,J'ai fait un message d'alerte qui stop le temps de son apparition toutes les fonctions. Lorsque je valide le bouton toutes les fonctions en cours reprennent.

J'ai essayé avec STOP ou QUIT mais cette dernière ferme la fenêtre.

Avez-vous une solution ?

Je pense à une boucle lancée au début de l'exécution et dans cette boucle je placerais d'autre boucle.
Si j'interromps la boucle début, mes autres boucles s'arrêteraient aussi.

Qu'en pensez-vous ?

Merci d'avance

Pierre
Admin#2 Posté le 27/12/2009 à 21:59:00
Il te suffit de lire l'état de la pin de ton port // et si elle change d'etat alors tu sors de ta boucle.
Tu raisonnes pas la négative à savoir :
je teste en permanence l'état de ma pin, et si elle n'est pas à 1 allors j'execute mon programme sinon j'arrete le prog ce qui donne le schéma de prog suivant :

if pin(Arret Urgence) est different de 1 then
utilise mon programme
else
Arrete boucle
END
Admin#3 Posté le 27/12/2009 à 22:00:00
Donc je fais une boucle (arrêt urgence)et dans cette boucle je peux lancer une seconde, voire une troisième boucle (avance lente ou avance rapide)

J'essaie ce soir
;)
Admin#4 Posté le 27/12/2009 à 22:00:00
Disons que je pensais plus à une fonction qui boucle sur elle même et qui contient des tests.
en fonctions des divers tests, elle se "branche" à d'autre fonction comme avancelente(), AU() ou autre...
Admin#5 Posté le 27/12/2009 à 22:00:00
Oui, je crois que c'est ça que je dois faire. Je le fais ce soir .
Admin#6 Posté le 27/12/2009 à 22:01:00
Bonjour à tous,

Voilà suivant vos conseils, j'y suis arrivé en mélangeant les boucles et les conditions.

Je vous fais parvenir mes sources.

Pour les sources du programme complet, je vais y ajouter la fonction arrêt urgence.

A Bientôt et encore merci pour votre aide


Pierre
;)
1