# OPUS (CAM-Software)

Das Offene Produktions-Unterstützungs-System OPUS ist eine CAM-/CAD-Software zur Erzeugung, Modifikation und Simulation von NC-Programmen für Dreh-, Fräs-, Drahterodier- und Brennschneidebearbeitungen im Maschinen-, Werkzeug- und Formenbau.

## Geschichte

Die Software wird seit 1980 von der OPUS Vertriebs- und Entwicklungs GmbH in Kirchheim unter Teck hergestellt. Zu jener Zeit wurden programmierbare Taschenrechner mit Programmen zur Konturberechnung von Schneidenradiuskompensation und Fräserbahnkorrektur verkauft. Über viele Jahre entwickelte sich daraus ein modular aufgebautes CAD-/CAM-System, das für die vielfältigen Aufgabenstellung im Umfeld der CNC-Programmierung Lösungen anbietet.
Der Name „Offenes Produktions-Unterstützungs-System“ beinhaltet das Konzept der Software: Durch Flexibilität und Anpassungsfähigkeit jedes gestellte Problem optimal zu lösen und sich offen in jede vorhandene Struktur einzufügen. OPUS stellt Kernmodule bereit, mit denen der Anwender eine individuelle Softwarelösung für seine CNC-Maschine zusammenstellen kann. Mit Firmen wie LuK, Mapal oder Bosch besteht seit Jahren eine enge Zusammenarbeit.
Das System wird von circa 20 Personen weiterentwickelt und weltweit vertrieben. Bislang gibt es mehr als 4000 Installationen bei knapp 1000 Unternehmen. OPUS selbst wird als (Modellierungs-)Kern in anderen Softwaresystemen verwendet, so z. B. in dem grafisch interaktiven Zeit- und Kostenkalkulationssystem TICC oder dem System PUMA zur Aluminiumprofilbearbeitung. Ferner wird OPUS in Forschung und Lehre eingesetzt. Über die Jahre sind eine Reihe von Veröffentlichungen und Abschlussarbeiten mit Hilfe des Systems erstellt worden.

## Software

Das System wird in C++ entwickelt. Große Teile des Systems sind in der systemeigenen Makrosprache SESAM (Schnittstelle zur Erweiterung des Systems durch anwendungsspezifische Makros) geschrieben, welche dem Anwender offen als Quellcode zur Verfügung stehen. Damit kann das System auf einfache Weise anwendungsbezogen erweitert werden.
OPUS besteht aus mehreren Komponenten
* zur Erzeugung, Modifikation und Verwaltung von NC-Programmen, Postprozessoren und den anwendungsbezogenen Makros in SESAM (OPUSEDI),
* zur Erzeugung und Manipulation von Dreh-, Fräs- und Drahterodierbearbeitungen im 2D oder 3D, zur Generierung, Analyse und Modifikation von CAD-Modellen als Roh- und Fertigteile inklusive Bearbeitung, zur Erstellung von Maschinenmodellen inklusive der notwendigen Kinematik und dem Erstellen und Verwalten von Werkzeugen (OPUSGEO),
* zur Quellen-, Rück- und Maschinensimulation von NC-Programmen inklusive der Anzeige von Kollisionen und Bereichsüberschreitungen (OPUSSIMU) sowie
* zur Werkstattvernetzung mit DNC und Maschinendaten-Erfassung (MDE).
OPUS unterstützt Drehmaschinen mit zwei und vier Achsen und Fräsmaschinen mit drei und fünf Achsen. In das OPUS-System eingebunden sind Software-Bibliotheken von OWLNext (Benutzerschnittstelle), ACIS (Modellierkern, dynamischer Modellierungsansatz), HOOPS (Grafik) und Moduleworks (Simulation und 5-Achs-Bahnberechnung).

### SESAM (Programmiersprache)

