La présente invention concerne une technique de stimulation sur machine automatique du quadrillage à la main de certaines parties en bois d'une arme à feu. I1 est évident que cette application n'est pas exclusive et que la technique de l'invention est applicable à la création et à la reproduction d'un grand nombre de motifs décoratifs ou fonctionnels de complexité variable. A titre d'exemple, on peut mentionner la gravure de motifs décoratifs sur des matrices planes ou cylindriques destinées à l'impressionde papier mural, de cartes à jouer ou similaires, ainsi que les articles en verre taillé. La présente invention est applicable à la commande numéro rique sur plusieurs axes d'outils à graver ou à quadriller. Elle permet notamment une réduction importante du volume du programme de commande et une amélioration de la productivité de la machine. Le procédé de l'invention se décompose généralement en deux séquences de traitement des données qui sont de préférence exécutées par deux ordinateurs différents. Le premier ordinateur est programmé pour préparer une bande de programme correspondant au motif de'quadrillage désiré. Cette bande de programme est introduite dans un second ordinateur appelé "ordinateur d'exécution" qui commande les mouvements de l'outil sur plusieurs axes pour reconstituer le motif de quadrillage d'après les instructions du programme de commande. D'autres caractéristiques et avantages de l'invention ressortiront ae la description détaillée qui suit et des dessins annexés sur lesquels - la figure lA est une vue en plan illustrant un motif de quadrillage d'une crosse d'arme à feu ; - la figure 1B est un agrandissement d'une petite partie du quadrillage de la figure lA - la figure 1C est une représentation géométrique d'une pyramide élémentaire forme par un tel quadrillage ; - la figure ID est une coupe dans le plan lD-lD, de la figure 1A ; - la figure 2A est une vue en plan d'une fraise-disque en train de graver dans une surface plane un réseau de stries parallèles ;; - la figure 23 Montre canent on peut obtenir un quadrillage en losange en gravant avec des orientations différentes deux réseaux de stries parallèles analogues à celui de la figure 2A ; - la figure 3 est une coupe schématique montrant les problêmes géométriques que pose la gravure de stries parallèles sur une pièce de bois à surface courbe - la figure 4 illustre les différents mouvements nécessaires pour quadriller une pièce de bois à surface sensiblement cylindrique avec une fraise circulaire analogue à celle de la figure 2A - la figure 5 est une représentation schématique du déplacement d'un point quelconque de la pièce de la figure 4 pendant le quadrillage - les figures 6 et 7 sont des coupes schématiques illustrant une technique de détection de la position et de l'angle d'une surface pour la commande des mouvements sur l'axe de profondeur (Z) et l'axe d'inclinaison (a) - la figure 8 est une vue en élevation frontale d'une forme préférée de la machine à quadriller de la présente invention - la figure 9 est une vue en bout de la machine de la figure 8 dans le sens des flèches 9-9 - la figure 10 est une coupe dans le plan 10-10 de la figure 8 montrant le mécanisme de positionnement de la fraise et de son moteur - la figure 11 est une coupe dans le plan 11-11 de la figure 9 montrant le mécanisme de positionnement de la fraise - la figure 12A est une vue en perspective de la poignée pistolet d'une crosse d'arme à feu montrant les lignes de bordure d'un motif quadrillé classique; - la figure 12B est une coupe dans le plan 125-12B de la figure 12A ;; - la figure 12C est une coupe dans le plan 12C-12C de la figure 12A ; - la figure 12D est une représentation schématique de la projection b lignes sur une surface définie par le courbe a1 de la figure 12A ; - la figure 12E est une représentation schématique de la position de la fraise en fin de gravure de la ligne a de la figure l2A - la figure 13 est un schéma synoptique d'ensemble d'un système de commande numérique simultanée de plusieurs machines à quadriller ; - la figure 14A représente schématiquement un registre tampon interposé entre la sortie de l'ordinateur d'exécution et l'une des machines à quadriller de la figure 13 ;; - la figure 14B est une table de l'affectation des bits d'un mot dans le système de commande numérique de la figure 13 - la figure 15d représente schématiquement les circuits de commande de profondeur et d'inclinaison d'une machine à quadriller du système de la figure 13 ; - la figure 15B est un graphique des caractéristiques de réponse d'une paire de détecteurs de niveau d'une machine à quadriller du système de la figure 13 - la figure 16 est une représentation d'un système de coordonnées utilisé pour le quadrillage d'une pièce de fusil. Sur les armes à feu de grand prix, certaines surfaces de la crosse et du fût sont quadrillées à la main pour assurer une bonne prise en toutes circonstances et pour améliorer 11 esthétique de l'arme. Bien que de nombreuses techniques de substitution aient été appliquées à des armes plus économiques, on n'a pas jusqu'ici réussi à remplacer le quadrillage à la main sur le plan de l'esthétique du motif et de la régularité de l'état de surface. En arnurerie, le terme "quadrillage" désigne un traitement à la fois décoratif et fonctionnel des surfaces de bois consistant généralement en deux réseaux croisés de stries parallèles a section triangulaire formant un motif géométrique régulier à base de pyramides équilatérales. Les bordures du motif peuvent être simplement la derniere ligne de l'un des réseaux de base, ou une courbe arbitraire choisie pour son aspect décoratif. Une variante du quadrillage simple appelée "quadrillage écossais" consiste à omettre par exemple une strie sur quatre dans chaque réseau. - La figure lA représente un quadrillage type de la crosse d'un fusil dont certaines lignes seulement sont visibles pour la clarté de l'illustration. La figure 15 est un agrandissement local du motif de la figure LK, et la figure 1C est un nouvel agrandissement de l'une des pyramides équilatérales du motif dont la base est un losange. La figure 1D est une coupe dans le plan ID-ID de la figure LK, montrant la section triangulaire des stries de l'un des réseaux. Les caractéristiques générales d'un motif de quadrillage sont les suivantes 1) Le pas des réseaux est l'espacement des stries parallèles CL1, L2 sur la figure 1D) généralement compris entre environ 6 et 12 lignes par cm, les valeurs les plus couramment utilisées étant 8 et 10 lignes par cm. 2) L'angle au s-iet des stries (voir figure 1D) qui est compris entre environ 60 et 900, cette dernière valeur étant la plus utilisée. 3) L'allongement des pyramides, c'est-à-dire le rapport des longueurs de la grande diagonale (L) et de la petite diagonale (t) du losange de base de la pyramide (voir figure 1C). Ce rapport détermine l'angle aigu B que font les deux réseaux de lignes par la relation p =2 Arctg e/L. En pratique, le rapport d'allongement varie entre environ 2,5: 1 et 3fui5:1, la valeur la plus utilisée étant 3:1. 4) Les lignes de bordure dont certains exemples sont illustrés sur la figure 1A. Les lignes a et c suivent essentiellement la forme de la crosse, alors que la ligne b forme une figure décorative arbitraire. Dans d'autres cas, les bordures du motif peuvent être simplement les lignes extérieures d des deux réseaux. Le choix des paramètres du motif à graver dépend de la destination de larme, de la qualité et du grain du bois, de l'importance relative donnée au caractère fonctionnel et au caractère décoratif, et évidemment du coût de sa réalisation. Les valeurs courantes mentionnées correspondent au meilleur compromis pour un bois de qualité moyenne à bonne, les motifs ultrafins étant réservés aux armes de grand prix pour lesquelles on choisit des bois de qualité supérieure. Les paramètres mentionnés ci-dessus peuvent être combinés pour définir mathématiquement un motif de quadrillage par exemple dans un plan, en faisant l'hypothèse que les stries sont rectilignes. Les paramètres nécessaires sont (1) le pas des réseaux, (2) l'angle des réseaux ou le rapport d'allongement, et (3) les extrémités des lignes, c'est-à-dire la position de la bordure. Cette définition peut être étendue au moins approximativement à des surfaces tridimensionnelles, cylindriques ou autres, sur lesquelles le motif défini dans un plan peut être appliqué comme une décalcomanie sans plis. Par exemple, dans le cas d'une surface cylindrique de révolution, chaque ligne droite du motif plan devient une portion d'hélice. On peut généraliser ce principe en considérant que chaque ligne droite est définie par le bord d'une règle flexible qu'il est possible de déformer et d'appliquer exactement contre la surface à quadriller. Pour le quadrillage idéal de la crosse et du fût d'une arme à feu, les contraintes sont les suivantes 1) Toutes les lignes sont des droites définies selon le concept de la "règle flexible" 2) Toutes les lignes d'un réseau sont mutuellement parallèles. 3) Les angles d'intersection de twtes les lignes d'un réseau avec toutes les lignes de l'autre réseau sont égaux, 4) La conséquence de ces trois conditions est que toutes les pyramides sont identiques du point de vue forme et dimensions. Etant données des surfaces géométriques sur lesquelles il est possible de satisfaire aux quatre conditions ci-dessus, toutes les autres dimensions géométriques étant connues, il est possible de fraiser un motif complet avec une machine classique ou une machine à commande numérique. En pratique, les surfaces quadrillées d'une arme à feu sont des combinaisons de courbes cosplexeset il est nécessaire de faire un compromis entre ces conditions idéales, wêe pour le quadrillage manuel. L'emploi des techniques d'usinage classiques est impossible étant donné la complexité des traitements mathématiques nécessaires pour l'établissexent du programme et le nombre des mouvements nécessaires. Mise en supposant résolu le problème de la complexité des formes, la précision des dimensions des crosses est incompatible avec les tolérances d'usinage habituelles. Des tolérances de + 0,8 mm sont tout à fait courantes et parfaitement justifiées sur le plan fonctionnel,étant entendu que des tolérances plus serrées entratneraient un coût de fabrication prohibitif. Lorsqu'on sait que la profondeur des lignes de quadrillage est généralement de l'ordre de 0,6 mm, il est évident que les techniques classiques de fraisage sont inapplicables. Ainsi, pour réaliser un quadrillage économique et de qualité comparable à celle d'un quadrillage manuel, la technique de l'invention prévoit 1) d'utiliser une machine-outil (et un montage de pièce) réalisant les mouvements relatifs nécessaires de la fraise et de la pièce ; 2) de co naxder les fonctions de la machine-outil (et du montage de pièce) par une combinaison de servomécanismes numériques à bouclas de rétroaction ; 3) de diriger les fonctions du paragraphe 2) ci-dessus à l'aide d'un ordinateur électronique; et 4) d'utiliser les techniques mathématiques et de programmation nécessaires pour l'accomplissement des fonctions de commande du paragraphe 2) au moyen de l'ordinateur du paragraphe 3). La configuration de la machine-outil, y compris les moyens de déplacement relatif de l'outil et de la pièce seront mieux compris en analysant en détail les différentes surfaces susceptibles d'être quadrillées, et en les classant en deux catégories principales 1- Les surfaces approximativement planes : par exemple les flancs de la poignée pistolet d'une arme à feu, sur lesquels un motif de quadrillage dessiné à plat peut être projeté perpendiculairement avec des déformations limitées et ac-eptables. Dans ce cas, toutes les stries peuvent être fraisées verticalement sur une pièce bridée de manière que la surface à quadriller soit approximativement horizontale. Le motif peut être défini mathématiquement dans un plan et modifié pour tenir compte de la courbure réelle de la surface. 2- Les surfaces approximativement cylindriques : par exemple le dessous du fût d'une arme à feu. Dans ce cas, le motif peut être dessiné sur une feuille plane, puis "enroulé fictivement" sur la surface avec des déformations minimes. Dans ce cas, la pièce doit pouvoir être animée d'un mouvement de rotation par rapport à la fraise. Un tel motif se définit mathématiquement sur une portion de cylindre de révolution (éventuellement dérivé d'un plan) et subit les modifications nécessaires pour l'adaptation à la surface réelle. I1 est évident que dans certains cas les deux considérations de base doivent être combinées, par exemple, pour le quadrillage complet de la poignée pistolet d'une arme. La configuration de fraisage pour des pièces à surfaces approximativement planes entrant dans la catégorie 1 ci-dessus, est représentée schématiquement sur les figures 2A et 2b. Sur la vue en plan de la figure 2A, une fraise lO-à profil triangulaire entraînée à une vitesse de rotation convenable taille dans la surface d'une pièce de bois 11, une strie de profondeur préétablie d'un réseau de quadrillage formé de lignes parallèles. Pou cette opération, la position de la fraisc 10 est fixe et c'est la pièce 11 qui se déplace vers le bas de la figure parallèlement à l'axe Y.A la fin de la passe, la pièce et la fraise sont momentanément écartées l'une de l'autre, puis la pièce 11 est déplacée latéralement parallèlement à l'axe X de la figure 2A, d'une distance égale au pas du réseau, après quoi la pièce et la fraise sont rapprochées pour l'exécution de de la passe suivante. Lorsque le premier réseau de lignes est fermé, la pièce est repositionnée par une rotation de l'angle ss, l'ancien axe. devenant l'axe Y' qui est décalé de l'angle B par rapport au nouvel axe Y de la figure 23. Le second réseau est ensuite exécuté ligne par ligne par des passes parallèles à l'axe Y et des décalages latéraux égaux au pas du réseau parallèment à l'axe X. , La figure 3 est une coupe illustrant la réalisation d'un réseau analogue à celui de la figure 2A sur une pièce dont la surface A est incurvée. Pour une strie taillée dans la position (1), le plan de la fraise 10 est incliné vers la gauche par rapport à la verticale 0 d'un angle al de manière que le plan de pénétration soit normal à la surface. Dans position (2) le plan de la fraise est incliné d'un angle différent a2 La machine doit donc posséder un axe de mouvement supplémentaire appelé "inclinaison a" pour compenser la courbure de la surface. I1 est souhaitable, mais non indispensable, que le centre de rotation de la fraise soit son point le plus bas, comme indiqué sur la figure 3. En ce qui concerne le mouvement vertical parallèlement à l'axe Z de la figure 3, il est évident que la fraise doit pouvoir être rétractée hors de la pièce 11 à la fin de chaque passe. Ce mouvement vertical est également nécessaire pour maintenir une profondeur correcte des stries au fur et à mesure de l'évolution de la surface A de la pièce. Outre les variations verticales normales liées au profil de la pièce, il est essentiel de tenir compte des variations d'une pièce à l'autre dues aux tolérances. Ainsi, sur la figure 3, la surface B représente le profil de la pièce type dont la pièce réelle peut s'écarter dans la limite des tolérances admissibles. Pour des surfaces approxisativelent planes de la catégorie 1 ci-dessus,les mouvements nécessaires de lancine sont les suivants 1. axe Y, avance longitudinale, 2. axe X, espacement latéral, 3. axe Z, mouvement vertical, 4. axe a, inclinaison de la presse. Sur ces quatre axes de mobilité de la machine, seuls les axes Y et X peuvent être programmés à l'avance, par exemple sur une bande perforée. L'axe Z et l'axe a doivent entre commandés par des servomécanismes détectant la position et l'angle réels de la surface de la pièce au point de travail. I1 faut en outre prévoir une commande programmée de ces axes pour l'espacement des lignes, le positionnement initial et les fonctions auxiliaires. La seconde grande catégorie des surfaces à quadriller est celle des surfaces assimilables à des cylindres, dont la figure 4 donne un exemple avec une pièce 11' qui peut être le fût d'une arme à feu. La pièce est montée entre des pointes opposées 14, 14' permettant une rotation autour de l'axe 14, 14' sous contrôle du programme de commande. Les autres axes de la figure 4, appelés X et Y, correspondent à ceux des figures 2A et 2B et font également l'objet d'une commande programmée. Pour faciliter l'explication du fonctionnement de la machine dans le cas des pièces de la seconde catégorie, on assimilera la surface de la pièce 11' à une surface cylindrique de révolution. Chaqua ligne de quadrillage 12 est alors une portion d'hélice dont l'angle (ctest- à-dire l'angle que fait la projection de la tangente à un point quelconque de l'hélice avec l'axe du cylindre) est égal à la moitié de l'angle des réseaux ss. Pour tracer cette hélice sur la pièce cylindrique (par exemple en remplaçant la fraise par un marqueur), il faut que la pièce 11' se déplace par rapport au marqueur le long de l'axe 14, 14' et soit simultanément animée d'un mouvement de rotation. En plus, lorsque la fraise 10 est en place, son plan doit évidemment être incliné par rapport à l'axe de rotation de la pièce 11' d'un angle égal à la moitié de l'angle ss. Sur la figure 4 les différents mouvements sont représentés par des flèches, c'est-à-dire que la pièce 11' est déplacée le long de son axe 14, 14' et tourne simultanément dans le sens de la flèche R. La rotation Q peut être commandée directement autour de l'axe 14, 14', et le mouvement axial est obtenu par composition des mouvements sur les axes machine Y et X. Etant donné que l'axe 14, 14' fait un angle /2 avec l'axe Y, le rapport des vitesses sur les axes X et Y , respectivement Vx et Vy peut s'écrire : Vx = tg ss/2 , ss étant toujours l'angle des réseaux. Vy Le rapport #/L étant également égal à tg ss/2, on peut dire que le rapport des vitesses sur les axes de coordonnée est 1/D, si D est l'allongement des losanges. La vitesse de rotation de la pièce peut être déterminée à partir du diagramme de la figure 5 qui représente une partie de la pièce animée d'une rotation autour de l'axe A A et de mouvements linéaires sur les axes Y et X. Sur une période donnée, les mouvements combinés sur les axes Y et X ont une résultante correspondante à un déplacement eb sur l'axe A-A et la pièce tourne dans le sème temps de l'angle #. Si la fraise 10 est initialement au point c, pendant la période considérée, elle décrira un segment cf tel que (1) dcf = (2) cd/df = D (aplatissement des losanges), Pour que ces conditions soient vérifiées, (3) Vdf = D vcd' Vdf étant la vitesse résultante le long du segment df, et vcd étant la vitesse résultant le long du segment cd égale à vbe qui est la vitesse résultante le long du seement be. mais (5) Vx = Vy/D de sorte que # mais df = (2 r) si r est le rayon de la pièce au point d'attaque, 360 v# et (7) vdf = (2#r), v# étant la vitesse de rotation de 360 la la piece en degrés/seconde, des équations (6) et (7) on peut tirer 360 Vy (8) v# = 2#r D Cette expression établit une relation entre la vitesse de rotation instantanée de la pièce et la vitesse d'avance sur l'axe Y en fonction de l'allongement des losanges (D) et du rayon de la pièce 11' au point d'attaque. Les mouvements verticaux (Z) et l'inclinaison (a) nécessitent évidemment une correction automatique de la profondeur et de l'inclinaison de la fraise en fonction du profil de la surface, c'est-àdire pour orientation déterminée de la fraise par rapport à la surface à graver. Les mouvements de la machine nécessaires pour le quadrillage d'une pièce approximativement cylindrique de la catégorie 2 sont les suivants 1. Axe Y, mouvement longitudinal. 2. Axe X, mouvement latéral. 3. AxeSb, rotation de la pièce. 4. Axe Z, mouvement vertical. 5. Axe a, inclinaison de la fraise. Les relations mutuelles de ces mouvements sont beaucoup plus complexes que dans le cas d'une surface approximativement plane de la catégorie 1. L'avance est maintenant la résultante des mouvements X, Y et Sb , les axes X et Y étant animés de mouvements à vitesses constantes dans un rapport fixe, et l'axeSç étant lié aux axes X, Y et au rayon de la pièce. Le pas des lignes ne dépend que du mouvement WS, mais l'angle de rotation est également fonction du rayon. Les fonctions de Z et a sont les mêmes que dans le cas d'une surface de catégorie 1. En-conséquence, une machine à commande numérique comportant les cinq axes définis ci-dessus est capable de quadriller indifféremment des surfaces de catégorie 1 ou 2. La figure 6 représente schématiquement un dispositif de mesure de la position et de l'angle de la surface pour les besoins des servomécanismes de commande des axes Z et a. Deux petits palpeurs 15 sont montés de part et d'autre du plan de la fraise 10 et sont déplaçables sur des axes proches de la verticala. Cés palpeurs sont associés à des transducteurs de position T1 et T2 qui peuvent être de petits transformateurs à ncyau mobile, par exemple du type 24DCDT-050-Bl2 commercialisé par la société Hewlett Packard. Chaque transducteur fournit un signal électrique proportionnel au déplacement du palpeur associé par rapport à sa position de repos. Les deux palpeurs 15 suivent la surface de la pièce 11' de part et d'autre de la fraise 10 pendant toute la durée de la passe. La figure 7 représente l'emploi des signaux de position des palpeurs pour la mesure de la profondeur (Z) et de l'inclinaison (a) de a fraise. Dans la position représentée, les palpeurs 15 sont en contact avec la surface lla d'une pièce 11" l'un au-dessus et l'autre audessous d'une ligne de référence LR qui définit à la fois la profondeur et l'inclinaison correctes de la fraise pour obtenir le profil désiré. Les déplacements des palpeurs 15 par rapport à la ligne LR sont respectivement t1 et t2. On peut calculer la somme algébrique de ces deux déplacements : #Z = tl + t2, qui est proportionnelle à l'erreur de profondeur. On peut également calculer la différence algébrique Aa = tl - t2 > qui est proportionnelle à l'erreur d'inclinaison. Lorsque les grandeurs nZ et ta sont toutes deux annulées par 11action continue des servomécanismes des axes Z et a, la fraise 10 est dans la position correcte par rapport à la surface lla, quelles que soient la courbure, les variations normales dans les tolérances ou les autres anomalies superficielles. Les figures 8 et 9 illustrent en détail une forme préférée de la machine à quadriller de la présente invention. Le banc 18 de la machine définitun axe Y sur lequel se déplace un chariot 20 qui porte des glissières transversales d'axe X pour un second chariot 25. Les mouvements le long de l'axe Y sont commandés par une vis-mère 21 qui tourne dans un écrou à billes 22 solidaire du dessous du chariot 20, la vis 21 étant entraînée en rotation par une transmission à chaîne 23 et un moteur électrique 24. De même, les mouvements le long de l'axe X sont commandés par une vis-mère 26 tournant dans un écrou à billes 27 solidaire du chariot 25, la vis 26 étant entraînée par une transmission à chaîne 28 et un moteur électrique 29. La pièce 11''' représentée en traits mixtes est dans ce cas le Bt d'un fusil de chasse qui est monté entre des pointes de centrage 33 et 34 portées par un berceau 35. Ce berceau est monté sur un tourillon vertical 36 tournant dans un palier vertical 37 porté par le chariot 25 de l'axe X. Le berceau, 35 peut être indexé en différentes positions angulaires préalablement définies par des butées, puis il est verrouillé en place au moyen d'un cylindre à fluide 36 bloquant le tourillon 36 par l'intermédiaire d'un levier 39. La rotation de la pièce li''' est commandée par une roue 42 engrenant avec une vis tangente 43 qui est accouplée à un moteur électrique 44 assurant le positionnement sur l'axe ss. Les superstructures de la machine comprennent une potence 48 qui est positionnée verticalement le long de l'axe Z par un moteur électrique 49 dont la rotation est transmise par une chaîne 50 et un pignon 51 à une vis-mère verticale 52 tournant dans un écrou à billes 53 solidaire de la partie verticale de la potence 48. Pour un guidage vertical précis, la potence est équipée de roulements de translation prenant appui sur une colonne verticale 56 solidaire du banc 18. Une butée axiale 57 montée sur le banc supporte la charge considérable que représente la potence 48 et les différents organes qu'elle porte. Pour des raisons de productivité de la machine > il est préférable utiliser alternativement deux outils différents. Le premier outil est une fraise disque 10 du type précédemmentmentionnF qui est en position de travail sur la figure 9 et le second outil est une fraise de graveur 60 qui est en position de travail sur la figure 8. Les outils 10 et 60 sont de préférence entraînés par des moteurs pneumatiques indépendants, la fraise 10 tournant à environ 60 000 tr/mn et la fraise 60 tournant à environ 200 000 tr/mn. L'inclinaison autour de l'axe a est réalisée par le montage des deux outils et de leur moteur sur une tête 67 qui est mobile sur un arc de cercle (mieux visible sur les figures 10 et 11, à l'exoeption des transducteurs T1 et T2). La tête 67 comporte une paire de rails semicirculaires 68a et 68b sur lesquels roulent des paires de galets de guidage opposés respectivement 69a et 69b, portées par un étrier 70 qui est monté à l'extrémité du bras horizontal de la potence 48. La tête 67 est complétée par une structure de montage 71 qui est fixée transversalement etitre les rails 68a et 68b par des vis 72a, 72b et 73a, 73b. Une ferrure 74 fixée à la traverse supérieure 71a de la structure 71 porte un vérin pneumatique 75 qui est articulé sur des tourillons 76a, 76b. De même, le moteur pneumatique 62 est monté entre la traverse inférieure 71b et un bossage intérieur 77 sur des tourillons 78a, 78b. La tige de piston 75a du vérin 75 est reliée par une chape 82 à un bras 82a solidaire du moteur 62. Le vérin 75 peut ainsi commander le basculement du moteur 62 autour de ses tourillons soit vers sa position de travail représentée sur la figure 9, soit vers une position d'escamotage latéra3ereprésentée sur la figure 8.Un autre vérin pneumatique 83 (figures 8 et 9 est alimenté à l'inverse du vérin 75 pour faire détendre la fraise de graveur 60 contre la pièce 11''' lorsque la fraise 10 est en position escamotée (figure 8), et pour rétracter verticalement la fraise 60 lorsque la fraise 10 est en position de travail (figure 9). La figure 9 montre les deux transducteurs inclinés T1 et T2 qui comprennent des transformateurs 86a, 86b, dans lesquels coulissent des tiges d'armature 87a, 87b guidées par des portées linéaires 88a, 88b sur des supports 89a, 89b vissés à la structure 71. Les palpeurs 15 qui sont fixés aux extrémités des tiges 87a, 87b, suivent la 'surface de la pièce à proximité immédiate de l'outil et de port et d'autre du point d'attaque pour mesurer l'angle d'inclinaison a et la profondeur Z par rapport à la surface réelle de la pièce, comme décrit précédemment. La tête 67 et les dispositifs qu'elle porte sont orientables angulairement au moyen d'un secteur denté 92 qui est boulonné à l'intérieur du rail 68a et sur lequel engrène un pignon conique 93 entraîné par un moteur d'inclinaison 95 par l'intermédiaire d'une transmission à chaîne 94. Dans un but de sécurité, il est important' que la'tête 67 soit verrouillée pour éviter tout mouvement intempestif lorsque le moteur 95 n'est pas alimenté. Â cet effet, la tête est équipée d'un frein électromagnétique 97 qui est monté au-dessus du pignon 93 et qui agit sur son arbre 93a. Le frein 97 est commandé par le circuit d'alimentation électrique du moteur d'inclinaison 95 de façon à assurer le verrouillage de la tête en cas de coupure de l'alimentation du moteur. Un second frein électromagnétique analogue au frein 97, mais non représenté sur les figures, est prévu pour verrouiller le mouvement vertical de la potence 48 en cas de coupure de l'alimentation du moteur d'axe Z 49 car les frottements de l'écrou à billes 53 sont insuffisants pour retenir la potence. Pour faciliter la ccoOande numérique des différents axes, tous les moteurs de positionnement sont des moteurs pas à pas de type courant. En pratique, on pourra utiliser des moteurs fabriqués par la Société U.S.M. Corporation, du modèle HDM-1600-800-4 pour les axes Y (24), Z (49) et a (95),et du modèle HDX-150-800-4 pour les axes X (29) et 56 (44). A titre de simplification, la description qui précède n'envisage que des cas géométriques dans lesquels les surfaces à quadriller sont assimilables soit à un plan soit à un cylindre. Dans ces cas simples, les lignes de base du motif peuvent être dessinées sur une feuille de papier qui est ensuite appliquée sur les surfaces planes ou enroulée autour des surfaces cylindriques. Dans la plupart des cas, les surfaces réelles présentent des déformations qui doivent être corrigées par le système de commande numérique pour réaliser des reproductions suffisamment fidèles. De telles déformations sont illustrées sur les figures l2Â à 12D qui représentent des surfaces de la poignée pistolet d'une arme. Les figures 12B et 12C sont des sections de la crosse respectivement dans les plans 12B-12B et 12C-12C montrant l'étendue de la surface quadrillée. Sur la figure 12A, on voit que le quadrillage est constitué de deux réseaux de lignes parallèles a et b. Une section le long de la ligne al (figure 12D) montre les déformations introduites par la projection simple d'intervalles réguliers d'une droite sur une courbe quelconque. Dans ce cas', le pas uniforme des lignes du réseau b n'est plus uniforme après projection sur la surface courbe de la crosse. En fait, l'intervalle entre deux lignes adjacentes du réseau b augmente comme le facteur 1/cos p, si est l'angle d'inclinaison de la surface par rapport à l'horizontale.Cette distorsion géométrique peut être'corrigée par une manipulation convenable des mouvements latéraux x et des mouvements d'avance ffi au niveau du programme de commande. Un second type de déformation géométrique est illustré sur la figure 12E. La section est toujours faite le long de la ligne al, mais concerne cette fois les lignes du réseau a. La position de la fraise 10 est représentée schématiquement au moment où son centre est juste à la verticale de l'extrémité de la ligne al. Comme le montre la figure, la ligne taillée sera trop courte dans le sens de la "descente" d'une valeur égale à r sin , r étant le rayon de la fraise et q l'inclinaison de la surface par rapport à l'horizontale. Cette distorsion peut être éliminée par une correction convenable de la longueur programmée de chaque ligne le long de l'axe d'avance Y. D'autres distorsions similaires peuvent apparaître sur des surfaces assimilées à des surfaces cylindriques lorsque le tracé réel s'écarte trop de la forme idéale. Certaines surfaces à quadriller peuvent par exemple être coniques ou ellipsoidales. Dans ce cas, étant donné qu'il est souhaitable de conserver la synchronisation des mouvements X et Y préeédemment définis, la correction peut être introduite par une modification convenable de la rotation à partir de la valeur obtenue par la relation simple de proportionnalité-inverse au rayon de la pièce. Les méthodes mathématiques utilisées pour la correction des distorsions seront décrites eg détail ci-après. Les lignes de bordure posent des problèmes particuliers car leurs courbures sont très variables, comme illustré figure 1A. La section des lignes de bordure est généralement la mène que celle des stries de quadrillage. Pour l'usinage des lignes de bordure, il est généralement préférable d'utiliser une fraise de graveur pointue travaillant perpendiculairement, comme la fraise 60 des figures 8 et 9. Une telle fraise est beaucoup moins efficace que la fraise-disque 10 utilisée pour les réseaux de quadrillage, peis elle permet de suivre les contours sinueux des bordures. De toute manière, la fraise 60 est commandée par le même système de détection et les mènes servomécanismes de profondeur et d'inclinaison que la fraise 10. Le programme de commande tant pour le fraisage des stries parallèles que'pour le fraisage des lignes de bordure est essentiellerent un programme de contournage classique. La figure 13 est un schéma synoptique d'ensemble du système de la présente invention. Les informations de description du motif sont codées sur une bande de programme 105, de préférence une bande perforée préparée par un périphérique de sortie 101 d'un ordinateur principal 102. Les données définissant le motif peuvent être introduites dans l'ordinateur par un périphérique graphique 103 ou sous une forme plus classique, telle que des cartes perforées ou une bande perforée. Une table traçante 104 fournit une représentation visuelle du motif en cours de gravure. L'exécution du notif est comndée par un second ordinateur 108 réservé à cet usage et qui peut commander en temps partagé un certain nombre de machines-outils 109a, 109b....(dont deux seulement sont représentées) par l'intermédiaire de circuits d'interface 111a, 111b.... La bande de programme 105 est lue par un lecteur 110 de l'ordinateur 108 qui reçoit également des signaux des servomécanismes ll2a > 112b associés aux paires de transducteurs T1, T2 et T'1, T2 dont les palpeurs respectifs 15 et 15' suivent la surface de la pièce. Comme on l'a vu plus haut, la bande de programme 105 contient toutes les informations de description du motif à exécuter, y compris les fonctions de correction décrites en regard des figures 12A à 12E. Sur la base de ces informations, le système d'exécution assure les fonctions générales suivantes 1) Traitement, interprétation et présentation du contenu de la bande 105 sous une forme utilisable par les servomoteurs 24, 29, 44, 49 et 95 des différentes machines 109a, 109b.... 2) Traitement et conversion en signaux de commande des informations de position reçues des circuits 112a, 112b. 3) Commande des différentes fonctions auxiliaires telles que l'alimentation en air comprimé des moteurs pneumatiques 62 et 63 d'entraînement des fraises. Les signaux de retour reçus par l'ordinateur 108 n'indiquent que l'existence et le sens d'une erreur sans information de valeur ni de durée. La commande des machines est cependant assurée par divers algorithmes programmés dans l'ordinateur 108 pour utiliser les informations fournies par les circuits d'asservissement 112a, 112b. Ces algorithmes sont'de-complexité variable et réalisent aussi bien une simple fonction de commande tout ou rien qu'une moyenne cumulative minimisant les effets du bruit et du système, ou qu'une commande relativement élaborée basée sur l'intégration des erreurs. Dtuns matière générale, l'algorithme de commande dépend de caractéristiques du système, telles que l'inertie mécanique et la vitesse des organes mobiles, ainsi que de diverses considérations du même type. Avant d'entrer dans le détail du programme de commande numérique, certains aspects des fonctions de commande vont être décrits en regard des figures 14A, 14B, 15A et 15B. L'interface de sortie de l'ordinateur 108 et des différents moteurs d'une machine est représentée schématiquement sur la figure 14A qui montre également l'un des moteurs pas à pas associé à l'axe Y. 0a sait qu'un moteur pas à pas avance d'un incrément angulaire fixe en réponse à chaque impulsion électrique fournie par son circuit de conversion 115 qui, dans le cas présent, est intégré au système de commande. Le sens de la rotation du moteur pas à pas est fonction de l'entrée de son convertisseur à laquelle l'impulsion de commande est appliquée. Dans le système de la figure 14A, un mot d'ordinateur (par exemple de 12 bits) est introduit dans un registre tarpon de sortie 116 associé à plusieurs convertisseurs tels que 115. Les dix premiers bits du mot sont divisés en 5 paires fournissant chacune les impulsions de commande d'un moteur tel que 24. Ainsi, les bits 1 et 2 commandent le premier moteur, les bits 3 et 4 le second moteur, et ainsi de suite.En pratique, l'un des bits de chaque paire, par exemple celui dont le numéro est impair, est appliqué à l'entrée positive du convertisseur 115, l'autre bit de la même paire étant appliqué à l'entrée négative du convertisseur. L'ordinateur 108 fournit des mots de sortie à une fréquence suffisante pour maintenir la vitesse voulue des moteurs. L'ordre des bits dans chaque mot de sortie détermine donc si chaque moteur de la machine doit avancer d'un incrément, reculer d'un incrément ou rester sur place. La figure 14B représente une configuratiqn type de mots binaires pour la commande simultanée de cinq moteurs. Les deux derniers bits numérotés 11 et 12 sont décodés pour accomplir des fonctions auxiliaires telles que la aise en marche du moteur de fraise, etc. L'ordinateur d'exécution 108 est généralement un mini- ordinateur de type courant-utilisant par exemple des mots de 12 bits avec une capacité de mémoire de 8000 mots et une possibilité de travail en temps partagé pour la commande d'au moins 5 axes machine. Le lecteur de bande 110 peut être un lecteur photoélectrique type RRS1150 commercialisé par la Société Re > 'ex. Le figure 15A représente l'un des circuits d'asservissement de profondeur et d'inclinaison. On a vu précédemment en regard de la figure 7 que les commandes de profondeur et d'inclinaison étaient basées sur des calcul de somme et de différence des signaux des transducteurs T1 et T2. La figure 15A représente un circuit analogique permettant d'effectuer ce calculs. Les palpeurs 15 agissent mécaniquement sur les noyaux de transformateurs linéaires T1 et T2. Les sorties des transducteurs sont appliquées d'une part à un amplificateur opérationnel de somme 117 fournissant le signal de commande de profondevr, et d'autre part un amplificateur opérationnel de différence 118 fournissant le signal de commande d'inclinaison. Les sorties des amplificateurs 117 et 118 sont appliquées à des détecteurs de niveau 119, 119' qui peuvent être fournis avec l'ordinateur de commande (Digital Equipment Corporation) et dont les sorties sont représentées (figures 15B) pour un niveau d'entrée variant linéairement.Les deux sorties de chaque détecteur prennent ainsi successivement les trois états suivants : haut (ou à gauche), bas (ou à droite) et correct (zéro). La largeur relative de la région "zéro" (ou plage morte) est réglable pour optimiser la sensibilité du système. Les sorties "haut" et "bas"-sont appliquées sous la forme de signaux d'interruption à l'ordinateur 108 pour demander une correction de la position de l'axe Z (profondeur). De même, les signaux de l'autre détecteur de niveau provoquent des corrections d'inclinaison sur l'axe a. La sensibilité de ces circuits est réglée de telle manière que les écarts qui commandent les corrections nécessaires soient largement en deçà des tolérances de profondeur et d'inclinaison. Des potentiomètres associés aux détecteurs 119 et 119' permettent d'ajuster les niveaux zéro des axes Z et a. Les processus mathématiques et informatiques auxquels fait appel le système de l'invention doivent remplir deux tâches différentes d'une part la préparation indépendante de la bande de programme 105 sur l'ordinateur 102, d'autre part la commande directe des machines 109a, lO9b... par l'ordinateur d'exécution 108 à partir du contenu de la bande de programme 105 complété par les informations de retour des circuits de positon 112a et 112b. A ces deux tâches correspondent deux programmes informatiques doués ci-après avec leurs organigrammes simplifiés. Pour illustrer les traitements géométriques de tous les motifs' on prendra comme exemple le motif plan de la figure lA. Cette simplification est admissible car un motif plan est d'une part utilisable, avec les corrections voulues, pour les surfaces approximativement planes (çatégorie 1) et d'autre part pour les surfaces assimilables à des cylindres (catégorie 2) par un "enroulement" du motif et des corrections convenables. Un motif plan est caractérisé par les données suivantes (1) Définition des deux réseaux de lignes génératrices par leur pas, l'allongement des losanges et les extrémités des lignes. (2) Définition de la bordure par les extrémités de chaque ligne des deux réseaux. Il est pratique pour la préparation mathématique de la bande de programme 105 et essentiel pour le fonctionnement de la machine > dechoisir des systèmes de coordonnées différents pour les deux réseaux de lignes. Dans ce cas, le premier axe Y est parallèle aux lignes du réseau considéré et le second axe X est orthogonal. Chaque segment de ligne peut ainsi être défini par trois coordonnées, à savoir une valeur x et deux valeurs y pour chacune de ses extrémités. Les valeurs x successives d'un réseau non modifié sont en progression arith@étique avec une raison égale au pas du réseau de lignes. Les valeurs y représentatives des points de la ligne de bordure peuvent être déterminées par un tracé point à point manuel ou mécanique. Dans d'autres cas, il est préférable de représenter les bordures par des expressions mathématiques des formes suivantes (1) Une équation linéaire représentant une droite (qui est ou qui n'est pas l'une des lignes génératrices). (2) Un polynôme de degré 2 ou 3 (X = a + by + cy2 + ....). (3) Un système d'équations paramétriques de degré 2 ou 3 (x = a + b/u + c/u2 + ... et y = e + f/u + g/u2 + ...). En général les bordures utilisées pour un réseau de lignes deviennent les bordures de l'autre après transformation des axes de coordonnées 8 condition.que les origines des deux systèmes d'axes coincident. Ainsi, étant donné xa = f(ya); si l'on veut connaître Xb = g(Yb) après une rotation de l'angle ss, il suffit d'appliquer les équations suivantes xb = ya sin ss + xa cos yb = ya cos ss - xa sin ss xa, ya et xb, yb étant les coordonnées respectives des axes pour les réseaux de lignes a et b. Les unités utilisées pour la description des lignes génératrices peuvent être quelconques car la conversion finale des impulsions en incrémentsde rotation des moteurs se fait dans l'ordinateur 108. Dans le cas d'un motif dont les bordures sont simplement les lignes extrêmes des réseaux, il est pratique de choisir commeunité de longueur le côté d'un losange avec des axes de coordonnées parallèles aux lignes des réseaux. Sur la figure 16, les axes de coordonnées i et j se coupent à l'origine. Les extrémités de chaque ligne peuvent être définies par leurs coordonnées i et i. On peut par exemple donner les coordonnées des points extrêmes du motif de la figure 16 de la manière suivante:: Point "i" "j" a -5 -1 b -5 +5 c +1 +5 d +5 +1 e +5 -5 f -1 -5 Un programme simple permet de passer des coordonnées i, j aux coordonnées "réelles" x, y par application des relations suivantes X =is a = = i s/sin ss + i/tg ss dans lesquelles i, j sont les coordonnées entieres des points exprimées en unités égales à un côté de losange, ss est l'angle des réséaux, s le pas des réseaux, xa, y les coordonnées correspondantes sur les axes réels utilisés pour le premier réseau de lignes. Les coordonnées xb, yb des points du second réseau peuvent êtredéterminées d'une manière similaire ou par une rotation des axes, comme décrit précédemment. Un'motif cylindrique peut être développé et décrit de la même manière qu'un motif plan en se rappelant que l'axe y devient une tonction composée des mouvements X, Y et # de la machine confornément aux relations généralisées suivantes X = Y/D = = kY 1 + l/D2 SL, X et Y étant les coordonnées machine, r étant le rayon de la pièce au point d'attaque et D étant le rapport d'allongement des losanges. Les modifications à apporter aux motifs plans ou cylindriques pour tenir compte dans chaque cas des écarts par rapport aux surfaces idéales peuvent être basées sur des règles connues de dessin des contours ou sur l'analyse directe des surfaces complexes. bans les deux cas, il est pratique d'exprimer ces modifications sous la forme de fonctions cubiques de l'avance du chariot 20 le long de l'axe Y, cette coordonnée étant généralement prise comme variable indépendante. dyldt = a V y x = b + cY + dY + dX dY (@ + 2dY + 3@Y2)@ dY dT = c' + d'Y + dt De même, pour un motif approximativement cylindrique d# = g' + h'Y + i'Y dt dy = @ = Y dt y dx dX = y/D, cette dernière relation étant tirée de l'équation dt (5) ci-dessus. Les mouvements de l'outil par rapport à l'axe vertical (Z) et à l'axe d'inclinaison (a) sont dans tous les cas commandes par les servomécanismes de profondeur et d'inclinaison pendant les passes d'usinage et pendant l'approche initial (c'est-à-dire pendant la descente de l'outil), les autres mouvements étant commandés d'après le programme. On sait qu'il est possible d'obtenir une excellente approxiration d'une courbe quelconque en la décomposant en un certain nombre de segments assimilables à des segments de cubiques. Cette théorie mathématique a été développée par le Professeur Steven A. Coons du Massachusetts Institute of Technology (pour plus de détails, le lecteur se reportera au Memorandum MAC-M-253 du NIT Electronics Systems Laboratory). Sur la bande de programme 105, les données sont présentées sous la forme de blocs d'information longs ou courts selon la quantité de données qu'ils contiennent. Chaque bloc long contient toutes les informations nécessaires pour la reconstitution d'un segment ou d'une passe complète de courbe cubique. Le format d'un bloc long est le suivant N de séquence. Nombre d' incrémentscubiquoe pour l'exécution de la passe ou du segment. Troisième coefficient différentiel pour le premier axe machine (X). Second coefficient différentiel pour le premier axe machine (X). Premier coefficient différentiel pour le premier axe machine (X). Troisième coefficient différentiel pour le second axe machine (#). Second coefficient différentiel pour le second axe machine (#). Premier coefficient différentiel pour le second axe machine (St). Troisième coefficient différentiel pour le.troisième axe machine (Z). Second coefficient différentiel pour le troisième axe machine (Z). Premier coefficient différentiel pour le troisième axe machine (Z). Troisième coefficient différentiel-pour le quatrième axe machine (a). Second coefficient diffdrentiel pour le quatrième axe machine (a). Premier coefficient différentiel pour le quatrième axe machine (a). Troisième coefficient différentiel pour le cinquième axe machine (Y). Second coefficient différentiel pour le cinquième axe machine (Y). Premier coefficient différentiel pour le cinquième axe machine (Y). Caractère de fin de bloc. Les techniques de progra-ation s'accomodent mieux de l'emploi répétitif d'un bloc de codage commun successivement pour chaque axe de la machine > étant entendu que les axes dont les algorithmes sont linéaires (troisième axe (Z) et quatrième axe (a) de la machine) ont des second et troisième coefficients différentiels nuls, ce qui permet de respecter un format de calcul standard. Les blocs courts contiennent les rimes informations que les blocs longs, à l'exception des second et troisième coefficients différentiels, c'est-à-dire qu'un bloc court ne peut définir qu'un segment rectiligne. Leur numéro de séquence est en outre nul. Le programme utilise en outre des blocs courts "spéciaux" portant des numéros de séquence négatifs (et fictifs) dont les significations sont par exemple les suivantes : -2 indique une remontée de l'outil, -1 indique un déplacement de l'outil au début d'une nouvelle ligne, -3 indique une descente de l'outil, 4 indique une modification d'une ou plusieurs fonctions auxiliaires. En ce qui concerne ce dernier numéro de séquence, il est évident qu'à la place des coefficients différentiels normaux, la bande 105 porte des codes spéciaux de commande des fonctions auxiliaires (par exemple 00 = arrêt général ; 0,1 = ouverture de l'air ; 10 = changement d'outil ; 11 = changement de position de la pièce) En ce qui concerne la programmation de l'ordinateur 102 pour la préparation de la forme de programme 105 on se référera auxprogrammes et aux organigrammes annexés. L'ordinateur est de préférence un Univac 1108, mais on peut également utiliser un General Electric 4020 ou équivalent. Le langages de progrEmantion est le FORTR6N. Les organigrammes es A et B correspondent au programme de réduction des données dont certaines instructions ont été reprises pour identifier les blocs fonctionnels. En ce qui concerne l'ordinateur d'exécution 108, on utilisera de préférence un ordinateur Digital Equipient Co. PDP-8 et son code spécial PAL. Les organigrammes C, D, E et F correspondent au programme d'exécution. Comme décrit précédemment, chaque étape d'une passe de fraisage consiste à appliquer à chaque moteur un nombre déterminé d' impul- sions (voir organigramme C bloc R2). Ce comptage est généralement différent pour chaque moteur et peut aller de O à 100 ou plus. A la fin de chaque période, les moteurs pour lesquels il reste un coite positif reçoivent chacun une impulsion du signe voulu et le compte correspondant est réduit d'une unité, (voir organigramme F, bloc CNTDWN). Ce processus se termine lorsque tous les comptes sont revenus à zéro, c'est-à-dire lorsqu'il ne reste plus aucun moteur actif,(voir organigrae F, bloc CHKl). La nécessité de compter le nombre de moteurs actifs au début de l'opération, d'enregistrer ce nombre et de le transmettre ensuite au programme auxiliaire (organigrammes D, E et F) peut être évitée par l'algorithme suivant qui utilise la même section de programme que pour les opérations de comptage décrites ci-dessus. (1) Avant le début de l'opération, la valeur entière absolue de la première différence de position de chaque moteur, plus une unité arbitraire, est introduite dans le compteur d'impulsions de ce moteur (organigramme C, bloc R2). (2) A la fin de l'opération, le nombre de moteurs actifs est supposé égal au nombre total de moiteurs, c'est-à-dire cinq (organigramme F, bloc TF 2 + 4). (3) Sans actionner aucun des moiteurs, les comptes individuels sont réduits d'une unité pour supprimer l'addition arbitraire du paragraphe (1) ci-dessus. Si l'un des comptes devient nul, le nombre de moteurs actifs est réduit d'une unité (organigramme F, bloc TF 2 + 5 qui renvoie au bloc CNTDWN, de la même page). Au début d'une opération, pour abaisser l'outil contre la surface de la pièce (organigramme E, bloc CTEC + 6), 1 'inclinaison de l'outil est initialement celle du dernier point de la passe précédente. En pratique, l'écart d'inclinaison peut atteindre plus de 600. De ce fait, et compte tenu des vitesses relatives sur l'axe de profondeur (Z) et sur l'axe d'inclinaison (a), il peut se faire-que l'inclinaison correcte ne soit pas encore atteinte au moment où l'outil arrive à la profondeur spécificiée. Pour éliminer cet inconvénient, on peut utiliser la séquence répétitive suivante (1) S'il y a une erreur d'inclinaison, appliquer au moteur correspondant une impulsion de sens convenable,et et rien de plus pendant cette période. (2) S'il n'y å pas d'erreur d'inclinaison et une erreur négative de profondeur indiquant que l'outil est trop haut, appliquer au moteur correspondant une impulsion positive pendant cette période. (3) Outil n'y a pas d'erreur d'inclinaison et une erreur de prlofon- deur nulle ou positive, la descente de l'outil est terminée. Après le positionnement vertical de I'outil, le programme de commande peut traiter le bloc suivant de la bande 105 qui commande normalement une avance de l'outil le long de la surface de la pièce. il est évident que la description précédente et les éléments informatiques ci-après ne sont donnés qu'à titre d'exemple d'un mode de réalisation du système de l'invention, et qu'ils ne doivent en aucun cas être considérés comme des limitations de la portée de l'invention. En ce qui concerne les différents calculs, on considère que ieur complexité rend souhaitable l'emploi de l'ordinateur, mais tout autre moyen de calcul peut être utilisé. C PROGRAMME DE PREPARATION DE LA BANDE DE COMMANDE C POUR QUADRILLAGE AUTOMATIQUE C CODE FORTRAN C PROGRAMME PRINCIPAL COMMON /PCP/NSECT.NARC,TAB(30,8,7) COMMON/SUM/SUMLGT COMMON/PATSP/F6 COMMON/CUTSP/NCUT.STRLGT COMMON/P1/CL(5).C2(5).C3(5).C4(5) COMMON/ADJSTR/RWXM10.RWYMID,RWXSCL,RWYSCL,R2 COMMON /END/ENDPT(5).X2ERO(5) COMMON /ENC2/IFNC COMMON/DPN/SLOPF(2,5),FVAL(5),HVAL(5),SLP(5).SL COMMON/CTM/SAVE(5).(5).D(5),STO COMMON/MAIN/X)(10000).Y(1000), STRGL(1000), ICRT, NOP, 1 DIH(1000),TLT(2000),A(1000) COMMON /CUTN/ICUT,NU,NDIC.VFNO(5) ICUT = 0 C INITIALIZE STORAGE FOR ABSOLUTE POSITIONS KFY4 = 1 SUMLGT = 0.0 C PARAMFIERS AND INITIAL VALUES TO RF FNTEPED C ARE AS FOLLOWS C RWXMID, RWYMID=COORDINATES REPRFSENIING PIVOT POINT C OF CARRIACF PROJECTED ON TO PATTERN C RWXSCL,RWYSCL = SCALE FACTORS ( +1.0 OR -1.0 ONLY) TO C CONTROL GENERATIC# OF MIPROR IMAGE PATTERNS C R2 = RADIUS OF THE WORK PIECE, IF IT IS C A RIGHT CIRCULAP CYLINODER ROTATED ABOUT C ITS AXLS. READ(5. 9123) RWXMID.RWYMID.RhXSCL,RhYSCL,BhYSCL,R2 WRITE (6.9122) 9122 FORMAT(' RAW X MID RAW Y MIC XSCALF YSCALE', 6X, 1 10X. 'R2') WRITE(6,9123)RWXMIO,RWYMID,RWXSCL,RWYSCL, RWVSCL,R2 9123 FORMAT (6F10.5,10x.F10.5) 923 FORMAT (70x.F10.5) REAO (5,9231 F6 WRITE (6.923) F6 C F6 = 1.0 IF THE WORK PIFCE IS A CYLINDFR AS RBOVE C F6 = 2.0 IF PARAMTERS WILL BE READ CEFINING A C GENERAL THRFE DIMENSIONAL SURFACE AS A PLURALITY OF C CROSS SECTIONS PERPENDICULAR TO THF AXIS OF ROTATION. C EACH SUCH CROSS SECTION BEING DEFINED AS A PLURALITY C OF CIRCULAR ARCS. THE SURFACF BEIWEEN CROSS SECTIONS C IS TO BE INFFRRED BY LINEAR INTERPOLATION (SEE C SUBROUTINF CONV). C NSECT=NO. OF CROSS SECTIONS C NARC=NO. OF CIRCULAR ARCS AT EACH SECTION + 1 C TAB(I.J.K.)=TABLE CF COEFICIEATS IN WHICH C I=THE SEOUENCE NO. OF THE SECTION C J=THE SEOUENCE NO. CF THE APC C WITHIN THE I SECTION C K=THE BARAMETER NO. C K=L=OISYANCE DF SECTION (1) FROM THE ORIGIN C MEASURED ALONG THF AxI5. (WILL BE FOUAL C FOR ALL ARCS WITHIN A SECTION) C K=2=RADIUS OF ARC(T,J) C K=3=XC COORDINATES OF CFNTER OF ARC C K=4=ZC MEASURED SUCH THAT XC, ZC AND THE AXIS C OF ROTATION ARE MUTUALLY PERPENDICUL AR C K=5= MINIMUM PATTERN X, WHICH LIES c ON THIS ARC,-USUALLY C CORRESPONDS WITH A PDINT OF C TANGENCy C K=6= MINIMUM PROJECTED X CORRFSPONDS TO X IN 5 C K=7= Z CORRESPONOING TO X IN 5 ANO 6 C BY PROJECTED X IS MEANT A DISTANCE MEASUREO PARALLEL C TO THE X AXIS. C BY PATTERN X. IS MEANT A DISTANCE MEASURED ALONG THE C CURVED SURFACE OF THE WORK PIECE, AWAY FROM THE POINT C AT WHICH THE PROJECTED X=O C THE VALUES FOP K=5,6, AND 7, THO hCT NECESSARY, C ARE CARRIED TO SIMPLIFY THE PROGRAM, EG, IT IS NOT C NECFSSARY TO (AGAIN) SOLVE FOR THE INTERSECTION (OR C POINT OF TANGENCY) OF SUCCESSIVE ARCS TO OETERMINE C WHICH ARC d POINT ON THE SURFACE SHOULD APPEAU UPON. C AFTFR THE LAST REAL ARC IN EACH SECTION THERE WILL BE C ONE FICTITIOUS ARC. THE ONLY SIGNIFICANT VALUE FOR C THIS ARC WILL BF FOR K=5, WHICH WILL INCICATE AN UPPER C DOUND ON THE FXTENT nF THE PATTERN (PAITERA X) IF (F6 .LT. 1.5) GO TO 1902 RFAD(5.1901) NSECT,NARC WRITE(6.1901) NSECT,NARC 1901 FORMAT (415) READ (5.1900)(((TAB(I,J.K),K=1.7),J=L,MARC),I=I,NSECT) WRITE(6.1903)(((TAB(I.J.K),K=1.7),J=L,NARC),I=I,NSECT) 1903 FORMAT (7F15.7) 1900 FORMAT (7F10.5) 1901 CONTINUE C ENDPT(I). T = 1.5 REPRESENTS THE ASSUMED STARTING PT C STORFD AS THE END POINT, OF A FICTITIOUS C PRFVIOUS CUT. C READ (5,900) (ENDPT(I).I=1.5) CALL CONV(ENDPT(1),ENDPT(2).ENDPT(3),ENDPT(5)) WRITF(6,900) (ENDPT(I).I=1.5) DO 17 I = 1.5 CI(I) = ENDPT(I) 17 XZERO(I) = ENDPT(I) C THE DATA DESCRIBING THE POINTS ALONG C A CUT ARE READ, IN SUBROUTINE CRIT, AS C X(I), Y(I) = PLANE COCROINATES C DTH(I).TLT(I).A(I)=TOOL DEPTH,TILT,AND PIECE ROTATION C ANGLE. THFSF ARE ALWAYS ZERO EXCEPT WHEN A SPECIAL C RUN IS BEING MADE TO GENERATE ARBITRARY (FEED FORWARD) C MOTIONS FOR USE IN INITIAL POSITIONING, CLEARING C OBSTRUCTIONS. ETC. C NOTE - SUBROUTINE COTONS, GENERATES - CEPTH C MOTION (TOOL - UP) BETWEEN CUTS. SUBROUTINE C CONV GENERATES PIECE ROTATION ANGLES, WHFN C PIECE ROTATION IS TO BE EMPLOYED (SEE PARAMETERS R2 AN C 1 D F6 ABOVE) 900 FORMAT (8F10.5) I = 80 II = 0 WRITE(7.321 (I.K=1,34),(I.II 32 FORMAT (3412.211) 30 DO 16 1=1.5 16 SAVE(I) = 0.0 955 FORMAT (100X,llHCeT NUMBER ,15) IO = 0 ll CALL CRIT (IO.IEND) C TEST FOR END OF ALL DATA IF (IEND .FO. 1) GO TO 10 NPSAVF = NOP NCRIT = ICRT NSUM = 0 lF (KFY4 .EO. 2) WRITE(6,950) IQ.ICRT,NOP 950 FORMAT (lOX.3HI1=.12,5X.5HICRT=.12.5X.4HNOP=,14) 70 IF (ICRT NF. -1) GO TO 71 SLS = STRGL (NOP) NPOLD = NOP NOP = NPS#VF - NSLM NR = NOP + 1 DO 72 1 = X(1) = X(NPOLD+I-l) Y(1) = Y(NPOLD+I-l) A(1) = A(NPOLD+I-l) DTH(I) = DTH(NPOLD+I-l) TLT(I) = TLT(NPOLC+I-l) 72 STRGL (I) = STRGL(APCLD+I-l) - SLS 71 CONTINUF 81 NSS = NSUM + NOP IF (NSS. EO. NPSAVE) ICRT = NCRIT C COMPUTF RATE OF C@ANGE OF EACH VARIABLE WITH RESPECT C TO CUT LENGTH, AT EACH END OF CUT OR CUT SEGMENT CALL PANDSI (IQ) KOUNT = 0 90 CONTINUE IE(KFY4 .EO.I) GC TO 753 WRITE(6.952) HVAL WRITE(6,953) ((SLCPE(I,J),J=1.5),I=1,2) 753 CONTINUE 951 FORMAT (5X.4HFVAL.IIX.6F16.8) 952 FORMAT (5X.4HHVAL.IIX.6F16.8) 953 FORMAT (5X.5HSLOPF.10X.5F 16.8) 954 FORMAT (5X.4HSTO=,E12.6) C C COMPUTE NORMAL CUBIC COEFFICIENTS nO 14 t = 1.5 B(I) = SLOPF(I.I) D(I) = (100.*(SLOPE(I.I)+SLOPE(2.I))-2.*HVAL(I))/ 1 1000000. C(I) = (HVAL(I) -100.*SLOPE(I.I)-1000000.*D(I))/10000. IF(ABS((I)).GT. 0.00000001 .O@.ABS(D(I)) .GT. 1 0.0000000001) GO TO 14 C(I) = 0.0 D(I) = 0.0 14 CONTINUF WRITE (6,902) WRITE (6,903) B WRITE (6,903) C WRITE (6,903) D 902 FORMAT (10X.IIHNORMAL CODF) 903 FORMAT (lOX.5F16.8? CALL FRRCHK IF (ICRT .FQ. 6) GO TO 81 SL = STRGL (NCP) DO 40 I=1.5 40 SLP(I) = SLOPE(2.I) C CALL CCO@S(IG) t: TEST FOR ENO DF ALL DATA(SEE ALSO 11+1) IF (IFND .EO.I) GO TO 10 IF (ICRT .FO. 6) GC TO 30 IF (ICRT .EQ. 0) GO TO 30 10 = I NSUM = NSUM + NOP - 1 IF (ICRT .EQ. -1) GO TO 70 GO TO 11 10 CALL PLOT(0..0.,-3) RFWINO 34 WRITE(6,956) ICUT 956 FORMAT(12H CUT NUMBER ,13,15H IS NONEXISTENT) I = 128 no 957 K = 1.80 CALL PC3(I) 957 CONY INUF END C C SUBROUTINE CONV (X2.Y2,Z.A4) COMMON /PGP/NSECT.NARC,TAB(30,8,7) COMMCN/CUTSP/NCUT,STRLGT COMMON/PATSP/F6 COMMON/ADJSTR/RWXMID,RWYMID.RWXSCL,RWYSCL,R2 COMMON/CHECK/ IND, POSIT, KTOOL C C THIS SUBROUTINE MAKES ANY NFCESSARY CONVERSIONS OF THE INTERMEDIATE DATA C C A SIMPLE CCNVERSION MIGHT BE C MINOR IMAGING THRU USE OF # C NEGATIVE SCALF FACTOR FOR C X AND Y ISEE STATEMENT 30) C C GFNERALLY MANDATORY CONV. C OPERATION IS CONVERSION C FROM MEASURED X,Y TO MACHINE X,Y G C AOJUST ZERO DF RAW DATA TO C CENTER PATTERN RELATIVF TO PIVOT PClkT C POSIT INDICATES WHETHFR THE CARRIAGE IS TURNEO C +1/2 THE CHECKERING ANGLE OR C -1/2 THE CHECKERING ANGLE AHAY C FROM BEING PARALLEL TO THE Y MOTION AXIS AIND IS POSIT CORRECTED SACK TO C WHAT IT WAS REDORE ADJUSTMENT FOR C MIRROR IMAGING AIND = POSLT * RWXSCL * RWYSCL IF (KSW .FO. 2 ) GO TO 2 KSW = 2 C INITIAL POSITION (AT REST) IS CCW POSIT = 1. AIND = POSIT ANGLF = ATAN2(1.0,3.2)*2.0 AN = ANGLE/2.0 CA = COS(AN) SA = SIN(AN) TA = TAN(AN) 2 CONTINUF X2 = X2 -RWXMID*CA + RWYMID*SA*AIND Y2 = Y2 -RWYMID*CA - RWXMID*SA*AIND C @FVERSE DATA AXIS NOTATION TC AGREE WITH C MACHINF MOTION NCTATION WS = X2 X2 = Y2 Y2 = WS C F6 .GT. 0.5 DESIGNATES SPECIAL CASE C F6 .GT. 0.5 BUT .LT. 1.5 DESIGNATES PIGHT CIRCULAB C CYLINDER C F6 .GT. 1.5 DESIGNATES GENERALIZED SURFACE TREATED C SECTORS OF SECTIONS OF CONES IF (F6 .LT. 0.5)RETURN C C ±4 C C # C # C C # C @X4 . . . +Y4 (IN) C # # C # # C # # C # # C # (0,0,0) C # C C NOTF X4 IS LOCKED TC Y4 BY DIAMDNC ANGLE/2. C IF THF PIECE IS A CYLINDER WHICH USES PIECE C ROTATION IN PLACE CF THE NORMAL X C CONVFRT TO MACHINE AXFS C GIVEN Y3 = DISTANCE ALONG PATTERN C X3 = DISTANCE AWAY FPCM CENTER LINE CF PATTERN C CALCULATE NFCFSSARV PIFCE ROTATION C TO REAC@ X3 C C NOTE. FOR X = +1.0 C AND R = 1.0 C TH = +180./PI DEGREES C IF SIGN nF TH AGREES WITH SIGN OF X C IF (POSIT.FO. 0.0) PCSIT = 1.0 C IF POSIT IS CLOCKWISE . POSIT IS -1.0(ELSE + 1.0) SAW= SA * AIND C CONVERT TO DIMENSICNS ALONG ROLL E ARCUNO ROLL X3 = X2*CA-Y2*SAW Y3 = Y2*CA+X2*SAW IE (F6 .GL. 1.5) GO TO 1999 C THE FOLLOWING PERTAINS TO A RIGHT CIRCULA@ CYLINDER C OF DIAMETER @2 WHOSE AXIS IS PARALLEL TO THE AXIS OF C ROTATION BUT BELOW IT BY THE DISTANCF CZ CZ = 0. C CONVFRT TO MACHINE AXES C RTHETA = X3 Y4 = Y3*CA X4 = v4 * TA * POSIT X5 = P2 * SIN(X3/R2) 75 = R2 * COS(X2/R2) - CZ A4 = ATAN2(X5,Z5)*180.0 / 3.1415926 R = SORT (X5*X5+Z5*Z5) IF(K2 .GT.20) GO TO 3 WRITF(6,908)X2,Y2,X3,Y3,R,X5,Z5,X4,Y4,A4,POSIT,SAW 908 FORMAT (12F10.5) K2 = K2 + 1 3 CONTINLIF X2 = X4 Y? = Y4 GO TO 30 C 1999 CONTINUF C A MORF COMPLICATFC CONVERSION FOR C PIECE ROTATION IS nNF IN WHICH C A = 17,35 DEGREES = HALF THE CHECKE@IAG ANGLE C MACH. Y = MEASURED X *COS(#) C MACH.X = MEASUREC Y *SIN(#) * NACH Y*TAN(A) C PIFCF ROTATION = F(@ADII OF WOOD) C AND C RADTI WOOD = F(MEASURFO X ANC Y) C C THIS L4TTEP CONV IS C ACTIVATED Ry SETTING C F6 = 2,0 LIE .GY. 0.5) C GIVEN Y, SFARCH TABLE AND INTERPOLATE WORKING VALUES C TARLF INDICES ARE SECTION, ARC, AND ARGUMEAT C SFCTION = WHICH DISTANCF ALDNG AXIS OF BOTATION C ARC = WHICH ARC C ARGUMENT 1 = DISTANCE ALONG AXIS OF ROTATION C 2 = RADIUS C 3 = X THIS CENTER-X CENTER CF @CIATION C 4 = Z THIS CENTER-Z CENTER OF ROTATION C 5 = MINIMUM PATTERN X.WHICH LIES C ON THIS ARC.-USUALLY C CORRESPONDS WITH A PCINT OF C TANGENCY WITH ANOTHER ARC C 6 = MIN PROJECTED X CORRESPONDING TO X I-N 5 C 7 = Z CORRESPONDING TO X IN 5 AND 6 C SEE ALSO DESCRIPTION IN MAIN PRCGRAM X = Y = Y3 DO LO I = I.NSECT IF (Y .LT. TABLI.L.L)) GO TO 12 10 CONTINUF KERR = GO TO 899 12 J = I - 1 XMNDLn = DY1 = Y-TAB(J.L.I) DY2 = TAB(I.I.I.)-Y DY3 = TAB(I.I.I.)- TAB (J,I,I) DO 20 K = I,NARC XMIND = (TABLI,K,5) *DYI+TAB(J,K,5)*DY2)/DY3 IF(X .LT. XMIND) GO TO 22 XMNDLD = XMIND 20 CONTINUE KFRR = 2 GO TO 899 22 K = K-1 IF IK LT. 1) KFRR = 3 IF (K .LT.I) GO TO 899 R = (TAB(J,K,2)*DY2+TAB(I,K,2)*CY1)/DY3 XC = (TAB(J,K,3)*DY2+TAB(I,K,3)*DY1)/DY3 ZC = (TAB(J,K,4)*DY2+TAB(T,K,4)*DY1)/DY3 XMIN = (TAB(I,K,6)*DY1+TAB(J,K,6)*DY2)/DY3 ZMIN = (TAB(I,K,7)*DY1+TAB(J,K,7)*DY2)/DY3 GAM2 = (X - XMNDLCI/R IF (GAM2 .LT. 0.0) KFRR = 4 IF (GAM2 .LT. -.01) GO TO 899 IF (GAM2 .LT. -.001) WRITE(6,906) 906 FORMAT t I t * * * SLIGHT MISS OF TANGENT POINT 2 ) GAM3 = ATAN2 (ZMIN-2C.XMIN-XCL GAM1 = GAM3 - GAM2 XCY = R*COS(GAM1)+XC ZCY = R*SIN(GAM1)+ZC GAM = AYAN2(XCY.ZCY) YCY = Y*CA Y2 = YCY X2 = YCY*TA*AIND @4 = GAM*180./3.1415926 IF (K2 .GT.20 I GC TO 30 K2 = K2 + 1 899 CONTINDE WRITE(6,900) I,J,K,KFRR WRITE(6,901) Y,X,YCY, XMNPLD WRITE (6,902) DYI,DY2,DY2,XMIN WRITE (6,903) R,XC,ZC,ZMIM WRITE (6,804) GAM2,GAM3,GAMI WRITE (6,905) XCY,ZCY,GAM,YCY,A4 900 FORMAT (6H I=,I5,5H I=.I5,5H K=,15,6H KERR=,15) 901 FORMAT (5H Y=,F10.5.5H X=,F10,5,5H YCY=,F10,5,7H X IMNDLD,F10.5) 902 FORMAT (5H DY1=,F10.5,5H DY2=,F10,5,5H DY3=F10.5,7H X IMIN= .F10.5) 903 FORMAT (5H R=,F10.5,5H XC=,F10,5,5H ZC=, F10,5,6H Z IMIN= .F10.5) 904 FORMAT (6H GAM2=,F10.5,6H GAM3=,F10.5,6H GAM1=,F10.5I 905 FORMAT (5H XCY=,F10.5,5H ZCY=,F10.5,5H GAM=,F10.5,5H Y ICY=,F10.5.5H A4=,F10.5) IF(KERR .GT. 0 ) STOP 30 CONTINUE C SCALF VARIABLES C NOTE POSSIBLE SCALES ARE 1. ANO -1. ONLY X2 = X2 J RWYSCL = = Y2 / RWXSCL A4 = A4 / QWYSCL RETUPN ENO C SUBROUTINE COONS(IO) COMMnN/SUM/SUMLGT COMMON/PATSP/F6 COMMON/ADJSTR/RWXMIC.RWYMIO.RWXSCL.RWYSCL.R2 COMMON/COMSCL/SAVSCL COMMON /END/ENDPT(5),XZERO(5) COMMON/DPN/SLOPE(2,5).FVAL(5),HVAL(5),SLP(5),SL COMMON/FACTRS/SCALE(6) C NDIC = 1 FOR SIMPLE (LINFA@) BLCCK C NDIC = 2 FOR FULL CUBIC BLOCK COMMON/CTM/SAVE(5),B(5),C(5),D(5),STC DIMFNSION F(3) CATA (F(1).I=1.3)/65536.,4096..256./ DIMFNSION BZ(5) COMMON/CHFCK/ INO, POSIT, KTOOL COMMON/CUTSP/NCUT,STRLGT COMMON/PL/C1(5),C215), C3(5),C4(5) COMMON/MAIN/X(1000).Y(1000), STRGL (1000), ICRT, NOP, 1 DIH(1000), TLT(1000), A(1000) COMMON/CUTN/ICUT,NU,NDIC,VEND(5) COMMON /FND2/lFNC KSW = 1 KEY4 = 2 NU = 100 IF(IQ.MF.OIGO TO 105 C PICK UP TOCT @ MOVE TO NEW LOCATION KUPON = O IF (KTOOL .FO. 1) KUPON = 1 IF (ABS(SAVF(1)-CL(1)).GT. 0.0005 .OR. IABS(SAVE(2)-ENDPT(2)).GT. 0.0005 .OR. 3ABS(SAVE(5)-ENDPT(5)) .GT. 0.04 ) KUPDA = 1 NU = e DO 10 I= 1,5 C3(I) = 0 C4(1) = O 100 C2l) = O C SET FOR SIMPLIFIEO OUTPUT1 NnlC = 1 C2(3) = -.016 IF (F6 .LT. 0.5) C2(3) = -C.'04 C SET FOR TOOL UP ISAV=ICUT ICUT=-2 NU = 8 IF(KUPON.EQ. 1) CALL PC ISACV=ISAV+1 IF(ISAV .GT. 65) ISAV = 1 C SFT FOR MOVE TO BBEGINNING OF THE NEW CUT ICUT=-1 DO 101 I=1.5 ENDPT(I) = CI(I) 101 C2(I) = (SAVE(I) - ENDPT(I))/8.0 705 CONTINUF IF(KFY4 .EQ. 1) GC TO 753 WRITE (6,907)(ENDPT(I),I=1.51 WRITE(6,908)(SAVVE(I),I=1.51 907 FORMAT (' FROM '5F10.5) 908 FORMAT (' TO '5F10.5) 753 CONTINUE NU = R CALL PC C BACK CALCULATION DO 712 I= 1.5 WSNU = NU WS = 8. * C2(I) * WSNU 712 SAVE(I) = CI(I) + WS WRITE(6.908) (SAVE(I).I=1,5) DO 102 I = 1.5 102 C2(I) = O C CUT NO 900 SIGNIFIFS THE NEC OF ALL DATA IF(NCUT .NE. 900) GO TO 758 C IF CUT NO = 900, CUTPUT A DCMMMY BLOCK AND C WIND UP THE RUN. C NOTF THAT THE MOVE TO THE FIRST RCIAT C OF CUT NO 900 HAS JUST BEEN GENERATED. NU = 8 ICUT = -1 C WRITE A CUMMY BLOCK CALL PC DO 714 l = 1.5 714 CI(I) = SAVE(I) GO TO 16 758 CONTINUE C SET FOR TOOL DOWN C THIS IS A DUMMY DIMENSION C2(3) = 0.006 ICUT = -3 NU = 8 IF(KUPflN.FO. II CALL PC ICUT=ISAV 105 CONTINUF C COULD DO THIS EVERY TIMF IF (ICRT .NE. 0) GO TO 108 DO 107 1 = 1.5 107 ENDPT(I) = VEND(I) 910 FORMAT (' NEXT '5F10.5) 108 CONTINUE C C INITIALIZE ABSOLUTE POSITIONS C DO 10 I = 1,5 10 C1(I)=SAVE(I) GO TO 756 16 CONTINUE IFND = 1 nn 757 I = 1.5 757 FNDPT(I) = XZFRO(I) 914 FORMAT(' TOTAL CUT LFNGTH IS 'FIO.3) WRITF(6,914)SUMLGT ICRT = 0 RETURN 756 CONTINtiF C C COMPUTE COONS CUBIC COEFFICIFNTS C 912 FORMAT(7H SLOPE 5E12.4) 911 FORMAT(7H ORIC 5F12.4) IF(NOP .NF. 2 .OR.STRGL(2) .LT. 0.2) GO TO 1701 DO 1700 1 = 1.5 C(I) = 0. D(I) = 0. B(I) = HVAI (I)/100. SLOPE(L.I) = B(I) SLOPE(2.I) = B(I) 1700 CONTINUE 1701 CONTINUF NU = 100 Dri li 1 = 1.5 BZ(I) = B(I) C2(I)=B(I)-C(I)+D(I) C3(I)=2.*C(I)-6.*D(I) 11 C4(I)=6.*D(I) C C B(I). C(I) AND C(I) ARE THE NORMAL CUBIC COFFEIOIENIS C 1 FOR C 1 X C 2 Y C 3 DEPTH C 4 TILT C 5 PIECE ROTATION ANGLE C IF(KEY4 .EO. 1) GO TO 754 WRITE(6.901) C2 901 FORMAT (10H COONS CO ,5E16.8) WRITE(6,900)NU.C3 WRITE(6,900)NU.C4 900 FORMAT(3H NU,17,5E16.8) 754 CONTINUF C MOVE PLOT PEN TO FIRST POINT OF NEW CUT IF (IO .NF. O) GO ro 60 IZ = 0 CALL VECT(SAVE(I).SAVE(2).SAVE(5).SAVE(3),SAVE(4),KSW, C 1 (Z) IZ = 1 60 CONTINUF C SET FOR STANDARD CUTPUT NflIC ? NU = 100 C EXAMINF MAX SLOPE*FACTOR AND ACJUST NUMBFR OF STEPS C IF NFCESSARY CMAX = 0.0 on 20 1 = DO 19 J = 1.2 WS=ABS(SLOPE(J.I)*SCALF(I)) IF(WS .GT.CMAX)CMAX =WS 19 CONTINUE 20 CONTINUE IF(KEY4.FO.2)WRITE(6,903)CMAX 903 FORMAT(' IN COONS CMAX= '.F15.2) IF(ABSIC2(5))*SCALF(5) .LT. 1.0) GO TO 800 NU = ABS(100.0 * C2(5) * SCALE(5) ) 800 AU = NU/8 NU = AU*8 NU = MIN(NU.255*8) CMAXRV = CMAX*100./FLOAT(NU) 9093 FORMAT (14H SL.NU.CMAXRV ,F10.515,3F10.5,I5,3F10.5) CMAX = CMAXRV IFINU.GT. 127*8) GO TO 23 27 WS=NU WUI=100.0/WS AU = NU on 22 I = 1.5 R(I) = RZ(I)*WUI IF(ABS(SLOPE(1,I)).LT.0.0000000001 .AND. 1 ABS(SLOPE(2,I)).LT.0.0000000001) GO TO 21 IF(ABS((SLOPE(1,I)-SLOPE(2,I))/AMAX1(ABS(SLOPE(1,I)), IABS(SLOPE(2.I)))) .LT. 0.1)GO TO 21 D(I) = (AU*WUI*(SLOPE(1.I)+SLOPE(2.I))-2.*HVAL(I))/ 1 AU**3 C(I)=(HVAL(I)-AU*WUI*SLOPE(1.I)-AU**3*C(1))/AU**2 GO TO 22 21 B(I)HVAL(I)/AU C(I) = 0. C(I) = 0.0 22 CONTINllE C @ECOMPUTE COONS CCEF DO 26 I=1.5 C2(I)=B(I)-C(I)+D(I) C3(I)=2.*C(I)-6.*D(I) 26C4(I)6.*C(I) 28 DO 29 I = 1.5 IF (ABS(C4(I))*SCALE(I).GT. 0.49998) GO TO 30 IF (ABS(C3(I))*SCALE(I).GT. 7.99985) GO TO 30 IF (ABS(C2(I))*SCALE(I) .GT. 7.99985) GO TO 30 AN = NU IF (ABS(SCALE(I)*(C3(I)+AN*C4(I))) .GT. 100.0) GO TO 30 ANM = 1. IF (ABS(C4(I)) .LT. 10.**-8) GO TO 129 IF (2 .EO. 3) C4(I) = 5.0 ANM = - C3*I)/C4(I) - 0.5 IF (ANM .GT. AN) ANM = AN IF (ANM .LT. 0.0) ANM = 0. 129 CONTINUF IF (ABS(C2(I) + ANM*C3(I) + 0.5*(ANM+1.)*ANM*C4(I))* 1 SCALE(I) .GT. 127.9) GO TO 30 29 CONTINUE IF (KEY4 .EO. 1 1 GO TO 25 WRITE(6.901)C2 WRITE(6.900)ICUT,C3 WRITE(6.900)NU,C4 GO TO 25 30 CONTINUE 930 FORMAT (18H STEPS INCREASED IF(NU .GT. 245*81 STOP AN = NU NU = MIN(NU+32,NU*2) GO TO 707 23 IF(CMAX .GT. 127.996/16.*255./100.*8.) GO TO 710 IF (CMAX .GT. 127.996/16.*8.) GO TO 708 IF(CMAX .GT. 7.*8.) GO TO 707 C MAX PFRMIS STFPS = (n)377 ssUT NOT(O)200(=128) 707 IF(NU .GO. 128*8)NU=NU+8 GC TO 27 708 NU = 255*8 WRITE(6.709) CMAX,NU GO TO 27 709 FORMAT (' CMAX MAS ='.F10.5.' NU SET ='15) 710 WRITE(6,711) 711 FORMAT (' XSIVE CMAX =') STOP r CALC SPACING FOR PLOTTING POINTS 25 LMD = NU/NOP LM = LMD NUSAV=NU CALL PC WRITE(6.902) J.CI(I),CI(2),(3).CI(4),C1(5) C DATA GFNFRATION FROMCOONS ADDITION LOOP NU=NUSAV DO 12 J=1,NU DO 13 I=1,5 C3(I)=C3(I)+C4(I) C2(I)=C2(I)+C3(I) 13 CI(I)=C2(I)+C2(I) C C2(I)=INCREMENTAL CHANGF 70 CONTINUF 71 CONTINUF C TFST FOR PLOT POINT IF(J .FO.NU) GO TO 72 IF (J .LT.LM) GO TO 12 LM=LM+LMC 72 CONTINUF WRITE(6,902) J,CI(1),CI(2),CI(3),CI(4),CI(5) 755 CONTINUE 902 FORMAT (IX.I6.6(3X.F16.8)) CALL VFCTICI(1),CI(2),CI(5),CI(3),CI(4),DSW,IZ) 12 CONTINUF IF (ICRT .NE. 0) GO TO 75 C PRINT CUT NURBER ON PLOT FCUT=ICUT FCUT = NCUT CSCALF = 1.0 CALL FACTOR(CSCALE) R1 = CI(1) * SAVSCL B2 = CI(2) * SAVSCL CALL NUMBER (B2.BI..I.FCUT.0..-1) CSCALE t SAVSCL CALL FACTOR(CSCALE) 75 CONTINUF C.SAVF ABSOLUTE POSITIONS nn 15 I = 1,5 15 SAVE (I)=CI(I) RETURN FND C SUBROUTINF CRIT(10,IEND) COMMON/ADJSTR/RWXMID,RWYMID,RWXSCL,RWYSCL,R2 COMMON/MAIM/X(1000), Y(1000), STRGL(1000), ICRT, NOP, 1 DTH(1000),TLT(1000),A(1000) COMMON/CTM/ SAVE(5),B(5),C(5),D(5),STC COMMON /CUTN/ICUT,NU,NDIC,VEND(5) COMMON/PATSP/F6 COMMON/CUTSP/NCUT,STRLGT DATA IUP/6HTOOLUP/.ISTOP/6HSTOP / DATA KAUX/6HAUX / COMMON/CHECK/ INC,POSIT,KTOOL DIMENSTON KS(5) IEND = 0 IX = 1 IY = 1 ID = 1 IT = 1 IA = 1 I = 0 IF (TO .EO.O) GO TO 200 C CHECK FOR CONTINUATION X (1)=XX C CONTINUATTION C COPY PREVIOVS LASTPOINT Y(1)=YY DTH(1)=DD TLI(1)=TT A(1)=AA PSTRGL = SS+PSTRGL ZNEW = DTH(I) ALNEW = TLT(I) STRGL(1)=0.0 I=2 X(I) = X(NOP+1) Y(I) = Y(NOP+1) DTH(I) = TLT(NOP+1) TLT(I) = TLT(NOP+1) A(I) = A(NOP+1) STRGL(I)=DLS GO TO 32 200 READ15,970INCUT.NTYPE IF (NCUT .GT. 0) GO TO 922 READ(99,920) (KS(I).I=1.5),IN,IU,KT.ITO WRITE(6,920) (KS(I),I=1.5),IN,IU,KT,ITO 920 FORMAT(71110.A4,A6) IF(ITO .NF. KAUX) WPITE(6,923) KT.ITO 923 FORMAT (' *** CARO SKIPPED *** KAUX= ',A4,A6) IF (KT .EO. ISTOP) GO TO 700 IF(ITO .NE.KAUX) GO TO 200 IWS = IN IF(IWS .NE. 0) GO TO 919 C THIS CARD CONTROLS AUXILIARY FUNCTIONS IWS = -4 L3 = 0 LZ = 0 POSIT = +1.0 KTOOL = 1 DO 918 I = 1,4 IF(KSIT) .EO. 2) KTOOT, = 2 IF ( KS(I) .EO. 2) POSIT = -1.0 IF(KS(I) .EO. 3) L3 = 1 IF(KS(I) .EO. 0) LZ = 1 918 XS(I) = KS(I)*64 IF(LZ .EO. 4) NERR = 0 IF(RWSXCL*RWYSCL .GT. 0.0) GO TO 919 IF(RWXSCL*RWYSCL .EO. 0.0) STOP C BED POSITION CONTROLS MUST BE REVERSEO C UNLESS LAST ZERO = 4TH (ALL = 0) IF (LZ .EO. 4) GO TO 919 POSIT = -1, * POSIT IF(L3 .GT. 0) GO TO 917 IF(LZ .LT. 1) STOP KS(LZ) = 3*64 GO TO 919 917 IF(L3 .LT. 3) STOP XS(L3) = KS(L3-I) L3 = L3 - 1 IF(L3 .GT.I) GO TO 917 919 CONT INUE IwS = 256 + lWS CALL PC3(IWS) CALL PC3(IU) IWS = 0 DO 921 I=1.5 IF( KWS .EQ. 1 ) IND = 1 IF( KWS .FO. 2 ) IDO = 2 KWS = KS(I) CALL PC3(KWS) CALL PC3(IWS) 921 CONTINUF IWS = 128 CALL PC3(IWS) I = 0 GO TO 200 927 CONTINUF PSTRGL = 0. 970 FORMAT(215,F5,3,5F5,2,F8,5) STRLGT = STRLGT/RHXSCL WRITF(6.970)NOUT,NTYPE 1GT 14 I = I + 1 70 READ (5,900)X(I),Y(I),DTH(I),TLT(I),A(I),A(I),ITO C COMPUTE STRING LENGTH FOR THE POINT IF I ITO .FO. IUP ) GO TO 90 IF (I .GT. 1) GO TO 30 STRGL(I) = 0.0 GO TO 31 30 DLS = SOTR (((X(I)-XLC)/RWXSCL)**2+((Y(I)-YLD)/RWYSCL)* 1 **2 STRGL(I) = STRGL(I-I) + DLS 31 CONTINUF XLD = X(I) YLD = Y(I) CALL CONV (X(I).Y(I),DTH(I),A(I)) 900 FORMAT (2F10.0,3F10,C,20X,A6) 901 FORMAT (5X.15,6E14,6) IF (ITO .EO. IUP) GO TO 90 IF (ITO .NE. ISTOP) GO TO 71 700 CONTINUF WRITE(6,915) 915 FORMAT (' PATTERN DOES NOT RETURN TO ROIGIN ') WRITF(6.914)SUMLGT 914 FORMAT (' TOTAL CUT LENGTH IS 'F10.3) IFNn t 1 RETURN 71 CONTINUE c 32 CONTINUE WRITE(6.910) I,X(I),Y(I),DTH(I),TLT(I),A(I),STRGL(T) 910 FORMAT(I3.8F10.5) IF (IQ .NF. 0 .OR.I .NE. 1) GO TO 72 C IQ = 0 DEFINES INITIAL SEGAMENT OR ONLY SFGMENT SAVE(1)=X(1) SAVE(2)=Y(1) SAVE(3)=DTH(1) SAVE(4)=TLT(1) SAVE(5) = A(1) 72 CONTINUE C F6 .GT. 0.5 DESIGNATES CYLINORICAL CASE IF( F6 CT. 0.5 ) GO Ta 14 IF (I .NE. 1) GO TO 60 XCRIT = X(I) YCRIT = Y(I) DCRIT = DTH(I) TCRIT = TLT(I) ACRIT = A(I) GO TO 14 C IX,IY = 1 SEARCHING FOR--- C 2 MAXIMUM FOUND C 3 MINIMUM FOUND 60 GO TO (1,2,3), IX 1 IF (X(I)-XCRIT) 4,5,6 4 IX = 3 GO TO 5 6 IX = 2 5 XCRIT = X(I) 17 GO TO (7,8,9), IY 7 IF (Y(I)-YCRIT) 10,11,12 10 IY = 3 GO TO 11 12 IY = 2 11 YCRIT = Y(I) GO TO 80 2 IF (X(I)-XCRIT) 50.15.15 15 XCRIT = X(I) GO TO 17 3 IF (XCRIT-X(I)) 50.15.15 8 IF (Y(I)-YCRIT) 51,16,16 16 YCRIT = Y(I) GO TO 80 9 IF (YCRIT-Y(I)) 51.16.16 80 IF(ABS(Y(I)-Y(I-1)) .LT. 0.2) GO TO 75 IFII LE. 2) GO TC 14 GO TO 151 75 IF (I .NE. 3) GO TO 14 IF (ABS(Y(I-1) - Y(I-2)) .LT. 0.2) GO TO 14 151 ICRT = 12 GO Te 52 C ICPT = O L4ST SEG., NO CRITICAL POINT C = 1 CRITICAL PT REACHFO IN X C = 2 CRITICAt PT REACHFC IN Y 90 ICRT = O GO TO 52 50 ICRT = 1 GO TO 52 51 ICRT = 2 52 NOP = I-1 XCRIT = X(NOP) YCRIT = Y(NOP) DCRIT = DTH(NOP) TCRIT = TLT(NOP) XX=X(NOP) ACRIT = A(NOP) AA = A(NOP) YY=Y(NOP) DD=DTH(NOP) TT=TLT(NOP SS=STRGL(NOP) SUMLGT = SUMLGT+SS IF(ICRT .NF.0)RETURN VEND(I) = X(NOP) VEND(2) = Y(NOP) VEND(3) = DTH(NOP) VEND(4) = TLT(NOP) VEND(5) = A(NOP) RFTURN FND C SUBROUTINE CUBF(IO,V,SI,S2) DIMENSION V(1000) C NOTF SPECIAL MAIN COMMON/MAIN/X(1000), Y(1000), STRGL(10000), ICRT, NOP, 1 DTH(1000),TLT(1000),AA(1000) DATA KOUNT/O/ DIMENSION XYC(4),A(4,4),WX(4) F= 100./STRGL(NOP) DO 4 I = 1.4 WX(I) = 0. DO 4 K = 1.4 4 A(I.K) = 0.0 DO 10 I = I,NOP W = STRGL(I)*F W2 = W*W W3 = W2*W Q=V(I) W4 = W3*W W5 = W4*W W6 = W5*W 02 = W*0 03 = W2*0 04 = W3*0 A(1,2) = A(1,2)+W A(1,3) = A(1,3)+W2 A(1,4) = A(1,4)+W3 WX(1) = WX(1)+C A(2,4) = A(2,4)+W4 A(3,4) = A(3,4)+W5 A(4,4) = A(4,4)+W6 WX(2) = WX(2)+02 WX(3) = WX(3)+03 WX(4) = WX(4)+04 10 CONTINUE A(1,1) = NOP A(2,1)=A(1,2) A(3,1)=A(1,3) A(4,1)=A(1,4) A(2,2)=A(1,3) A(2,3)=A(1,4) A(3,2)=A(1,4) A(3,3)=A(2,4) A(4,2)=A(2,4) A(4,3)=A(3,4) IFIKOUNT .GT. 101 GO TO 30 WRITE(6,900) ((A(I,JI,J=1,4),WX(I),I=1,4) 30 CONTINUF nn 20 K=2,4 flO 20 1=K,4 F=A(I,K-1)/A(K-1,K-1) DO 19 J=k.4 19 A(I,J)=A(I,J)-F*A(K-I,J) 20 WX(I)=WX(I)-F*WX(K-1) A(2,1)=0. A(3,1)=0. A(3,2)=0. A(4.1)=0. A(4,2)=0. A(4,3)=0. IF(KOUNT .GT. 10) GO TO 31 WRITE(6,900) ((A(I,J),J=1,4), WX(I),I=1,4) 31 CONTINUE 900 FORMAT (5E12.4) DO 40 J=4, I,-1 XYC(J)=WX(J)/A(J.J) IF(J .EO. I) GO TC 42 J2 = J-1 DO 38 K=1,J2 38 WX(K)=WX(K)-A(K,J)*XYC(J) 40 CONTINUE 42 CONTINUE IF(KOUNT .GT. 10) GO TO 32 KOUNT = KOUNT + 1 WRITE(6,900)(XYC(J),J=1,4) 32 CONTINUF C ADJUST TO PASS THRU END POINTS XYC(2)=XYC(2)+(V(NOP)-V(1))/100.-XYC(2) I 100.*XYC(4)) S2 = XYC(2)+200.*XYC(3)+30000.*XYC(4) IF(IO .EO. 0) S1 = XYC(2) C IF(IC .EO. 1) S1 = OLD S2 (SFE) PANDSI) 912 FORMAT ('CURF',6F10.5) WRITE(6,912)(XYC(J),J=1,4),S1,S2 RFTURN FNn C SUBROUTINF ERRCHK COMMON/ADJSTR/RWXMID,RWYMIO,RWXSCL,RWYSCL,R2 COMMON/CTM/ SAVE(5),B(5),C(5),D(5),STO COMMON/MAIN/X(1000), Y(1000), STRGL(1000), ICRT, NOP, 1 DTH(1000),TLT(1000),A(1000) COMMON/O@N/SLOPE(2,5),FVAL(5),HVAL(5),SLP(5),SL DATA TOLB/0.0025/ TOLF = TOL@ IF(ABS(SLOPE(1,1)).GT.0.0001.AND.ABS(SLOPE(2,1))) .GT. 1 0.0001) GO TO 20 IF(ABS(SLOPE)1,2)).GT.0.0001.AND.ABS(SLCPE(2,2)).GT. 1 0.00011 GO TO 20 1 20 TOLF = TOLB/2. 20 CONTINUE IF (ICDPT .EO. 6) ICRT = -1 C C ERMAX = 0.0 DO 10 I=1.NOP U = STRGL(I)/STRGL(NOP) * 100. PX = B(1)*U + C(1)*U**2 + D(1)*U**3 + X(1) PY = B(2)*U + C(2)*U**2 + D(2)*U**3 + Y(1) ERX = ABS(X(I)-PX) IF (R2 .GT. 0.0) ERX = EPX*3,1415926*R2/180. ERY = ABS(Y(I)-PY) ER = SORT(ERX**2 + ERY**2) IF (ER .LE. ERMAX) GO TO 10 ISAVF = I FRMAX = ER 10 CONTINUF C IF IERMAX .LE. TOLF GO TO 50 ICRT a 6 NOP = ISAVE WRITE(6,900) NOP.ERMAX 900 FORMAT(1X,27HSUBSEGMENT PROPCSED, NOP = ,13/1X,8HERMAX 1 = ,E12,6) WRITE(6,601)(X(I),6(I),B(I),C(I),D(I),I=1,2) 601 FORMAT(' X Y B C C ',2512,4) 50 CONTINUF RFTURN END C SUBROUTINE PANOSI)(10) DIMENSICN SLOP2(5) C THIS SUBROUTINE CCMPUTGES THE INITIAL ANC FINAL POINTS C 1 AND SLOPFS COMMON/DPN/SLOPE(2,5),FVAL(5),HVAL(5),SLP(5),SL COMMON/MAIN/X(1000), Y(1000), STRGL(1000), ICRT, NOP, 1 DTH(1000),TLT(1000),A(1000) C TYPE CF SEGMENT KFV r FIRST SEG (OF MORE THAN 11 10 X C IC"T .NF.O C CINIERMFDIATE SEG IQ = 1 C ICRT .NE. 0 C LAST SEG (OF MORE THAN CNE) IQ = 1 C ICRT = 0 C CNLY CNE SFG IQ = 0 C ICPT = û IF (IO .FO. 0) SL=STRGL(NOP) DO 2 I=1,5 2 FVAL(I)=0.0 HVAL(1) = X(NOP) - X(1) HVAL(2) = Y(NOP) -Y(1) HVAL(3) = DTH(NOP) - DTH(1) HVAL(4) = TLT(NOP) - TLT(1) HVAL(5) = A(NOP) - A(I) IF( .NOT.(ABS(STRGL(2)*STRGL(NOP)) .GT. 0.0)) 1WRITE(6,900)STRGL(2).STRGL(NOP).NOP 900 FORMAT(' POT ZERC DIV STRGL(2)=',F10.5,' STRGL(NOP)=', 1 F10.5,'NOP=',15) DELU=100,*STRGL(2)/STRGL(NOP) SLOPE(1,1) = (X(2)-X(1))/DELU SLOPE(1,2) = (Y(2)-Y(1))/DELU SLOPE(1,3) = (DTH(2)-DTH(1))/DELU SLOPE(1,4) = (TLT(2)-TLT(1))/DELU SLOPE(1,5)=(A(2) - A(1))/DELU IF 110 .NF. o} GO TC 3 IF (NOP .LF. 2X GC TO 5 DELU2 = 100.*(STRGL(3)-STRGL(2))/STRGL(NOP) IE( .NOT. ABS(DELU2) .GT.O) GC TC 5 SLOP2(1) = (X(3)-X(2))/DELU2 SLOP2(2) = (X(3) - Y(2))/DELU2 SLOP2(3) = (DTH(3) - DTH(2);/DELU2 SLOP2(4) = (TLT(3)-TLT(2))/DELU2 SLOP2(5) = (A(3)-A(2))/DELU2 nFLU3 = OFLU + nELUZ no 6 1 = 1.5 6 SLOPE(1,1)=SLOPE(1,1)-(SLOP2(I)-SLOPE(1,1))*DELU/DELU3 GO TO 5 j on 4 1=1.5 4 SLOPE (1.1) =SLP(1)*STRGL (NOP)/SL 5 CONTINUE DELU=100.*(STRGL(NOP)-STRGL(NOP-1))/STPGL(NOP) SLOPE(2.1)=(X(NOP)-X(NOP-1))/DELU SLOPE(2.2)=(Y(NOP)-Y(MOP-1))/CELU SLOPE(2.3)=(DTH(NCP)-DTH(NOP-1))/CELU SLOPE(2.4)=(TLT(NOP)-TLT(NOP-1))/DELU SLOPE(2.5)=(A(NOP) - A(NOP-1))/DELU IF (ICRT .EQ. 0 .AND. NOP .LF. 2) RETURN IF (ICRT .EQ. 0) GC TO 9 IF (STRGL (NOP+1) .LE.STRGL(NOP) STOP DELU2 = 100.*(STRGL(NOP+1)/STRGL(NOP)-1.0) SLOP2(1) = (X(NOP+1)-X(NOP))/DELU2 SLOP2(2) = (Y(NOP+1) - Y(NOP))/DELU2 SLOP2(3) = (DTH(NOP+1)-DTH(NOP))/DELU2 SLOP2(4) = (TLT(NOP+1)-TLT(NOP))/DELU2 SLOP2(5) = (A(NOP+1)-A(NOP))/DELU2 DELU3 = DELU + DELU2 nn 7 I = 1,5 7 SLOPE(2.1) = (SLOPE(2.1)#DELU2+SLOP2(1)#DELU)/DELU3 11 CONTINUF IF tNOP .LF. 3) GC TO 12 CALL CUBF(IQ,X,SLOPE(1,1),SLOPE(2,1)) CALL CUBF(IQ,Y,SLOPE(1,20,SLOPE(2,2)) 12 CONTINUE IF (ICRT .EQ. 1) SLOPE(2,1)=0.0 IF (ICRT .EQ. 2) SLOPE(2,2 =0.0 RETURN 9 DELU2 = (STRGL (NOP-1)-STRGL(NOP-2))*100./STRGL(NOP) IF( .NOT.ABS(DELU2) .GT. 0) RETURN DELU3 = DELU/(DELU+DELU2) SLOP2(1) = (X(NOP-1)-X(NOP-2))/DELU2 SLOP2(2) = (Y(NOP-1)-Y(NOP-2))/DELU2 SLOP2(3) = (DTH(NOP-1)-DTH(NOP-2))/DELU2 SLOP2(4) = (TLT(NOP-1)-TLT(NOP-2))/DELU2 SLOP2(5) = (A(NOP-1)-A(NOP-2))/DELU2 DO 10 I = 1, 5 10 SLOPE(2,1)=SLOPE(2,1) - (SLOPE(2,1) - SLOP2(i))*DELU3 GO TO 11 FND C SUBROUTINE PC C PC AND THE SUBROUTINES IT CALLS, PC2 AND PC3, C CAUSE THE FOLLOWI@G VA@UES TO BE PUNCHED INTO THE C OUTPUT MEDIUM. (SEE PC3 FOR FURTHER DFSCRI@TION.) C CUT SEQUENCE NO. C NO OF STEPS OF THE INDEPENDENT VARIABLE / 8 C TH@EE COEFFICIENTS FOR EACH MACHINE AXIS, IF C A FULL CUBIC REPRESENTATION IS @FQUIREC, C OR C ONE CDEFFICIENT FOR EACH AXIS IF A LINFAR C REPRESENTATION IS ADEQUATE. C A SENTINEL CHARACTER EQUAL TO -O IN THE C FINAL DATA CODE SYSTEM (EQUALS CHANNEL @ IN PUNCHED C PAPER TAPE.) C PC3 CONVERTS A POSITIVE INTEGER OF @AXIMUM C VALUF 16*16-1 INTO TWO HEXADECIMAL. CHARACTERS C TO BE PUNCHED INTO A CARD. THESE TWO CHARACTERS C WILL LATER BF COMBINED INTO AN EIGHT CHANNEL C CODF TO BE PUNCHFC INTO A PAPER TAPE, @YPICAL C CODF TRANSFORMATIONS A@F SH@@N BELOW C INPUT CARDS TARE C 0 00 0000 0000 C 9 09 0000 1001 C 10 OA 0000 1010 C 17 IF 0001 1111 C 255 FF 1111 1111 REAL IWS.NS COMMON/FACTRS/SCALE(@) DATA (SCALE(1).1=1,6)/.256C.,800.,1333.33333,18.5185185 1 ,22.2222222,1.0/ C INPUT SEQUENCE IS X,Y,Z,TILT, PIECE R@TATION C OUTPUT SEQUENCE IS X,PR,Z,TILT,Y COMMON/AD@STR/RWXMID,RWYMID,RWXSCL,RWYSCL,R1,R2,CC IF (R2 .GT. 0.0) SCALE(1) = 3.49206349 C NDIC = 1 FCR SIMPLE (LTNEAR) BLOCK C NDIC = 2 FOR FULL CUBIC BLOCK COMMON /CUTN/ICUT,NU,NDIC,VEND(5) COMMON/P1/C1(5),C2(5),C3(5),C4(5) COMMON/P22/NW,NS,IWS(3) KEY4 = 2 KRFM=0 ISFNT = 128 C SET FOR THREE WORDS NWS= 3 IF(KEY4 .EQ. 1) GO TO 753 WRITE(6.916) ICUT,NU,NDIC,C2,C3,C4 C TO PFRMIT TRANSMISSION OF LARGER NC IT HAS BEEN C MADE AN EVEN MULTIPLE OF 8. DIVIDE BY 8 AND C RECONSTITUTF IN CONTROLLER PROGRAM. NUSV = NU NU = NU/8 IF(NU*8-NUSV .NE. 0) WRITF(6,927) 927 FORMAT(' NU/8 NOT AN INTEGER ') 916 FORMAT (1X,314,4F8.6,F10.6,10@7.4) 7S3 CONTINUE IF(NDIC .ED. 2) GO TO 10 NWS = 2 CMAX = O DO 11 I = 1.5 IF(ABS(C2(1)*SCALE(1)).GT.CMAX)CMAX=ABS(C2(1)*S@ALE(1) 1 ) 11 CONTINUE IF(KEY4.EO.2)WRITE(6,917)CMAX 917 FORMAT (' IN PC CMAX=',F20.51 IF(CMAX .GT. 0) GC TO 12 WRITE(6,907) 907 FORMAT(' IN PC, CMAX = 0.0 FOR A SIMPLE BLOCK ') C IF NECESSARY INSREASE NO. OF STEPS TO DEEP CMAX C IN BOUNDS C 8 IS CH@CKERING LIMIT 12 IF(CMAX .LT. 6.0) GO TO 9 AUS = NU NU = (CMAX + 5.999999) * AUS / h. IF(NU .EQ. 128) NU = 127 AU = NU 00 14 I = 1,5 14 C2(1) = C2(1) *AUS/AU GO TO 9 10 CONTINUE DO 7 I = 1. 5 IF(((ABS(C3(1)) .GT. 0.0)).OR. ((ABS(C4(1)) 1 .GT. 0.0))) GO TO 9 7 CONTINUE C SFT FOR TWO WORD C SFCAUSF SIMPLE flLCCK WILL SUFFICE 8 NWS = O 9 CONTINUE IF(NU .LT. 256) GO TO 15 WRITE(6.915) NU IF (NWS .EQ. 3) STOP 915 FORMAT (' XS STEPS - NU= ',110) KRFM = NU - 255 NU = 255 C SET FOR 1 FORD AND UNITY SCALE 15 NW = 1 NS= SCALE(6) C CUT NO IS LIMITED TO 127 C BECAUSE IWS(1) = MOD(ICUT.2**7) IF(ICUT .LT. 0) IWS(1) = 256 + ICUT IF(NWS .EQ. 0) ISW(1) = 0 IF(NWS .EQ. 0) NWS = 2 CALL PC2 IWS(1) = NU CALL PC2 NW=NWS IWS(1) = C4(1) IWS(2) = C3(1) IWS(3) = C2(1) C SET SCALE FOR X NS = SCALE(1) CALL PC2 C4(1) = IWS(1) C3(1) = IWS(2) C2(1) = IWS(3) IWS(1) = C4(5) IWS(2) = C3(5) IWS(3) = C2(5) C SET SCALE FOR PIECE ROTATION NS = SCALE(5) CALL PC2 C4(5) = IWS(1) C3(5) = IWS(2) C2(5) = IWS(3) IWS(1) = C4(3) IWS(2) = C3(3) IWS(3) = C2(3) C SET SCALE FOR DEPTH NW = SCALE(3) CALL PC2 C4(3) = IWS(1) C3(3) = IWS(2) C2(3) = IWS(3) IWS(1) = C4(4) IWS(2) = C3(4) IWS(3) = C2(4) C SET SCALE FOR TILT NS = SCALE(4) CALL PC2 C4(4) = IWS(1) C3(4) = IWS(2) C2(4) = IWS(3) IWS(1) = C4(2) IWS(2) = C3(2) IWS(3) = C2(2) C SET SCALE FOR Y NS = SCALE(2) CALL PC2 C4(2) = IWS(1) C3(2) = IWS(2) C2(2) = IWS(3) NS = 1 NS = SCALE(6) NW = 1 IWS(1) = ISENT CALL PC2 IF(KRFM .LE. 0) RETURN 2288627 KREM = KREM - NU IF(KREM .GE. 0) GO TO 15 NU = KREM + NU KRFM = O GO TO 15 ENn C SUBBOUTINE PC2 REAL IWS.NS DIMENSION IW(3) COMMON/P22/NW.NS.IWS(3) DIMENSION SWS(3) COMMON /CUTN/ICUT,NU,NDIC,VEND(5) DIMENSION F(3) DATA (F(I),I=1,3)/65536.,4096.,4096./ KEY4 = 2 KFY4 = 1 GO TO (1,2,3),NW C HANDLF SINGLE VALUE 1 IWS4=IWS(1)#NS IF (IWS4 .GT. 2**8) WRITE (6,902) IWS4 IWS4 = M@@(IWS4, 2**8) 902 FORMAT (100X,20HPC2 RECVD XS VALVE ,110) IF(IWS4.EQ. -1) IWS4 = 255 IFlIWS4 .tT. -1) GO TO 10 11 CONTINUE CALL PC3 (IWS4) RETURN 10 IF(IWS4 .LT. -2**15+1) STOP IWS4 = IWS4+2**16 GO TO 11 C NW=2.HANDLE ONE VALUE AS TWO WORDS, @@, 2 CONTINUE C NW=3, HANDLE THREE VALUES AS SIX WORDS (SEE 35+2) 3 CONTINUE DO 33 I = 1,3 SWS(I) = IWS(I) WS = IWS(I)*NS*F(I) IW(I) = WS+SIGN(P,5,WS) C WHEN THE COEFFICIENTS ARE CONVERTED TC TAPE C CHARACTERS (OP THEIR HEXADECIMAL FOUIVALENTS FOR C STORAGF IN TWO CARD COLUMNS) THEY WILL OF NFCESSITY BE C TRUNCATED. RATHER THAN ACCEPT THIS FRROR, THE FLDATING C POINT VALUES SILL BE SET EQUAL TO THE TRUNCATED VALUES C THIS WILL RESULT IN AUTOMATIC CORRECTION FOR ERROR C ACCUMULATION BECALSF SUBRCUTINE CODNS WILL USE THE C TRUNCATED VALUES IN REGENERATING POINTS ON THE CUT C FOR PLOTTING AND WILL USE THE FINAL SUCH POINT AS A C POINT OF OEPARTURE FOR THE @CVE TO THE START OF THE C NEXT CUT. AWS = IW(I) WS2 = A@S/(NS*F(I)) IF (K2 .LT. 20 .OR. T LT. 3) GO TO 907 K2 = K2 + 1 907 CONTINUE IWS(I) = WS2 33 CONTINUE IF(NW .EQ. 2) GO TO 35 ANU = NU*8 WS3=IWS(3)-(ANU+1.)/2.*(IWS(2)-SWS(2)+(ANU+2,1/3.*(IWS I (I)-SWS(I))) IF(KEY4.EQ.2)WRITE(6,900)ANU,IWS(1),IWS(2),IWS(3),WS3 900 FORMAT (' PC2',15,8F12.5) IWS(3) = WS3 WS = IWS(3)*NS*F(3) IW(3)= WS AWS = IW(3) WS2 = AWS/(NS*F(3)) IWS(3) = WS2 35 CONTINUE DO 4 I=1.3 C- HANDLF ONLV THIRD COEF OF SIMPLE BLOCKS IF(NW.EQ. 2 .AND.I .NE. 3) GO TO 4 II=IW(I) IF(II-NE.0) GO TO 14 II2=0 IWS4=0 GO TO 6 14 IF (TABS(II).GT. 2**15-1) GO TO 12 IF(II+1)7,5,8 8 II2=MOD(II,2**8) IWS4=(II-I(2)/2**8 6 IF(KEY4.EQ.2)WRITE(6,904)NW,NS,(IWS(K),K=1,3),(TW(K),K I = I,3),IWS4,II2 904 FORMAT(' PC2 ',15,4F12.6,5(6) CALL PC3(IWS4) CALL PC3(II2) GO TO 4 5 112=255 IWS4=255 GO TO 6 7 II=II+2**16 GO TO R 4 CONTINUE RFTURN 12 WRITE (6,912)II RFTUPN 912 FORMAT (100X,15HX5 NUMB IN PC2 ,110) FND C SUBROUTINE PC3(INS) DIMENSION KA (16), KK (70) DATA(KA (I). I = 1, 17)/ 1H0,1H1,1H2,1H3,1H4,1H5,1H6, 1 1H7,1H8,1H9,1HA,1HB,1HC,1HD,1HE,1HF,1HG / IWS2=MOD(IWS.2**4) IWS3=(IWS-IWS2)/2**4 IF(KK2.EQ.20 GO TC 2 KK2=2 KC=0 2 KC=KC+1 KK(KC)=KA(IWS3+1) KC=KC+1 KK(KC)=KA(IWS2+1) IF(KC.LT.70)RETURN KARD = DARD + 1 WRITE(6,900) (KK(J),J=1,70),KARD C WRITE(7,900) (KK(J),J=1,70),KARD WRITE9(7,902) (KK(J),J=1,70),KARD 900 FORMAT (IX,70A1,110) 902 FORMAT (70A1,110) KK2=1 RETURN FNn C SUBUOUTINE VECT(DX,DY,DA,DD,DT,NCODE,IZ) DIMFNS(ON BUFF(1024) COMMON/COMSCL/SAVSCL IF(KSW.EQ.2)GO TO 2 KSW=2 CALL PLOTS(BUFF,1024,34) SAVSCL = SCALE CALL FACTOR(SCALE) SCALE = 2.0 CALL PLCT(YP,XP,3) RETURN 2 IF (IZ .EQ. 0) CALL PLOT (DY,DX,3) IF (IZ .NF. 0) CALL PLOT (DY,DX,2) IF(NCOED.LT.-9)CALL PLOT(0,10.0,-3) RETURN ENn / PROGRAMME DE COMMANDE NUMERIQUE / POUR QUADRILLAGE AUTOMATIQUE / MACHINE: PDP-8 CODE: PAL RIB=6234 RMF=6244 OPMTRS=6144 ION=6001 IOF=6002 FIXTAB *0 0 /STORAGE FOR INTEROPTED ADDRESS OMP I .+1 INTR *7 5600 *10 AI10, 0 /AI-10 /AUTO INDEX REGISTERS AI11, 0 /AI-11 AI12, O /AI-12 USED IN ADDRESS SETTIN6 LOOPS AI13, O /AI-13 USED IN ADDRESS SETTING LOOPS AI14, 0 /AI-14 Al15t O /AI-15 AI16, 0 /AI-16 AI17, 0 /AI-17 USED AS INPUT PUFFER POINTER *20 CWB, 0 CW, 0 CW2, 0 CW3, 0 WS, 0 AXIS, O STPS, 0 KOUTC, OUTC KOUTOL, OUTOLF KOUTO, OUTOCT *40 EX1, 0 /OPERAND STORAGE AC1H, 0 AC1L, 0 OVER1, 0 EXP, 0 /F.A. HORDe O LORD, 0 OVER2, 0 EXP1, O QUOL, 0 FPAC1, 0 0 0 *61 FLAG, 0 /ARITHMFTIC ERROR FLAG PAUS, 0 /FLAG FOR PAUSING AT END OF CUT BLKTYP, 0 NBTYP, 0 BTYP2. O XOPC, 0 /FOLLOWED BY BOPC,ZOPC,AOPC,YOPC *73 X2OPC, 0 *101 PSWTCH, 0 PSWT2, 0 *130 DH, 200 /INDIRECT ADDRESS OF EA AXIS AREA 130 DL. 200+1 CH, 200+2 /ETC CL. O BH, 0 /+4 BL, 0 DIN, 0 /+6 DIL, 0 DUP, 0 /+10 BLANK, 0 /USED IN FLOATING PT WORK WDH, 0 /+12 = +10 BASE 10 OR MOTOR COUNT WDL, 0 WCH, 0 /+14 WCL. O WBH, 0 /+16 WBL, 0 DMRH. O /+20 DMRL, 0 DMIN, 0 /+22 SUMVH. O SUMH, 0 /+24 = +20 BASE 10 SUML, 0 WFAC, 0 /THIS AREA IS CLEARED IN START UP *200 XAX, 0 /XAXIS AREA *232 BAX. O /B/(PIECE ROTATION) AREA *264 ZAX, O IZAXIS AREA *316 AAX, 0 /A(TILT) AREA *350 YAX, *402 0 /YAXIS AREA /SIXTH AXIS AREA /NOT USED *600 BEGIN.CLA DCA CW DCA CW2 6144 /TURN ON FIRST SET UP ANGLE AND FIRST TOO / L CLA CLL JMS I ICLI / CLEAR INPUT + START INPUT/1251 TAD I2Z10 / SET TO TURM AIR ON EVERY TIME 6144 /TURN ON AIR DCA CWB / 6001 / ENABLE INTERRUPIS TAD M257 DCA CNT CLA CMA TAD LCFR DCA AI10 DCA I AI10 / ISZ CNT /CLEARING LOOF JMP .-2 / R1, TAD 1 ISWT/DETERMINE IF END OF RTL /TAPE HAS BEFN REACHED SNL CLA OPMTRS /TURN OFF ALT SET UP ANGLE AND ALT TOOL TAD I IBUFF SNA CLA /TEST FOR FULL INPUT BUFFER JMP .-2 NOP /INPUT BUFFER IS FULL JMS I KDMSG /CALL DATA MASS.(TRANS + REARNG.) NOP JMS I ICLI /CLEAR INPUT + START REFILLING NOP R2, JMS STEP NOP JMS I KCDWD /GEN A MOTOR CONTROL WORD AND MOTOR CO / UNTS TAD CW2 f SZA CLA /LOOP UNTIL STAND BY WORD REMOVED JMp .-2 NOP CLA CMA TAD STPS DCA STPS NOP TAD STPS SZA CLA /TEST FOR MOTION FINISHED (RUN U STEPS = / 0) JMP R2 /MOTION NOT FINISHED NOP JMP R1 /MOTION FINISHED (U = 0) ISWT, SWTCH M257, -257 ICLI CLI KDMSG, DMSGI IBUFF, BFF KCDWD, CDWD I2Z10, 2000 STEP, 0 CLA IAC DCA AXIS IADDRESS SETTER FOR EA AXIS TAD FRST /SET FOR FIRST AXIS 200/8-DELTA DCA I KDH /DELTA = 26/10 = TAD JM5 /-5 DCA NAX /SET FOR 5 AXES JMP .+6 NXAX, CLA TAD I KDH TAD P32 X+26X10 +32/8 DCA I KDH ISZ AXIS TAD LCFR DCA AI13 TAD P32 JMS I JLNAS JMP KDH+1 LOOP, ISZ NAX JMP NXAX JMP I STEP FRST, 200 JM5, 7773 /MINUS 5 NAX, 0 P32, 32 /PLUS 26/10=32/8/=CHG IN AD AND NO.LOCS LCFR, 130 CNT, O JLNAS, LNAS /ADDRESS SETTER RUN TIME KDH, DH CLL CLA TAD I DL /ADD THIRD DIF TO SECONU DIF TAD I CL DCA I CL RAL TAD I OH TAD I CH DCA I CH CLL TAD I CL /ADD SECOND TO FIRST TAD I BL DCA I BL RAL TAD I CH TAD I BH DCA I BH CLL TAD I BL /ADD FIRST TO PRIOR REMAINDER TAD I DIL DCA 1 DIL RAL TAD I BH TAD I DIH DCA I DIH CLL /COMPUTE NEW IDEAL POSITION TAD I BL TAD I SUML DCA I SUML RAL TAD I SUMH TAD I RH DCA I SUMH RAL TAD I SUMVH DCA I SUMVH TAD I BH SMA CLA JMP I KCNTU CMA TAD I SUMVH DCA I SUMVH JMP I KCNTU KCNTU, CNTNU *1000 NOP CNTNU, TAD I DIH /COMPUTE MOTOR PULSES ROUNDED DOWN TO INT X EGER AND M1MP /111 111 110 000 MINUS ONE MOTOR PULSE UCA WS TAD I DIH AND Z8I4 /000 000 001 111 DCA I DIH CLL TAD wS TAD I DMRH /ADD TO TOTAL MOTOR PULSES REMAINOER DCA I DMRH RAL SZA JMS I IERR/ OVERFLOW FRROR JMP I KLOOP /NEXT AXIS Z8I4. 0017 M1MP. 7760 IERR, ERR KLOOP, LOOP CDWD, 0 TAD NBTYP DCA BTYP2 TAD XDMXH /SET UP - MOTOR PULSES DCA KDMRH /SET ADDRESSES TAD XDMIN UCA KWS TAD LM5 /SET NO AXES DCA NAXES TAD B11 DCA BIT TAD CWB /BASE CODE WORD XX1111111111 TAD SS1 DCA WWS JMP R5 XDMXH, XAX+20 /LOCATION OF FIRST AXIS (X) KDMRH, 0 / LOCATION OF CURRENT AXIS XDMIN, XAX+22 /LOCATION OF CURRENT AXIS' INTEGER PULSES KWS, 0 /NUMBER PULSES FOR THIS AXIS LM5, -5 NAXES, 0 B11, 0001 / BIT 11 BIT, 0 SS1, 1252 RS, TAD I KDMRH /EXTRACT INTEGER PULSES AND M1MP2 /S8140 DCA i KWS TAD I KDMRH /STORE RFMAINDER AND ZZ4I8 DCA I KDMRH TAD I KWS CLL RTR / RIGHT JUSTIFY RTY JMS I K2F4/FILL SIGN DCA I KWS TAD I KWS SPA JMP .+7 CMA / EQUALS -DELTA -1 DCA 1 KWS TAD WWS / ADJ SIGN OF MOTION TAD BIT /BIT IN 3 OR 5 OR 7 OR 9 OR 11 DCA WWS JMP .+4 NOP TAD Mi /ADD ONE NEG PULSE DCA I KWS TAD KDMRH /SET UP FOR NEXT AXIS TAD PP32 DCA KDMRH TAD KWS TAD PP32 DCA KWS TAD BIT CLL RTL -DCA BIT ISZ NAXES JMP R5 /RETURN FOR NEXT AXIS NOP/TAD C NOP/JMS I KOUTC TAD WWS /EVERYTHING READY SO NOP /JMS I KOUTOL DCA CW2 /POST STANDBY CODE WORD JMP I CDWD /EXIT M1MP2, 7760 M1, -1 K2F4, F4 PP32, 32 ZZ4I8, 0017 WWS, 0 DMSGI, O TAD I KBF X SEQ NO AND/OR PLOCK TYPE JMS I IF4 / FILL SIGN POSITION/S/ DCA NBTYP DCA PSWT2 /ASSUME P2 (+) TAD NBTYP SMA CLA JMP .+3 CMA DCA PSWT2 /SET P1 (-) TAD NBTYP -SPA SNA CLA JMP LOOP2 STSQNO, TAD NBTUP /STORE SEQ NO AS SEQ NO OLD DCA SQNOLD JMS I LDMSG JMP I DMSGI KBF, BF SQNOLD. O LDMSG, DMSG LOOP2. TAD PAUS / WAIT IF PAUS 15 SET SNA CLA JMP KBF-2 JMP .-3 IF4, F4 *1200 DMSG, 0 CLA CLL IAC DCA K / ONE TO AXIS COUNTER TAD I IBF1 / NO OF U STEPS RTL / SCALE U*8 RAL DCA STPS TAD A1 /SET ADDRESS FOR Y AXIS DATA DCA BHIH TAD A2 DCA DHW TAD A3 JMP R111 R11, TAD BHIH /SET FOR A,Z,PR,X, IN THAT ORDER TAD M2 DCA BHIH ISZ K TAD K TAD NM6 5NA CLA JMP I DMSG / EXIT TAD DHW TAD NM6 DCA DHW TAD DHT TAD M26 R111, DCA DHT TAD BHIH /COMPLETE ADDRESS SETTING IAC DCA bHIL TAD PDHW DCA AI13 TAD SIX JMS I KLNAS TAD PDHT DCA A113 TAD SIX JMS I KLNAS JMP C2 K. O M26, -32 A1, BF+12 A2, BF+32 /+26 BASE 10 A3, YAX M2, 7776 1-2 NM6, 7772 1-6 BHIH, 0 BHIL, 0 PDHW, DHW /PTR TO PTR TO (FULL) INPUT @UFFER SUB AR / EA PDHT, DHT /PTR TO PTR TO CUBIC CODF OF CURRENT AXIS DHW, 0 DLW, 0 CHW, 0 CLW, 0 BHW, 0 BLW, 0 DHT, 0 DLT, 0 CHT, O CLT, 0 BHT, 0 BLT, 0 SIX. 0006 KLNAS, LNAS IBF1, BF+1 *1300 /DATA MASSAGF PROCESSING SUBROUTINE C2, TAD NBTYP / TEST KEY FOR ALTERNATE(STR LINE) INPUT SMA SZA CLA CLL JMP NDAT /JMP TO TREAT NORMALLY TAD I BHIH /REARRANGE + CLIAR DCA I BHW DCA I BHIH TAD I BHIL DCA I BLW DCA I BHIL NDAT, TAD I BHW /TREAT NORMALLY WITHIN BUFFER AREA JM5 I KF4 DCA I BHT TAD I BLW CLL RTL RTL DCA I BLT TAD I CHW JMS I KF4 /FILL SIGN POS(4 BITS) DCA I CHT TAD I CLW CLL RTL RTL DCA I CLT TAD I DHW / CLL AND PP17 RTR RTR RAR TAD I DLW DCA I DLT TAD I DHW RTR RTR AND PP17 / JMS I KF8 /FILL SIGN POS(8 BITS) DCA I DHT JMP R11 / PP17, 0017 KF4, F4 KF8, F8 *1400 /LIST ADDRESS SETTER USES AI12 + AI13 /ENTER WITH COUNT IN AC, IST LOC IN /AI13, 1ST ADD IN I,AI13 /TO SET 100-105 TO POINT TO 200-205 LNAS, 0 /AC=6 100=200 AI13=100 AND AI12 NOT IN US / E CMA IAC IAC SMA /INSURE A SMALL NO OF SETTINGS HLT DCA CNT2 CLA CMA TAD AI13 /ADDRESS NO1 & 1 TO ADDRESS NO 2 DCA AI12 TAD I AI12 /START OF LOOP CLL IAC DCA I AI13 ISZ CNT2 JMP .-4 JMP I LNAS/RETURN /FILL FIRST 4 BITS WITH SIGN (=5TH BIT) F4, 0 /NOTE FERST 4 BITS MUST BE ZEROS /NOTE NEG NO LOOKS MORE POSITIVE TAD S5170 /111110-0/7600 SPA TAD K4180 TAD 55170 JMP I F4 S5170, 7600 K4180, 0400 S40115, 0020 CNT2, 0 F8, 0 /FILL FIRST 8 BITS WITH SIGN (=9TH BIT) TAD S9130 /1-1000/7770 SPA TAD 540115 TAD S9130 /1-1000-7770 JMP I F8 S9130, 7770 KwSI, WSI RwIST, TAD I KWSI TAD ZTEST SZA CLA JMP KSTSEQ-3 ISZ wSI3 JMP I KNXC 6356 /STOP HSR, 6 SUC.SENTINELS FOUND JMS LISTEN 6352 / CLEAR DONE JYP I KSTSEQ TAD wSI2 DCA wSI3 JMP I KNXC /EXIT KSTSEQ, STSEQ SRE, 6356 /STOP HSR JMS I IERRR WSI2, 7772 WSI3, 0 ZTEST. 7600 KNXC. RETRN IERRR, 4720 LISTEN, O -./ WAIT FOR CONTINUE TO BE PUSHEO IOF CLA CLL 6146 /READ CLOCK AND PUSH BUTTONS /*/ RTR SNL CLA JMP .-3 6142 / CLEAR FLAGS 6152 / CLEAR FLAG5 JMP I LISTEN SBLK, TAD BLKTYP / TEST FOR AUX FUNCTIONS BLOCK TAD PP3 SMA CLA JMP C5 / IS NOT AN AUX FUNCTION BLOCK TAD I BLKT JMS AUX TAD STOP / TEST FOR PAUS /DONT OFER ALL MOTORS FOR / WARD SNA CLA ISZ PAUS Z SET TO PAUSE TAD I BLKT+1 JMS AUX CLA CLL TAD I BLKT+2 JMS AUX CLA CLL TAD I BLKT+3 JMS AUX AND STOP+1 DCA CWB CLA CLL TAD CNT3 DCA WS2 DCA WS6 ISZ WS6 JMP .-1 ISZ WS2 JMP .-3 TAD ONE DCA STPS JMP I CHK3 STOP, 7253 6000 ONE, 0001 CNT3, 7540 WS6. 0 WS2, 0 CHK3, CHK1+3 BLKT, 204 236 270 322 354 C5, TAD BLKTYP TAD PP3 SZA CLA JMP I LCNTDN TAD ONE DCA STPS JMP I LCNTDN LCNTDN, CNTDWN AUX, O RTL RTL AND ZTEST OPMTRS JMP I AUX MM2, 7776 PP3, 0003 *1600 STSEQ, 6142 /CLEAR FLAGS INTERFACE 14 6152 6342 /CLEAR HSR FLAG AND O TO AC 6343 /STEP TAPE ONCE TO RIGHT 6341 /SKP ON FLAG JMP .-1 6346 /CLEAR FLAG AND LOAD ACC FROM HSR JMP .+6 NOP NOP NOP / SPACE FOR READER ERROR CHECKING NOP NOP 6354 / SKIP ON DONE FLAG JMP .-1 6352 /CLEAR DONE FLAG (HSR) TAD 4200 SNA CLA JMP STSEQ+3 IAC 6143 /ENABLE CLOCK DCA I IBUSYS / / = NOT BUSY TAD PIOD DCA 1 P1OD TAD PIOD DCA I PIOD+1 TAD PIOD DCA I PIOD+2 DCA I PIOD+3 DCA I PIOD+4 TAD PIOD+5 DCA I KSWTCH DCA I IBUSYS+1 JMS RSTTUP / RESET AS IF TOOL UP NOP NOP JMP I ISTRT PIOD, BFO OPP2 OPP3 8FO+1 IFO+2 7430 KSWTCHt SOTCH ISTRT, BEGIN M200, 7600 IBUSYS, BUSYSG PAUS CLA SLL /COPY LOWER HALF TO UPPER HALF TAD INIT2 DCA Z A116 TAD INITI JMP SPY+4 CPY, CLA CLL /COPY UPPER HALF TO LOWER HALF TAD INITI DCA Z A116 /SET PICK UP TAD INIT2 DCA Z A117 /StT LAY DOWN TAD TST3+1 DCA TST3 /SET TEST TAD I Z A116 DCA I Z All7 ISL TST3 JMP .-3 *1700 CLA CLL OPMIRS / RESET AUX FUNCTIONS TO ZERO JMS I KISTEN 6355 / TAPE RESET PROGRAM 6347 CLL CLA TAD JM4 DCA INDIC RPT, 6341 /SKP IF FLAG JMP .-1 6346 /READ BUFFER TAD TSTV SVA CLA /TEST FOR SENTINEL JMP TST4 TAD JM4 DCA INDIC JMP @PT TSTV, 7600 INDIC, O TST4, ISZ INOIC JMP @PT 6356 / STDP REWIND JMS I KISTEN 6352 / CLEAR DONE JMP I ISTSEQ JM4, 7774 ISTSEQ, STSEQ CR3, 215 INITI, 4020 INIT2, 20 TST3, O 4121 /-3657 KISTEN, LISTEN JM2, 7776 RSTTUP, 0 / SUBROUTINE TO RESET AS IF TOOL UP TAD .+5 DCA BLKTYP TAD .+3 DCA @SWTCH JMP I RSTTUP 7776 *2000 CLA lAC 6143 / ENABLE CLOCK CLA /TO COMPARE O ThRU 2777 DCA B2 TAD B2 /TO COMPARE B2 THRU LIM TAD FOURM DCA B3 ION Li, TAD I B2 CIA TAD I B3 SZA CLA /IF SAME(ZERO) IGNORE JMP L2 /JUMP TO PRINT L3, ISZ B2 ISZ B3 TAD LIM CIA TAD B2 /TEST FOR END OF RANGE SPA CLA JMP L1 /NOT DONE 10F HLT /DONE FOURMe 4000 B2, 0 LIM, 3600 B3, 0 L2, TAD I KOPP2 /WAIT FOR COMPL.OF TYPING CIA TAD I KOPP3 SZA CLA JMP L2 /WAIT IAD I KBUSYS SNA CLA JMP L2 /WAIT TAD B2 /LOAD BUFFER AREA JMS I KOUTO CLA TAD I B2 JMS I KOUTO CLA TAD I B3 JMS I KOUTOL CLA JMP L3 KOPP2, OPP2 KOPP3, OPP3 KBO, BO KBUSYS, BUSYSG *2400 BFO, 2400 /SIART OF 126 CHARACTER OUTPUT BUFFER *2576 /FOR SENTINEL BLL, 0 /END OF OUTPUT BUFFER *2600 OUTC, 0 /OUTPUT A CH@R. WHEN ROOM EXISTS DCA 1 OPP3 ISZ OPP3 TAD OPP3 / TEST FOR RnOM IN OUTPUT BUFFER TAD M2576 SPA CLA JMP I OUTC TAD bO DCA OPP3 JMP I OUTC OPP2, 2400 OPP3 2400 BO, 2400 M2576, 5202 IOUT, 0 TSF /SKP ON FLAG(TTP) JMP .+4 6042 ICLEAR FLAG CLA IAC DCA BUSYSG / SET NOT BUSY CLA CLL TAD OPP2 CIA TAD OPP3 SNA CLA JMP I IOUT TAD BUSYSG SNA CLA JMP I IOUT /TELETYPE(OUTPUI) IS BUSY TAD 1 OPP2 / FILL ACCUMULATOR TLS / TYPE ACCUMULATOR ISZ OPP2 CLA CLL DCA BUSYSG /SET BUSY TAD OPP2 TAD M2576 SPA CLA JMP I IOUT TAO BO DCA OPP2 JMP I IOUT/END PART OF INTRPT ROUTINE OUTOCT, 0 JMS TOCT CLA CLL TAD SPACE JMS OUTC TAD NUM JMP I OUTOCT SPACE, 0240 OUTOLF, 0 JMS TOCYT JMS CRLF TAD NUM JMP I OUTOLF OUTCLF, 0 JMS OUTC JMS CRLF JMP i OUTOLF CRLF, 0 CLA TAD CR JMS OUTC TAD LF JMS OUTC JMP I CRLF CRe 0215 LF, 212 /ASSEMBLY PROGRAM TO TUPE AN OCTAL NUMBER NUM, 0 TOCT, 0 DCA NUM /SAVE CONTENT OF ACCUMULATOR TAD NUM CLL RAL DCA TEM TAD M4 DCA INDX LOOPO, TAD TEM RTL RAL DCA TEM TAO TEM AND C7 TAD C260 JMS OUTC ISZ INDX JMP LOOPO TAD NUM /PESTORE CONTENT CF ACCUMULATOR JMP I TOCT ERR. O JMS TOCT CLA TAD E JMS OUTC TAD ERR JMS CUTCLF P11, NOP /IDLE NOP 6001 / ION JMP P11 E, 305 / LETTE@ E TEM, 0 INDX, 0 M4, -4 C7, 7 C260, 260 BUSYSG, 0000 /BUSY = 0, NDT BUSY = 1 *3000 BFF, 0 BF, 0 /SE@. NO./- OR C INDIC.SHORT FORM 0 /NO STEPS/LONG FORM/SHORI FORM 0 /BF+2 DHX BHX 0 / DLX BLX O / +4 CHX 0 / CLX BLB 0 / +6 BHX BHZ 0 / BLX BLZ 0 / +10 DHB BHA 0 / DLB BLA 0 / +12 CHB BHY 0 / CLB SLY 0 / +14 BHB POSSIBLE SENTINEL 0 / BLB 0 / +16 DHZ o / DLZ 0 J +7C CHZ 0 / CLZ 0 / +22 BHZ 0 / BLZ 0 f 24 DHA 0 / DLA 0 / 26 CHA 0 / CLA G f 3C BHA o f BLA 0 / 32 DHY 0 / CLY 0 / 34 CHY O Z CLY 0 / 36 BHY 0 / BLY 0 / POSSIBLE SENTINEL /CLEAR INPUT @UFFER AND @TARI TN@UI CLI. 0 /SEOUENCE TAD AI@F /CALLEO AT IN IT AND AFTCER DATA MASSAS@ DCA AI17 /SET AI17 TAD MC DCA US /SET - COUNT DCA I AI17 ISZ WS JMP .-2 TAD A17C /SET AJTO POINTER FOR HSR INPUT DCA AI17 6346 /READ HSR BUFFER AND CLEAR FLAG 6343 /STEP ONE CHARACTER TO THE RIGHT CLA CLL DCA BFF JMP I CLI AIBF, BFF-1 MC, 7736 /-COUNT=-33/10/-42/8/ A17C, BF-1 NXC, 0 /READ NEXT CHARACTER FROH BUFFER IF READY 6341 /SKIP IF CHAR. KEADY JMP 1 NXC /RETURN CLL LA 6346 /NEXT CHAR.TO AC AND CLEAR FLAG DCA WSI SWTCH, 6354 / SKIP ON DONE @LAG/SET 3163/RESET 1633 JMP ,-l 6352 /CLEAR DONE FLAG (@SR) TAD WSI JMP .+7 NOP NOP NOP NOP / SPACE FOR READER ERROR CHECKING NOP NOP TAD TEST SZA SLA /TEST FOR A SENT INEL JMP FINI TAD AI17 /PATTERN IS THAT DF A SENTINEL TAD SI /TEST FOR PROPER SEOUENTIAL POSITION SNA /FUR A SENTINEL JMP RSTR /A GOOO LONG BLOCK SMA JMS I ERRR / TOU MANY CHARACTERS TAD S1+1 SNA JMP RSTR / A GOOD SHORT BLOCK TAD S1+2 SNA CLA JMP REWINU FINI, TAD WSI DCA I AI17 /STURE NEW CHAR. CMA TAD AI17 TAD SI SMA CLA JMS I ERRR 6343 /SIEP TAPE ONE CHARACTER TO IHE RIGHT REIRN, JMP I NXC /RETURN RSTR. ISZ BFF /NDTE BLOCK READY FOR PROCESSING JMP I NXC lEXIT SI, 7740-BFF /3RD POS SENTINEL LOC/AI17/ /LONG BLOCK 24 /2ND POS SENTINEL LOC/RELATIVE /S@ORT BLO / CK 14 /IST POS SENTINLL LOC/RELATIVE/END OF @AP / @ CLO, O /UUTPUT INITIAL IZATIO@ JMP I CLO OUT, O /UUTPUT A CHARACTER STPING JMP I OUT /DUMMY TESI, 7600 WSI, 0 ERRR, ERR REWIND, 6142 /MAKE SURE/CLEAR FLAG 6343 /RD 1 CHAR 6341 /SKP IF READY JMP .-1 6346 /LOAD ACC DCA WSI TAD WSI TAD TEST/REDUNDANT TEST SZA CLA JMP FINI/NOT AI END 6355 / REWIND TAD IRWTS-1 DCA SOTCH DCA dSI TAD I .+4 DCA l .+4 6347 / READ TO LEFT / ACTUALLY STARTS REWIND JMP I NXC /RETURN WS12 WS13 JMP I IRWTS IRWTSI RWTST *3200 INTR, DCA SAC /SAVE ACCUMULATUR RAK DCA SL /SAUE LINK 6234 /RIB LOAD AC FROM INTERRUPT BUFFER DCA SIB /SAVE INTERRUPT BUFFER(MAY NDT NEED) JMS OPER /OPERATE MOTORS JMS I INXC /READ CHARACTER (IF ANY) JMS I IIOUT /WRITE CHARACTER (IF ANY) CLL CLA TAD SL RAL TAU SAC 6142 /CLEAR CLOCK 6001 /ION TURN UN INTERRUPTS JMP I 0000 SRETURN TO SLOW SPEED PROGRAM SAC, 0 /STORAGE FOR ACCUMULATOR ON INTERRUPT SL, 0 /STORAGE FOR LINK ON INTERRUPT INXC, NXC SIB, O IIOUT, IOUT OPER, 0 6152 / CLEAR OTHER INTERFACE FLAG / MAY NOT NE / ED 6341 I CLEAR DONE FLAG 6141 /SKP ON CLOCK OR PUSH BUTTONS JMP I OPER /RETURN 6140 /CLEAR AND LOAD, AC FROM DEVICE RTR /CLOCK BIT(11) TO BIT 0 SMA CLA JMP P8 6142 /CLEAK FLAG JMP I KALFA KALFA, ALFA STDOP, 6144 /OPERATE MOIORS / ACC CONTAINS M@TOR CON / T WORD 6152 /CLEAR OTHER CLOCK NOP AND @2110 SNA CLA JMP TF2 /THIS HAPPENS ONLY WHEN WAITING CNTDUN, CLA CLL /CORRECT COUNTS ISZ XOPC JMP .+5 TAD CW AND MB10 /SUBTRACT BIT 10 DCA CW /IF OTHER MECHANISM, AND IT OUT (BITS 0+1 / @ JMS CHK1 ISZ XOPC+1 / PIECE ROTATION JMP .+5 TAD CW AND MB8 /SUBTRACT BIT 8 DCA CW JMS CHK1 ISZ XOPC+2/ZOPC JMP ,+5 TAD CW AND MB6 XSUBTRACT AIT 6 DCA CW JM5 CHK1 ISZ XOPC+3/AOPC/TILT JMP .+5 TAD CW AND MB4 /SUBTRACT BIT 4 DCA CW JMS CHK1 ISZ XOPC+4/BOPC/Y JMP .+5 TAD CW AND MB2 /SUBTRACT BIT 2 FROM (MOTOR) CONTROL WORN DCA CW JMS CHK1 JMP I OPER CHK1, 0 ISZ NACT /COUNT DOWN ON NO ACTIVE AXES JMP I CHK1 TAD CWB DCA CW / CLEAR MOTOR CONTROL WORD TF2, JMS I KRSTUP/ RESET AS IF TOOL UP TAD CW2 /DETERMINE IF NEXT CW READY SNA JMP I OPER -DCA CW /SET UP NEXT CW DCA CW2 /CLEAR THE STAND BY CW (USE AS FLAG) TAD I KXDMIN DCA XOPC TAD I KBOMIN DCA XOPC+1 / PR oPC TAD I KZDMIN DCA XOPC+2/ZOPC TAD I KADMIN DCA XOPC+3/AOPC/TILT TAD I KYDMIN DCA XOPC+4 / YOPC TAD KM5 /RESET NO ACTIVE MOTORS TO 5 DCA NACT TAD BTYP2 DCA BLKTYP TAD PSWT2 DCA PSWTCH DCA I KDEC JMP I KSBLK KDEC, DEC KRSTUP, RSTTUP KSBLK. SBLK KM5, -5 Mb2. 6777 MB4, 7577 MB6, 7737 MB8, 7767 MB10, 7775 Z2I10, 1777 NACT, 0 00 /SPARE LINE KXDMIN, XAX+22 KBDMIN, BAX+22 KZDMIN, ZAX+22 KADMIN, AAX+22 KYDMIN, YAX+22 P8, ISZ PAUS /SET TO PAUSF AT END OF CURRENT CUT SZL CLA /SKIP IF CONTINUE NOT PRESSEO JMP .+3 6142 /CLEAR FLAG JMP I OPER DCA PAUS /CLEAR PAUSE JMp ,-3 *3400 ALFA. DCA XPAT /CLEAR EXTRACTOR PATTERN DCA PPAT /CLEAR PULSE PATTERN / FOR NO FEED BACK SET NEXT 2 CARDS TO / DCA DEC + JMP CTEC 6311 /SKP ON + Z JMP SMZ TAD CDEC-2/-Z PATTERN DCA PPAT ISZ DEC JMP EXT SMZ, 6312 /SKP ON - Z JMP CDEC TAD CDEC-1/ + Z DCA PPAT CMA /-1 TAD DEC DCA DEC EXT, TAD CDEC-1/SET EXTRACTOR PATTERN ZZ DCA XPAT JMp CDEC+1 0040 /-2 0060 / + Z = ZZ CDEC, DCA DEC 6314 /SKP ON RIGHT jMp SLEFT TAD CTEC+2SLEFT TAD PPAT DCA PPAT ISZ IEC /TEC = TEC + 1 JMP EXT2 SLEFT, 6313 /SKP ON LEFT JMP CTEC TAD CTEC+3/RIGHT TAD PPAT DCA PPAT CMA TAD TEC /TEC = TEC - 1 DCA TEC EXT2, TAD CTEC+3/SET EXT PAT AA = RIGHT TAD XPAT DCA XPAT JMP .+5 CTEC, DCA TEC JMP ,+3 0200 /LEFT 0300 /RIGHT = EXT PAT TAD BLKTYP TAD P3 SZA CLA /SKP IF TOOL DOWN JMP PAWTCG TAD TEC X TOOL DOWN SZA CLA JMP CLEXT+4 / MOVE TILT ONLY TAD DEC SMA CLA JMP i KCHKP CMA AND PPAT TAD CWB 6144 /OPERATE MOTORS CLEXI. 6152 /CLEAR OTHER CLOCK 6352 /CLEAR DONE FLAG CLA CLL JMP I KSCAN TAD CTEC+3 JMP CLEXT-3 *3500 PSWTCG, TAD PSWTCH SPA CLA JMp P722 TAD COUNT2 SZA CLA JMP FF TAD PPAT SZA CLA FF, JMP FF1 /NO NEED TO INITIALIZE FF3, TAD .+7 DCA. -2 /SET FF TO FF1 TAD XPAT CMA AND CW TAD PPAT JMP I KSTDOP JMP FF1 JMP FF2 FF1, TAD .-1 DCA FF /SET FF TO FF2 TAD XPAT AND PPAT TAD CWB DCA WS3 TAD MNS2 /ATTEMPT TO REACH MIDDLE OF CONTROL BAND DCA COUNT2 FF2, TAD WS3 OPMTRS CLA CLL ISZ COUNT2 JMP CLEXT TAD .+3 DCA FF /RESET FF TO FF3 JMP CLEXT NOP /THIS IS A CONSTANT FOR RESFTTING MNS2, 7776 P3, 0003 DEC, 0 /DEPTH ERROR COUNT(+/-)SINCF LAST 0 TEC. o /TILT ERROR COUNT XPAT.O PPAT, 0 IPSWT. PSWTCH WS3, 0 COUNT2 O KSTDOP, STDOP /JMP TO OPMTRS, CLEAR FLAGS, COUNT DOWN KCNTON, CNTDWN /JMP TO COUNT DOWN REMAINING PULSES KCHKP, CHK1+3 /JMP TO PROCEDE TO NEXT BLOCK KSCAN, CHK1-1 /JMP TO CONTINUE INTERUPT SCAN P722, TAD CW JMP I KSTDOP / TOOL UP OR MOVE TO NEXT CUT @ ORGANIGRAMME A Programme de préparation de la bande Début prog. principal + 27 lignes Lecture Décalages origine 'motif Facteurs d'echelle motif Caractéristiques pour surfaces spéciales écialesclindri Instruction 1902 + 4 1 lignes Lecture coordonnées point de dépar't Appel s-prog. C0NV : corrections d'origine du motif pour surfaces spéciales. Instruction il ' s-prog. CBIT : lecture d'une séquence3~I Ppper repréeentant une pasae otr up segerent (LoB point lel bles. CRIT calcule la longueur du trait. 11+2 1 fdautres goiats '"'-")- Feraeture flched tof--o-s2~ aortie et rtop I an import à la longueur pour chaque axe et chaque 2 cospatibs avec a détecrran et d'uae 2 Pt cotpatibles avec la detectlon ttun tssi/o1ni de x ou de Y et continus avec le segrent set cèdent du trait en cours, s'il y a lieu. 954+2 Calcul normal du coefficient de polynaaes es cubi Iques pour able (rus)lcansidéréent I I"r"r"oo"9f, n de Is languef Q3 aeg8le lonmrnzr tnralr s r vers B ORGANIGRAMME B Programme de préparation de la bande (suite) 903+1 Appel s-prog. ERRCHK pour vérifier si les coeffi cients définissent des courbes compatibles avec le 98+2 donnfs - s Erreurs excess pu ment ERRCRK) 4 NON1 &commat; 2 IAppel s-prog. COONS Début s-prog. C00NS + 26 Pour le segment initial d'un trait, commander re tée outil déplacement de la fin du trait précéden au début du nouveau trait, puis descente outil. Perforation bande par s-prog. PC (C00NS) 756+2 Conversion coefficients pal ornes, cubiques en coef ficients différentiels (nombre d'étapes : 100) (COTONS) 60+6 Correction nombre d'étapes pour obtenir la résolu voulue sur la machine et/ou pour-respecter les res trictions et la précision imposées par le progra de CN. Si le nombre d'étapes change recalculer les coefficients différentiels cubiques. (COONS) 2513 Appel s-prog. PC pour perforer le bloc complet dan la bande de papier. Reconstitution du segment à partir des coefficient différentiels cubiques; appel sous-progralame VECT pour dessiner point par point la courbe reconsti tuée. I Retour à X org.A ORGANIGRAMME C Programme de fond : reconstitution de la courbe cubique (P B-ll) (P B-10) (P B-2) *170o *16oe *600 t acer t y on entrés mise e mise à Début 8 a MCI lecture | **ri (P s-2)1 (ler caractère) de X Si-indic fin des donni b la bande perforée t fin de la pièce) posiez ~ tionné, réarmer les (P B-2) > 13&num;=tauxiliaires et R1+5 (*6 ans ert nauv. d'en t cd 1 1 ët cfipt iip L s ls Ue~ DX (*lsoo) zPae attente Iattel ~ foàte-L Izoe attae !ff so3 spca ' 2+4 te R2+7 a38P"a - R2+7 (P B-3 > NON I .. I eafjtMtco -I ] OII Zoo L t 1OUI Coefficienfs ' Ilulnquants mns à zéro fON (P B-?X.13f00t4 L LSppliqrzer facteure Idl échelle 0 Sr-ransfert daanées ~Ybb'bre de segnrertsl Effacer tarpon entrée et telancer lecture BUr ban e perforée. R2, 2 Construction du MCM suivant Cso > alteCUur rpiarls2cion0e. chaqu moteur & BR V1 Vj' + Vi29 V,' 17ill+ i zib ilsion"j e?gneci- Di' -+ bit sens reoteuri bit 1 dans moteurs sens moteur 1 C59 MCM = mot de commande machine NBO = nombre de segments restants (le long de la cubique) ORGANIGRAMME D Programme auxiliaire : demandes ou interruptions (P B-16) *oooo *320 > 4, (320oc20) D Interrup. horloge I ON I NXC+1 L 32004, *3000+53 100 Interrup. lecteur? 102 OUI (+24014) (*2C'00+14) *3200+13 *5207, (*960b14) *320O}3 t" essages diagnosf Lire car. suivant 1 103 wr. fin d + OUI Position finde OUI pa bloc? tcomPtJV Ite +71 . I lect Caractère Positionner clé fin de bl.ocCta + 1 on ydéntrée eues L Position Wl ancer re o na ro tin de band ? ge bande et pos 10 tionner indicat. ON ON dcnnée'Çrj (I)Le programme de lecture est modifié pour rechercher le début de la bande et, lorsqu'il est trouvé, pour sortir vers le début du programme de fond. ORGANIGRAMME E Programme auxiliaire (suite) (P B-18) *3400 Examen état des palpeurs pour O déterainer Z et.Ktablir la configuration de conde pour d'éventuelles corrections. (P B-19 cc+4 Examen du n" de séquence (réel ou fictif pour établir le mode opératoire n0 séquence tK Désigne un bloc standard pour segment cubique n séq (fictif) 8 Désigne un bloc standard pour segment linéaire rr s -i Depl. au trait suivant n r -2' Ebntée de l'outil n n -3 Descente de l'outil N N -4 Fonctions aux. A/x SBIK+1 t ) saxe a CB8LLde foactiaasl ---I cnar. selan les pseuC-r(i0) I fdo-coef. du IEK I CTEC+6 (*340X40) CTS zizi o( correct? voyer se Ilentent bitss, T JOI OUI oo) pSTCif (P Blg)FCTEC+U Id'izlcaaon I (350j) cctr 21&num; Iyer bitsl oa PSYLFQ +3, STDOP Transsettre aux moteurs une copie du MCM eventuelle eat corrigée en a inclinaison et en grofondeur MCM = Mot de commande des Moteurs @@ Traité en dehors de la séquence logique illustrée. OPGANIGRAMME F Programme auxiliaire (fin) (P B-19) 17722(3500e48), (*3200+32) IMCMfrans-d aux T au moteur (P B-20) STDOP+ -(i0) PQ J CDWN 200c38) w > teu i IPi -f-Lgflac-6its 10N Icorresp. du ( )C CHK1 L 1 I (IOOt---L- 3 3B moteure actifs v Li = 5 1 -i - NB w > t. act. 1LE, a-Y=M TF2 i LMCM en attente NC diapnnigin T OUI TF2+4, TF2 ,+F. NB m > t. actif$ TF2+5 5 Effacer MCM EICM attente zompt.imp.attente MCM = Mot de Commande des Moteurs REVENDICÂTIONS 1. Procédé de reproduction automatique d'un motif préétabli sur une pièce à l'aide d'un outil à moteur simultanément positionné sur plusieurs axes indépendants, caractérisé en ce qu'il consiste à tailler les lignes génératrices du motif selon deux axes fixes d'un plan approximativement confondu avec certaines régions élémentaires de la surface à graver de la pièce, soue contrôle d'un progrs; e de commande pré- établi, et à positionner simultanément l'outil le long d'un axe de profondeur et autour d'un axe d'inclinaison pour maintenir une orientation déterminée de l'outil par rapport à la surface de la pièce, sous contrôle de signaux de rétroaction. 2. Procédé de reproduction automatique d'un motif préétabli sur une surface généralement plane d'une pièce à l'aide d'un outil à moteur simultanérent positionné sur plusieurs axes indépendants, caractérisé en ce qu'il consiste à tailler les lignes génératrices du motif par un positionnement de l'outil sur deux axes fixes d'un plan commun approximativement confondu avec des régions élémentaires de la surface à graver sous contrôle d'un programme de commande préétabli, et à positionner simultanément l'outil le long d'un axe de profondeur et autour d'un axe d'inclinaison pour maintenir une orientation déterminée de l'outil par rapport à la surface de la pièce, sous contrôle de signaux de rétroaction. 3. Procédé de reproduction automatique d'un motif préétabli sur une surface courbe d'une pièce à l'aide d'un outil à moteur simultanément positionné sur plusieurs axes indépendants, caractérisé en ce qu'il consiste à tailler les lignes génératrices du motif par un positionnement de l'outil sur deux axes fixes d'un plan correspondant généralement aux lignes génératrices de la longueuret de la largeur du votif, la pièce étant positionnée en rotation autour de son axe longitudinal pour développer le motif le long de la circonférence de la pièce sous contrôle d'un programme de commande préétabli, et à positionner simultanément l'outil le long d'un axe de profondeur et autour d'un axe d'inclinaison pour maintenirune orientation déterminée de l'outil par rapport à la surface de la pièce, sous contrôle de signaux de retro-action. 4. Appareil pour la reproduction automatique d'un motif pré-établi sur une pièce, caractérisé en ce qu'il comprend un outil à moteur, un dispositif de commande contenant un programme de mouvements de l'outil par rapport à la pièce sur plusieurs axes indépendants dont deux axes fixes d'un plan qui est approximativement confondu avec certaines régions élémentaires de la surface de la pièce, des moyens de rétroaction suivant la surface de la pièce pour déterminer la position de l'outil le long de l'axe de profondeur et pour maintenir une orientation déterminée de l'outil autour de l'axe d'inclinaison par rapport à la surface de la pièce, et des moyens de positionnement de l'outil par rapport à la surface de la pièce en réponse à des- ordres élaborés par le dispositif de commande programmée et les moyens de rétroaction. 5. Appareil selon la revendication 4, caractérisé en ce que le motif est un quadrillage régulier à base de losanges. 6. Appareil selon la revendication 4, caractérisé en ce qu'il comprend un support de pièce sélectivement animé d'un mouvement rotatif qui constitue l'une des composantes du mouvement relatif de la pièce et de l'outil pendant la reproduction automatique du motif préétabli. 7. Appareil selon la revendication 4, caractérisé en ce qu'il comporte plusieurs outils à moteur sélectivement amenés en position de travail par rapport à la pièce. 8. Appareil selon la revendication 4, caractérisé en ce que les moyens de positionnement comprennent plusieurs moteurs électriques pas à pas. 9. Appareil selon la revendication 4, caractérisé en ce que les moyens de rétroaction comprennent des transformateurs linéaires variables connectés différentiellementet ayant des armatures mobiles axialement qui sont reliées à des palpeurs en contact avec la surface de la pièce. 10. Appareil selon la revendication 7, caractérisé en ce que les outils à moteur sélectivenent amen6s en position de travail par rapport à la pièce comprennent une fraise-disque pour tracer les lignes sensiblement droites et une fraise de graveur pour tracer les lignes de bordure incurvées du motif préétabli. 11. Appareil selon la revendication 9, caractérisé en ce que les signaux de rétroaction sont appliqués au dispositif de commande programmée et incorporés aux instructions de sortie de ce dernier qui sont appliquées aux moyens de positionnement de l'outil par rapport à la pièce. 12. Appareil selon la revendication 9, caractérisé en ce que les signaux des moyens de rétroaction sont utilisés par le dispositif de commande programmée uniquement dans l'établissement des instructions de profondeur et d'inclinaison destinées aux moyens de positionnement pour la préparation et l'exécution d'une passe de l'outil, le dispositif de commande programmée déterminsnt à tous les autres instants la position de l'outil exclusivesent d'après son program e. 13. Appareil selon la revendication 9, caractérisé en ce qu'il utilise la rorra et la différence des déplacements des palpeurs qui suivent la surface de la pièce comme critères de position de l'outil le long de l'axe de profondeur t d'orientation de l'outil autour de l'axe d'inclinaison.