Exemple CNC 16 : fonction de sondage (distance restante nette) (G31)
Consultez les CNC16_G31.project exemple de projet dans le répertoire d'installation de CODESYS sous ..\CODESYS SoftMotion\Examples.
L'exemple de projet montre comment utiliser la fonction de sondage (distance restante nette).
Dans l'exemple, la machine se déplace dans la direction X jusqu'à ce qu'une barrière lumineuse soit atteinte à X=50. Dès que la barrière lumineuse est atteinte, la machine doit s'arrêter. Le code G restant doit être traité à partir de cette position
Structure de la demande
La structure est typique des applications CNC. Le code G est lu dans la tâche d'arrière-planPathTask). Le prétraitement des chemins est également effectué dans le cadre de cette tâche. L'interpolation est effectuée dans la tâche du busMainTask).
Le code G suivant est utilisé. En bloc N10, un positionnement rapide est effectué pour X = 20. Ensuite, avec G31 (fonction de sondage : dégagement du chemin restant), un mouvement est effectué X = 100. Enfin, en bloc N30, un mouvement linéaire est effectué pour X = 20, Y = 50.
N10 G0 X20 F100 E1000 E-1000 N20 G31 X100 N30 G1 X20 Y50
L'interaction entre l'interpolateur et l'interpréteur est particulièrement importante pour la fonction de sondage (chemin restant clair).
L'interpréteur décode le code G et génère une ligne droite à partir de
X=20àX=100pour blocN20. Ensuite, le décodage s'arrêteL'interpolateur effectue le mouvement linéaire et émet simultanément le numéro de sonde en sortie
udiActProbe. Pour le G31, le numéro d'échantillon est toujours 1Dans l'application, l'interpolateur est arrêté avec
bQuick_Stopdès que le lecteur dépasse sa positionX=50. (Cela simule la barrière lumineuse.
Dans le cadre de la tâche relative au bus,
SMC_SetInterpreterStartPositionle bloc fonctionnel est utilisé pour copier en continu la position actuelle de la machine.
Dans le
PathTask, la position de départ est affectée à l'entréeSMC_NCInterpreter.piStartPosition:inter( sentences:= read.sentences, bExecute:= read.bExecute, nSizeOutQueue:= SIZEOF(bufIpo), pbyBufferOutQueue:= ADR(bufIpo), piStartPosition:= Main.setStart.StartPos);
Dès que l'interpolateur est arrêté,
bAcknProbel'entrée est utilisée pour accuser réception de la commande G31. Dans une application réelle, il convient également de vérifier à ce stade que les axes ont bien atteint la position d'arrêt. SMC_En position un bloc fonctionnel peut être utilisé pour ce faire.
Cela amène l'interpréteur à reprendre le décodage, mais avec la position de départ mise à jour, de sorte que le bloc suivant
N30est démarré à partir de la positionX=55.5.
Le schéma suivant illustre ces étapes. Les chiffres entre parenthèses font référence aux étapes correspondantes du processus décrit ci-dessus.

Mise en service
Créez l'application et téléchargez-la sur une manette.
Ouvrez la trace et téléchargez-la sur le contrôleur.
Démarrez l'application et ouvrez la visualisation.