Vous êtes sur la page 1sur 8

Programmation Structurée

Généralités :
Il existe deux types de programmes: le programme principal et le sous-programme.
Normalement, la CN fonctionne selon le programme principal. Toutefois, lorsqu’une
commande appelant un sous-programme est prise en compte dans le programme principal, la
commande passe au sous-programme. Lorsqu’une commande spécifiant un retour au
programme principal est prise en compte dans un sous-programme, la commande revient au
programme principal.

La programmation structurée permet de mieux exploiter les ressources d’une entreprise


surtout quand celle-ci fabrique des pièces ayants des formes similaires. La programmation
structurée permet également permet d’améliorer la lisibilité d’un programme CN et de mieux
voir ses mécanismes.

Figure 1 Programme principal et sous-programme

Un sous-programme est appelé à partir du programme principal. Un sous-programme peut


également appeler un autre sous-programme.

Figure 2 programmation répétée

Programmation structurée Page 1


1. Programmation Structurée Fanuc
a) Configuration d’un sous-programme

Un sous-programme

Numéro de sous-programme

M99 ne doit pas figurer avec d’autres instructions, comme cela est expliqué ci-
après.
Exemple) X100.0 Y100.0 M99 ;

b) Appel de sous-programmes

Lorsque le programme principal appelle un sous-programme, cela est considéré comme un


appel de sous-programme à un niveau.

Ainsi, les appels de sous-programme peuvent être classés jusqu’en quatre niveaux comme
illustré ci-dessous.

c) Saut de bloc optionnel

Lorsqu’une barre suivie d’un numéro (/n (n=1 à 9)) est spécifiée au début d’un bloc et que le
sélecteur de saut de bloc optionnel n du panneau opérateur machine est mis sur actif,
Programmation structurée Page 2
l’information contenue dans le bloc, pour laquelle /n correspondant au numéro de
commutation n est spécifié, est ignoré en fonctionnement DNC ou à partir des mémoires.

Lorsque l’interrupteur est mis sur ARR, ce bloc /n est exécuté normalement. Cela signifie que
l’opérateur peut choisir de sauter le bloc contenant /n ou non. Le numéro 1 de /1 peut être
omis. Toutefois, lorsque deux commutateurs de saut de bloc optionnel ou plus sont utilisés
pour un bloc, le numéro 1 de /1 ne peut pas être omis.

Exemple

(Incorrect) (Correct)

//3 G00X10,0; /1/3 G00X10,0;


Cette fonction est ignorée lorsque les programmes sont chargés dans la mémoire. Les blocs
contenant /n sont également mis en mémoire sans tenir compte de la façon dont le
commutateur de saut de bloc optionnel est réglé.

Les programmes en mémoire peuvent être sortis sans tenir compte de la façon dont les
commutateurs de saut de bloc optionnel sont réglés. Le saut de bloc optionnel est efficace
même au cours de la recherche du numéro de séquence. Selon la machine-outil, tous les
commutateurs de saut de bloc optionnel (1 à 9) peuvent ne pas être utilisés. Référez-vous aux
manuels du constructeur de la machine-outil pour déterminer quels commutateurs peuvent
être utilisés.

d) Exemples :

M98 P51002 ;
Cette commande spécifie ”appel de sous-programme (Nº 1002) Cinq fois de rang”. Une
commande d’appel de sous-programme (M98P_) peut être spécifiée dans le même bloc
qu’une commande de déplacement.

X1000,0 M98 P1200 ;


Cet exemple appelle le sous-programme (numéro 1200) après un mouvement X.

Programmation structurée Page 3


Séquence d’exécution des sous-programmes appelés depuis un programme principal

Un sous-programme peut appeler un autre sous-programme de la même façon que le


programme principal.

Si P est utilisé pour spécifier un numéro de séquence lorsqu’un sous-programme est


terminé, la commande ne retourne pas au bloc après le bloc d’appel mais revient au bloc
portant le numéro de séquence spécifié par P. Remarquez toutefois que P est ignoré si le
programme principal fonctionne dans un mode autre que le mode mémoire.

Cette méthode nécessite beaucoup plus de temps que la méthode normale de retour au
programme principal.

Si M99 est exécuté dans un programme principal, la commande retourne au début du


programme principal. Par exemple, M99 peut être exécuté en plaçant /M99; à un endroit
approprié du programme principal et en mettant la fonction de saut de bloc optionnel hors
tension lors de l’exécution du programme principal. Lorsque M99 est exécuté, la commande
revient au début du programme principal puis l’exécution est répétée en démarrant par le
début du programme principal.

L’exécution est répétée lorsque la fonction de saut de bloc optionnel est mise hors tension. Si
la fonction de saut de bloc optionnel est activée, le bloc /M99 ; est sauté et la commande passe
au bloc suivant d’exécution continue.

Programmation structurée Page 4


Si /M99Pn ; est spécifié, la commande ne retourne pas au début du programme principal mais
au numéro de séquence n. Dans ce cas, le retour au numéro de séquence n demande plus de
temps.

Un sous-programme peut être exécuté exactement comme un programme principal en