SESAM ist eine prozedurale Programmiersprache mit objektorientierten Ansätzen, mit der man innerhalb des CAM Systems OPUS Algorithmen implementieren kann, wie z. B. Benutzerschnittstellen oder Datenbankanwendungen. Das Programm OPUSEDI beinhaltet die in OPUS integrierte SESAM Entwicklungsumgebung inklusive Übersetzer, Interpreter und Debugger. SESAM Programme werden zur Syntaxprüfung übersetzt und bei der Ausführung interpretiert. SESAM ist auf die Bedürfnisse der NC-Programmentwicklung zugeschnitten und ermöglicht den Zugriff auf nahezu alle in OPUS verfügbaren Daten und Funktionen. Große Teile von OPUS sind in SESAM implementiert und stehen dem Anwender als Vorlage im Quellcode zur Verfügung. Die Sprache hat sich über die Jahre zu einer vollständigen, leicht erlernbaren Programmiersprache entwickelt, mit der man innerhalb von OPUS fast alle Aufgabenstellung direkt bearbeiten kann. Der Funktionsumfang der Sprache kann einfach erweitert werden.

#### Sprachelemente

Die Syntax und Semantik von SESAM ähnelt der Syntax und Semantik gängiger Hoch- und Makrosprachen. Alle Schlüsselwörter der Sprache sind auf Deutsch anzugeben. Variablen können mit den Datentypen LOGISCH, GANZ, DEZ, TEXT und ZEIGER deklariert werden; darauf aufbauend lassen sich objektorientierte Strukturen (Daten und Methoden) über den Datentyp KLASSE definieren. Für jeden Datentyp können statische bzw. dynamische Felder in ein- bzw. zwei Dimensionen angelegt und verwaltet werden. Durch das Schlüsselwort UNTERMAKRO lassen sich Funktion bzw. Unterprogramme mit Übergabe- und Rückgabewerten implementieren. Die typischen Ausdrucksmöglichkeiten und Kontrollstrukturen einer Hochsprache, wie logische Operationen, bedingte Anweisungen und Verzweigungen (WENN . . . DANN . . . SONST) sowie Schleifen (SOLANGE . . . SCHLEIFE) werden ebenso wie Rekursionen unterstützt.

#### Einlese- und Parameterdateien

Einlesedateien sind Bibliotheken von SESAM Unterprogrammen bzw. -makros, welche in verschiedenen Programmen verwendet werden können. Hierzu werden die entsprechenden Einlesedateien mit einem Befehl zu Beginn eines Programms eingelesen. Auf diese Art und Weise können auch alle existierenden Funktionen von OPUS in eigenen Makros eingebunden werden, wobei Einlesedateien bereits für eine Vielzahl von Aufgabenstellungen existieren, wie z. B. für Vektor- und Matrizenrechnungen, Text- und Dateimanipulationen, Dialoggenerierung, Erzeugung und Manipulation von CAD Objekten, Datenbankanwendungen, Erzeugung und Simulation von NC Programmen usw. Durch das Tauschen bzw. Überschreiben von UNTERMAKRO Aufrufen mit gleicher Signatur lassen sich Programmabläufe bzw. -strukturen gerüstartig vorgeben, die dann in konkreten Anwendungsfällen aus- bzw. umprogrammiert werden können.
Parameterdateien sind nach einem einheitlichen Schlüsselwortsystem aufgebaute Dateien für Parameterwerte. Diese werden verwendet, um SESAM Programmabläufe zu steuern und Daten über die Laufzeit von Programmen zu erhalten. Sie werden über einen Parameternamen identifiziert und können bei Bedarf geschrieben oder gelesen werden. Parameterdateien können ferner den Aufbau von Datenbanken beschreiben sowie Masken für Benutzerschnittstellen definieren.

#### Dialoge

Benutzerschnittstellen bzw. Dialoge können in der Entwicklungsumgebung direkt mit SESAM oder über einen Dialoggenerator erstellt werden. Ein Dialog kann übliche Standardelemente wie Piktogramme, Schalter, Eingabefelder, Checkboxen, Auswahlfelder und Listen enthalten, aber auch komplexe graphische Elemente wie verschachtelte Baumstrukturen mit anpassbarer Drag-and-Drop Funktionalität.