Vous êtes sur la page 1sur 13

Programmation Paramétrée SINUMERIK

(paramètres locales)
Généralités :
En utilisant des variables à la place de valeurs fixes, vous pouvez flexibiliser un programme.

Vous pouvez ainsi le faire réagir à des signaux, à des valeurs de mesure par exemple, ou en
utilisant des variables comme valeurs de consigne, vous pouvez aussi exploiter un même
programme pour des géométries différentes.

1. Variables:
La commande distingue des variables de trois natures :

- Variable définie par l'utilisateur : Variables définies avec leur type et leur nom par
l'utilisateur, par exemple les paramètres de calcul.
- Paramètre de calcul : Variables de calcul particulières, prédéterminées, caractérisées
par l'adresse R suivie d'un numéro. Les variables de calcul prédéterminées sont du
type REAL.
- Variable système Variables mises à disposition par la commande, qui peuvent être
exploitées dans le programme (édition, lecture). Les variables système donnent accès
aux décalages d'origine, aux corrections d'outil, aux valeurs instantanées, aux relevés
métrologiques des axes, aux états de la commande, etc.

a) Types de variables
VARIABLES UTILISATEUR

type signification Plage de valeurs


INT Nombres entiers avec signe ±(231 - 1)
Nombres réels (nombres rationnels avec point
REAL ±(10-300 … 10+300)
décimal, LONG REAL selon norme IEEE)
BOOL Valeurs booléennes : TRUE (1) et FALSE (0) 1.0
CHAR Caractère ASCII, selon code 0 … 255
Chaîne de caractères, nombre de caractères en Suite de valeurs entre 0 et
STRING
[...], maximum 200 caractères 255
Tous les descripteurs d'axes
AXIS Nom d'axe exclusivement (adresse d'axe)
présents dans le canal
Indications géométriques pour translation,
FRAME
rotation, échelle, fonction miroir
VARIABLE DE CALCUL

En version standard, 100 variables de calcul du type REAL sont disponibles sous l'adresse R,
sans autre définition.

Le nombre exact des variables de calcul (maximum 32535) est déterminé par les paramètres
machine. Exemple : R10=5

Programmation structurée Page 1


VARIABLES SYSTEME

La commande met à disposition des variables système qui sont exploitables dans l'ensemble
des programmes en cours d'exécution.

Les variables système fournissent des états de la machine et de la commande. Certaines


d'entre-elles ne peuvent être écrites.

Pour bien les identifier, le nom des variables système commence toujours par le caractère "$".
Puis suivent les désignations spécifiques.

1er caractère Signification


$M Paramètres machine
$S Données de réglage
$T Paramètres de gestion des outils
$P Valeurs programmées
$A Valeurs courantes
$V
2ème caractère Signification
N Globale pour NCK
C Spécifique à un canal
A Spécifique à un axe
Exemple : $AA_IM

b) Utilisation d’une variable


Pour référencer la valeur d’une variable dans un programme, il faut spécifier un mot d’adresse
suivi du numéro de la variable. Lorsqu’une expression est utilisée pour spécifier une variable,
mettez l’expression entre crochets.

Exemple: G01X[#1+#2]F#3;

Pour inverser le signe d’une valeur de variable référencée, placez un signe moins (–) avant #.

Exemple: G00X–#1;

Les numéros de programme, les numéros de séquence et les numéros de saut de bloc
optionnels ne peuvent pas être référencés à l’aide des variables.

Exemple:

Les variables ne peuvent pas être utilisées comme indiqué ci-dessous :

O#1;

/#2G00X100.0;

N#3Y200.0;

c) Paramètres ou arguments locales :


Deux types de spécifications d’argument sont disponibles. La spécification I utilise des lettres
autres que G, L, O, N et P une fois chacune. La spécification d’argument II utilise A, B et C

Programmation structurée Page 2


une fois chacune et utilise également I, J et K jusqu’à dix fois. Le type de spécification
d’argument est automatiquement déterminé d’après les lettres utilisées.

Figure 1: spécification d'arguments I

• Les adresses G, L, N, et O ne peuvent pas être utilisées dans les arguments.


• Les adresses qu’il n’est pas nécessaire de spécifier peuvent être omises. Les variables
locales correspondantes aux adresses omises sont mises dans l’état nul.

La spécification d’argument II utilise A, B et C une fois chacune et utilise I, J et K jusqu’à dix


fois. La spécification d’argument II est utilisée pour passer des valeurs comme des
coordonnées tridimensionnelles comme argument.

Figure 2: spécification d'arguments II

• Les indices de I, J et K servant à indiquer l’ordre de l’argument n’existent pas dans le


programme réel.

La CNC identifie de façon interne la spécification d’argument I et la spécification d’argument


II. Si un mélange de spécification d’argument I et de spécification d’argument II est spécifié,
le type de spécification d’argument spécifié ultérieurement prévaut.

Programmation structurée Page 3


2. Opérations arithmétiques et logiques sur les variables :

Les blocs qui suivent sont appelés des instructions de macros :

