-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die
Erfindung betrifft eine numerische Steuerung, die eine Werkzeugmaschine
durch Ansteuern einer Servovorrichtung oder dergleichen auf Grundlage
eines numerischen Steuerungsprogramms steuert.
-
2. Beschreibung der einschlägigen Technik
-
Einhergehend
mit der weiten Verbreitung persönlicher
Computer ("PC") wuchs auch die
Verwendung numerischer Steuerungen ("NC")
auf Basis von PCs. Ein PC ist hinsichtlich der Einführung von Informationstechnologien
an Bearbeitungsorten effektiv, da ein PC mit verschiedenen Anwendungen
installiert werden kann, z. B. zur Produktionsverwaltung, Konstruktion
und Zeichnungserstellung sowie zur automatischen Programmierung.
Jedoch bedeutete bisher die Tatsache, dass diese Anwendungen bei
einer NC auf PC-Basis verwendet werden können, einfach, dass der PC
und die NC im selben Gehäuse
vorhanden sind, und es bedeutete nicht eine integrale Kombination
des PC und der NC.
-
In
einem PC ist andererseits eine Scriptmaschine-Funktion als Maßnahme zum
einfachen Bereitstellen einer Automatisierungsfunktion durch einen
Endbenutzer vorhanden. Die Scriptmaschine-Funktion erlaubt die Erzeugung
und Ausführung eines
Programms, ohne dass eine tiefe Programmierkenntnis erforderlich
wäre, unter
Verwendung einer einfachen Grammatik ähnlich derjenigen eines numerischen
Steuerungsprogramms einer NC, was als "Scriptsprache" bezeichnet wird. Diese Technik wird
häufig
dazu verwendet, eine Webbrowserfunktion und eine Webserverfunktion
zu erweitern. Zusätzlich
zu diesen Anwendungen kann die Technik auch bei einer Tabellenkalkulationsanwendung
sowie zum Erzeugen einer unabhängigen
Anwendung angewandt werden, und sie ermöglicht eine einfache Automatisierung
von Prozessen selbst dann, wenn der Benutzer kein professionaller
Programmierer ist.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
Erfindung erfolgte angesichts der oben beschriebenen Umstände, und
sie erlaubt in vorteilhafter Weise das Aufrufen und Ausführen eines
in einer Scriptsprache geschriebenen Programms aus einem numerischen
Steuerungsprogramm.
-
Gemäß einer
Erscheinungsform der Erfindung ist Folgendes geschaffen: eine numerische Steuerung,
die eine Werkzeugmaschine auf Grundlage eines numerischen Steuerungsprogramms
steuert, mit einem Ausführungsabschnitt
für numerische Steuerungsprogramme,
der ein numerisches Steuerungsprogramm ausführt; und einem Scriptaufrufabschnitt,
der während
der Ausführung
des numerischen Steuerungsprogramms durch den Ausführungsabschnitt
für numerische
Steuerungsprogramme ein in einer Scriptsprache geschriebenes Scriptprogramm
aus einem numerischen Steuerungsprogramm aufruft.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, der Scriptaufrufabschnitt als Teil des
Ausführungsabschnitts
für numerische
Steuerungsprogramme ausgebildet ist; der Scriptaufrufabschnitt eine
oder mehrere vorbestimmte Scriptanweisungen erkennen kann; und wenn
der Scriptaufrufabschnitt während
der Ausführung
eines numerischen Steuerungsprogramms eine Scriptanweisung in diesem
erkennt, er ein Scriptprogramm aufruft, das durch einen an die erkannte
Scriptanweisung angefügten
Parameter angegeben ist.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, die eine oder mehreren vorbestimmten Scriptanweisungen
zumindest eine Anweisung in einem Modus mit asynchronem Start, in
dem der Aufruf des Scriptprogramms gestartet wird, ohne dass auf den
Abschluss eines Blocks unmittelbar vor dem Aufruf des Scriptprogramms
gewartet würde,
und eine Anweisung in einem Modus mit asynchroner Wiederaufnahme,
in dem eine Operation eines Blocks folgend auf den Block, der ein
Scriptprogramm aufruft, gestartet wird, bevor der Aufruf des Scriptprogramms abgeschlossen
ist, beinhalten.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, der Scriptaufrufabschnitt als Teil des
Ausführungsabschnitts
für numerische
Steuerungsprogramm realisiert ist; der Scriptaufrufabschnitt eine Startmarke,
die den Start eines Scriptprogramms kennzeichnet, und eine Endmarke,
die das Ende eines Scripts kennzeichnet, erkennen kann; und dann, wenn
der Scriptaufrufabschnitt aus einem numerischen Steuerungsprogramm
während
der Ausführung
derselben eine Startmarke erkennt, er eine Beschreibung ab der Startmarke
bis zur nächsten
Endmarke als Scriptprogramm entnimmt und das entnommene Scriptprogramm
aufruft.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, ein Scriptengineabschnitt, der ein durch den
Scriptaufrufabschnitt aufgerufenes Scriptprogramm ausführt, über einen
Abschnitt verfügt,
der den Ausführungsabschnitt
für numerische
Steuerungsprogramme dazu anweist, ein Teilprogramm auszuführen, das
in einer Sprache zum Beschreiben des numerischen Steuerungsprogramms
geschrieben ist.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, ein Scriptengineabschnitt, der ein Scriptprogramm
ausführt,
separat vom Ausführungsabschnitt
für numerische
Steuerungsprogramme vorhanden ist.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, der Scriptengineabschnitt mehrere Scriptengineinstanzen
erzeugen kann und in einem numerischen Steuerungsprogramm ein Scriptprogramm gehandhabt
werden kann, das in mehreren verschiedenen Scriptsprachen geschrieben
ist.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, der Ausführungsabschnitt für numerische Steuerungsprogramme
in einem Echtzeit-Betriebssystem arbeitet und der Scriptengineabschnitt
in einem Universal-Betriebssystem arbeitet.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass, in
der numerischen Steuerung, eine Funktion des Ausführungsabschnitts für numerische
Steuerungsprogramme, der im Echtzeit-Betriebssystem arbeitet, unter
Verwendung eines Komponentenmechanismus aus einem Scriptprogramm
aufgerufen werden kann.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist es bevorzugt, dass die
numerische Steuerung ferner einen Scriptengineabschnitt aufweist,
der ein durch den Scriptaufrufabschnitt aufgerufenes Scriptprogramm
ausführt,
wobei der Scriptaufrufabschnitt eine Ereignis-gesteuerte Scriptanweisung
zum Registrieren eines Scriptprogramms, das dann wirkt, wenn ein
Ereignis auftritt, erkennen kann; der Scriptaufrufabschnitt, wenn
er eine Ereignis-gesteuerte Scriptanweisung im numerischen Steuerungsprogramm
erkennt, ein Ereignis und ein Scriptprogramm erkennt, das durch
einen Parameter der erkannten, Ereignis-gesteuerten Scriptanweisung
spezifiziert ist, und er das erkannte Scriptprogramm mit der Spezifizierung
des erkannten Ereignisses als Ausführungsbedingung aufruft; und
der Scriptengineabschnitt dann, wenn ein Ereignis im aufgerufenen
Scriptprogramm als Ausführungsbedingung
spezifiziert ist, das Scriptprogramm dann ausführt, wenn der Scriptengineabschnitt
eine das Auftreten des Ereignisses anzeigende Mitteilung empfängt.
-
Gemäß einer
anderen Erscheinungsform der Erfindung ist Folgendes geschaffen:
eine numerische Steuerung, die eine Maschine durch Ansteuern einer Servovorrichtung
oder dergleichen auf Grundlage eines numerischen Steuerungsprogramms
steuert, bei der ein in einer Scriptsprache geschriebenes Scriptprogramm,
das dann wirkt, wenn ein Ereignis auftritt, spezifiziert werden
kann; und das spezifizierte Scriptprogramm dann ausgeführt wird,
wenn das Ereignis auftritt.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Nun
wird eine bevorzugte Ausführungsform der
Erfindung auf Grundlage der folgenden Zeichnungen detailliert beschrieben.
-
1 ist
ein Diagramm, das die Struktur einer numerischen Steuerung gemäß einer
bevorzugten Ausführungsform
der Erfindung zeigt;
-
2 ist
ein Diagramm zum Veranschaulichen eines numerischen Steuerungsprogramms
bei einer bevorzugten Ausführungsform
der Erfindung;
-
3 ist
ein Diagramm zum Veranschaulichen eines Scriptspracheprogramms unter
Verwendung einer JScript-Sprache;
-
4 ist
ein Diagramm zum Veranschaulichen eines Scriptspracheprogramms unter
Verwendung einer VBScript-Sprache;
-
5 ist
ein Flussdiagramm, das eine Operation eines Programminterpretierers
zeigt;
-
6 ist
ein Flussdiagramm, das eine Operation eines Programminterpretierers
(Übersetzung von
1 Block) zeigt;
-
7 ist
ein Flussdiagramm, das eine Operation einer Scriptengine zeigt;
-
8 ist
ein Diagramm, das die Struktur einer zweiten numerischen Steuerung
gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
9 ist
ein Diagramm zum Veranschaulichen eines zweiten Numeriksteuerungsprogramms gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
10 ist
ein Diagramm zum Veranschaulichen einer temporären Datei für ein numerisches Steuerungsprogramm;
-
11 ist
ein Diagramm zum Veranschaulichen einer temporären Datei für ein Scriptprogramm;
-
12 ist
ein Flussdiagramm, das eine Operation eines Numeriksteuerungsprogramm/Scriptprogramm-Separators
zeigt;
-
13 ist
ein Diagramm, das eine Hardwarestruktur einer numerischen Steuerung
gemäß einer
bevorzugten Ausführungsform
der Erfindung zeigt;
-
14 ist
ein Diagramm, das eine Hardwarestruktur einer zweiten numerischen
Steuerung gemäß einer
bevorzugten Ausführungsform
der Erfindung zeigt; und
-
15 ist
ein Diagramm, das einen Auszug einer Schnittstellendefinition (IDL-Datei)
einer NC-Komponente zeigt.
-
BESCHREIBUNG
EINER BEVORZUGTEN AUSFÜHRUNGSFORM
-
Die 1 ist
ein Blockdiagramm, das eine numerische Steuerung gemäß einer
bevorzugten Ausführungsform
der Erfindung zeigt. Ein numerische Steuerungsprogramm 1 ist
ein Programm zum Steuern eines Betriebsablaufs eines durch die numerische
Steuerung zu steuernden Ziels, z. B. verschiedener in einer Bearbeitungsvorrichtung
vorhandener Servovorrichtungen. Das numerische Steuerungsprogramm 1 wird
durch einen Programmleser 2 blockweise gelesen und an einen
Programminterpretierer 3 geliefert. Der Programminterpretierer 3 übersetzt
das empfangene Programm und führt
es aus. Während
der Übersetzung
und Ausführung
des numerischen Steuerungsprogramms werden eine Funktion und eine
Sequenz zur Steuerung nach Bedarf aufgerufen. Ein Funktionsgenerator 4 erzeugt eine
Funktion auf Grundlage eines Übersetzungsergebnisses
durch den Programminterpretierer 3. Ein Servotreiber 5 betreibt
einen Servomotor 6 auf Grundlage der erzeugten Funktion,
um eine Werkzeugmaschine (nicht dargestellt) zu betreiben. Der Positionsdetektor 7 erfasst
den Rotationszustand des Servomotors 6, und er liefert
diesen an den Servotreiber 5 zurück, um eine Regelung zu ermöglichen.
Eine PLC(programmable logic control = Steuerung mit programmierbarer
Logik)-Steuerung 8 wendet eine PLC-Steuerungsoperation
auf Grundlage der bei der Übersetzung
des Programms durch den Programminterpretierer 3 und der
Ausführung
des Programms aufgerufenen Sequenz an. Ein Peripherievorrichtungs-Treiber 9 steuert
eine Peri pherievorrichtung 10 wie eine Spindel und einen
Werkzeugwechsler an.
-
Der
oben beschriebene Verarbeitungsmechanismus des numerischen Steuerungsprogramms 1 ist
demjenigen einer NC auf PC-Basis
gemäß der einschlägigen Technik ähnlich.
Als Nächstes
wird ein Mechanismus der vorliegenden Ausführungsform beschrieben, wie
er bei der einschlägigen
NC auf PC-Basis nicht vorhanden ist.
-
Eine
Scriptengine 12 lädt
ein in einer Scriptsprache angegebenes Programm 11 (nachfolgend einfach
als "Scriptprogramm" bezeichnet) und
führt das
geladene Programm aus. Mit Ausführung
des Scriptprogramms werden z. B. Datenbanksoftware und Emailsendesoftware
(nicht dargestellt) betrieben.
-
Es
wird nun auf die 2 Bezug genommen, um ein Beispiel
eines numerischen Steuerungsprogramms zu beschreiben, das durch
die numerische Steuerung gemäß der vorliegenden
Ausführungsform
abgearbeitet werden kann. Das beispielhafte numerische Steuerungsprogramm
ist ein Programm, bei dem mnemotechnische Begriffe wie SCRIPT (zum
Spezifizieren einer Scriptsprache), SLOAD (zum Laden eines Scriptprogramms),
SCALL (zum Aufrufen eines Scripts), SCALLS (zum Aufrufen eines Scripts
in einem Modus mit "asynchronem
Start") SCALLE (zum
Aufrufen eines Scripts in einem Modus mit "asynchroner Wiederaufnahme") und SEVENT (zum
Definieren eines Ereignisses) zu G-Code hinzugefügt sind, wie er in weitem Umfang
in der einschlägigen
Technik zur Beschreibung numerischer Steuerungsprogramme verwendet
wird, als mnemotechnische Begriffe für eine Anweisung zum Anfordern
einer Ausführung
an die Scriptengine 12. Hierbei bezeichnet der Modus "asynchroner Start" einen Modus, bei
dem eine durch den mnemotechnischen Begriff spezifizierte Scriptanweisung
unabhängig
vom (d.h. asynchron zum) vorigen Prozess (Block) im numerischen Steuerungsprogramm
gestartet wird. Anders gesagt, wird dann, wenn eine Scriptanweisung im
Modus mit asynchronem Start im numerischen Steuerungsprogramm vorhanden
ist, die Verarbeitung dieser Scriptanweisung gestartet, ohne dass
auf den Abschluss der Ausführung
des vorigen Blocks gewartet würde.
Andererseits wird die Verarbeitung einer Scriptanweisung, die nicht
im Modus mit asynchronem Start vorliegt (d.h. eine Scriptanweisung
in einem Modus mit "synchronem
Start") gestartet, nachdem
ie Ausführung
des vorigen Blocks abgeschlossen ist.
-
Der
Modus mit "asynchroner
Wiederaufnahme" ist
ein solcher, bei dem eine Operation des Blocks nach einer Scriptanweisung
asynchron zur Ausführung
der durch den mnemotechnischen Begriff spezifizierten Scriptanweisung
gestartet wird. Anders gesagt, wird, wenn eine Scriptanweisung im Modus
mit asynchroner Wiederaufnahme im numerischen Steuerungsprogramm
vorhanden ist, die Verarbeitung eines folgenden Blocks gestartet,
ohne dass auf dem Abschluss der Ausführung der Scriptanweisung gewartet
würde.
Andererseits wird im Fall einer Scriptanweisung, die nicht im Modus
mit asynchroner Wiederaufnahme vorliegt (d.h. eine Scriptanweisung
im Modus mit "synchroner
Wiederaufnahme"),
die Verarbeitung des folgenden Blocks gestartet, nachdem die Ausführung einer
Scriptanweisung abgeschlossen wurde.
-
Diese
mnemotechnischen Begriffe haben die folgende Aufrufform:
SCRIPT
[Name der Sprache], [Name der Engineinstanz]
SLOAD [Scriptdateiname],
[Name der Engineinstanz]
SCALL [Funktionsname], [Name der Engineinstanz]
SCALLS
[Funktionsname], [Name der Engineinstanz]
SCALLE [Funktionsname],
[Name der Engineinstanz]
SEVENT [Ereignistyp], [Funktionsname],
[Name der Engineins tanz]
-
Hierbei
ist "Name der Sprache" der Name einer Programmiersprache
(Scriptsprache) wie VBScript und JScript. "VBScript" ist eine Abkürzung für die von Microsoft Corporation
in den USA verkaufte Microsoft (registrierte Handelsbezeichnung)
Visual Basic (registrierte Handelsbezeichnung), Scriptedition. "JScript" ist eine von Microsoft
Corporation entwickelte Scriptsprache, die zu Java (registrierte
Handelsbezeichnung) Script ist.
-
"Name der Engineinstanz" ist der Name der Scriptengineinstanz,
die das Scriptprogramm ausführt.
Genauer gesagt, erzeugt eine Scriptengine 12 der vorliegenden
Ausführungsform
eine Scriptengineinstanz zur Verarbeitung jedes individuellen Scriptprogramms,
und die erzeugte Instanz führt
den Scriptprozess aus. Durch Verwenden einer Konfiguration, bei
der eine Scriptengineinstanz für
jeden Prozess erzeugt wird, ist es möglich, die Benutzung verschiedener
Sprachen in einem numerischen Steuerungsprogramm zu erlauben und
zwischen Scriptengine umzuschalten, um eine Kollision von Namen
in Scriptprogrammen zu vermeiden, die aus einem Hauptprogramm aufgerufen
werden, sowie eines aus einem Unterprogramm aufgerufenen Scriptprogramms.
-
"Funktionsname" spezifiziert den
Namen einer Funktion oder eines Unterprogramms eines in der Scriptsprache
beschriebenen Programms. "Ereignistyp" spezifiziert den
Typ eines durch den Ereignisdetektor 14 erkannten Ereignisses,
wie z. B. Auswahl eines numerischen Steuerungsprogramms (PSELECT),
Start (START), Ende (END), Erzeugung eines Alarms (ALARM) und Rücksetzen
der NC (RESET).
-
Nun
wird eine Operation des Programminterpretierers 3 unter
Bezugnahme auf die Flussdiagramme der 5 und 6 beschrie ben,
um das in der 2 dargestellte numerische Steuerungsprogramm
zu veranschaulichen.
-
Nun
wird das in der 2 dargestellte numerische Steuerungsprogramm
kurz beschrieben. Dieses Programm erzeugt eine Scriptengineinstanz
(mit dem Instanznamen "VBSEngine") gemäß VBScript
in einem Block mit dem Sequenznamen N001, und es lädt ein als "sendmail.vbs" bezeichnetes Scriptprogramm
in der nächsten
Sequenz N002 in die Instanz. Das Script "sendmail.vbs" ist ein Script zum Senden einer Email.
Die 4 zeigt ein Beispiel der Beschreibung des Scripts "sendmail.vbs". Dann wird, in einer
Sequenz N003, eine Scriptengineinstanz JSEngine gemäß JScript
erzeugt, und ein als "scriptlibrary.js" bezeichnetes Script
wird in einer Sequenz N004 in die Instanz geladen. Das Script "Scriptlibrary.js" ist ein Scriptprogramm,
das Funktionen beschreibt, die verschiedene Prozesse kennzeichnen,
für die
während
einer Bearbeitung durch numerische Steuerung eine Ausführung erwünscht ist,
und die 3 zeigt ein Beispiel der Codebeschreibung.
Als Nächstes werden,
in einer Sequenz N005, eine Funktion "Alarmmail", die ausgeführt wird, wenn ein Alarmerzeugnisereignis
auftritt, und eine Scriptengineinstanz "VBSEngine", die die Funktion "Alarmmail" ausführt (die Scriptengineinstanz "VBSEngine" führt auch
das Script sendmail.vbs aus) abgespeichert. Dann werden, in Sequenzen
N006 und N007, eine NC-Anweisung wie eine Verstellung und ein Wechsel
von Werkzeugen ausgeführt.
In einer Sequenz N008 wird eine Scriptengineinstanz JSEngine aufgerufen,
um die Information zum Werkzeugwechsel in der Sequenz N007 aufzuzeichnen,
und die Engine führt
eine Funktion "RECORDTOOL" aus. In Sequenzen
N009, N010 und N011 werden eine NC-Anweisung wie eine Spindeldrehung
und schneller Vorschub ausgeführt, und
in einer Sequenz N012 wird JSEngine aufgerufen, um die Vorschubrate
bei der Ausführung
der NC-Anweisung zu berechnen und in einer Datenbank aufzuzeichnen.
In einer Sequenz N013 wird die Bearbeitungsvorschub-Anweisung ausgeführt. In
einer Sequenz N014 wird eine Funktion "DUFIXEDCYCLE" im in der 3 dargestellten
Scriptprogramm "Scriptlibrary.js" aufgerufen, und
es wird eine Steuerung eines Bearbeitungsvorgangs in einem durch
die Funktion angegebenen festen Zyklus ausgeführt. Dann wird, in einer Sequenz
N075, die Engine VBSEngine für
das Emailsendescript aufgerufen, um eine den Abschluss des numerischen
Steuerungsprogramms anzeigende Email zu senden, und das numerische
Steuerungsprogramm wird durch eine Abschlussanweisung in einer Sequenz
N076 abgeschlossen. Um ein derartiges numerische Steuerungsprogramm
auszuführen,
empfängt,
wenn der Prozess durch den Programminterpretierer 3 gestartet
wird (Schritt S1), derselbe vom Programmleser 2 einen Block
im numerischen Steuerungsprogramm (Schritt S2), und er übersetzt
den empfangenen Block (Schritt S3). So wird die Übersetzunge des Blocks durch
ein Unterprogramm gestartet (Schritt S11). Wenn der empfangene Block
einer Verstellanweisung entspricht, wie die in der 2 dargestellten Blöcke mit
den Sequenznamen N006, N010 und N013 (Schritt S12), wird ein Funktionserzeugungsmodus,
wie Abschlusspunkt, Verstellgeschwindigkeit, Linie und Bogen berechnet
(Schritt S13), und diese Information wird an den Funktionsgenerator 4 übertragen
(Schritt S14), um eine Funktion zu erzeugen. Der Funktionsgenerator 4 überträgt ein Geschwindigkeitsanweisungssignal
an den Servotreiber 5. Der Servotreiber 5 steuert
den Servomotor 6, während
er ein Rückkopplungssignal
vom Detektor 7 empfängt,
so dass der Servomotor 6 auf Grundlage des Drehzahl-Sollsignals
mit der Solldrehzahl arbeitet.
-
Der
Programminterpretierer 3 übersetzt das Programm mit der
Einheit eines empfangenen Blocks. Wenn der Block eine Anweisung
für eine
Peripherievorrichtung ist, wie der Block mit den Sequenznamen N007
und N009 in der 2 (Schritt S15), wird eine Peripherievorrichtungs-Betriebsanweisung
an die PLC-Steuerung 8 übertragen
(Schritt S16). Die PLC-Steuerung 8 liefert ein Ansteuersignal an
den Peripherievorrichtungstreiber 9, und sie steuert die
Peripherievorrichtung 10, wie einen Werkzeugwechsler und
eine Spindel, an. Der Programminterpretierer 3 übersetzt
auch das Programm mit der Einheit eines empfangenen Blocks, und
wenn der Block eine Scriptanweisung ist, wie die Blöcke mit den
Sequenznamen N001-N005, N008, N014 und N075 (Schritt 17),
wird ermittelt, ob die Scriptanweisung im Modus mit "asynchronem Start" vorliegt oder nicht
(Schritt S18). Wenn die Scriptprogramm nicht im Modus mit asynchronem
Start vorliegt (d.h., die Scriptanweisung liegt im Modus mit synchronem Start
vor), wartet der Programminterpretierer 3 auf den Abschluss
des vorigen Blocks (Schritt S19). Wenn der vorige Block abgeschlossen
ist, liefert der Programminterpretierer 3 eine Ausführungsanforderung
für die
Scriptanweisung an die Scriptengine 12 (Schritt S20).
-
Für den Block
mit dem Sequenznamen N075 wird, da dieser Block eine Anweisung SCALLS
ist und im Modus mit asynchronem Start vorliegt, in dem die Ausführung nicht
auf den Abschluss der Ausführung
des vorigen Blocks wartet, wird der Schritt S19 übersprungen. Anders gesagt,
wird das Script ausgeführt,
während
die Anweisung für
schnellen Vorschub im vorigen Block N074 nicht abgeschlossen ist,
und der Prozess geht zum Schritt S20 weiter. Dann wird eine Ausführungsanforderung
an die Scriptengine 12 geliefert (Schritt S20).
-
Nachdem
die Ausführungsanforderung
für eine
Scriptanweisung an die Scriptengine 12 geliefert wurde,
wird ermittelt, ob die Scriptanweisung im Modus mit asynchroner
Wiederaufnahme vorliegt oder nicht (Schritt S21). Wenn ermittelt
wird, dass die Scriptanweisung nicht im Modus mit asynchroner Wiederaufnahme
vorliegt, wartet der Programminterpretierer 3 auf den Abschluss
der Aufführung
der Scriptanweisung (Schritt S22). Wenn andererseits ermittelt wird,
dass die Scriptan weisung im Modus mit asynchroner Wiederaufnahme
vorliegt, geht der Prozess zum Schritt S25 weiter, ohne auf den
Abschluss der Ausführung
der Scriptanweisung zu warten. Zum Beispiel wird, da der Block N008
eine Anweisung SCALLE im Modus mit asynchroner Wiederaufnahme ist,
in dem nicht auf den Abschluss der Ausführung des Scripts gewartet
wird, wird der Schritt S22 übersprungen,
und der Prozess geht zum Schritt S25 weiter, und es wird die Übersetzung
dieses Blocks abgeschlossen. Wenn im Schritt S22 auf den Abschluss
des Scripts zu warten ist (d.h., wenn das Script nicht im Modus
mit asynchroner Wiederaufnahme vorliegt), wird die Verarbeitung
des folgenden Blocks nicht gestartet, bevor nicht die Ausführung des
Script abgeschlossen ist.
-
Selbst
wenn der Block ein solcher einer Scriptanweisung ist, die nicht
im Modus mit asynchroner Wiederaufnahme vorliegt, wird, wenn die Ausführung eines
in einem G-Code geschriebenen Blocks von innerhalb des Scriptprogramms
angewiesen wird, wie durch die Scriptanweisung angegeben, der von
innerhalb des Scriptprogramms angewiesene Block selbst dann ausgeführt, wenn
die Ausführung
des der Scriptanweisung entsprechenden Prozesses nicht abgeschlossen
ist. Ein derartiger Aufruf eines Blocks in einem G-Code von innerhalb
des Scriptprogramms wird durch eine NC-Komponenteneinheit 13 realisiert.
-
Genauer
gesagt, wird, selbst dann, wenn im Schritt S22 ermittelt wird, dass
die Ausführung
des Scripts nicht abgeschlossen ist, wenn die Ausführung eines
Blocks durch die NC-Komponenteneinheit 13 angefordert wird
(Schritt S23), der angeforderte Block übersetzt (Schritt S24). Die
Verarbeitung des Blocks erfolgt durch rekursives Aufrufen des Schritts 511.
Die Struktur und die Verarbeitung in Zusammenhang mit der NC-Komponenteneinheit 13 werden später detaillierter
beschrieben.
-
Wenn
die Übersetzung
eines Blocks im Schritt S25 abgeschlossen ist, kehrt die Prozedur zum
Schritt S4 zurück,
und es wird ermittelt, ob ein Rückkehrendcode
(M02) ausgeführt
wird oder nicht (Schritt S4). Wenn der Prozess nicht abgeschlossen ist,
werden die Schritte ab dem Schritt S2 wiederholt. Wenn andererseits
der Prozess abgeschlossen ist, wird eine Endeanweisung auch an die
Scriptengine geliefert (Schritt S5), und es wird die Programmübersetzung
abgeschlossen (Schritt S6).
-
In
der obigen Beschreibung sind die Spindelverstellanweisung, die Peripherievorrichtungs-Betriebsanweisung
und die Scriptanweisung als separate Einträge in verschiedenen Blöcken beschrieben, um
die Erläuterung
zu vereinfachen, jedoch ist die Erfindung nicht auf eine derartigen
Konfiguration eingeschränkt,
sondern diese Anweisungen können
gemischt und in einem Block beschrieben werden. Außerdem sind
die mnemotechnischen Begriffe und das Aufrufverfahren nur beispielhaft,
und sie können
gegenüber
den oben Beschriebenen verschieben sein.
-
Als
Nächstes
wird eine Operation der Scriptengine 12 auf Grundlage des
Flussdiagramms der 7 beschrieben. Eine Operation
der Scriptengine 12 wird gestartet, wenn die Übersetzung
des numerischen Steuerungsprogramms gestartet wird (Schritt S31),
und es wird untersucht, ob eine Scriptanweisung vom Programminterpretierer 3 vorliegt
(Schritt S32) oder ob ein Erfassungsereignis vom Ereignisdetektor 14 vorliegt
(Schritt S43). Wenn bei der Untersuchung bei der Ausführung im
Schritt S20 durch den Programminterpretierer 3 eine Scriptanweisung aufgefunden
wird, wird ein Block derselben vom Programminterpretierer 3 empfangen
(Schritt S33).
-
Wenn
die empfangene Scriptanweisung "SCRIPT" ist (Schritt S34),
wird entsprechend dem spezifizierten Sprachenamen eine Scriptengineinstanz
erzeugt (Schritt S35).
-
Wenn
die empfangene Scriptanweisung "SLOAD" ist (Schritt S36),
wird ein Scriptprogramm in die spezifizierte Scriptengineinstanz
geladen (Schritt S37).
-
Wenn
die empfangene Scriptanweisung eine der Anweisungen "SCALL" "SCALLS" und "SCALLE" ist (Schritt S38), wird die Funktion
mit dem spezifizierten Funktionsnamen aufgerufen und durch die spezifizierte
Scriptengineinstanz ausgeführt
(Schritt S39). Die unterschiedlichen Operationen zwischen SCALL,
SCALLS und SCALLE werden durch den Programminterpretierer 3 bewerkstelligt.
-
Wenn
die empfangene Scriptanweisung "SEVENT" ist (Schritt S40),
werden der Ereignistyp, die spezifizierte Scriptengineinstanz sowie
eine Funktion mit dem spezifizierten Funktionsnamen, die als Parameter
in der Anweisung spezifiziert sind, registriert (Schritt S41).
-
Wenn
die empfangene Scriptanweisung eine im Schritt S5 gelieferte Endeanweisung
ist (Schritt S42), wird der Prozess abgeschlossen (Schritt S45).
-
In
einem Schritt S43 wird ermittelt, ob im Ereignisdetektor 14 ein
Ereignis eines Erfassungsziels, wie PSELECT, ALARM, START, END und
RESET, erkannt wurde oder nicht, und wenn ein derartiges Ereignis
erkannt wurde, wird durch eine spezifizierte Scriptengine auf Grundlage
von vorab in einem Schritt S41 gespeicherter Information die spezifizierte
Funktion ausgeführt
(Schritt S44).
-
Nun
wird ein in der 9 dargestelltes zweites Beispiel
eines numerischen Steuerungsprogramms beschrieben. Beim in der 2 veranschaulichten
numerische Steuerungsprogramm sind verschiedene mnemotechnische
Begriffe eingeführt,
um die Scriptanweisung auszuführen.
Beim durch die 9 veranschaulichten numerische
Steuerungsprogramm wird andererseits ein Programm direkt in der
Scriptsprache beschrieben und mit einem numerische Steuerungsprogramm
im G-Code gemischt. Wenn eine derartige gemischte Beschreibung verwendet
wird, besteht der Vorteil, dass der Gesamtablauf einfacher als dann
erfasst werden kann, wenn das numerische Steuerungsprogramm und
das Scriptprogramm separat vorliegen, wie es in den 2-4 angegeben
ist.
-
Beim
durch die 9 veranschaulichten Programm
wird der Anfang einer Scriptsprache durch eine Marke "<?" gekennzeichnet,
und dann wird das Ende derselben durch eine Marke "?>" gekennzeichnet.
-
Der
Programminterpretierer 3 zum Verarbeiten des durch die 2 veranschaulichten
Programms wird dadurch realisiert, dass eine Funktion zum Übersetzen
der oben angegebenen mnemotechnischen Begriffe zur Scriptverarbeitung
zum Programminterpretierer für
eine NC auf PC-Basis gemäß der einschlägigen Technik
hinzugefügt
wird. Wenn andererseits das durch die 9 veranschaulichte Programm
zu verarbeiten ist, kann der Programminterpretierer 3 dadurch
erhalten werden, dass die Funktion des Interpretierers 3 gemäß der einschlägigen Technik
so erweitert wird, dass er über
eine Funktion zum Erkennen des Starts und des Endes der Scriptbeschreibung
durch Marken verfügt
und die Scriptbeschreibung zwischen dem Start und dem Ende an die
Scriptengine 12 liefert.
-
Die 8 ist
ein Diagramm, das die Struktur einer numerische Steuerung zeigt,
die das durch die 9 veranschaulichte numerische
Steuerungsprogramm übersetzen
und ausführen
kann. In der 8 sind Komponenten, deren Funktion derjenigen
der Komponenten in der 1 ähnlich ist, mit denselben Bezugszahlen
gekennzeichnet, und sie werden nicht erneut beschrieben, während Komponenten
mit demselben Namen aber anderen Funktionen andere Bezugszahlen
zugewiesen sind.
-
Ein
numerisches Steuerungsprogramm 81 ist ein solches, in dem
ein Programm in einem G-Code und ein Scriptprogramm gemischt sind
und ähnlich
wie das durch die 9 veranschaulichte numerische
Steuerungsprogramm beschrieben sind. Ein Numeriksteuerprogramm/Scriptprogramm-Separator 82 zerlegt
das numerische Steuerungsprogramm 81 in eine temporäre Datei 83 für ein numerisches Steuerungsprogramm
(temporäre
Datei für
das numerische Steuerungsprogramm) im G-Code und mit mnemotechnischen
Begriffen, und eine temporäre Datei 84 für ein Scriptprogramm
(temporäre
Datei für ein
Scriptprogramm) (ein zugehöriges
Beispiel ist in der 11 dargestellt). Ein Textstring,
der von einer Startmarke bis zu einer entsprechenden Endmarke im
numerischen Steuerungsprogramm 81 angegeben ist, wird zu
einer temporären
Datei 84 für
ein Scriptprogramm. Es können
Fälle existieren,
bei denen mehrere Scriptprogramme im numerischen Steuerungsprogramm
angegeben sind. In derartigen Fällen
wird jedes der Scriptprogramme entnommen, und es bildet eine temporäre Datei.
Durch Einstellen dieser Dateien als Eingangsdateien für den Programmleser 2 und
die Scriptengine 12 ist es möglich, Strukturen zu verwenden,
die mit denen der numerischen Steuerung der 1 übereinstimmen.
-
Die 12 zeigt
ein Flussdiagramm einer Prozedur für den Numeriksteuerprogramm-Scriptprogramm-Separator 82 zum
Aufteilen des numerischen Steuerungsprogramms (auch in der 9 dargestellt)
in die temporäre
Datei 83 für
ein numerisches Steuerungsprogramm (in der 10 dargestellt)
und die temporäre
Datei 84 für
ein Scriptprogramm (in der 11 dargestellt).
-
Wenn
die Aufteilung des numerischen Steuerungsprogramms und des Scriptprogramms
gestartet wird (Schritt S51), wird die temporäre Datei 82 für das numerische
Steuerungsprogramm (beim dargestellten Beispiel mit dem Namen "TEMP.NC") in einem Schreibmodus
geöffnet,
und die geöffnete
Datei wird als temporäre
Datei TPF eingetragen (Schritt S52). Dann wird die temporäre Datei 84 für das Scriptprogramm
(beim dargestellten Beispiel mit dem Namen "TEMP.js") in einem Schreibmodus geöffnet, und
die geöffnet
Datei wird als temporäre
Datei TSF eingetragen (Schritt S53).
-
Es
wird eine Zeile des numerischen Steuerungsprogramms 81 gelesen
und in eine Variable st eingetragen (Schritt S54). Wenn die Variable
st das Ende der Datei anzeigt (Schritt S55), wird die Aufteilung
abgeschlossen (Schritt S66).
-
Ein "<?" am
Kopf der Variablen st (Schritt S56) zeigt den Start des Scriptprogramms
an, weswegen ein Prozess ab einem Schritt S51 ausgeführt wird.
Andernfalls zeigt der Kopf ein numerisches Steuerungsprogramm in
einem G-Code an, und die Variable st wird in die temporäre Datei 83 für das numerische
Steuerungsprogramm eingeschrieben, d.h. TPF (Schritt S57), und es
wird der Prozess ab dem Schritt S54 wiederholt.
-
Wenn
der Kopf der Variablen st im Schritt S56 als "<?" ermittelt wird,
werden drei Zeilen von "SCRIPT
JScript, JSEngine", "SLOAD TEMP.js, JSEngine" und "SCALL JPFunc0, JSEngine" in die temporäre Datei 83 für das numerische
Steuerungsprogramm eingeschrieben, d.h. TPF (Schritte S58-S60). Dies
ist ein Prozess zum Ersetzen des direkt im numerischen Steuerungsprogramm 81 angegebenen Scripts
durch eine der Angabe äquivalente
Angabe unter Verwendung mnemotechnischer Begriffe für das in
der 2 veranschaulichte Script. Als Typ der Scriptsprache
und als Name der Scriptengineinstanz ist es möglich, diejenigen zu verwenden,
wie sie in der Scriptbeschreibung im numerischen Steuerungsprogramm 81 angebeben
sind (vierte Zeile in der 9). Der
Funktionsname JSFuncO kann automatisch erzeugt werden. Dann wird "function JSFunco()(" in die temporäre Datei 84 für das Script
eingeschrieben, d.h. TSF (Schritt S61), um den Namen einer im mnemotechnischen
Begriff spezifizierten Funktion in der Zwischendatei 83 für das numerische Steuerungsprogramm
und die in der temporären
Datei 84 für
das Script beschriebene tatsächliche
Funktion zu korrelieren. Die Beschreibung einer Zeile wird aus dem
numerischen Steuerungsprogramm 81 in eine Variable st gelesen
(Schritt S62). Wenn der Kopf der Variablen st "?>" ist, zeigt sie das
Ende des Scriptprogramms an (Schritt S63), und der Prozess geht
zu einem Schritt S65 weiter. Andernfalls wird die Variable st in
die temporäre
Datei 84 für
das Script, d.h. TSF, geschrieben (Schritt S64), und es wird der Prozess
ab dem Schritt S62 wiederholt. Wenn das Ende des Scriptprogramms
erreicht ist, wird "}", was das Ende der
Funktion anzeigt, in die temporäre
Datei 84 für
das Script geschrieben, d.h. TSF, und es wird der Prozess ab dem
Schritt S54 wiederholt.
-
Auf
diese Weise wird das numerische Steuerungsprogramm 81 in
die temporäre
Datei 83 für
das numerische Steuerungsprogramm und die temporäre Datei 84 für das Scriptprogramm
unterteilt, und unter Verwendung der Teildateien als Eingabe für den Interpretierer 3 für das numerische
Steuerungsprogramm und die Scriptengine 12 ist es möglich, eine numerische
Steuerung zu realisieren, die das in der 9 dargestellte
numerische Steuerungsprogramm übersetzt
und ausführt,
in dem G-Code und ein Scriptprogramm gemischt und beschrieben sind, wozu
die unter Bezugnahme auf die 1 erläuterte numerische
Steuerung verwendet wird.
-
Bei
der oben beschriebenen Ausführungsform
sind der Start und das Ende des Scriptprogramms durch "<?" und "?>" angegeben,
jedoch ist die Erfindung nicht auf diese Konfiguration beschränkt, sondern
es können
andere Symbole verwendet werden. Obwohl bei der in den 9-12 dargestellten
beispielhaften Konfiguration im numerischen Steuerungsprogramm 81 Einschränkungen vorhanden
sind, wie die, dass im numerische Steuerungsprogramm nur eine oder
weniger an Scriptbeschreibung auftritt, das nur JScript als Scriptsprache verwendet
wird, dass nur eine Scriptengineinstanz verwendet wird und dass
eine Funktionsdefinition verhindert ist, bildet das Beseitigen dieser
Einschränkungen
eine natürliche
Erweiterung innerhalb des Schutzumfangs der Erfindung.
-
Bei
der Beschreibung der vorliegenden Ausführungsform sind JScript und
VBScript als beispielhafte Scriptsprachen angebeben, jedoch ist
es möglich,
Sprachen wie Java registrierte Handelsbezeichnung)script, Perl,
Ruby oder dergleichen, oder ein Shellscript mittels einer Shell
zu verwenden, wie B-Shell,
C-Shell oder dergleichen, wie bei UNIX (registrierte Handelsbezeichnung)
und Windows (registrierte Handelsbezeichnung) verwendet. Außerdem werden
zwar bei der bevorzugten Ausführungsform der
Erfindung ein Argument und ein Rücklieferungswert
aus dem Scriptprogramm nicht übergeben,
jedoch ist es auch möglich,
die Struktur auf einfache Weise so zu konfigurieren, dass diese
Werte vergeben werden. Darüber
hinaus existieren als numerisches Steuerungsprogramm, zusätzlich zum
in den Zeichnungen veranschaulichten vereinfachten numerischen Steuerungsprogramm,
Programme, bei denen ein oder mehrere Unterprogramme aus einem Hauptprogramm
aufgerufen werden. Es ist auch möglich,
die Struktur so zu konfigurieren, dass ein in einer Scriptsprache
geschriebenes Programm sowohl aus dem Hauptprogramm als auch dem
Unterprogramm aufgerufen wird, und auch diese Fälle befinden sich innerhalb
des Schutzumfangs der Erfindung.
-
Die 13 und 14 zeigen
Beispiele einer Hardwarestruktur einer numerischen Steuerung, die
ein in einer Scriptsprache geschriebenes Programm aufrufen kann,
gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
Bei
der in der 13 dargestellten Struktur führt eine
CPU (zentrale Verarbeitungseinheit) 101 verschiedene Programme,
die in einem ROM 102 oder einem Festplatten-Laufwerk 104 gespeichert sind,
unter Verwendung eines RAM 103 als Arbeitsraum aus. Durch
die Ausführung
des Programms werden der Programmleser 2, der Programminterpretierer 3,
der Funktionsgenerator 4, die Scriptengine 12,
die NC-Komponenteneinheit 13, der Ereignisdetektor 14 und
der Speicher 15 für
gemeinsame Variable realisiert. Eine Ablaufsteuerung 105 entspricht der
PLC-Steuerung 8 der 1, und es
handelt sich um eine programmierbare Steuerung, die die Sequenzsteuerung
ausführt.
Ein Grafikdisplay-Controller 107 ist eine Schaltung zum
Steuern einer Schirmanzeige für
ein Display 109, und eine Bedienkonsole I/F (Schnittstelle) 111 ist
eine Schnittstellenschaltung zum Steuern z. B. einer Hardwaretaste
und einer Anzeigeeinheit an einer Bedienkonsole 112. Eine
Servosteuerung 113 ist eine dem Servotreiber 5 der 1 entsprechende
Hardwareschaltung, die eine Regelung eines Servomotors 114 entsprechend
einer Anweisung von der CPU 101 unter Verwendung eines
Erfassungssignals von einem Positionsdetektor ausführt.
-
Die
Struktur der 13 versucht gleichzeitig eine
Echtzeitsteuerung und eine Nicht-Echtzeitsteuerung durch eine CPU 101 zu
realisieren, und dies kann dadurch erfolgen, dass ein Echtzeit-OS
(Betriebssystem) wie ITRON und ein Universal-OS wie UNIX (registrierte
Handelsbezeichnung) und Windows (registrierte Handelsbezeichnung)
kombiniert werden. In diesem Fall ist es bevorzugt, eine Rechensteuerung
eines Abschnitts 22 in der 1 (d.h.,
den Programmleser 2, den Programminterpretierer 3,
den Ereignisdetektor 14 und den Speicher 15 für gemeinsame
Variable) im Echtzeit-OS zu realisieren, und die Rechensteuerung
eines Abschnitts 21 in der 1 (d.h.
die Scriptengineeinheit 12 und die NC-Komponenteneinheit 13)
im Universal-OS zu realisieren. Bei einer derartigen Struktur kann
stabiler Betrieb in Bezug auf eine zeitliche Einschränkung bei einem
Echtzeit-OS für
die Programmübersetzung mittels
des G-Codes erwartet werden und im in der Scriptsprache geschriebenen
Programm kann eine große
Auswahl von Funktionen im Universal-OS leicht verwendet werden,
was erhöhte
Zweckdienlichkeit ermöglicht.
-
Bei
der Struktur der 14 ist die numerische Steuerung
durch zwei separate Abschnitte mit einem Abschnitt 120,
der durch ein Universal-OS wie UNIX (registrierte Handelsbezeichnung)
und Windows (registrierte Handelsbezeichnung) gesteuert wird, und
einen Abschnitt 121, der durch ein Echtzeit-OS wie ITRON
gesteuert wird, gebildet. Die zwei Abschnitte 120 und 121 verfügen über CPUs 101 bzw. 101a,
ROMs 102 bzw. 102a und RAMs 103 bzw. 103a,
um ein Programm auszuführen,
und sie sind durch eine Bus-I/F 115 miteinander verbunden.
In der 14 sind Komponenten, die mit
solchen in der 13 identisch sind, dieselben
Bezugszahlen zugewiesen, und sie werden nicht erneut beschrieben.
-
Bei
der Struktur der 14 ist es bevorzugt, dass die
Rechensteuerung des Abschnitts 21 der 1 durch
den durch das Universal-OS gesteuerten Abschnitt 120 realisiert
wird und die Rechensteuerung des Abschnitts 22 der 1 durch
den durch das Echtzeit-OS gesteuerten Abschnitts 121 realisiert
wird, und zwar aus Gründen,
die ähnlich
denen für
die Konfiguration der 13 sind. In diesem Fall sind
die Bedienkonsole-I/F 111 und die Servosteuerung 113 zum
Regeln einer Werkzeugmaschine im durch das Echtzeit-OS gesteuerten
Abschnitt 121 vorhanden. Im durch das Universal-OS gesteuer ten Abschnitt 120 ist
dagegen eine Benutzerschnittenvorrichtung angeschlossen, wie der
Grafikdisplay-Controller 107 zum Steuern der Schirmanzeige.
-
Die
Bus-I/F 115 kann ein üblicher
Speicher oder FIFO sein, oder, alternativ, kann die Bus-I/F 115 einen
Anschluss über
eine RS 232CC- und eine Ethernet(registrierte Handelsbezeichnung)-Verbindung
bilden.
-
Als
Nächstes
wird die NC-Komponenteneinheit 13 der 1 beschrieben.
-
Die
NC-Komponenteneinheit 13 wird durch die Scriptengine 12 aufgerufen,
und sie führt
eine Funktion zur numerischen Steuerung aus. Die Funktion zur numerischen
Steuerung verfügt über einen Funktionsnamen,
der mit "nc." beginnt, wie die
in der 3 dargestellte Funktion nc.SetCommonVar. Wenn
die Scriptengine 12 eine Funktion mit einem derartigen
Funktionsnamen in auszuführenden Scriptprogramm
erkennt, ruft sie die in der NC-Komponenteneinheit 13 enthaltene
Funktion auf. Die aufgerufene Funktion der NC-Komponenteneinheit 13 erzeugt
eine Anweisung in einem G-Code entsprechend einem Argument der Funktion,
und sie liefert diese Anweisung im G-Code an den Programminterpretierer 3,
um die Ausführung
derselben anzuweisen. Unter den durch die NC-Komponenteneinheit 13 bereitgestellten
Funktionen existiert eine solche zum Handhaben einer im Speicher 15 für gemeinsame Variable
gespeicherten gemeinsamen Variablen. Die gemeinsame Variable ist
eine solche, die für
die Ausführung
des numerischen Steuerungsprogramms durch den Programminterpretierer 3 und
die Ausführung
des Scriptprogramms in der Scriptengine 12 gemeinsam gilt.
Die NC-Komponenteneinheit 13 liefert ein Programm z. B.
entsprechend dem folgenden Teilprogramm, wie es im Scriptprogramm
der 3 verwendet wird. Unter diesen Funktionen bildet
die Funktion SetCommon Var eine solche zum Ändern eines Werts der im Speicher 15 für gemeinsame
Variable gespeicherten gemeinsamen Variablen, die Funktion GetCommonVar
bildet eine Funktion zum Lesen eines Werts der gespeicherten gemeinsamen Variablen,
und die Funktion ExecuteBlock bildet eine Funktion zum Übersetzen
und Ausführen
eines Blocks.
nc.SetCommonVar(number, value)
string=nc.GetCommonVar(number)
nc.ExecuteBlock(blockString)
-
Genauer
gesagt, gibt im in der 3 veranschaulichten Script die
Beschreibung:
nc.SetCommonVar(1,feed)
an, dass der Inhalt
der Variablen "feed" in die erste der
gemeinsamen Variablen einzusetzen ist. Die Beschreibung:
nc.ExecuteBlock("G81 ZO R50 P1 F100")
zeigt an,
dass ein Block des numerischen Steuerungsprogramms innerhalb des
Scriptprogramms auszuführen
ist. Bei dieser Beschreibung wird ein fester Zyklus entsprechend
der Anweisung G81 ausgeführt.
Beim veranschaulichten Beispiel ist ein einfaches Beispiel eines
festen Textstrings beschrieben. Jedoch ist es unter Verwendung einer
Textstring-Berechnungsfunktion in der Scriptsprache auch möglich, einen
Textstring eines im G-Code geschriebenen Blocks unter Verwendung
eines in der Scriptsprache geschriebenen Programms zu erzeugen und auszuführen. Zum
Beispiel zeigt im veranschaulichten Scriptbeispiel der 3 die
Beschreibung:
var cycle=nc.GetCommonVar(2):
var block="G" & cycle & " ZO R50 P1 F" & feed;
nc.ExecuteBlock(block)
einen
Prozess an, bei dem der zweite Wert der gemeinsamen Variablen gelesen
wird und in eine Variable "cycle" eingesetzt wird,
und ein im G-Code geschriebener Block in eine Variable "block" unter Verwendung
der Variablen "cycle" als Textstringoperator eingesetzt
wird und der Textstring der Variablen "block" übersetzt
und ausgeführt
wird.
-
Die
Erfinder in der vorliegenden Sache haben in der japanischen Patentanmeldung
Nr. 2003-343279, "Interfacing
method of device driver" eine
Vorrichtung für
Kommunikation zwischen einem Echtzeit-OS (das Echtzeit-OS arbeitet
als Teil eines Kernels eines Universal-OS) und einem Anwendungsabschnitt
eines Universal-OS unter Verwendung eines Komponentenmechanismus
vorgeschlagen. Als Komponentenmechanismus kann z. B. COM (Component
Object Model), wie von Microsoft Corporation geliefert, verwendet
werden. Die NC-Komponenteneinheit 13 bei der vorliegenden
Ausführungsform
kann unter Verwendung einer Kommunikationsvorrichtung mit Verwendung
des Komponentenmechanismus leicht realisiert werden. Die 15 bildet einen
Auszug einer Schnittstellendefinition (Datei IDL) der NC-Komponente.
In dieser Beschreibung ist eine Schnittstelle von durch die NC-Komponenteneinheit 13 gebildeten
Funktionen zur Scriptengine durch z. B. GetCommonVar, ExecuteBlock
usw. angegeben. Die NC-Komponenteneinheit 13 wird durch Verarbeiten
der IDL-Datei durch einen IDL-Compiler zum Erzeugen einer Proxyeinheit
und einer Stubeinheit realisiert, und unter Verwendung der Proxyeinheit
als Teil der durch das Universal-OS gesteuerten Software sowie der
Stubeinheit als Teil der durch das Echtzeit-OS gesteuerten Software.
Unter Verwendung dieser Vorrichtung ist die Erweiterung von Funktionen
durch Hinzufügen
einer Funktion zur NC-Komponenteneinheit 13 erleichtert,
was eine deutliche Erhöhung
des Nutzungsbereichs zum Erhalten von Daten für eine Echtzeiteinheit aus
der Scriptsprache und zum Aufrufen einer Funktion ermöglicht.
-
Mit
der erfindungsgemäßen numerische Steuerung,
bei der ein in einer Scriptsprache geschriebenes Programm aus dem
numerischen Steuerungsprogramm aufgerufen werden kann, können die
meisten durch eine Scriptsprache realisierbaren Funktionen realisiert
werden, wie eine Funktion zum Senden von Emails, eine Funktion für Zugriff
auf eine Datenbank und zum Aktualisieren von Daten in dieser, eine
Funktion zum Anzeigen von Grafik auf einem Schirm sowie eine Funktion
zum Zugreifen auf verschiedene durch eine numerische Steuerung bereitsgestellte
Funktionen. Da die numerischen Steuerungsprogramme gemäß der einschlägigen Technik diese
Funktionen nicht ausführen
können,
kann die Funktion der numerischen Steuerung gemäß der Erfindung wesentlich
verbessert werden. Außerdem besteht,
da eine Scriptsprache leicht erlernt werden kann, ein Vorteil dahingehend,
dass eine beträchtliche
Anzahl von Personen die numerische Steuerung leicht anpassen kann.
-
Gemäß einer
bevorzugten Konfiguration der Erfindung kann das Scriptprogramm
synchron oder asynchron zum Ende des vorigen Blocks des numerischen
Steuerungsprogramms oder zum Start des nächsten Blocks desselben gestartet
und beendet werden, was eine Verarbeitung sowohl bei einer Konfiguration,
bei der das Timing wesentlich ist als auch einer Konfiguration ermöglicht,
bei der zwei Prozesse durch Parallelverarbeitung schnell auszuführen sind.
-
Gemäß einer
anderen bevorzugten Konfiguration der Erfindung besteht, da ein
in einer Scriptsprache geschriebenes Programm gemischt mit einem
numerischen Steuerung geschrieben und durch Marken abgetrennt werden
kann, ein Vorteil dahingehend, dass der Ablauf von Operationen des
numerischen Steuerungsprogramms und des Scriptprogramms leicht verständlich sind.
-
Gemäß einer
anderen bevorzugten Konfiguration der Erfindung ist es möglich, da
ein in einer Sprache zum Beschreiben eines numerischen Steuerungsprogramms
(z. B. G-Code) beschriebener Block vom Scriptprogramm ausgeführt werden
kann, einen Textstring, der aus dem in der Scriptsprache geschriebenen
Programm berechnet wird, als in der Sprache für ein numerisches Steuerungsprogramm geschriebenes
Teilprogramm auszuführen.
Darüber hinaus
besteht ein Vorteil dahingehend, dass ein numerisches Steuerungsprogramm
automatisch erzeugt und entsprechend dem Ablauf des numerischen
Steuerungsprogramms ausgeführt
werden kann.
-
Gemäß einer
anderen bevorzugten Konfiguration der Erfindung besteht, da die
Struktur durch separate Einheiten eines Interpretierers für ein numerisches
Steuerungsprogramm und eine Scriptengine realisiert wird, ein Vorteil
dahingehend, dass ein in einer Scriptsprache geschriebenes Programm
aufgerufen werden kann, ohne dass der Interpretierer für ein numerisches
Steuerungsprogramm gemäß der einschlägigen Technik
wesentlich zu ändern
wäre.
-
Gemäß einer
anderen bevorzugten Konfiguration der Erfindung besteht, da die
Scriptengine mehrere Scriptengineinstanzen erzeugen kann, ein Vorteil
dahingehend, dass verschiedene Scriptsprachen in einem ein Unterprogramm
enthaltenden numerischen Steuerungsprogramm gemischt werden können.
-
Gemäß einer
anderen bevorzugten Konfiguration der Erfindung besteht, da ein
Scriptprogramm entsprechend einem Ereignis spezifiziert werden kann,
ein Vorteil dahingehend, dass es möglich ist, eine dem Ereignis
entsprechende Operation auszuführen,
z. B. ein Scriptprogramm wie das Registrieren des Auftretens des
Ereignisses in einer Datenbank, auszuführen.