La programmation

La programmation de la première machine AGIECUT était une vraie aventure. Il faut toujours tenir présent que tout ceci se passait dans les années 1969/70, quand aucun calculateur, qu'il soit de table ou de poche, était disponible pour calculer des fonctions trigonométriques ou d'autres fonctions nécessaires ou utiles pour la programmation de machines outils à contrôle numérique.
Dans ces années, AGIE disposait déjà d'un centre de calcul, avec une machine nommée tabulatrice, qui, au moyen de cartes perforées de 80 colonnes, une machine pour sélectionner des cartes ayant certaines propriétés, et une imprimante immense, était utilisée pour produire des documents nécessaires dans la fabrication, le contrôle de l'inventaire et d'autres applications de la même nature. Les "programmes" étaient introduits au moyen de panneaux, reliant des régions avec d'autres par des câbles, pour exécuter certaines fonctions répétitives. Cette machine ne pouvait exécuter que les fonctions arithmétiques de base, des calculs supérieurs n'étaient pas disponibles.
Les premiers programmes pour les DEM-15 devaient donc être calculés à la main, tout au début à l'aide de règles à calculer, à la suite avec des tabelles trigonométriques et logarithmiques, bien évidemment avec une précision extrêmement limitée.

Une sélection de règles à calcul

Qui peut s'en rappeler?

L'AGIECODE

Les premières machine ne pouvaient être programmées qu'au moyen du AGIECODE. Il s'agissait d'un code conçu uniquement pour le contrôleur AGIEMERIC NBY-15, très compacte mais aussi avec des fonctions très limitées. D'autre part il était très simple à apprendre et on pouvait perforer la codification sur des appareils mécaniques.
des circuits imprimés particuliers, qui devaient être insérées dans l'armoire à la place du circuit pour l'AGIECODE, permettaient de programmer la machine aussi dans les codes ISO (ASCII) ou EIA.

L'AGIECODE

L'AGIECODE original

L'AGIECODE était un code BCD, pour la codification binaire des décimales. Les valeurs désirés pour un déplacement devaient être perforés en cumulant les valeurs de base assignés à chaque trou su la grille. Si p.ex. on désirait exécuter un mouvement de 107.25 mm en direction des X, il fallait apporter une perforation dans la ligne 5, canaux 8 & 6 (80 + 20 mm), ainsi que dans les canaux 3 & 2 & 1 (4 + 2 + 1 mm), auxquels il fallait ajouter les perforations  dans le canal 6 (0.2 mm) et dans les canaux 3 & 1 (0.04 + 0.01 mm) de la ligne 6.
Le nombre de lignes d'informations était toujours constante, c.-à-d. 9 lignes, qui devait toujours être maintenu. Si des perforations de correction, la perforation de tous les 8 canaux était faite, ceci devait être additionné au nombre physique de lignes par bloc ou incrément.

La première ligne d'un bloc contenait les informations de base pour le mouvement qui devait être exécuté, c.-à-d. s'il s'agissait d'un incrément linéaire ou circulaire, s'il devait être exécuté avec ou sans érosion, s'il s'agissait du dernier bloc d'informations du programme, etc.
Si le canal 8 de la première ligne était perforé, le mouvement était exécuté linéairement et il fallait encore indiquer par une perforation dans les canaux 1, 2, 3 ou 4, pour déterminer la direction de cette droite. Cette direction était indiquée avec le quadrant dans lequel le mouvement était désiré, où le quadrant 1 correspondait à "vers le haut et à droite", avec les valeurs X et Y positifs, quadrant 2 à "vers le haut et à gauche", avec la valeur X en négatif et Y en positif, etc.
Si le canal 8 de la première ligne n'était pas perforé, le mouvement était exécuté comme arc de cercle, en sens contre les aiguilles de la montre (CCW ou CCLW) si le canal 5 de la première ligne n'était pas perforé en même temps. Si ce trou était présent, l'arc circulaire était produit dans le sens des aiguilles de la montre (CW ou CLW). Pour un arc circulaire, les canaux de 1 à 4 ne pouvaient pas être perforés en même temps.
Avec une perforation dans le canal 7 de la première ligne on pouvait faire exécuter le mouvement sans érosion, c.-à-d. en positionnement, p.ex. pour se positionner au prochain point de début de contour ou pour reculer dans la coupe déjà exécutée. Ces mouvement étaient toujours exécutés avec un courant de référence, pour éviter des collisions avec des parties de la machine.
Si le bloc ou incrément était le dernier du programme ou d'une ouverture, ceci était indiqué par un trou dans le canal 6 de la première ligne du bloc.