cherchant son début en mode IMD.

Dans ce cas, si un bloc contenant un code M99 est exécuté, la séquence d’exécution retourne
au début du sous-programme et une nouvelle exécution du sous-programme est effectuée. Si
un bloc contenant M99Pn est exécuté, la commande retourne au bloc portant le numéro de
séquence n dans le sous-programme pour répéter l’exécution. Pour terminer ce programme,
un bloc contenant /M02 ou /M30 doit être placé sur un emplacement approprié et le
commutateur de bloc optionnel doit être hors tension; ce commutateur doit être tout d’abord
mis sous tension.

Programmation structurée Page 5


2. Programmation structurée Siemens Sinumerik
a) Structure du sous-programme

La structure du sous-programme est identique à celle du programme principal.

En sus, vous pouvez programmer dans le sous-programme une étiquette de programme avec
des définitions de paramètres.

Un sous-programme se termine par l'instruction de fin de programme M17. Cela signifie ici le
retour au niveau du programme appelant. La fin de programme M17 peut être inhibée à l'aide
d'un paramètre machine (par exemple pour optimiser la durée d'exécution).

Il convient de donner un nom à chaque sous-programme pour pouvoir l'appeler


individuellement. Le nom est à définir lors de la création du programme, en respectant les
règles suivantes :

• les deux premiers caractères doivent être obligatoirement des lettres

• ensuite des lettres, des chiffres ou des traits de soulignement

b) Imbrication de sous-programmes

On peut appeler un sous-programme depuis un programme principal, mais aussi depuis un


sous-programme. Pour un tel appel imbriqué, on dispose de 12 niveaux de programme au
maximum, niveau de programmation principal compris. Signification : 11 appels de sous
programmes imbriqués peuvent émaner d'un programme principal.

Si un sous-programme doit être exécuté plusieurs fois d'affilée, le nombre souhaité de


répétitions peut être programmé sous l'adresse P, dans le bloc qui contient l'appel du sous
programme.

Exemple

N40 CADRE P3

Programmation structurée Page 6


3. Programmation Structurée NUM
a) Structuration par Niveau
Il est possible de structurer un programme CN en deux ou en trois niveaux.

* Deux Niveaux * Trois Niveaux


Niveau 1 : Niveau 1 :
• programme principal (de %1 à %999) • programme principal (de %1 à %99)
• Paramètres généraux • Paramètres généraux
• Appel de sous-programmes niveau 2 • Appel de sous-programmes niveau 2
Niveau 2 : Niveau 2 :
• Sous-programmes (de %1000 à • Sous-programmes (de %100 à %999)
%9999) • Paramètres locaux
• Paramètres locaux • Appel d’outils
• Appel d’outils • Conditions technologiques
• Conditions technologiques • Appel de sous-programme niveau 3
• Cycles Niveau 3 :
• Sous-programmes (de %1000 à %9999)
• Paramètres locaux
• Usinage (contournage, cycles...)

b) Saut de lignes sans retour (G79)


Les sauts de lignes sont soit conditionnels ou inconditionnels et permettent de passer à
la ligne appelée qui doit être située dans le même programme.
Dans le cas d’un saut conditionnel, on utilise un paramètre (voir programmation
paramétrée) et l’un des opérateurs de comparaison suivants : (< > <= >= <>).
Exemple :
Saut Inconditionnel Saut Conditionnel
N40 ... N40
N50 G79 N80 (saut à la ligne N50 G79 L2 < 18 N90 Si L2 est inférieur
N60 ... N80 sans retour, N60 ... à 18, aller à la
N70 ... le programme se N70 ... ligne N90 sinon
N80 … poursuit après la N80 ... continuer le
N90 … ligne appelée N90 … programme en
N100… N90, N100, ...) N100 … N60.

c) Appel de sous-programmes ou de séquences (G77)


On distingue deux types d’appel : les appels de séquences internes ou externes et les
appels de sous-programmes.

Programmation structurée Page 7


c1) Appel de sous-programme
Un sous-programme externe est appelé par l’adresse H suivie par le numéro de
programme. Le sous-programme ne doit pas être terminé par le mot M2, qui arrêterait
le cycle en cours.
%50

N60 ...
N70 ...
N80 G77 H110 appel sous-programme %110, puis retour à la ligne N90
N90 ... du programme %50
N100 …

c2) Appel de séquences internes


Une séquence interne au programme peut être appelée par les numéros de lignes de
début et de fin.
%55

N150 ...
N160 ...
N170 G77 N80 N120 appel et exécution des lignes N80 à N120, puis suite du
N180 ... programmes à la ligne N180
N190 …

c3) Appel de séquences externes


Une séquence d’un autre programme peut être appelée par l’adresse H, suivie des
numéros de lignes de début et de fin.
%85

N30 ...
N40 ...
N50 G77 H55 N70 N90 saut inconditionnel au programme %55 puis exécution des
N60 ... lignes N70 à N90, et retour à N60 du programme %85
N70 …

Programmation structurée Page 8

Vous aimerez peut-être aussi