COMPACT II (Comshares Program for Automatically Controlling Tools) ist eine Programmiersprache zur Erstellung von NC-Programmen. Das Vokabular der Sprache deckte alle üblichen NC-Verfahren ab, wie Drehen Bohren, Fräsen, Drahtschneiden, Brennschneiden und Stanzen. Durch den Einsatz von Programmiersprachen wurde die manuelle NC-Programmierung durch die maschinelle Programmierung ergänzt bzw. abgelöst. Entwickelt in den 1970er Jahren, verwendeten 1981 bereits über 3800 Firmen COMPACT II zur Programmierung von ca. 18.500 NC-Maschinen.
Inhaltsverzeichnis
1Allgemein
2Funktionalität
2.1Syntax
2.1.1Hauptwortgruppen mit Beispielen
2.1.2Code Beispiel 2-1/2D Fräsen
2.1.3Code Beispiel komplexe Zirkularbewegung
2.1.4Code Beispiel mit Konturdefinition
2.1.5Code Beispiel mit arithmetischen Operationen
2.2Ablauf
2.3Plattform
3Geschichte
4Literatur
5Einzelnachweise
Allgemein
Die Nutzung von numerisch gesteuerten Maschinen, deren Entwicklung 1949 begann, konzentrierte sich zuerst auf die Fertigung komplexer Geometrien der Luft- und Raumfahrtindustrie.[1] Bereits Mitte der 1950er Jahre entstand für diese Industrie das Programmiersystem APT, das mit seiner Symbolsprache diese Fertigungsprozesse beschreiben konnte. Anfang der 1960er Jahre führte die Erkenntnis, dass sich diese Technologie auch zur Fertigung einfacherer Teile eignet, dazu, dass zunehmend NC-Maschinen für Bohr-, Fräs- und Drehbearbeitung zum Einsatz kamen. Mit dieser Zunahme wuchs auch der Bedarf an Steuerprogrammen, die zunächst manuell erstellt wurden. Da die manuelle Programmierung zeitaufwendig und fehleranfällig war, ergab sich der Zwang zur Rationalisierung. Somit begann Ende der 1960er Jahre der zunehmende Einsatz von maschineller Programmierung[2] und die Entwicklung alternativer Programmiersprachen, wie COMPACT II, die nicht APT als Grundlage hatten. COMPACT II wurde in den Jahren 1967 -1969 von Chuck Hutchins[3] und Bruce Nourse, beides Mitarbeiter von Comshare (USA), entwickelt. Im Februar 1969 gründeten sie zusammen mit Kenneth R. Stephanz und Urbanes van Bemden die Manufacturing Data Systems Inc.(MDSI) , Ann Arbor, Michigan (USA). Compact II wurde dann von MDSI weiterentwickelt einschließlich einer Bibliothek für Postprozessoren. Ab Januar 1976 wurde das System vom Tochterunternehmen MDSI Deutschland angeboten und zunächst auf Time-Sharing -Computern eingesetzt.
Funktionalität
Die Ziele des Einsatzes der Programmiersprache waren die Verkürzung der Programmierzeiten, die Verwendung einer Sprache für unterschiedliche Maschinen-Steuerungs-Kombinationen und die Erzeugung fehlerfreier NC-Daten. Dieses wurde erreicht durch die Verwendung von englischem Vokabular aus der Fachsprache der Fertigungstechnik und der Definition geometrischer Sachverhalte. Die Syntax war flexibel und erlaubte z. B. die Verwendung technologischer und geometrischer Definitionen in einer Anweisung und unterschied sich damit von den bereits in den 1950er Jahren entwickelten APT-Systemen. Die Anwender waren nach einer einwöchigen Schulung in der Lage NC-Programme rechnergestützt zu erstellen.
Syntax
Die Syntax der Sprache unterschied zwischen Haupt- und Nebenworten. Ein COMPACT II Teileprogramm bestand somit aus Sätzen mit einem Hauptwort gefolgt von Nebenworten, wobei Hauptwörter aus 5 Gruppen zur Verfügung standen.
Hauptwortgruppen mit Beispielen
Initialisierung Identifikation
MACHIN,...
NC-Maschinen Name
IDENT,...
Programmname zur Identifizierung
SETUP,...
Start-Einstellungen
...
Geometrie
DPTn,...
DEFINE POINT
Punkt Definition
DCIRn,...
DEFINE CIRCLE
Kreis Definition
DPBn,...
DEFINE PART BOUNDARY
Kontur Definition
...
Werkzeug-Daten
ATCHG
AUTOMATIC TOOL CHANGE
Werkzeugwechsel
...
Technologie-Daten
MOVE
Anfahrbefehl im Eilgang
CUT
Fahren mit Vorschubgeschwindigkeit
CONT
CONTOUR
Fahren auf Kreis
FLT
FLOAT TAP
Gewindebohren
...
Ende-Anweisung
END
Ende des Quellenprogrammes
Code Beispiel 2-1/2D Fräsen
MOVE,TOLN1,TOLN2/2XS
MOVE
Bewegen im Eilgang
TOLN1
To LINE 1
vor Linie 1
TOLN2
TO LINE 2
vor Linie 2
/2XS
2 X SMALL
LN2 parallel um
2mm in -x verschoben
MOVE,ZB-15
MOVE
Bewegen im Eilgang
ZB-15
Z BASE
auf -15 unter Z-Basis
CUT,PASTLN6
CUT
Bewegen mit Vorschub
PASTLN6
PAST LINE 6
Hinter Linie 6
MOVE,PASTLN4,OFFLN1/2YS,ZB-10
MOVE
Bewegen im Eilgang
PASTLN4
PAST LINE 4
Hinter linie 4
OFFLN1/2YS
OFF LINE 1
Auf die Y-kleinere
Seite von Linie 1
plus 2 mm Verschiebung
ZB-10
Z BASE
auf -10 unter Z-Basis
ICON,CIR2,CCW,S(0),F(90)
ICON
IN CONTUR
Vorschubbewegung innerhalb Kreis
CIR2
CIRCLE 2
Kreis 2
CCW
COUNTER CLOCKWISE
gegen Uhrzeigersinn
S(0)
START
Start bei 0 Grad
F(90)
FINISH
Fertig bei 90 Grad (CCW)
ICON,CIR1,CCW,S(90),F(180)
ICON
IN CONTUR
Vorschubbewegung innerhalb Kreis
CIR2
CIRCLE 2
Kreis 2
CCW
COUNTER CLOCKWISE
gegen Uhrzeigersinn
S(90)
START
Start bei 90 Grad (CCW)
F(180)
FINISH
Fertig bei 180 Grad
CUT,PASTLN1/1YS
CUT
Bewegen mit Vorschub
PASTLN1
PAST LINE 1
Hinter Linie 1
1YS
1 Y SMALL
plus 1 mm Verschiebung
RET
RET
RETRACT
voller Rückzug in Z
HOME
HOME
Eilgang zur HOME-Position
Code Beispiel komplexe Zirkularbewegung
Die Nebenwörter XS, XL, YS, YL wirken je nach Kontext als Modifikatoren oder als Selektoren. In Ergänzung zu einem Geometrieelement sind es Modifikatoren, alleinstehend sind es Selektoren.
CONT,CIR1,CW,S(OFFLN1/1XS,YL)
,F(OFFLN1/1XS,YS)
CONT,
CONTOUR
Fahren auf dem Kreis
CIR1,
Zirkel 1 ist ausgewählt
CW,
CLOCKWISE
Fahren im Uhrzeigersinn
S(....),
START
Startposition der Bewegung
(OFFLN1/
OFFSET LINE 1
Verschiebe Linie 1 parallel
/ 1XS,
1 mm Abstand in -X Richtung
XS,
X SMALL (Modificator)
,YL)
Y LARGE (Selector)
von den beiden Schnittpunkten
wähle den mit größerem Y-Wert
F(....),
FINISH
Endposition
OFFLN1/
OFFSET LINE 1
Verschiebe Linie 1 parallel
/1XS
1 mm Abstand in -X Richtung
XS,
X SMALL (Modificator)
,YS)
Y Small (Selector)
von den beiden Schnittpunkten
wähle den mit kleineren Y-Wert
Code Beispiel mit Konturdefinition
MACHIN,FRAESMASCHINE
$
Maschinenauswahl
IDENT, WINKEL ALS PROGRAMM-BEISPIEL
$
Name Quellprogrammes
SETUP,LX,85LY,25LZ
$
Startposition in X, Y und Z
BASE,25.4XA,25.4YA,ZA120
$
Bezugspunkt für folgenden Geometrie
DCIR1,76.2XB,63.5YB,7.94R
$
Kreisdefinition mit Mittelpunkt und Radius
DPB1,RPT,XB,YB,10ZB,CR; SPT1,-15XB,-10YB,10ZB ;
$
Konturbeschreibung
$
mit Referenz- und Startpunkt
YB,S(LN(XB));LN(120.65.XB,YB,45CCW) ;
$
2 Gerade
CIR(114.3XB,6.35YB,12.7R), CCW,S(YL):19.05YB;
$
Kreis, Mittelpunkt und Radius
10R;LN(CIR1,XL, 30CCW) ;
$
Verrundung
$
bei Tangente an Zirkel 1
CIR1,CCW; LN(CIR1,XS, 30CCW)
$
2-te Tangente
;12.7R;XB,F(LN(-10YB)), NOMORE
$
Verrundung
$
Ende der Kontur
ATCHG,TOOL1,TD20,GL200,900RPM, 230MMPM,CON
$
Werkzeug
$
mit Technologiedaten
MOVE,PB1/SPT1
$
Eilgang zu Startpunkt
CUT,PB1
$
Fräsen der Kontour
END
$
Program-Ende
Code Beispiel mit arithmetischen Operationen
Ergänzt wurden die Hauptwörter durch die Verwendung von arithmetischen Operationen, Definition von Variablen sowie bedingten Sprunganweisungen, repetitiver Programmierung und Indizierung. Die Befehle dazu waren: DVRn, (definiere Variable), IF, DO, GOTO, USE(Blockname). Dieses Ergänzungen ermöglichten eine hohe Automatisierung der NC-Programm-Erstellung speziell für Teilefamilien.
Beispiel einer DO-Sequenz mit Inkrementieren eines Zählers DVR1,0 $ Der Zähler wird außerhalb der DO-Schleife initialisiert $ DVR Define Variable $ und wird als Zähler #1 innerhalb der DO-Schleife verwendet $ <1>ICON,CIR1,CW,S(90),F(TANLN1) OCON,CIR2,CCW,S(TANLN1),F(TANLN2) ICON,CIR3,CW,S(TANLN2),F(0) <2>DVR1,#1-90 $ Der Zähler (#1) wird jeweils um -90 erhöht $ DO1/2,ROTXY#1,3TMS $ Verursacht drei Wiederholungen der Werkzeugbewegungen $ erzeugt durch die Aussagen in <1> bis <2> $ wobei diese jedes Mal um weitere -90 Grad gedreht werden
Ablauf
Das wesentliche Merkmal der maschinellen Programmierung ist die Erstellung eines Teileprogramms auch Quelltext oder Quellprogramm genannt, basierend auf der Werkstück-Geometrie und den Bearbeitungsschritten. Durch die Verarbeitung (Run) des Quellprogramms im Prozessor wird die Steuerungsinformationen für die NC-Maschine erzeugt. Da die maschinenspezifische Anpassung bereits durch einen Modul, der Teil des Prozessors ist, erfolgt, entfällt die übliche Ausgabe von CL-Data (cutter-location-data)[4] und das bei APT-basierenden Systemen übliche Post-Processing. Der für die Anpassung notwendige Modul wurde deswegen als „Link“ bezeichnet.
" "
Die Verarbeitung der COMPACT II Eingabeanweisungen erfolgte in einem Durchgang für den Geometrieteil, die Technologie und das maschinenspezifische Anpassen, einschließlich einer interaktiven Fehlerbeseitigung. APT-basierte Systeme benötigten dafür mehrere Durchläufe. Der Ablauf bei der Nutzung von Time-Sharing-Systemen begann mit der handschriftlichen Erstellung des Quellprogrammes. Dieses wurde auf einem Terminal (z.B ASR-33) mit einem Lochstreifenstanzer erfasst und ausgedruckt. Nach Prüfung des Textes wurde das Quellprogramm in das NC-System eingelesen und auf der Platte des Time-Sharing-Systems gespeichert. Eventuelle Fehler oder Ergänzungen konnten mit einem Editor noch durchgeführt werden. Durch die Anweisung "RUN" wurde die interaktive Programmausführung gestartet und jede Anweisung durch den Prozessors im Parser auf korrekte Syntax geprüft. Geprüft wurden weiterhin z.B: im Geometrieteil die Eindeutigkeit der Geometriedaten, im Technologieteil das Vorhandensein notwendiger Technologieparameter und im Link das Einhalten maschinen-spezfischer Grenzwerte. Gefundene Fehler wurden im Dialog zurückgemeldet und die Eingabeanweisung zum Editieren bereitgestellt. Nach der Korrektur und wenn die nochmalige Prüfung keine Fehler mehr fand, erfolgte die Verarbeitung der nächsten Anweisung. Waren alle Eingaben verarbeitet konnte optional die definierte Geometrie und der Werkzeugweg auf dem Plotter ausgegeben werden. Die Simulation des Werkzeugweges konnte in den drei Koordinatenebenen und auch isometrisch geplottet werden. Durch eine weitere RUN-Anweisung, mit der Angabe des Lochstreifen-File-Namens wurde die NC-Daten-File erzeugt und gespeichert und konnte anschließend über den Stanzer ausgegeben werden.
Plattform
Die erste kommerzielle Version von COMPACT II lief auf einem 24-Bit-Computer von Scientific Data Systems (SDS)[5], bekannt als SDS 940.[6] Der Rechner hatte 192 kB Systemspeicher und eine 50-MB-Platte. Die gesamte Software war in der Programmiersprache Assembler geschrieben. 1970 stellte DEC den PDP-11 mit 64 kB Speicher vor, und kurz darauf Texas Instruments den TI-980 mit 128 kB Speicher. Dies ermöglichte, den Kunden auch eine Inhouse-Nutzung des COMAPCT-II-Systems anzubieten. MDSI erstellte in kürzester Zeit die notwendige Computeremulator-Software und auch ein Interrupt-orientiertes Betriebssystem (OS) und hatten jetzt das Potenzial, COMPACT II auf Minicomputer zu übertragen, ohne die Assembler-Software, die viele Mannjahre der Entwicklung gekostet hatte, neu zu schreiben. Es folgten dann noch die Minicomputer Data General-Eclipse und Data General-Nova.
Geschichte
COMPACT II stand zu Beginn seiner Entwicklung als Name einer Sprache und eines Programmiersystems. Im Laufe der Weiterentwicklung bekamen die Systeme neue Namen, während der Kern des Systems, die Programmiersprache COMPACT II die Gleiche blieb. z. B. das System "Action Central" ein Minicomputer mit COMPACT II, graphischen Terminal, high speed Printer, high speed Reader-Punch. Aus dem "Action Central" wurden anschließend die SERIES I und SERIES II. Das System "NC-Graphics" bestand aus COMPACT II ergänzt mit einer Graphiksschnittstelle und Schnittstellen zu CAD-Systemen. EQUINOX war die letzte Produkteinführung von MDSI und war der Marketingname für eine Suite integrierter Softwareanwendungen auf einer PC-Plattform. Sie bestand auch wieder aus dem COMPACT II Prozessor ergänzt durch interaktive graphische Erstellung von Geometrie und COMPACT II Anweisungen.
Literatur
MDSI: Compact II, Programming Manual. Ann Arbor 1973.
Charles S. Hutchins, Stephanie Kadel Taras: Hot Tech Cold Steel, How CAM caught fire in Ann ArBor and spread around the world. Amazon, Palm Beach Gardens 2021, ISBN 978-1-73715-370-2.
Einzelnachweise
↑ Ulrich Grupe: Programmiersprachen für die numerische Werkzeugmaschinensteuerung, Walter de Gruyter, Berlin/New York 1974, ISBN 9783110042405, S. 7-8.
↑G. Koch, U. Rembold: Einführung in die Informatik für Ingenieure und Naturwissenschaftler , Carl Hanser, München 1977, ISBN 3-446-12385-7, S. 368–371
↑Annaliese Gottschalk: Arbor Lakes: A longstanding hub of tech innovation. In: Michigan IT vom 6. Juli 2018. Abgerufen am 8. November 2021.
↑ Norm DIN 66215-1 DIN 66215-1 CLDATA, Allgemeiner Aufbau und Satztypen
↑Scientific Data Systems (SDS), abgerufen am 17. November 2021.
↑SDS 940, der erste Zentralrechner, der eine Verbindung zum Internet herstellte , abgerufen am 17. November 2021.