Les lignes 2 et 3 étaient utilisées pour indiquer l'angle de départ, Phi zéro (φº), pour un arc de cercle. Cet angle devait toujours être indiqué dans le même sens de rotation du cercle même, par rapport à l'axe des X positif. Comme indiqué plus haut, ces angles ne pouvaient être indiqués que dans des pas de 1°. Comme pour les incréments linéaires, la valeur effective des angles devait être indiquée par la combinaison de plusieurs perforations, l'angle effectif résultant de la somme des perforations faites.

Les lignes 3 et 4 servaient pour l'indication de l'angle de travail, delta Phi (Δφ), d'un arc de cercle, avec les mêmes règles que celles pour Phi zéro. S'il s'agissait d'un mouvement linéaire, les lignes 2, 3 et 4 d'un bloc ne contenaient aucune perforation.

Les lignes 5 et 6, ou 7 et 8, servaient pour indiquer soit la longueur en X et/ou Y d'un incrément linéaire (ΔX et ΔY), ou la valeur du rayon pour un arc de cercle. Le rayon des arcs circulaires devait toujours être indiqué deux fois, si les deux valeurs étaient différents, un arc d'ellipse était exécuté!

La dernière ligne d'un bloc ou incrément était toujours constituée des perforations dans les canaux de 2 à 8, si le canal 1 était aussi perforé, ceci signifiait une perforation de correction.

Des corrections pouvaient aussi être faites sur des rubans déjà perforés. À cet effet, chaque programmeur disposait de petites ciseaux, la plupart des fois intégrées dans un petit couteau militaire Suisse, et d'un rouleau de bande adhésive. Par ces moyens, les perforations erronées pouvaient être recouvertes par un petit bout de bande adhésive, pour ajouter la bonne perforation à la suite. Pour les premières séries de l'armoire NBY-15, quand un lecteur de bandes électromécanique était encore utilisé, il suffisait de recouvrir les trous erronés, plus tard, avec l'emploi de lecteurs optiques, il fallait aussi introduire une petite rondelle de ruban, d'une perforation déjà faite.

Les premiers perforateurs

Le premier perforateur de rubans

Le premier perforateur

Le perforateur de rubans "grand luxe"

Le perforateur
"grand luxe"

Les premiers appareils utilisés pour perforer les programmes dans les rubans de 1" (25.4 mm) à 8 canaux étaient extrêmement simples et primitifs. Ils disposaient d'un seul poinçon et d'un ensemble d'une ou plusieurs lignes de matrices et guides. Avec ces appareils il fallait utiliser des rubans où la perforation de transport était déjà faite, il fallait donc les commander ainsi auprès des fournisseurs. Les appareil étaient normalement des combinaisons entre perforateurs et aides pour la connexion de deux parties de ruban, avec un couteau qui coupait précisément entre deux perforations. L'appareil montré dans l'image en haut à droite n'est pas le tout premier utilisé, celui-la ne disposait d'une seule ligne de 8 trous et ne disposait non plus d'un dispositif de coupe.
Si deux ou plusieurs partes de ruban devaient être reliées, on pouvait utiliser des étiquettes adhésives spéciales, qui étaient de quelques dixièmes de millimètre plus étroits des 25.4 mm du ruban même, et qui disposaient de plusieurs lignes de 8 trous, ceux-ci un peu plus grands que ceux perforés dans le ruban. Ce fait facilitait le positionnement de l'étiquette sur les deux parties de ruban.