• Blocs contenant une opération logique ou arithmétique (=),


• Blocs contenant une instruction de contrôle (telles que GOTO, DO, END),
• Blocs contenant des commandes d’appel de macros (telles que appels de macros
par G65, G66, G67, ou autres codes G, ou codes M). Les blocs autres que les
instructions de macros sont appelées des instructions CN.

Les opérations figurant dans le tableau suivant peuvent porter sur des variables. L’expression
à droite de l’opérateur peut contenir des constantes et/ou variables combinées par une fonction
ou l’opérateur. Les variables #j et #K dans une expression peuvent être remplacées par une
constante. Les variables de gauche peuvent également être remplacées par une expression.

Les unités des angles utilisés avec les fonctions SIN, COS, ASIN, ACOS, TAN et ATAN sont
les degrés. Par exemple, 90 degrés et 30 minutes sont représentés comme 90,5 degrés.

Programmation structurée Page 4


a) Arrondi au nombre entier supérieur ou inférieur :
Avec la CNC, lorsque la valeur absolue du nombre entier produit par une opération sur un
nombre est supérieure à la valeur absolue du nombre original, cette opération est appelée
arrondi au chiffre supérieur par rapport à un nombre entier. Inversement, lorsque la valeur
absolue d’un nombre entier obtenu par une opération sur un nombre est inférieure à la valeur
absolue du nombre original, cette opération est appelée arrondi au chiffre inférieur par rapport
à un nombre entier. Soyez particulièrement attentif lorsque vous manipulez les nombres
négatifs.

Exemple:

Supposez que #1=1.2 et #2=–1.2.

Lorsque #3=FUP[#1] est exécuté, 2.0 est attribué à #3.

Lorsque #3=FIX[#1] est exécuté, 1.0 est attribuéà #3.

Lorsque #3=FUP[#2] est exécuté, –2.0 est attribué à #3.

Lorsque #3=FIX[#2] est exécuté, –1.0 est attribué à #3.

Pour utiliser une fonction dans un programme, on peut employer les deux premiers caractères
de son nom pour la désigner.

Exemple:

ROUND →RO

FIX → FI

b) Priorité des opérations et Crochets d’emboîtement :

Les crochets sont utilisés pour changer l’ordre des opérations. Les crochets peuvent être
utilisés jusqu’à une profondeur de cinq niveaux y compris les crochets utilisés pour englober
une fonction. Si vous utilisez plus de cinq niveaux, une alarme est déclenchée.

Programmation structurée Page 5


Les crochets ([, ]) sont utilisés pour englober une expression. Remarquez que les parenthèses
sont utilisées pour les commentaires.

3. Instructions de contrôle :
Dans un programme, le débit de commande peut être modifié à l’aide de l’instruction GOTO
et de l’instruction IF. Trois types d’opération de branchement et de répétition sont utilisés :

a) Branchement inconditionnel (instruction GOTO) :


Un branchement sur le numéro de séquence n a lieu. Un numéro de séquence peut également
être spécifié à l’aide d’une expression.

GOTO n ; n: Numéro de séquence

Exemple:

GOTO1;

GOTO#10;

b) Branchement conditionnel (instruction IF) :


Spécifiez une expression conditionnelle après IF.

Une expression conditionnelle doit comprendre un opérateur entre deux variables entre un
variable et une constante et doit être entre crochets ([,]).

Une expression peut être utilisée à la place d’une variable.

Programmation structurée Page 6


Chaque opérateur comprend deux lettres et est utilisé pour comparer deux valeurs pour
déterminer si elles sont égales ou si une valeur est inférieure ou supérieure à l’autre valeur.
Remarquez que le signe “différent de” ne peut pas être utilisé.

IF[<expression conditionnelle>]GOTO n :
Si l’expression conditionnelle spécifiée est satisfaite, un branchement sur le numéro de
séquence n a lieu. Si la condition spécifiée n’est pas remplie, le bloc suivant est exécuté.

IF[<expression conditionnelle>]THEN :

Si l’expression conditionnelle est satisfaite, une instruction de macro prédéterminée s’exécute.


Une seule instruction de macro est exécutée.

