Die Programmierung der ersten AGIECUT war ein Abenteuer. Man muss wieder daran denken, dass all dies im Jahr 1969/70 stattfand, als es noch keine Taschenrechner oder Tischrechner gab, die augenblicklich einen Sinus, Kosinus oder Tangens berechnen konnten. AGIE hatte zu der Zeit zwar bereits eine "Rechenabteilung", in der aber nur eine sogenannte Tabelliermaschine zum Einsatz kam, mit 80-Kolonnen Lochkarten, einer Sortiermaschine, einer Dupliziermaschine sowie einer Mischmaschine. Die "Programme" wurden mittels Kabeln auf Steckerfeldern verdrahtet, damit die gewünschten Daten berechnet werden konnten um anschließend auf einem Kettendrucker ausgedruckt zu werden. Diese Anlage wurde ausschließlich für die Lagerhaltung (also Inventar), Zeit-Erfassung bei den mechanischen Bearbeitungen und andere ähnliche wiederkehrende Aufgaben eingesetzt.
Die allerersten Programme mussten also äußerst mühsam mit dem Rechenschieber berechnet werden, mit entsprechender Ungenauigkeit natürlich.
Wer kann sich erinnern? |
Die ersten Maschinen konnten ausschließlich im AGIECODE programmiert werden. Dies war ein eigens für die Steuerung AGIEMERIC konzipierter Lochstreifencode, der äußerst kompakt und einfach war.
Erst später wurden Einschübe entwickelt, damit die Maschinen auch im ISO (ASCII) oder EIA Code programmiert werden konnten.
Der ursprüngliche AGIECODE |
Der AGIECODE war ein sogenannter BCD Code, für Binäre Codierung der Dezimalen. Die effektiv gewünschten Werte wurden durch Addierung der Grundwertigkeiten erzielt, indem auf einer Zeile mehrere Löcher angebracht wurden. Sollte also z.B. eine X-Bewegung von 107.25 mm durchgeführt werden, mussten in Zeile 5 die Lochungen 8 & 6 (80 mm + 20 mm), sowie 3 & 2 & 1 (4 mm + 2 mm + 1 mm) gelocht werden und zusätzlich in Zeile 6 die Lochungen 6 (0.2 mm) und 3 & 1 (0.04 mm + 0.01 mm).
Die Anzahl Zeilen für einen Steuersatz. d.h. für eine lineare oder zirkulare Bewegung war auf 9 Zeilen festgelegt und musste unbedingt eingehalten werden.
In der ersten Zeile wurden die Grundangaben für das Inkrement bestimmt, d.h. ob es sich um eine Gerade oder Kreis handelt, ob die Bewegung mit oder ohne Erosion durchgeführt werden soll, ob es sich um den letzten Steuersatz handelt, usw.
War in Zeile 1 Kanal 8 gestanzt, wurde die Bewegung als Gerade ausgeführt und man musste auch eine Lochung in Kanal 1, 2, 3 oder 4 machen, um anzugeben, in welchen Quadranten diese führen soll. Quadrant 1 war dabei "nach oben rechts", d.h. in +X und +Y Richtung, Quadrant 2 "nach oben links", d.h. in -X und +Y, usw.
War Kanal 8 in Zeile nicht gelocht, wurde ein Kreisbogen im Gegenuhrzeigersinn ausgeführt, sofern Kanal 5 der selben Zeile nicht auch gelocht war, dann wurde der Bogen im Uhrzeigersinn durchgeführt. Kanäle 1 bis 4 durften in diesem Fall nicht gelocht sein.
Mit Kanal 7 der ersten Zeile konnte verlangt werden, dass die Bewegung ohne Erosion (Positionieren) jedoch mit Referenzspannung durchgeführt werden soll.
Handelte es sich bei dem Steuersatz um die letzte Bewegung im Programm, wurde dies mit einer Lochung in Kanal 6 der ersten Zeile angegeben.
In den Zeilen 2 und 3 wurde der Startwinkel, Phi null (φº), für einen Kreisbogen angegeben. Dieser musste in der gleichen Drehrichtung wie das Kreissegment, von der positiven X-Achse aus gemessen angegeben werden. Wie bereits weiter oben bemerkt, konnten diese Angaben nur in Schritten von 1° gemacht werden. Wie für die Angaben für den Laufwinkel und die X-Y-Bewegungen oder die Radien wurden die einzelnen Lochungen zusammengezählt, d.h. eine Lochung in Kanal 1 und 3 der zweiten Zeile ergab einen Winkel von 50°.
Zeilen 3 und 4 dienten für die Angabe des Laufwinkels, Delta Phi (Δφ), eines Kreissegments, die gleichen Regeln und Einschränkungen wie für den Startwinkel galten hier. Bei einer linearen Bewegung blieben die Zeilen 2, 3 und 4 leer.
Die Zeilen 5 und 6, bzw. 7 und 8 dienten für die Angabe der Linearbewegungen (ΔX und ΔY), die in Y- ,Y- oder kombinierter Richtung ausgeführt werden sollten. Im Fall eines Kreissegments konnten die Radien auch mit unterschiedlichen Abmessungen angegeben werden, um eine Ellipse auszuführen!
In der letzten Zeile wurden immer Lochungen in den Kanälen 2 bis 8 angebracht, mit welchen das Ende des Steuersatzes angegeben wurde. Eine Lochung von allen 8 Kanälen galt als Korrekturlochung und die physische Länge des Steuersatzes wurde dadurch um eine Zeile verlängert.
Korrekturen konnten auch an einem bestehenden Lochstreifen angebracht werden. Hierzu hatte jeder Programmierer eine Schere, meistens in einem kleinen Schweizer Armeemesser integriert, und Klebeband. Mit diesen Mitteln konnten fehlerhafte Lochungen abgedeckt werden, um neue anzubringen. Als noch ein mechanischer Lochstreifenleser eingesetzt wurde reichte das einfache Zukleben der Lochungen, später, mit optischen Lesern, mussten auch ausgestanzte "Konfettis" in die zugeklebten Lochungen eingepresst werden, die wurden vom Klebestreifen in dieser Position gehalten.
Der erste Stanzer |
Der "Luxus-Stanzer" |
Die ersten Geräte, die zum stanzen der Lochstreifen eingesetzt wurden, waren äußerst primitiv. Erste Voraussetzung war, das Lochstreifen verwendet wurden, bei denen die Transport- oder Taktspur bereits gelocht war. Die Geräte selber waren meist Kombinationen von Stanz- und Spleißgeräten, um Teile von Lochstreifen miteinander zu verbinden. Das Gerät in der gezeigten Abbildung ist nicht das erste, das verwendet wurde, dieses hatte nur eine einzelne Zeile von 8 Bohrungen und verfügte auch nicht über eine Schneidevorrichtung. Mussten zwei oder mehrere Stück Lochstreifen miteinander kombiniert werden, konnte dies mit speziellen Selbst-Klebe-Etiketten erfolgen, die etwas weniger breit als der Lochstreifen (1") waren, und mit allen Lochungen bereits vorgestanzt. Diese Lochungen waren etwas größer als die, welche im Lochstreifen vorhanden waren, damit die Positionierung der Etikette erleichtert wurde.
Später wurde ein Gerät auf dem Markt gefunden, wo der Lochstreifen eingelegt bleiben konnte, um mit einem Transportrad vorwärts bewegt zu werden.
Mit den acht Tasten konnten die einzelnen Kanäle gestanzt werden. Die erste Ausführung dieses Gerätes hatte ein festes Zählrad und es war ziemlich schwierig, speziell wenn Korrekturlochungen angebracht wurden, die Anzahl Zeilen je Steuersatz unter Kontrolle zu halten. Die zweite Ausführung, von AGIE modifiziert, verfügte über einen Nonius der bei Korrekturlochungen Zurückgestellt werden konnte, wodurch die Zählung einfacher wurde.
Bei diesem Gerät musste darauf geachtet werden, dass unter Umständen bereits vorhandene Korrekturen nicht erneut gelocht wurden, da dies die Matrize und den Stempel verklebte.
Nach kurzer Zeit kam man zur Erkenntnis, dass Firmen, die bereits andere numerisch gesteuerte Maschinen besaßen, den Lochstreifen mit elektromechanischen Geräten stanzen wollen. Da diese Geräte alle entweder im ISO (International Standardising Organisation) oder im EIA (Electronics Industry Alliance) Code arbeiteten, musste auch AGIE die Möglichkeit bieten, die DEM 15 in diesen beiden Codearten zu programmieren, da der AGIECODE mit diesen Geräten nicht gestanzt werden konnte.
Zu diesem Zweck wurden zwei gedruckte Schaltungen entwickelt, die in der Steuerung ausgetauscht werden konnten. Es bestand also die Möglichkeit, die Maschine entweder im AGIE, ISO oder EIA Code zu programmieren, aber immer jeweils nur ein Code, in Abhängigkeit der eingesetzten gedruckten Schaltung.
Die ISO/EIA Codes wurden in Tabulator-Schreibweise entwickelt, d.h. dass jede Kolonne auf dem Ausdruck eine bestimmte Bedeutung hatte und ein Steuersatz immer aus der gleichen Anzahl Tabulatoren bestehen musste.
Ein Teletype
ASR-33 |
Ein
Friden Flexowriter |
Die erste Kolonne war für das Zeichen für Programmanfang (%
bzw. H) reserviert und musste nur im ersten Steuersatz angegeben werden. Die
zweite Kolonne enthielt die dreistellige Steuersatznummer, die nur zur besseren
Lesbarkeit eingegeben wurde, ohne dass die Nummer von der Steuerung überprüft
wurde. In der dritten Kolonne wurde bestimmt, ob es sich bei der Bewegung um ein
Geraden-Segment (01), einen Kreisbogen im Uhrzeigersinn (02) oder im
Gegenuhrzeigersinn (03) handelte. Kolonne vier enthielt den dreistelligen
Startwinkel (φº) im Fall einer Kreisbewegung und drei Nullen bei einer Geraden.
Kolonne fünf war für den Laufwinkel (Δφ) reserviert, mit den gleichen Regeln wie
für den Startwinkel. Kolonnen sechs und sieben dienten zur Angabe der Bewegung
in X- bzw. Y-Richtung (ΔX bzw. ΔY) bei Geraden (sechsstellig mit Vorzeichen) oder dem Radius
in X- bzw. Y-Richtung bei Kreisen. In Kolonne acht wurde mit "01"
angegeben, dass die Bewegung erodiert werden muss, und mit "00", das
sie ohne Erodierstrom abgefahren werden soll. Die letzte Kolonne diente zur
Angabe für das Ende des Programms (02). Jeder Steuersatz musste mit den Zeichen
für Wagenrücklauf und Zeilenvorschub abgeschlossen werden.
Die Programme in ISO und EIA Code wurden
auf Geräten gestanzt und gedruckt,
die ähnlich der gezeigten Abbildungen waren, es gab natürlich Produkte anderer
Hersteller.
Auf diesen Geräten konnte der Lochstreifen auch dupliziert werden, bzw. bis zu einer bestimmten Stelle dupliziert, um anschließend Korrekturen anzubringen.
Die Codearten ISO und EIA unterschieden sich lediglich in der
Umsetzung der Zeichen in Lochungen, wobei der ISO Code über eine Kontroll-
oder Paritätslochung verfügte.
Die Lochstreifen in ISO bzw. EIA Code waren natürlich um
einiges Länger, als die im AGIECODE, man hatte jedoch den Vorteil des
gedruckten Ausdrucks zur Überprüfung des Programms, der AGIECODE musste von
Auge direkt vom Lochstreifen abgelesen werden, was natürlich oft Quelle von
Fehlern war.
Durch die neue Länge der Lochstreifen war dann auch eine Ab- und Aufwickelvorrichtung für den Lochstreifen gerechtfertigt, mit Tänzerrollen, um die Spannung des Streifens konstant zu halten. Mit dem mechanischen Lochstreifenleser sowie mit den ersten optischen musste der Lochstreifen noch aus dem Leser entfernt werden, wenn dieser zurückgespult wurde.
Die Berechnungen, die angestellt werden mussten, waren von der Codeart unabhängig. Wie bereits erwähnt, wurden die aller ersten Programme unter Zuhilfenahme eines Rechenschiebers berechnet, mit welchem die Winkelfunktionen ermittelt wurden.
Es stellte sich jedoch sehr bald heraus, dass die Genauigkeit dieser Berechnungen nicht ausreichend waren, man griff also auf Trigonometrie-Tafeln zurück. Die, die aus der Schulzeit übriggeblieben waren, erwiesen sich auch bald als unbrauchbar, die besten die gefunden werden konnten hatten gerade mal 4 Dezimalstellen. Mit Mühe und Not wurde ein Tabellenbuch gefunden (Foellmy ?), welches die Winkelfunktionen mit 6 oder 8 Dezimalstellen enthielt, nebst den Logarithmischen Funktionen in gleicher Genauigkeit. Letztere wurden verwendet um Quadratwurzeln zu berechnen.
Man kann sich also in etwa vorstellen, wie lange es dauerte um ein einfaches Programm zu erstellen und wie viel Papier und Bleistift es dazu brauchte. Nebenbei sei noch erwähnt, dass es zu dieser Zeit noch nicht die Druckbleistifte mit 0.5mm Durchmesser gab, man musste also immer wieder den Bleistift spitzen!
Die mühsamsten Berechnungen waren die, um die Winkelbruchteile zu berechnen, sei es für die Start- wie für die Laufwinkel. Eine Annäherungsmethode wurde gefunden, um die Winkelbruchteile einer Bewegung mit einem anderen Radius auszuführen, entweder kleiner oder größer als der Nominalradius, der genau 1° Laufwinkel hatte. In Extremfällen wurde auch dem effektiven Laufwinkel ein weiteres Grad "gestohlen", um die Genauigkeit der Annäherung zu erhöhen. Mit der Zeit wurden Tabellen berechnet, die aufzeigten, ob ein Radius bestimmter Größe für eine bestimmte Winkelöffnung besser verkleinert oder vergrößert werden sollte.
Die Olivetti
P-101 |
Eine Olivetti P-101 |
Obwohl bereits im 1965 auf dem Markt eingeführt, wurde die erste zu diesem Zweck verwendbare Rechenmaschine, eine Olivetti Programma 101 (P-101), erst Ende 1969 oder Anfang 1970 bei AGIE angeschafft.
Es handelte sich dabei um den Vorläufer des PCs, eine Maschine, die auf einem (größeren) Tisch Platz fand und die programmierbar war. Die ausführbaren Rechenarten waren Addition, Subtraktion, Multiplikation, Division, Quadratwurzel und Absolutwert.
Die auszuführenden Programmschritte mussten über die numerische Tastatur und einige Sondertasten eingegeben werden und konnten anschließend auf einer Magnetkarte abgespeichert werden, die bis zu 120 Programmschritte aufnehmen konnte. Werte konnten auf den Karten keine abgespeichert werden, d.h. heißt das die Programmschritte einer Karte nicht mit denen einer weiteren kombiniert oder übernommen werden konnten. Erwiesen sich also die 120 Schritte als nicht ausreichend, mussten die Resultate ausgedruckt werden, um in einem weiteren Rechengang erneut eingegeben zu werden.
An einem Rad konnte die Anzahl Dezimalen eingestellt werden, die nach dem Komma erwünscht waren, je höher die Einstellung und umso länger dauerte die Berechnung. Während der Programmausführung blinkte eine grüne Lampe und eine rote zeigte einen Rechenfehler (Register Über- oder Unterlauf oder Division durch null) an, was die Tastatur blockierte und ausschließlich die Taste "Reset" betätigt werden konnte.
Die meisten Programme wurden anfänglich in AGIE, von P.F. und T.D. in mühsamer Handarbeit ausgearbeitet, oft mit Abend- bzw. Nachtschicht verbunden. Anschließend wurden auf dem Markt erhältliche Programmpakete eingekauft, direkt von Olivetti oder anderen Anbietern. Für die Programmierung der DEM 15 kamen Programme zum Einsatz, die ursprünglich für die Landvermessung (!) entwickelt wurden, die aber den Zweck bestens erfüllten.
Da die zur Verfügung stehenden Rechenarten keine Winkelfunktionen umfassten, mussten diese mit aufwändigen sich wiederholden Rechenschleifen (Iterationen) durchgeführt werden, was in Abhängigkeit der Anzahl verlangter Dezimalstellen die Durchführung der Berechnung beträchtlich beeinflussen konnte.
Die Programme für die Berechnung der Annäherung der Winkelbruchteile mussten natürlich selber erstellt werden. Auf jeden Fall war der Einsatz dieses Rechners für die Programmierer (G.W. und T.D.) ein wichtiger Meilenstein.
Zusätzlich zu der oben erwähnten Methode um Winkelbruchteile auszuführen, wurden mit der Zeit weitere Tricks angewendet, um die Einschränkungen der Steuerung zu umgehen.
So konnte z.B. die Anlage nicht automatisch gestoppt werden,
damit das Ausfallteil kurz vor Ende der Kontur-Bearbeitung gesichert werden
konnte. Diese Funktion wurde als solche erst bei den Steuerungen der zweiten
Generation, welche mit "G" und "M" Codes arbeiteten,
eingeführt.
Bevor dieser Trick erarbeitet wurde, musste der Maschinen-Bediener immer bei der
Anlage sein, damit er im richtigen Moment die Erosion anhalten konnte. Wurde
dies nicht getan, konnte die Stelle am Kontur-Ende beschädigt werden, da sich
das Ausfall-Teil immer bewegte und einen Kurzschluss verursachte.
Damit dieser Stop automatisch ausgeführt wurde, programmierte man einen
Steuersatz für eine lineare Bewegung in irgend einen Quadranten, als letzten
Satz (Programm-Ende) der als Positionierung durchgeführt werden sollte. Die
"Bewegungen" wurden dabei mit "0" für ΔX und ΔY
gelocht. Dieser Stop wurde ca. 2 mm vor Ende der Kontur programmiert, d.h. bevor
der Steg zwischen dem Ausfall-Teil und der gewünschten Kontur zu schwach wurde.
Die Bahn-Korrektur |
Ein weiterer Mangel der Steuerung musste noch umständlicher
überwunden werden.
Die Korrektur-Einrichtung der NBY-15 hatte nur auf Kreis-Segmente Einfluss,
Geraden wurden unverändert in ihrer Länge ausgeführt. Dies wirkte sich
negativ aus, speziell bei der Ausführung der Anfahr-Strecke, also von der
Start-Bohrung zur Kontur. Bei Matrizen, d.h. Innen-Konturen, war es äußerst
wichtig, dass die korrigierte Kontur (z.B. die blaue Bahn in der gezeigten
Abbildung) perfekt konzentrisch zu der programmierten Bahn ausgeführt wurde,
damit die absolute Position eingehalten werden konnte. Bei Stempeln oder Außen-Konturen,
die keine weiteren Konturen im Inneren enthielten, war dies nicht so wichtig,
man konnte einfach von Außen oder einer Startbohrung anschneiden, ohne sich um
die Position der Kontur zu kümmern.
Der "Wurm" |
Die angewendete Methode bestand aus zwei Kreisbögen, die im
gleichen Umlaufsinn wie die Kontur selber programmiert wurden. Vom Startpunkt
wurde der erste Bogen (im gezeigten Beispiel mit φº
90°) mit 60° Laufwinkel programmiert, mit einem Radius, der mindestens so groß
war wie die maximal notwendige Korrektur. Der zweite Bogen folgte diesem
Kreisbogen (im gezeigten Beispiel mit φº
210°), wiederum mit 60° Laufwinkel. Dies produzierte also eine Art
Dreiecks-Bewegung, und zwar eines gleichschenkligen Dreiecks. Die Länge der
effektiven Anfahr-Strecke musste selbstverständlich um den Wert des
programmierten Radius der Bögen verkürzt werden.
Wurde die nun aus drei Inkrementen bestehende Anfahr-Bewegung (als
"Wurm" bezeichnet) mit Korrektur abgefahren ("-" Korrektur,
rote Bahn im Beispiel), so Verkürzte oder verlängerte sich der gesamte Abstand
zwischen Start-Bohrung und Kontur um das gleiche Mass.
Die programmierte Kontur |
Nicht alle Eigenschaften der Korrektur-Einrichtung konnten
mit solchen Tricks überwunden werden, der Maschinen-Bediener musste in vielen
Fällen selber eingreifen, und das Vorzeichen der Korrektur entsprechend
anpassen.
In den meisten Fällen, mit wenigen Ausnahmen (siehe "Kuriositäten"),
wurden die Konturen auf das Soll-Maß programmiert, d.h. auf die Abmessungen,
welche auf der Werkstück-Zeichnung angegeben waren. Im gezeigten Beispiel gibt
der grüne Pfeil die Programmier-Richtung der Kontur, "Ä"
den Startpunkt, "¨"
den Startpunkt auf der Kontur und "©"
den Stoppunkt an. Das
effektive Maß der Matrize mit dem notwendigen "Licht" oder Spiel
wurde mit der Einstellung der Korrektur hergestellt (siehe
"Bahn-Korrektur" weiter oben).
Die Spiegelung, um die Y-Achse |
Wurde das Programm mit den
entsprechenden Schaltern an der Rückseite der NBY-15 um die Y-Achse gespiegelt,
z.B. indem verlangt wird, dass alle X-Bewegungen mit umgekehrten Vorzeichen
ausgeführt werden sollen, so wurde auch die Ablauf-Richtung des Programms
dadurch geändert.
Die Korrektur-Einrichtung hatte jedoch immer nur auf die Programmierte Kontur Einfluss,
so dass das Vorzeichen der Korrektur für die Ausführung der linken Form
umgekehrt werden musste. Wurde dies vergessen, konnte das Werkstück anschließend
nicht verwendet werden, d.h. es war unweigerlich Ausschuss.
Eine weitere Einschränkung der Steuerung lag im maximalen Radius, der für Kreisbögen ausgeführt werden konnte. Dieses Maß war nicht von dem maximalen Wert abhängig, welcher durch die Kombination der Lochungen im AGIECODE verlangt werden konnte (166.65 mm), sondern von dem intern verdrahteten Radius von 262.144 mm (siehe "Grund-Kreis" unter "Die NC-Steuerung"). Musste also ein Radius geschnitten werden, welcher größer als dieses Maß war, musste auf umständliche Art und Weise mit der Maßstab-Einrichtung gearbeitet werden, um die Steuerung "auszutricksen". Dies bedingte natürlich, dass alle Masse der Zeichnung mit dem gleichen Maßstab-Faktor dividiert programmiert werden mussten, damit anschließend der gewünschte Radius geschnitten wurde wenn der Maßstab-Wahl-Schalter auf den entsprechenden Wert eingestellt war. Eine negative Auswirkung dieser Methode war jedoch, dass sich dadurch auch die Eingabe-Auflösung um den gleichen Faktor reduzierte.