Après un certain temps, un appareil à été trouvé sur le marché, où le ruban pouvait rester inséré, pour être avancé dans la prochaine position de perforation à l'aide d'une petite roue, qui garantissait un positionnement précis.
À l'aide des huit touches du "clavier", les perforations nécessaires pouvaient être produites. La première version de cet appareil disposait encore d'une roue fixe, pour compter les lignes de programme, plus tard, une version modifiée chez AGIE, avec une bague qui pouvait être tournée séparément de la première, facilitait le contrôle du nombre de perforations déjà apportées, surtout si une perforation de correction avait du être faite.
Quand on utilisait cet appareil il fallait faire attention à ne pas perforer à travers des trous qui avaient déjà été corrigés à l'aide de ruban adhésif, la colle de de ce ruban s'accumulait dans le mécanisme et les ressorts agissants sur le poinçons ne pouvaient plus les ramener dans la position de repos.

Les codes ISO et EIA

Après très peu de temps on a du se rendre compte que des maisons, qui disposaient déjà de machines à contrôle numérique, programmées par des moyens existants, désiraient programmer et perforer cette information sur des rubans codifiés en code ISO (International Standardising Organisation), précurseur du code ASCII, ou en code EIA (Electronics Industry Alliance). À cause de ce fait, la DEM-15 devait aussi offrir la possibilité d'être programmée dans un de ces deux codes, puisque le AGIECODE ne pouvait pas être perforé su des appareil électromécaniques si non avec des modifications importantes à l'appareil même.

Pour permettre la lecture de programmes dans cette codification, deux circuits imprimés furent développés, qui allaient remplacer la carte pour l'AGIECODE pour que la machine puisse être utilisée avec la codification désirée.

Les codes ISO et EIA étaient développés pour une programmation avec la méthode avec tabulateurs, c.-à-d. que chaque colonne contenait toujours les informations de la même nature et que un bloc d'informations, nécessaire pour l'exécution d'un incrément linéaire ou circulaire, devait être constitué d'un nombre précis de tabulateurs.

Un Teletype ASR-33

Un Teletype ASR-33
Détails...

Un Friden Flexowriter

Un Friden Flexowriter
Détails...

La première colonne était réservée pour le signe de début programme, "%" en ISO ou "h"en EIA, et ne devait être perforée que dans le premier bloc d'un programme ou segment de programme. La deuxième colonne était prévue pour le numéro de bloc à trois chiffres, information pas interprétée par la NBY-15 mais très utile pour le contrôle du programme. La troisième colonne servait à indiquer le type de mouvement, droite (01) ou arc circulaire en sens horaire (02) ou en sens anti-horaire (03). La prochaine colonne servait pour indiquer l'angle de départ (φº) d'un arc de cercle ou trois zéros pour un mouvement linéaire. La colonne no. 4 était pour l'angle de travail (Δφ) ou à nouveau trois zéros pour un segment de droite. Les prochaines deux colonnes servaient soit pour les déplacements en X et Y (ΔX ou ΔY) pour une droite, avec signe correspondant pour la direction, ou les valeurs du rayon d'un arc circulaire ou des deux demi-axes pour un arc elliptique. La colonne no. 8 indiquait avec "01" si le mouvement devait être exécuté avec érosion et avec "00". La dernière colonne était réservée pour indiquer avec "02" la fin du programme ou d'une partie de celui-ci. Chaque bloc était terminé par les perforations de "retour chariot" et "avancement ligne".
Les programmes en ISO ou EIA était perforés au moyen d'appareils semblables à ceux montrés dans les images ci-dessus, il existait bien évidemment des produits d'autres fabricants.

Ces appareil pouvaient aussi être utilisés pour copier des rubans déjà existants, quelques uns acceptaient même des bandes perforées en AGIECODE. La duplication de la bande pouvait être interrompue à n'importe quel endroit, pour pouvoir apporter des corrections là où nécessaire. Pendant l'exécution d'un double d'une bande, le contenu du programme, limité aux codes ISO et EIA, pouvait aussi être imprimé, pour disposer d'un document de contrôle.

Les codes ISO et EIA avaient comme seule différence la codification de l'informations en trous dans la bande, le code ISO disposant aussi d'une perforation de parité, qui servait à l'armoire NBY-15 pour détecter d éventuels erreurs de perforation. Les programmes codifiés dans ces deux codes étaient bien évidemment plus longs de ceux en AGIECODE, mais avaient l'avantage de pouvoir être imprimés pour un contrôle, tandis que le AGIECODE devait être lu "à l'œil" procédure très lente et imprécise.