IF [#1 EQ #2] THEN #3=0;

Si les valeurs de #1 et de #2 sont identiques, #3 prend la valeur 0.

L’exemple de programme ci-dessous trouve le total des nombres 1 à 10.

O9500;

#1=0;Valeur initiale de la variable qui garde la somme

#2=1;Valeur initiale de la variable à ajouter

Programmation structurée Page 7


N1 IF[#2 GT 10] GOTO 2; Branchement en N2 lorsque la somme est supérieure à 10

#1=#1+#2; Calcul pour trouver la somme

#2=#2+1; Valeur suivante à ajouter

GOTO 1; Branchement en N1

N2 M30;Fin de programme

Répétition (instruction While) :


Spécifiez une expression conditionnelle après WHILE. Pendant que la condition spécifiée est
remplie, le programme de DO à END est exécuté.

Si la condition n’est pas remplie, l’exécution du programme passe au bloc après END.

Pendant que la condition spécifiée est remplie, le programme de DO à END après WHILE est
exécuté. Si la condition spécifiée n’est pas remplie, l’exécution du programme passe au bloc
après END. Le même format que pour l’instruction IF est appliquée. Le numéro après DO et
le numéro après END sont les numéros d’identification pour spécifier la plage d’exécution.
Les numéros 1, 2 et 3 peuvent être utilisés. Si un numéro autre que 1, 2 et 3 est utilisé, une
alarme est déclenchée.

Emboîtements :

Les numéros d’identification (1 à 3) dans une boucle DO–END peuvent être utilisés aussi
souvent que souhaité. A noter, cependant, que si un programme contient des boucles de
répétition qui se croisent (valeurs de DO se recouvrant), l’alarme P/S nº 124 est déclenchée.

Programmation structurée Page 8


L’exemple de programme ci-dessous trouve le total des nombres 1 à 10.

O0001;

#1=0;

#2=1;

WHILE[#2 LE 10]DO 1;

#1=#1+#2;

#2=#2+1;

END 1;

M30;

Programmation structurée Page 9


4. Appel des macros :
Un programme macro peut être appelé à l’aide des méthodes suivantes:

a) Appel simple (G65) :


Lorsque G65 est spécifié, la macro personnalisée spécifiée sur l’adresse P est appelée. La
donnée (argument) peut être passée au programme macro personnalisée.

G65 P p L l <spécification d’argument>;


P : Numéro du programme à appeler

l : Comptage des répétitions (Lorsque L est omis, la valeur par défaut est 1.)
Argument : Donnée passée à la macro

Les appels peuvent être emboîtés à une profondeur de quatre niveaux y compris les appels
simples (G65) et les appels modaux (G66). Cela n’inclut pas les appels de sous-programme
(M98).

Les variables locales du niveau 0 au niveau 4 sont prévues pour l’emboîtement.

• Le niveau du programme principal est 0.


• Chaque fois qu’une macro est appelée (avec G65 ou G66), le niveau des variables
locales est incrémenté de 1. Les valeurs des variables locales sur le niveau précédent
sont sauvegardées dans la CNC.
• Lorsque M99 est exécuté dans un programme macro, le contrôle retourne au
programme d’appel. A ce moment, le niveau des variables locales est décrémenté de 1.
Les valeurs des variables locales sauvegardées lors de l’appel de la macro sont
restaurées.

Programmation structurée Page 10


Exemple de programme (cercle de trous de bridage) :
Une macro est créée pour effectuer le perçage de H trous à des intervalles de B degrés après
un angle de départ de A degrés sur la périphérie d’un cercle de rayon I.

Le centre du cercle est (X, Y). Les commandes peuvent être spécifiées en absolu ou en relatif.
Pour percer dans le sens des aiguilles d’une montre, spécifier une valeur négative pour B.

Figure 3 : cercle de trous de bridage

Programmation structurée Page 11


Format d’appel :

G65 P9100 X x Y y Z z R r F f I i A a B b H h ;

X: Coordonnée en X du centre du cercle (absolu ou relatif) (#24)

Y: Coordonnée en Y du centre du cercle (absolu ou relatif) (#25)

Z : Profondeur du trou (#26)

R: Coordonnées d’un point d’approche (#18)

F : Avance de perçage (#9)

I : Rayon du cercle (#4)

A: Angle de départ du perçage (#1)

B: Angle relatif (Sens horaire lorsque le signe moins est spécifié) (#2)

H: Nombre de trous (#11)

Programme appelant un programme macro :

O0002;

G90 G92 X0 Y0 Z100.0;

G65 P9100 X100.0 Y50.0 R30.0 Z–50.0 F500 I100.0 A0 B45.0 H5;

M30;

Programme macro (programme appelé) :

O9100;

#3=#4003; Mémorise les codes G du groupe 3.

G81 Z#26 R#18 F#9 K0; (Note). Cycle de perçage. Note: L0 peut aussi être utilisé.

IF[#3 EQ 90]GOTO 1; Branchement à N1 en mode G90.

#24=#5001+#24; Calcul de la coordonnée X du centre.

#25=#5002+#25; Calcul de la coordonnée Y du centre.

N1 WHILE[#11 GT 0]DO 1; . . Jusqu’à ce que le nombre de trous restant = 0.

#5=#24+#4*COS[#1]; Calcul de la position de perçage suivant l’axe X.

#6=#25+#4*SIN[#1]; Calcul de la position de perçage suivant l’axe Y.

G90 X#5 Y#6; Perçage après avoir atteint la position cible.

Programmation structurée Page 12


#1=#1+#2; Actualise l’angle.

#11=#11–1; Décrémente le nombre de trous.

END 1;

G#3 G80; Restauration des codes G dans leur état d’origine.

M99;

Signification des variables:

#3 : Mémorise les codes G du groupe 3.

#5 : Coordonnée en X du prochain trou à percer.

#6 : Coordonnée en Y du prochain trou à percer.

Programmation structurée Page 13

Vous aimerez peut-être aussi