Avec la longueur plus importante des rubans perforés, un dispositif de déroulement et enroulement de bande se rendait nécessaire. Ce supplément garantissait une tension constante avant et après le lecteur, et était développé par une maison qui disposait déjà de l'expérience nécessaire. Avec l'emploi de ce dispositif, le ruban perforé devait toujours être enlevé du lecteur pour rembobiner la bande à la fin du programme, même plus tard, quand un lecteur optique remplaçait le premier lecteur électromécanique.

Les calculs

Les calculs qui devaient être exécutés étaient les mêmes pour tous les types de code, Comme indiqué plus haut, les tout premiers calculs étaient faits à l'aide de règles à calcul, pour déterminer les fonctions trigonométriques nécessaires.
Ça n'a pas duré longtemps pour que l'on reconnaissait que ce genre de calcul n'était pas assez précis, il fallait donc passe à un niveau supérieur, à cet époque représenté par les tabelles logarithmiques et trigonométriques. Les livres contenant ces fonctions, conservés à la fin du temps d'école, n'avaient que une précision limitée à 4 décimales, qui suffisait au début mais pas pour des calculs plus sérieux. Après de longues recherches on trouvait des tabelles avec 6 ou 8 décimales (Foellmy?), qui semblaient être suffisants aux calculs à exécuter. Les tabelles logarithmiques contenues dans le même livre servaient pour calculer les racines carrées.

On peut donc s'imaginer le temps qu'il fallut pour calculer les incréments d'un programme même pas trop complexe, ceci nécessitait beaucoup de patience, papier et crayons. Juste pour donner une idée, dans ces années on ne disposait pas encore des crayons avec des mines de 0.5 mm, il fallait aiguiser les crayons à des intervalles réguliers.

Les calculs les plus complexes étaient ceux pour l'approximation des fractions de degrés, soit pour les angles de départ, soit pour ceux de travail. Cette méthode avait été conçue par un des programmeurs, et consistait à exécuter les fractions de degré par un autre rayon, calculé avec une série d'opérations, qui devait produire le chemin avec un arc circulaire d'un degré. Dans des cas particuliers, où le rayon calculé par cette méthode devenait trop petit pour les corrections qui devaient être utilisées, un degré était "piqué" de l'arc nominal, pour créer un arc plus grand, toujours avec un degré. Après un certain temps, à l'aide du premier calculateur disponible dans le département de programmation, des tabelles étaient calculées, pour déterminer la précision atteinte dans différentes situations et s'il était mieux d'augmenter ou de réduire le rayon nominal.

Le premier ordinateur

L'Olivetti P-101

L'Olivetti P-101
Détails...

Une carte mémoire du P-101

Une carte mémoire de
l'Olivetti P-101

En 1965, un calculateur produit par la maison Italienne Olivetti faisait son apparition sur le marché. Il s'agissait de la Programma 101, où tout brièvement P-101. Le premier calculateur de ce modèle fut acheté vers la fin 1969 ou aux débuts de 1970.
Ce calculateur était le vrai précurseur des ordinateurs personnels (PC), qui pouvait être placé sur une table, bien que de dimensions assez élevées. Cette machine était programmable et pouvait exécuter les quatre opérations de base et de créer la valeur absolue.

Les opérations répétitives pouvaient être mémorisées sur des cartes magnétiques, qui avaient la capacité de mémoire de 120 pas de programme. La séquence des opérations était introduite par un clavier, qui, à part les 10 chiffres et les signes pour les calculs, intégrait aussi un certain nombre des signes spéciaux, pour dirige le programme, par exemple pour exécute des boucles de calcul. Comme mentionné, ces séquences d'opérations étaient mémorisées d'abord dans le calculateur même, pour être transférés de façon définitive sur les cartes magnétiques. Malheureusement on n'avait pas la possibilité de mémoriser des valeurs ou constantes sur ces cartes et on ne pouvait non plus enchaîner plusieurs cartes à la suite, si les 120 pas n'étaient pas suffisants. Il fallait donc faire imprimer les résultats de chaque calcul, pour être re-introduits à la suite si nécessaire.

Une petite roue, disposée à coté du clavier, permettait de déterminer le nombre de décimales que l'on désirait. Si ce nombre était augmenté, ceci avait une influence considérable sur les temps de calcul. Pendant l'exécution d'un programme, un indicateur lumineux de couleur bleu-vert clignotait, pour indiquer que la machine était occupée. À coté de cet indicateur, une autre lampe de couleur rouge servait à indiquer des erreurs de calcul (débordement de mémoire, boucle infinie, division par zéro, etc.), et bloquait le clavier et le calculateur complètement, avec la perte de tous les valeurs introduits et calculés jusqu'à ce point, le seul moyen pour continuer d'une situation pareille était la touche de remise à zéro générale (RESET) ou le déclenchement du calculateur.

La plupart des programmes furent initialement élaborés en AGIE, par P.F. et T.D., avec un travail très long et compliqué, utilisant souvent les heures après le travail normal ou les Samedis et Dimanches. À la suite des collections de programmes étaient disponibles sur le marché, qui pouvaient être achetés directement chez Olivetti ou d'autres fournisseurs. Pour la programmation de le DEM-15 on utilisait des programmes qui étaient prévus dans la géodésie, c.-à-d. le calcul de surfaces dans le terrain. Ceux-ci contenaient toutes les fonctions nécessaires pour les calculs de profils qui devaient être coupés, peu importe pour quoi ils étaient prévus.

Puisque la P-101 ne permettait pas de calculer des fonctions logarithmiques ou trigonométriques, celles-ci devait être calculées par approximation, avec des boucles répétitives (itérations), qui devaient être parcourues un nombre de fois déterminé par la petite roue de sélection des places décimales.

Les programmes pour l'approximation des fractions angulaires devaient bien évidemment être crées en AGIE, aucune autre application utilisait une méthode semblable. Les temps employé pour ces calculs n'était pas très important pour les programmeurs (G.W. et T.D.), ce calculateur représentait en tout cas une facilitation très importante et une amélioration de la précision des programmes de plusieurs crans.

Quelques combines de programmation

La méthode pour calculer les fractions de degré, mentionnée plus haut, n'était pas la seule combine élaborée par l'équipe de programmation de la DEM-15, d'autre limitations de la NBY-15 devaient être résolues par des moyens particuliers.

La machine ne disposait d'aucune fonction de programmation, en tout cas pas directe, pour pouvoir arrêter la machine à quelques millimètres avant la fin du contour, qui était la plupart des fois constitué d'un profil fermé. Au début il fallait interrompre le processus manuellement, pour éviter que la pièce qui se libérait ne tombe pas sur les guide-fils inférieurs, ou qu'elle commence à bouger, coinçant le fil et provoquant des courts-circuits qui pouvaient endommager la pièce. Ceci signifiait que l'opérateur de la machine devait toujours être présent vers la fin de la coupe d'un contour, pour pouvoir arrêter la machine manuellement, avant que les deux parties ne soient séparées. Une fonction programmable directement ne fut introduite que par l'emploi des fonctions "G" et "M", dans la deuxième génération de contrôles numériques.
Ce STOP était programmé comme un incrément linéaire dans n'importe quelle direction, avec un incrément nul, comme mouvement en positionnement et en même temps comme dernier bloc de programme. Ce bloc était normalement programmé à environ 2 mm avant la fin du contour, quand le pont qui reliait les deux parties était encore assez solide.

Les parcours décalés

La correction d'outil

Une autre limitation de l'armoire était constituée par le fait que seulement les contours qui étaient parfaitement tangents pouvaient être corrigés, la NBY-15 n'influençait que les rayons en changeant leurs valeurs, les droites étaient toujours exécutées dans la longueur programmée su la bande perforée.
Pour garantir que le chemin corrigé soit exécuté parfaitement concentrique par rapport au profil programmé, une combine un peu complexe devait être utilisée.
Le chemin crée par le correcteur de la NBY-15 devait être parfaitement concentrique par rapport au contour programmé, pour assurer la position précise de l'ouverture par rapport soit à la pièce brute, soit à un autre contour coupé préalablement. Ceci était particulièrement important pour des matrices, ou des poinçons avec des ouvertures à l'intérieur. Pour des poinçons simples ou des pièces prototype, le point de départ n'était pas très important dans sa position par rapport au contour. 

Le "ver"

La "chenille"

La méthode adoptée était constituée par une série de trois mouvements, qui remplaçaient la droite entre le trou de départ et le contour. Il s'agissait de deux arcs circulaires, qui formaient un triangle équilatéral. Depuis le point de départ, qui se trouvait normalement dans un trou où le fil était enfilé, le premier arc était programmé dans le même sens du contour entier, dans l'exemple montré en sens anti-horaire, avec un φº de 90° et le Δφ de 60°. Le rayon devait avoir au moins la dimension de la correction maximale à exécuter avec le programme, mais cette valeur n'était pas importante puisque le mouvement était exécuté à l'intérieur du trou de départ, normalement sans produire aucune érosion. Le deuxième mouvement circulaire était ajouté au premier, toujours dans le même sens, dans l'exemple montré avec un φº de 210° et un Δφ de 60° à nouveau. Après ces deux arcs circulaires on programmait le mouvement linéaire d'approche au contour, évidemment accourci de la valeur du rayon précédent.
Si ce mouvement d'approche, dénommé "chenille" par les programmeurs,  était exécuté avec une correction (dans l'exemple montré avec une correction en "-", chemin rouge), la distance entière entre le point de départ et le point de départ sur le contour était, dans ce cas, accourci de la valeur de la correction choisie.

Le contour programmé

Le contour programmé

Pas toutes les limitations du dispositif de correction pouvaient être résolus avec une telle facilité, dans plusieurs situations, l'opérateur de la machine devait intervenir pour assurer le bon résultat de l'opération.
Dans la plupart des cas (voir "Curiosités"), les contours étaient programmés suivants les dimensions du dessin, c.-à-d. sans tenir compte du jeu nécessaire entre poinçon et matrice ou la sur- ou sus-mesure d'une électrode. Dans l'exemple montré, la flèche verte indique le sens de programmation du contour,  "Ä" le point de départ (enfilage), "¨" le point de départ sur le contour et "©" le point de stop. Les dimensions effectives de la pièce étaient obtenues au moyen du dispositif de correction de la NBY-15, agissant sur les rayons en les agrandissant ou réduisant, selon leur sens de programmation (voir "la correction outil, ci-dessus).

L'image miroir, autour de l'axe Y

L'image miroir, autour de l'axe Y

Si le programme était rabattu par rapport à un ou des deux axes à l'aide des interrupteurs disponibles a cet effet sur le panneau arrière de la NBY-15 (dans l'exemple montré, exécution en miroir par rapport à l'axe des Y, en exécutant tous les mouvements en X avec direction inverse), le sens de parcours du programme était aussi inversé.
Le dispositif de correction d'outil agissait toujours sur le programme, tel qu'il était perforé sur le ruban. Dans le cas montré, l'exécution de la partie de gauche nécessitait d'un changement de signe de la valeur de correction, afin que le parcours du fil reste toujours à l'intérieur par rapport au chemin programmé. Si l'opérateur oubliait d'exécuter cette opération d'inversion, la pièce toute entière était défectueuse et devait être jetée.

Une autre limitation de la NBY-15, à cause de la méthode de calcul des cercles, était constituée par le rayon maximum qui pouvait être exécuté. Cette valeur n'était pas limitée par les dimensions maximales qui pouvaient être programmées dans l'AGIECODE (166.65 mm), mais par la valeur utilisée avec le "cercle de base", de 262.144 mm (voir "La commande numérique").
Si un rayon devait être coupé qui avait une valeur majeure du maximum admis, il fallait utiliser une méthode un peu spéciale: programmer tout le contour à une échelle réduite et l'exécuter à la suite en utilisant le sélecteur d'échelle de la NBY-15. Ceci ne pouvait bien évidemment être exécuté que dans les facteurs d'échelle disponibles sur le panneau arrière du contrôleur, et en même temps la précision de programmation se réduisait du même facteur.