DE19728726A1 - Robotercontroller und dessen Steuerverfahren - Google Patents

Robotercontroller und dessen Steuerverfahren

Info

Publication number
DE19728726A1
DE19728726A1 DE19728726A DE19728726A DE19728726A1 DE 19728726 A1 DE19728726 A1 DE 19728726A1 DE 19728726 A DE19728726 A DE 19728726A DE 19728726 A DE19728726 A DE 19728726A DE 19728726 A1 DE19728726 A1 DE 19728726A1
Authority
DE
Germany
Prior art keywords
event
program
task
processing
real
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19728726A
Other languages
English (en)
Other versions
DE19728726B4 (de
Inventor
Kazuhiro Gomi
Hiroshi Miyazawa
Masayuki Okuyama
Norio Yokoshima
Toshimi Shioda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Seiko Seiki KK
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp, Seiko Seiki KK filed Critical Seiko Epson Corp
Publication of DE19728726A1 publication Critical patent/DE19728726A1/de
Application granted granted Critical
Publication of DE19728726B4 publication Critical patent/DE19728726B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/31From computer integrated manufacturing till monitoring
    • G05B2219/31293Enter size measurements, store in data base, analyze and identify in size data group
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33095External clock delivers interrupts for real time execution of programs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34258Real time system, qnx, works together with non real time system, windows nt
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34266Windows-95
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34338Execute control tasks, programs as well as user, application programs
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34383Dynamic preemptive, special event register manages time slices for applications
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40389Use robot control language also to write non robotic user, application programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Numerical Control (AREA)
  • Manipulator (AREA)

Description

Die Erfindung betrifft einen Robotercontroller und dessen Steuerverfahren. Insbesondere bezieht sich die Erfindung auf Robotercontroller und typische Personal-Computer-(PC)-Betriebssysteme, die die mit dem Auftreten von Ereignissen verknüpfte Verarbeitung auf Echtzeit-Basis ausführen.
Die meisten herkömmlichen Robotercontroller und ihre Steuerverfahren sind dazu ausgelegt, den Betrieb spezieller Manipulatoren wie SCARA-Manipulatoren und in kartesischen Koordinaten gesteuerte Manipulatoren zu steuern. Zu diesem Zweck setzen die herkömmlichen Robotercon­ troller (nachfolgend auch als "RC" abgekürzt unabhängig entwickelte Robotercontroller-Betriebs­ systeme (RC-Betriebssysteme) ein.
In den letzten Jahren ist jedoch ein zunehmender Bedarf an Robotercontrollern aufgetreten, die über die Steuerung des Betriebs der Manipulatoren hinaus zur Steuerung des gesamten Systems in der Lage sind, etwa auch periphere Einrichtungen zu steuern oder mit externen Einrichtungen zu kommunizieren. In solchen Fällen muß als RC-Betriebssystem ein zu Multitasking befähigtes Betriebssystem eingesetzt werden. Zur Erfüllung dieser Forderung werden in den meisten Fällen entweder proprietäre Betriebssysteme oder allgemeine Echtzeit-Betriebssysteme verwendet, wie sie etwa unter den Bezeichnungen pSOS® (Warenzeichen der Integrated Corporation), VxWorks® (Warenzeichen der WindRiver Systems Corporation), VTRX® (Warenzeichen der MicroTech Research Corporation), OS-9, etc. bekannt sind.
Da die Steuerung von Manipulatoren und peripheren Einrichtungen eine Echtzeit-Verarbeitung erfordert, ist die Fähigkeit zu einer solchen Echtzeit-Verarbeitung eine wesentliche Forderung an ein RC-Betriebssystem.
Die Entwicklung proprietärer Betriebssysteme, die eine Echtzeit-Verarbeitung ermöglichen, erfordert einen enormen Arbeitsaufwand. Während die allgemeinen Echtzeit-Betriebssysteme andererseits problemlos Echtzeit-Verarbeitungsfähigkeit besitzen, führen ihre hohen Kosten zu ökonomischen Problemen.
In letzter Zeit sind preiswerte PC-Betriebssysteme auf den Markt gekommen und werden in großem Umfang eingesetzt. Wenn solch ein PC-Betriebssystem für einen Robotercontroller eingesetzt werden kann, ist es möglich, sowohl den Aufwand an Entwicklungsarbeit als auch die Kosten wesentlich zu reduzieren. Dieser Weg bietet die zusätzlichen Vorteile des für die Benutzer leichten Trainings, weiterer Verminderung von Entwicklungsvorlaufzeiten wegen der Verfügbar­ keit eines ganzen Bündels von Entwicklungswerkzeugen, sowie der Möglichkeit der Ausweitung der Anwendungen durch Verwendung von ab Lager lieferbarer Hardware und Software.
Obwohl jedoch preiswerte PCs und PC-orientierte Betriebssysteme Multitasking-Fähigkeiten bieten, ist ihr Taskwechselbetrieb langsam, und eine Verminderung der Schaltintervalle ist unmöglich, weshalb es schwierig ist, eine Echtzeit-Verarbeitung sicherzustellen.
Da, wie zuvor erwähnt, die Steuerung von Manipulatoren und peripheren Einrichtungen eine Echtzeit-Verarbeitung erfordert, kann kein System in der Praxis eingesetzt werden, bei dem eine lange Zeit zwischen dem Auftreten eines Ereignisses und dem Anlauf des Tasks zur Verarbeitung dieses Ereignisses vergeht.
Ein weiterer komplizierender Faktor ist der, daß, wenn einer der vorerwähnten PCs oder eines der PC-orientierten Betriebssysteme verwendet wird, die Zeitspanne zwischen dem Auftreten eines Ereignisses und dem Hochlauf (Booten) des Tasks zur Verarbeitung des Ereignisses abhängig von dem Zeitpunkt, zu dem das Ereignis auftrat, sehr stark variieren kann. Diese Tatsache vermindert die Qualität der Verarbeitung im Hinblick auf die Reproduzierbarkeit.
Wenn daher ein schneller Taskwechsel und eine Verminderung der Bootzeitschwankung bei irgendeinem der vorgenannten PCs und PC-Betriebssysteme, den sogenannten Nicht-Echtzeit- Betriebssystemen, erzielbar ist, können Robotercontroller mit geringerem Entwicklungsaufwand, mit höherem Funktionalitätsgrad, mit verbesserter Benutzer-Erlernbarkeit und mit größerem Erweiterungspotential durch die Verwendung von ab Lager erhältlicher Hardware und Software geschaffen werden, während die den vorgenannten PC-Betriebssystemen eigenen verschiedenen Vorteile voll genutzt werden.
Die vorliegende Erfindung befaßt sich mit diesen Problemen, und ihre Aufgabe ist es, einen Robotercontroller sowie dessen Steuerungsverfahren unter Verwendung eines allgemeinen PCs und eines allgemeinen Betriebssystems für PCs zu schaffen.
Diese Aufgabe wird erfindungsgemäß mit einem Roboterantriebscontroller gemäß Anspruch 1 bzw. einem Steuerverfahren gemäß Anspruch 7 gelöst.
Im Rahmen des vorliegenden Textes bezieht sich der Begriff "preemptive-Methode" allgemein auf die Unterteilung der CPU-Verarbeitung in feste Zeitscheiben, so daß das Betriebssystem den Anwendungen CPU-Zeit nach Maßgabe eines Prioritätenschemas zuweist. Anders ausgedrückt, der Begriff schließt den Fall ein, daß, bevor eine Anwendung die CPU freigibt, das Betriebssy­ stem mit jeder Zeiteinheit die Verarbeitung übernimmt und die CPU zu einer anderen Anwendung umschaltet. Wenn folglich mehrere Anwendungen in einem preemptiven Multitasking-Schema ausgeführt werden, braucht eine Anwendung nicht darauf zu warten, daß eine andere Anwen­ dung ihre Verarbeitung beendet. Dies reduziert wesentlich die von dem Benutzer realisierte Wartezeit und verbessert den scheinbaren Wirkungsgrad des Computers.
Gemäß der im Anspruch 1 definierten Lösung wird in bestimmten Wiederhol-Intervallen festge­ stellt, ob ein Ereignis aufgetreten ist, so daß der Task, in welchem die mit dem Ereignis verbun­ dene Verarbeitung ausgeführt wird, angesteuert werden kann. Indem somit eine Ereignistreiber­ verarbeitung bei jedem Wiederhol-Intervall, das zur Handhabung von Ereignissen auf einer Echtzeit-Basis nötig ist, ausgeführt wird, können Steuerungen so bewirkt werden, daß die Verarbeitung zur Handhabung der Ereignisse in Echtzeit ausgeführt wird.
Ein weiteres Aspekt ist ein integriertes Management der zu verarbeitenden Ereignisse, was das Management von Ereignissen vereinfacht.
Gemäß dem Verfahren nach Anspruch 7 kann ein externer Zeitgeber zur Erzeugung von externen Interruptsignalen zu den Wiederhol-Intervallen eingesetzt werden, die ausreichen, um auf das Auftreten von Ereignissen in Echtzeit zu reagieren. Indem eine Ereignistreiberverarbeitung synchron mit den Interruptsignalen durchgeführt wird, können selbst typische PCs und typische PC-Betriebssysteme, die aufgrund von Zeitscheiben oder internen Interrupts auf der Basis eines Systemzeitgebers die vorgenannten Wiederhol-Intervalle nicht gewährleisten können, eine Ereignistreiberverarbeitung in Echtzeit steuern.
Die Task-Wechseleinrichtung umfaßt vorzugsweise eine Zeitteilungseinrichtung, die die Zeit mit den vorgenannten Wiederhol-Intervallen unterteilt, das heißt Zeitscheiben bildet, so daß die Ereignistreibereinrichtung einseitig eine Ereignistreiberverarbeitung zu jeder von der Zeiteintei­ lungseinrichtung erzeugten Zeitscheibe ausführt. Der Ereignistreiberschritt kann so konfiguriert werden, daß er die Ereignistreiberverarbeitung zu jeder der Zeitscheiben ausführt, die das vorgenannte allgemeine Betriebssystem zu den vorgenannten Wiederhol-Intervallen ausführt.
Auf diese Weise kann die Ereignistreiberverarbeitung als ein Task implementiert werden, der einseitig zu jeder Zeitscheibe verarbeitet wird. Folglich kann eine ereignisgesteuerte Verarbeitung so gesteuert werden, daß sie in einer einfachen Konfiguration in Echtzeit ausgeführt wird.
Gemäß den Weiterbildungen der Ansprüche 3 bzw. 8 kann eine dynamische Zuordnung zwischen Ereignissen und den die zugehörige Verarbeitung ausführenden Programmen erstellt werden, was eine effektive Nutzung der Systemressourcen sicherstellt. Durch Rücksetzen des Ereigniserwartungszustands am Ende der Ereignistreiberverarbeitung ist es möglich, Ereigniser­ wartungszustände und Ereigniserwartungsfreigabeaktionen in Echtzeit zu verfolgen.
Die Hardwareressourcen in den Ansprüchen 4 bzw. 9 umfassen I/O-(Eingabe/Ausgabe)-Ports, auf den Speicher abgebildete I/O-Ports, die eigentlichen Manipulatoren, System-I/O-Einheiten, die in einer Treiberbox untergebracht sind, und spezielle mit den ISA-Bus verbundene Schaltungskar­ ten. Der Begriff "Programm" bezieht sich auf Benutzertasks, die Manipulatoroperationen und periphere Einrichtungen steuern, sowie auf Programme, die in Systemtasks ausgeführt werden, um unter anderem die internen Zustände von Controllern zu überwachen.
Indem somit die verschiedenen Zustände, die in einem Roboter auftreten, als Ereignisse behan­ delt werden, ist es möglich, die Verarbeitung entsprechend diesen Ereignissen in Echtzeit auszuführen.
Gemäß der Weiterbildung der Ansprüche 5 bzw. 10 sieht die Erfindung eine Ereignisressourcen­ tabelle vor, die die Zustände von Ereignisressourcen in einem gemeinsam genutzten Speicherbe­ reich speichert, der von mehreren Tasks abgefragt und aktualisiert werden kann. Der zutreffende Bereich in der vorgenannten Ereignisressourcentabelle entsprechend den Zuständen der Ereignis­ ressourcen, die durch die Ausgabe von Programmen, die in den verschiedenen Tasks verarbeitet werden, geändert werden, wird aktualisiert. Durch Abfragen der vorgenannten Ereignisressour­ centabelle ist es daher möglich, Ereignisse wahrzunehmen, die von Programmausgaben herrüh­ ren. Dies erlaubt eine wirkungsvolle Erfassung von Ereignissen.
Da ferner die tatsächlichen Hardwareressourcen aufgrund von Änderungen in den Ereignisres­ sourcen, die sich in der Ereignisressourcentabelle widerspiegeln, aktualisiert werden können, brauchen die in verschiedenen Tasks ausgeführten Programme die tatsächlichen Hardwareres­ sourcen nicht zu aktualisieren. Somit führt die Integration der Hardwareressourcen-Aktualisie­ rungsprozesse zu einer erhöhten Verarbeitungsgeschwindigkeit.
Normalerweise müssen Programme, die die Tatsache angemeldet haben, daß sie auf das Auftreten eines Ereignisses warten, in Echtzeit verarbeitet werden, wenn das Ereignis auftritt. Wenn das Programm jedoch ausgelagert wurde, nimmt das Neuladen des Programms mehrere zehn oder sogar hunderte Millisekunden in Anspruch. Das Verarbeitungsschema der vorliegenden Erfindung startet jedoch vorzugsweise die Programme, die auf ein Ereignis warten, auf periodi­ scher Basis unabhängig davon, ob tatsächlich ein Verarbeitungserfordernis besteht. Dies verhindert das Auslagern der Programme und kann damit die Ausführung einer Echtzeit-Verarbei­ tung gewährleisten.
Ausführungsbeispiele der Erfindung werden nachfolgend anhand der Zeichnungen im einzelnen erläutert, es zeigen:
Fig. 1 ein Funktionsblockdiagramm einer Ausführungsform des Robotercontrollers gemäß der vorliegenden Erfindung,
Fig. 2 die Hardwarekonfiguration des Robotercontrollers in der Ausführungsform von Fig. 1,
Fig. 3 ein Konzeptionsdiagramm eines Beispiels einer von dem Controller ausgeführten Multitasking-Verarbeitung,
Fig. 4 eine spezielle Abbildung des Ereignisregistrierungsprozesses,
Fig. 5(A) und (B) Flußdiagramme zur Erläuterung der Prozedur, nach der das System Ereignisse in Echtzeit steuert, und
Fig. 6 ein Funktionsblockdiagramm des Robotercontrollers gemäß einer anderen Ausfüh­ rungsform der Erfindung.
Der Robotercontroller der nachfolgend beschriebenen Ausführungsform der Erfindung steuert entweder Manipulatoraktionen oder die peripheren Einrichtungen. Diese Art von Manipulatorope­ ration oder Steuerung einer peripheren Einrichtung kann benutzerangepaßt werden, um benut­ zerspezifischen Steuerungen zu entsprechen. Daher schreibt der Benutzer Anwendungspro­ gramme für die von den mit dem Controller verbundenen Manipulatoren auszuführenden Operationen in Robotersteuersprachen, die von dem Controller ausgeführt werden können. Der Controller ist so konfiguriert, daß Benutzertasks, in denen benutzergeschriebene Manipulator­ steuerungs-Anwendungsprogramme sowie Tasks, die eine Systemverarbeitung zur Überwachung des internen Zustands des Controllers durchführen, auf Multitasking-Basis ausgeführt werden können.
Fig. 3 ist ein konzeptionelles Diagramm, das ein Beispiel der Multitasking-Verarbeitung zeigt, die der Controller 10 ausführt. Wie dargestellt, ist der Controller so konfiguriert, daß Programme die die Anwendungen zur Steuerung der Manipulatorsteuerungs-Verarbeitung 120-1, der Förder­ steuerungs-Verarbeitung 120-2, etc. enthalten, auf Multitasking-Basis als Tasks 110-1, 110-2, usw. ausgeführt werden. Genauer gesagt wird die CPU-Zeit in Zeitscheiben unterteilt und mehreren Tasks so zugeordnet, so daß mehrere Tasks scheinbar gleichzeitig ausgeführt werden können.
Bei dieser Art Robotercontroller muß die Steuerung der Manipulatoren und der peripheren Einrichtungen, die von verschiedenen Programmen ausgeführt werden, in Echtzeit ausgeführt werden. Wenn daher eine lange Zeit zwischen dem Auftreten eines Ereignisses und dem Zeitpunkt vergeht, zu dem der Task, der dieses Ereignis verarbeitet, startet, ist der Controller für praktische Anwendungen nicht sehr nützlich.
Der Robotercontroller 10 der vorliegenden Ausführungsform enthält die folgende Konfiguration, damit die Verarbeitung der vorerwähnten Ereignisse in Echtzeit ausgeführt werden kann.
Zunächst soll die erforderliche Hardwarekonfiguration des Systems beschrieben werden, die in Fig. 2 gezeigt ist.
Wie in der Figur gezeigt, sind in dem Controller 10 die Haupt-CPU 210, die Festplatte (HDD) 220, das RAM 230 und die Schnittstellenkarte 240 durch den CPU-Bus 280 miteinander verbunden. Über einen Erweiterungsbus 290 sind weiterhin eine Treiberbox 260, in der Manipu­ latoren 270 und I/O-Einheiten 262 montiert sind, sowie spezielle Schaltungskarten 250, die unter anderem einen externen Zeitgeber 252 enthalten, mit der Schnittstellenkarte 240 verbun­ den.
Das RAM 230 speichert ein Betriebssystem 232, welches den Controller steuert, ein Steuerpro­ gramm 234, das die mit den vorgenannten Ereignissen verbundene Verarbeitung ausführt, und verschiedene Programme und Daten einschließlich vom Benutzer erstellter Anwendungspro­ gramme für die Robotersteuerung.
Das Betriebssystem 232 umfaßt ein allgemeines PC-Betriebssystem, bei dem es sich um ein Allzweck-PC-Betriebssystem handelt, das Standardfunktionen wie preemptives Multitasking sowie die Ereignissynchronisationsfunktion ausweist. Hierbei handelt es sich allerdings nicht um ein sogenanntes Echtzeit-Betriebssystem. Daß es sich nicht um ein Echtzeit-Betriebssystem handelt, verweist auf die Tatsache, daß das Betriebssystem Taskwechsel mit niedriger Geschwindigkeit ausführt und keine Möglichkeit zur Einstellung kurzer Wechselzeiten bietet. Folglich ist das Betriebssystem nicht zur Durchführung einer Echtzeit-Verarbeitung in der Lage. Es sei angemerkt, daß die vorliegende Ausführungsform das als Windows 95® (Warenzeichen der Microsoft Corporation) bekannte Betriebssystem als allgemeines PC-Betriebssystem einsetzt.
Das Steuerprogramm 234 umfaßt verschiedene Programme und Speicherbereiche, die eine später beschriebene Ereignistreibereinheit 40, eine Hardwareressourcen-Aktualisierungseinheit 44, eine Ereignisregistriereinheit 60, eine Ereignisressourcenzustands-Speichereinheit 70, eine Ereignisressourcenzustands-Aktualisierungseinheit 80 und eine Auslagerungsverhinderungseinheit 90 implementieren (siehe Fig. 1).
Die später beschriebene, in Fig. 1 gezeigte Task-Wechseleinheit 30 umfaßt hauptsächlich die Task-Wechselfunktion des Betriebssystems 232. In ähnlicher Weise verwenden die Ereignistrei­ bereinheit 40 und die Ereignisregistriereinheit 60 Teile der Ereignissynchronisationsfunktion des Betriebssystems 232.
Unter dem Anwendungsprogramm 236 ist ein benutzer-geschriebenes Programm, das in einer Robotersteuersprache codiert ist, zu verstehen, das die von den Manipulatoren auszuführenden Operationen beschreibt. Der Begriff "Ereignis" bezieht sich auf die verschiedenen Ereignisse, die während der Operation eines Manipulators oder während der Steuerung einer peripheren Einrichtung auftreten. Insbesondere schließt der Begriff Ereignisse ein, die in Manipulatoren 270 oder der Treiberbox 260 auftreten und mit Änderungen der System-I/O-Einheiten 262 verbunden sind, Ereignisse die mit Änderungen in Hardwareressourcen wie etwa den Schaltungskarten 250 verbunden sind, sowie Ereignisse, die von den Ausgangsdaten erzeugt werden, die von Programmen 232, 234 und 236 für Zwecke der gegenseitigen Tasksynchronisation und Kommunikation erzeugt werden. Die System-I/O-Einheiten, die Hardwareressourcen und die Ausgangsdaten, die Ereignisse erzeugen, werden Ereignisressourcen genannt.
Im folgenden werden die Merkmale erläutert, die den Controller 10 in die Lage versetzen, eine ereignisgebundene Verarbeitung auf Echtzeit-Basis auszuführen.
Fig. 1 ist ein Funktionsblockdiagramm des Controllers 10. Der Controller 10 umfaßt: die schon erwähnte Task-Wechseleinheit 30, die Tasks auf preemtiver Basis wechselt, einen externen Interruptgenerator 50, der einen externen Zeitgeber zur Erzeugung von Interruptsignalen in vorgegebenen Wiederhol-Intervallen verwendet, eine Ereignistreibereinheit 40, die eine Ereignis­ treiberverarbeitung in Synchronisation mit den von dem externen Interruptgenerator 50 erzeug­ ten Interruptsignalen ausführt, eine Ereignisregistriereinheit 60, die die Tatsache registriert, daß das Anwendungsprogramm 136, das die mit dem Auftreten eines Ereignisses verbundene Verarbeitung ausführt, auf das Auftreten eines Ereignisses wartet, eine Ereignisressourcenzu­ stands-Speichereinheit 70, die Ereignisressourcenzustände speichert, um das Auftreten von Ereignissen zu verfolgen (sich zu merken), eine Ereignisressourcenzustands-Aktualisierungseinheit 80, die die Zustände von Ereignisressourcen aktualisiert, welche in der Ereignisressourcenzu­ stands-Speichereinheit 70 gespeichert sind, und eine Auslagerungsverhinderungseinheit 90, die das Auslagern des Anwendungsprogramms 236 verhindert, welches auf das Auftreten eines Ereignisses wartet. Der externe Interruptgenerator 50, die Ereignistreibereinheit 40, die Ereignis­ registriereinheit 60, die Ereignisressourcenzustands-Speichereinheit 70 und die Ereignisressour­ cenzustands-Aktualisierungseinheit 80 arbeiten als Echtzeit-Steuerungseinrichtung 20. Diese Komponenten steuern und weisen die Task-Wechseleinheit 30 an, Tasks zu wechseln, so daß die mit dem Auftreten eines Ereignisses verbundene Verarbeitung in Echtzeit ausgeführt werden kann.
Die Ereignistreibereinheit 40 enthält ferner eine Hardwareressourcen-Aktualisierungseinheit 44, damit festgelegte Hardwareressourcen, die später beschrieben werden, aktualisiert werden, und zwar aufgrund der durch die Ereignisressourcenzustands-Aktualisierungseinheit 80 aktualisierten Informationen.
Der externe Interruptgenerator 50 verwendet einen externen Zeitgeber 252, der auf den mit dem Erweiterungsbus 290 verbundenen Schaltungskarten 250 bzw. einer von ihnen montiert ist, um periodisch in festgelegten Wiederhol-Intervallen Interruptsignale zu erzeugen. Im vorliegenden Text bezieht sich der Begriff "festgelegtes Wiederhol-Intervall" auf das kurze Zeitintervall, das für den Start des ein Ereignis verarbeitenden Programms auf Echtzeit-Basis nötig ist. Bei der vorliegenden Ausführungsform ist dieses Intervall auf 1 ms gesetzt.
Wie zuvor angemerkt, ist das im RAM 230 des Controllers 10 gespeicherte Betriebssystem 232 kein sogenanntes Echtzeit-Betriebssystem. Daher kann es die Zeit nicht in Zeitscheiben einteilen, die Zeitintervalle darstellen, welche zur Erfassung von ereignisverarbeitenden Programmen innerhalb des Systems kurz genug sind. Daher verwendet die vorliegende Ausführungsform einen externen Zeitgeber 252 zur Erzeugung von Interruptsignalen in festgelegten Wiederhol-Interval­ len, um den gleichen Effekt zu erzielen wie die Erzeugung von 1 ms Zeitscheiben.
Wenn das Betriebssystem 232, das eine Verarbeitung in Reaktion auf das Auftreten eines Ereignisses ausführt, eine Ereigniserwartungsanforderung ausgibt, registriert die Ereignisregi­ striereinheit 60 die Tatsache, daß das Anwendungsprogramm 236 auf das Auftreten eines Ereignisses warten. Bei dem Anwendungsprogramm 236 handelt es sich um irgendeines der Programme, die auf Multitasking-Basis ausgeführt werden, um die Manipulatorsteuerungs- Verarbeitung 120-1, die Fördersteuerungs-Verarbeitung 120-2, etc. zu steuern, wie in Fig. 3 gezeigt. Das Programm ist im RAM 230 gespeichert, wie in Fig. 2 gezeigt. Das Auftreten eines Ereignisses bezieht sich auf eine Änderung einer Ereignisressource, wie zuvor angemerkt.
Um das Anwendungsprogramm 236, das auf Multitasking-Basis in Reaktion auf eine Änderung in einer Ereignisressource ausgeführt wird, zu starten, ist es nötig, eine Zuordnung zwischen Ereignisressourcen und den auf ihre Änderung wartenden Programmen herzustellen. In einem Zustand, wo es auf eine Änderung einer Ereignisressource warten muß, fordert daher jedes Anwendungsprogramm 236 die Ereignisregistriereinheit 60 auf, die Tatsache zu registrieren, daß das Programm auf das Auftreten eines Ereignisses wartet.
Bei Empfang dieser Anforderung, ordnet die Ereignisregistriereinheit 60 die Ereignisressource einem Ereignisobjekt zu und registriert die Tatsache, daß das Programm auf das Auftreten eines Ereignisses wartet. Der Begriff "Ereignis" umfaßt in diesem Zusammenhang jedes der verschie­ denen zuvor genannten Ereignisse. Ein "Ereignisobjekt" bezieht sich auf die Einheit, mittels derer das System die verschiedenen Ereignisse verfolgt. Anders ausgedrückt, das System verfolgt (merkt sich) die Ereignisobjekte, und jedes Ereignisobjekt hat ein Ereignis-Handle als seine eigene ID (Identifikation).
Die Funktion, mit der das System Ereignisse und Ereignisobjekte verfolgt, kann unter Verwen­ dung der Ereignissynchronisationsfunktion des Betriebssystems 232 implementiert werden.
Genauer gesagt, wird der Registrierprozeß wie folgt ausgeführt: die Ereignisregistriereinheit 60 erzeugt bei der Systeminitialisierung eine geeignete Anzahl von Ereignisobjekten.
Wenn von dem Anwendungsprogramm 236 eine Ereignisregistrieranforderung erzeugt wird, werden Ereignisressourcen irgendwelchen unbenutzten (nicht mit einer Ereignisressource verknüpfte) Ereignisobjekten zugewiesen. Wenn eine Ereignisregistrieranforderung von einem anderen Anwendungsprogramm 236 bezüglich einer bereits registrierten Ereignisressource erzeugt wird, wird das zuvor mit der Ereignisressource verknüpfte Ereignisobjekt verwendet, statt daß ein neues Ereignisobjekt zugewiesen wird. In diesem Zusammenhang bedeutet der Begriff "verwenden" daß, wenn ein Ereignis-Handle an ein Anwendungsprogramm zurückgege­ ben wird, wie später erläutert, dieses Handle für das Ereignisobjekt dem anderen Anwendungs­ programm zurückgegeben wird. Der Begriff "verwenden" umfaßt auch die Erzeugung eines neuen Ereignisobjekts, wenn dem System die zuvor erzeugten Ereignisobjekte ausgehen.
Wie später beschrieben, registriert die Ereignisregistriereinheit das Ereignisobjekt zur Verwen­ dung beim Dummy-Booten (ein Aufruf des Programms, ohne daß diese im Moment wirklich benötigt wird), um jegliches Auslagern (Swappen) des Anwendungsprogramms 236, das auf das Auftreten eines Ereignisses wartet, zu verhindern. Zu diesem Zweck verwendet die Ereignisregi­ striereinheit ein für jedes Anwendungsprogramm unabhängig erzeugtes Ereignisobjekt. Die Ereignisregistriereinheit weist dieses Ereignisobjekt jedem Anwendungsprogramm 236 zu, das eine Ereigniserwartungsanforderung erzeugt hat, und startet das Programm auf einer Dummy- Basis.
Nach Abschluß des Registrierungsprozesses gibt die Ereignisregistriereinheit 60 das Ereignis- Handle, bei dem es sich um die Identifikation (ID) für das Ereignisobjekt handelt, an das Anwen­ dungsprogramm 236 zurück, das eine Registrierung angefordert hat. Als Ergebnis empfängt das Anwendungsprogramm 236 sowohl das Ereignis-Handle für ein mit einer Ereignisressource verbundenes Ereignisobjekt als auch das Ereignis-Handle für ein Ereignisobjekt für einen Dummy- Start.
Anschließend fordert das Anwendungsprogramm 236 das Betriebssystem 232 auf, es zu starten, wenn in dem durch das Ereignis-Handle bezeichneten Ereignisobjekt eine Änderung auftritt. Dies stellt sicher, daß die Programme in einem Bereitschaftszustand sind, bis eine Änderung in der als Ereignisobjekt registrierten Ereignisressource auftritt oder bis ein Dummy-Startprozeß ausgeführt wird, um das Auslagern zu verhindern.
Die Korrespondenz zwischen einer Ereignisressource und einem Anwendungsprogramm wird erstellt, wenn ein Ereignis-Handle an das Anwendungsprogramm zurückgegeben wird. Dieser Korrespondenzerstellungsprozeß verläßt sich auf die Benutzung der Ereignissynchronisations­ funktion, bei der es sich um ein Standardmerkmal des Betriebssystems handelt. Genauer gesagt, setzt die Ereignissynchronisationsfunktion das Ereignisobjekt in einen signalisierten Zustand, so daß die Tasks für alle Programme, die das entsprechende Ereignis-Handle haben, gestartet werden können.
Fig. 4 zeigt ein spezielles Abbild des Ereignisregisterprozesses. Wie zuvor erwähnt, erzeugt die Ereignisregistriereinheit 60 während der Systeminitialisierung eine geeignete Anzahl von ereignis­ identifizierenden Ereignisobjekten (mit entsprechenden Ereignis-Handlen EH1, EH2, EH3, . . . ) für Anwendungsprogramme, um Ereignisse zu identifizieren, und Dummy-Start-Ereignisobjekte (mit entsprechenden Ereignis-Handlen DH1, DH2, . . . ) für jedes Anwendungsprogramm (1).
Wenn während der Ausführung eines mit einem Anwendungsprogramm AP2 verbundenen Tasks eine Situation auftritt, die es erfordert, daß das Programm auf eine Änderung in einer Ereignis­ ressource ER2 wartet, gibt das Anwendungsprogramm AP2 eine Registrieranforderung an die Ereignisregistriereinheit 60 (2). In diesem Prozeß übergibt das Programm die Ereignisressource ER2 als ein Argument an die Ereignisregistriereinheit 60. Da ein unbenutztes Ereignisobjekt, in diesem Fall ein Ereignisobjekt (mit dem Ereignis-Handle EH1) der Ereignisressource ER1 zugewie­ sen ist (3), weist die Ereignisregistriereinheit 60 ein anderes Ereignisobjekt (mit dem Ereignis- Handle EH2) der Ereignisressource ER2 zu (4), und gibt das Ereignis-Handle EH2 des Ereignisob­ jekts und das Ereignis-Handle DH2 des Ereignisobjekts für die Dummy-Verarbeitung an das Anwendungsprogramm AP2 zurück (5). Das Anwendungsprogramm AP2 fordert das Betriebssy­ stem 232 auf, solange zu warten, bis das Ereignis-Handle EH2 und das durch DH2 gekennzeich­ nete Ereignisobjekt, die beide von der Ereignisregistriereinheit 60 zurückgegeben wurden, den signalisierten Zustand annehmen (6).
Beim Dummy-Start für den Auslagerungsverhinderungsprozeß wird jedoch nur die Dummy- Verarbeitung ausgeführt, damit das Programm nicht ausgelagert wird. Daher ist die Registrierung und Ausführung des Dummy-Startprozesses für die Verwendung transparent, wenn der Benutzer ein Anwendungsprogramm erstellt.
Es können auch mehrere Ereignisressourcen pro Anwendungsprogramm gleichzeitig registriert werden. Wenn ein Anwendungsprogramm beispielsweise auf Änderungen in mehreren Ereignis­ ressourcen (ER1, ER3, ER4) wartet, können Registrieranforderungen an die Ereignisregistrierein­ heit 60 unter Verwendung dieser Ereignisressourcen als Argumente ausgegeben werden.
Da ein Ereignisobjekt EH1 bereits mit der Ereignisressource ER1 verbunden ist, werden dieser Ereignisressource keine neuen Ereignisobjekte zugewiesen. Ein unbenutztes Ereignisobjekt (mit dem Ereignis-Handle EH3) wird der Ereignisressource ER3 zugewiesen. Wenn keine Ereignisob­ jekte vorhanden sind, die der Ereignisressource ER4 zugewiesen werden können, wird ein neues Ereignisobjekt (mit dem Ereignis-Handle EH4) erzeugt und zugeordnet.
Die Ereignis-Handle EH1, EH3 und EH4 für die zugewiesenen Ereignisobjekte sowie das Ereignis- Handle DH für eine Dummy-Ereignisobjekt werden an das Anwendungsprogramm zurückgege­ ben.
Die Ereignisressourcenzustands-Speichereinheit 70 ist in einem Speicherbereich für gemeinsamen Zugriff vorgesehen, der von den Tasks abgefragt und aktualisiert werden kann. Die Ereignisres­ sourcenzustands-Speichereinheit hält eine Ereignisressourcentabelle, in der die Zustände der Ereignisressourcen gespeichert sind.
Die Ereignisressourcentabelle ist, wie zuvor erwähnt, so konfiguriert, daß sie die Hardwareres­ sourcenzustände für die System-I/O-Einheiten 262 und die Schaltungskarten 250 hält, die in den Manipulatoren 270 und der Treiberbox 260 aufgetreten sind, sowie die Ausgangsdatengruppe, die es den Programmen 232, 234 und 236 ermöglicht, eine Synchronisation und Kommunikation unter den Tasks auszuführen.
Die Zustände von Ereignisressourcen, die in der Ereignisressourcentabelle gespeichert sind, werden von der Ereignistreibereinheit 40 in regelmäßigen Zeitintervallen und von der Ereignisres­ sourcenzustands-Aktualisierungseinheit 80 nach Bedarf aktualisiert, wie später beschrieben.
Wenn, hauptsächlich von dem Anwendungsprogramm 236, angefordert, aktualisiert die Ereignisressourcenzustands-Aktualisierungseinheit 80 die Zustände der Ausgangsports und jene der Ausgangsdatengruppe, die zur Synchronisation und Kommunikation unter den Tasks verwendet wird.
Die vorgenannte Anforderung wird in der Weise ausgegeben, daß ein Anwendungsprogramm 236 während seiner Ausführung eine Funktion aufruft, die die Ereignisressourcenzustands- Aktualisierungseinheit 80 startet. Zu diesem Zweck übergibt das Anwendungsprogramm die Ausgangsdatengruppe als Argument.
Normalerweise übergeben die Anwendungsprogramme 236 einander und empfangen voneinan­ der die Ausgangsdatengruppe. Bei der vorliegenden Ausführungsform wird jedoch, wenn eine Ausgangsdatengruppe auftritt, die zwischen Anwendungsprogrammen ausgetauscht werden muß, eine Anforderung für einen Ausgangsdatengruppen-Austausch an die Ereignisressourcenzu­ stands-Aktualisierungseinheit 80 mittels der vorerwähnten Funktion ausgegeben. Bei Empfang der Anforderung aktualisiert die Ereignisressourcenzustands-Aktualisierungseinheit 80 den Zustand der betroffenen Ereignisressource in der Ereignisressourcenzustands-Speichereinheit 70.
Daher aktualisieren Anwendungsprogramme 236 nicht die Ausgangsports 242, die beim tatsächlichen Auftreten einer Ausgangsdatengruppe aktualisiert werden würden. Diese Ausgangsports sind so konfiguriert, daß sie auf einer Gemeinschaftsbasis von der Hardwareres­ sourcen-Aktualisierungseinheit 44 aktualisiert werden, wie später beschrieben.
Die Ereignistreibereinheit 40 führt eine Ereignistreiberverarbeitung synchron mit den Interrupt­ signalen aus, die von dem externen Interruptgenerator 50 erzeugt werden. Unter "Ereignistreiberverarbeitung" ist der Prozeß der regelmäßigen Erfassung von Ereignissen in den Wiederhol-Intervallen, die zur Ausführung einer Echtzeit-Verarbeitung nötig sind, und die Benachrichtigung der Task-Wechseleinheit 30 darüber zu verstehen, daß die Steuerung zu dem Task umgeschaltet werden muß, in welchem die dem Ereignis entsprechende Verarbeitung ausgeführt wird.
Die Ereignistreiberverarbeitung durch die Ereignistreibereinheit 40 tritt auf, wenn die CPU 210 sowohl das im RAM 230 gespeicherte Steuerprogramm 234 als auch die Ereignissynchronisa­ tionsfunktion des Betriebssystems 232 ausführt. Das Steuerprogramm 234, das die Funktion der Ereignistreibereinheit 40 implementiert, ist im System resident. Der Task, der die Verarbeitung ausführt, wird synchron mit den Interruptsignalen getrieben, die von dem externen Interruptge­ nerator 50 erzeugt werden. Wie später erläutert, ist die Ereignistreibereinheit in einer solchen Weise konfiguriert, daß, wenn ein einem gegebenen Ereignis entsprechendes Programm gestartet wird, die Ereignissynchronisationsfunktion des Betriebssystems 232 benutzt wird. Zur Erfassung von Ereignissen überwacht die Ereignistreibereinheit 40 die Ereignisressourcen wie folgt obwohl die Ereignistreibereinheit verschiedene Überwachungsmethoden zur Erfassung von Ereignisres­ sourcenänderungen für verschiedene Einrichtungen verwendet, definiert man für den Eingangs­ port 242 im voraus die Portadresse und die Adressengröße, die zu überwachen sind. Sobald dies erfolgt ist, fragt die Ereignistreibereinheit synchron mit dem Interrupt alle definierten Eingangs­ ports ab und speichert den momentanen Zustand des Eingangsports 242 im zugehörigen Bereich der Ereignisressourcentabelle, die in der Ereignisressourcenzustands-Speichereinheit 70 gespei­ chert ist. Zur Erfassung eines Ereignisses vergleicht die Ereignistreibereinheit den Zustand des abgefragten Eingangsports 242 mit dem vorigen, in der Ereignisressourcentabelle gespeicherten Zustand.
Was die anderen Einrichtungen, etwa die Manipulatoren 270, die in der Treiberbox 260 montier­ ten System-I/O-Einheiten und die speziellen Schaltungskarten 250 angeht, die mit dem Erweite­ rungsbus 290 verbunden sind, so überwacht die Ereignistreibereinheit diese durch Aufruf der gesondert vorgesehenen Einrichtungstreiber. Sie speichert die momentanen Zustände der Robotersystemeinheit 270, der System-I/O-Einheiten und der speziellen Schaltungskarten 250 in dem betroffenen Bereich in der Ereignisressourcentabelle, die in der Ereignisressourcenzustands- Speichereinheit 70 gespeichert ist. Zur Erfassung eines Ereignisses vergleicht die Ereignistrei­ bereinheit die Ergebnisse der durch Aufruf der Einrichtungstreiber durchgeführten Überwachung mit dem in der Ereignisressourcentabelle gespeicherten vorherigen Zustand. Was die Ausgangs­ datengruppe für verschiedene Anwendungsprogramme 236 angeht, so wird normalerweise das Auftreten eines Anwendungsprogramms in dem Ausgangsport 244 reflektiert.
Wenn dann unter den Ereignisressourcenänderungen, die festgestellt wurden, eine in der Ereignisregistriereinheit 60 registrierte Ereignisressource ist, weist die Ereignistreibereinheit 40 die Task-Wechseleinheit 30 an, den mit dem Anwendungsprogramm 236 verbundenen Task zu starten, indem das Ereignisobjekt in den signalisierten Zustand versetzt wird.
Wenn zwei oder mehr Anwendungsprogramme auf eine Änderung in derselben Ereignisressource warten, oder wenn gleichzeitig Änderungen bei mehreren Ereignisressourcen auftreten, nehmen das eine oder die mehreren entsprechenden Ereignisobjekte den signalisierten Zustand an. Danach schaltet eine Funktion im Betriebssystem die Verarbeitung der Anwendungsprogramme in einem Umlaufverfahren um.
Da, wie oben erwähnt, das Anwendungsprogramm 236 den Ausgangsport 244 nicht tatsächlich aktualisiert, wenn die Ereignisressourcentabelle aktualisiert wird, muß die Ereignisressourcenta­ belle aktualisiert werden. Wenn daher in einem Anwendungsprogramm eine Ausgangsdaten­ gruppe erzeugt wird, aktualisiert die Hardwareressourcen-Aktualisierungseinheit 44 den tatsäch­ lichen, entsprechenden Ausgangsport 244.
Das System ist so konfiguriert, daß die Größe der Ausgangsdatengruppe und die Ausgangs­ adresse des tatsächlichen Ausgangsports 244 für die Anwendungsprogramme 236, die für den Aktualisierungsprozeß nötig sind, im voraus registriert werden können.
Die Task-Wechseleinheit 30 schaltet in vorgeschriebenen Zeitintervallen zu irgendeinem Task um, um die Verarbeitung auf einer Multitasking-Basis auszuführen. Die Task-Wechseleinheit schaltet auch zu einem Task um, wenn entweder die Ereignistreibereinheit 40 oder die Auslage­ rungsverhinderungseinheit 90 den Start des Tasks für das entsprechende Anwendungsprogramm 236 dadurch anzeigt, daß ein Ereignisobjekt in den signalisierten Zustand versetzt wird.
Der Controller 10 führt den Taskwechsel unter Verwendung der Standard-Zeitscheibenfunktion aus, die in dem Betriebssystem 232 verfügbar ist, um die Verarbeitung auf einer Multitasking- Basis auszuführen.
Das Umschalten zu dem letzteren Task wird dadurch implementiert, daß der Task für das Anwendungsprogramm 236 gestartet wird, das das Ereignis-Handle besitzt, welches dem Ereignisobjekt entspricht, das in einen signalisierten Zustand versetzt wurde. Dies wird bewirkt, wenn die CPU 210 die Ereignissynchronisationsfunktion des Betriebssystems 232 ausführt, das in dem RAM 230 gespeichert ist.
Wie oben erwähnt werden, wenn mehrere Anwendungsprogramme auf eine Änderung in derselben Ereignisressource warten, oder wenn Änderungen in mehreren Ereignisressourcen gleichzeitig auftreten, das entsprechende oder die mehreren entsprechenden Ereignisobjekte in den signalisierten Zustand versetzt. Dies ermöglicht es der Task-Wechseleinheit 30, die Anwen­ dungsprogramme, die die entsprechenden Ereignis-Handle besitzen, auf einer Umlaufbasis (round-robin) zu starten.
Wenn ein Ereignis registriert ist, werden das Ereignisobjekt und das Anwendungsprogramm durch die Standard-Ereignissynchronisationsfunktion miteinander verknüpft, die das Betriebssy­ stem bietet. Daher kann man dadurch, daß ein Ereignisobjekt in den signalisierten Zustand versetzt wird, den Task für das Anwendungsprogramm 236 starten, welches das entsprechende Ereignis-Handle besitzt.
Die Fig. 5A und B sind Flußdiagramme, die die Prozedur zeigen, nach der das System Ereignisse auf einer Echtzeit-Basis treibt. Fig. 5A zeigt die Prozedur dafür, daß die Ereignistreiberverarbei­ tung periodisch in festgelegten Zeitintervallen durch die Ereignistreibereinheit 40 auftritt. Fig. 5B zeigt die Prozedur, nach der die ereignisgesteuerten Anwendungsprogramme 236 arbeiten.
Wie in Fig. 5B gezeigt, spezifiziert, wenn ein Task für ein Anwendungsprogramm 236 gestartet wird und ein Ereigniserwartungszustand während der Ausführung der Verarbeitungsstufe 1 erzeugt (Schritt 110), das Anwendungsprogramm 236 die Ereignisressource gegenüber der Ereignisregistriereinheit, um die Registrierung des Ereigniserwartungszustands anzufordern (Schritt 120) und als Ergebnis tritt das Anwendungsprogramm in den Ereigniserwartungszustand ein (Schritt 130). Demgemäß wird die Ereignisressource, deren Änderung von dem Anwen­ dungsprogramm 236 erwartet wird, in Korrespondenz mit einem Ereignisobjekt registriert. Das Anwendungsprogramm 236 empfängt das Ereignis-Handle entsprechend dem Ereignisobjekt und wartet, bis das Ereignisobjekt den signalisierten Zustand annimmt.
Andererseits überwacht, wie in Fig. 5A gezeigt, die Ereignistreibereinheit 40 die verschiedenen Hardwareressourcen, wie oben beschrieben wurde (Schritt 10). Wenn es eine Änderung in der Ausgangsdatengruppe infolge des Anwendungsprogramms (AP) gibt, bei der es sich um eine als ein Ereignisobjekt in der oben erwähnten Ereignisressourcentabelle registrierte Ereignisressource handelt (Schritt 20), aktualisiert die Hardwareressourcen-Aktualisierungseinheit 44 der Ereignis­ treibereinheit 40 tatsächlich den Ausgangsport 244, bei dem es sich um die entsprechende Hardwareressource handelt (Schritt 30).
Wenn es eine Änderung in einer registrierten Ereignisressource gibt (Schritt 40), wird das der Ereignisressource entsprechende Ereignisobjekt, das durch die Ereignisregistriereinheit 60 registriert wurde, in den signalisierten Zustand versetzt (Schritt 50). Wenn das Ereignisobjekt den signalisierten Zustand angenommen hat, startet das Betriebssystem 232, was mit der Task- Wechseleinheit 30 äquivalent ist, den Task, in welchem das Anwendungsprogramm, das das entsprechende Ereignis-Handle besitzt, ausgeführt wird (Schritt 60).
Wenn dies auftritt, beginnt das Anwendungsprogramm 236, das auf das Auftreten eines durch das Ereignis-Handle gekennzeichneten Ereignisses gewartet hat, die Ausführung der Verarbei­ tungsstufe 2 (Schritt 140). Dies ist in Fig. 5B gezeigt.
Wenn ein Anwendungsprogramm, dessen Verarbeitung in Echtzeit ausgeführt werden muß, wartet, startet die Auslagerungsverhinderungseinheit 90 das Anwendungsprogramm auf periodischer Basis, damit dieses Anwendungsprogramm nicht ausgelagert wird.
Anwendungsprogramme, die eine Echtzeit-Verarbeitung erfordern, sind solche die auf das Eintreten eines Ereignisses warten. Wenn diese Anwendungsprogramme ausgelagert werden und sie angesteuert werden, nachdem ein Ereignis aufgetreten ist, nimmt das Neuladen des erforder­ lichen Programms mehrere zehn oder sogar mehrere hundert Millisekunden in Anspruch, was die Fähigkeit des Systems reduziert, auf Ereignisse in Echtzeit zu antworten.
Daher weist die Auslagerungsverhinderungseinheit 90 die Task-Wechseleinheit 30 an, das Anwendungsprogramm zu starten, das mit einem Dummy-Aktivierungs-Ereignisobjekt in der Ereignisregistriereinheit 60 verknüpft ist, und zwar in festgelegten Zeitintervallen. Zu diesem Zweck werden festgelegte Zeitintervalle unter Benutzung des Systemzeitgebers erzeugt. Die Auslagerungsverhinderungseinheit liefert an die Task-Wechseleinheit 30 die nachfolgend beschriebenen Befehle.
Wenn ein Anwendungsprogramm die Ereignisregistriereinheit 60 auffordert, die Tatsache zu registrieren, daß es auf die Änderung in einer Ereignisressource wartet, wird das Ereignis-Handle für das Dummy-Verarbeitungs-Ereignisobjekt an das Anwendungsprogramm zurückgegeben, wie oben beschrieben. Die Auslagerungsverhinderungseinheit 90 versetzt das Dummy-Verarbeitungs- Ereignisobjekt periodisch in den signalisierten Zustand, um die Task-Wechseleinheit 30 anzuwei­ sen, den Task für das Anwendungsprogramm, das das entsprechende Ereignis-Handle besitzt, zu starten.
Das Anwendungsprogramm kann anhand der Art des Ereignisobjekts feststellen, ob ein bestimm­ ter Task durch die Auslagerungsverhinderungseinheit 90 oder durch die Ereignistreibereinheit 40 ausgelöst wurde. Wenn der Task von der Auslagerungsverhinderungseinheit 90 ausgelöst wurde, führt das Anwendungsprogramm eine Dummy-Verarbeitung durch und wartet erneut auf das Auftreten eines Ereignisses. Diese Art Verarbeitung, die von dem Anwendungsprogramm auszuführen ist, rollte von dem Steuerprogramm als eine Funktion vorgesehen werden, die von dem Anwendungsprogramm aufgerufen wird, wenn das Anwendungsprogramm die Tatsache registriert, daß es auf das Auftreten eines Ereignisses wartet. Auf diese Weise braucht ein Benutzer bei der Erstellung eines Anwendungsprogramms nur die Funktion zu benutzen, ohne sich selbst mit der Problematik des involvierten Mechanismus zu befassen.
Diese Merkmale implementieren die folgenden Charakteristiken, die besser sind als das was in herkömmlichen Produkten zur Verfügung steht:
Die Zeitdauer, die vom Auftreten eines Ereignisses bis zum Start des entsprechenden Programms erforderlich ist, ist kurz, und ihre Schwankung ist gering. Dies führt zu einem hohen Grad an Genauigkeitswiederholbarkeit bei wiederholten Roboteroperationen oder bei den Operationen anderer Steuerungsanlagen, die von einem Benutzer codiert werden. Man nehme an, daß ein Sensor die Position eines Objekts auf einem Förderer feststellt und ein Roboter seine Operation auf der Basis des Sensorsignals beginnt. Wenn eine deutliche Schwankung von dem Zeitpunkt einer Sensoreingabe bis zum Beginn der Roboteroperation vorhanden ist, erfordert es nicht nur eine Menge Arbeit, das gesamte System zu justieren, vielmehr kann in einigen Fällen der Roboter auch versagen, das auf dem Förderer montierte Objekt richtig zu handhaben.
In einem Echtzeitsystem mit einer begrenzten Verarbeitungskapazität kann eine Zunahme der Anzahl von Tasks, die gleichzeitig ausgeführt werden, zu einer raschen Zunahme der Zeitdauer vom Auftreten eines Ereignisses bis zu dem Zeitpunkt führen, zu dem die entsprechende - Verarbeitung ausgeführt wird, was zu einem deutlichen Abfall des Reaktionsvermögens des Systems führt. Im Gegensatz dazu kann ein auf der vorliegenden Erfindung beruhendes System wegen seines überragenden Echtzeit-Verarbeitungsvermögens eine große Anzahl gleichzeitig ausgeführter Tasks unterstützen. Bei der vorliegenden Ausführungsform können 32 Tasks gleichzeitig in der Robotersprache ausgeführt werden, in der Benutzer Programme schreiben.
Was Ereignisse anbetrifft, die in dem System registriert werden können, so können nicht nur einfache gewöhnliche Ereignisse, wie das Ein- und Ausschalten eines I/O-Signals, sondern auch komplexe Bedingungen als Ereignis registriert werden, etwa daß ein Roboter eine bestimmte Orientierung annimmt, und zwar durch Verwendung einer Ereignisressourcentabelle, einer einen bestimmten Wert annehmenden Variablen im Programm, oder einer Kombination dieser Bedin­ gungen in Form logischer Ausdrücke.
Durch Implementieren eines Robotercontrollers durch Kombinieren eines PCs mit Windows 95®, wie bei der vorliegenden Ausführungsform, ist es möglich, das große Angebot an preiswerten Erweiterungskarten (Netzwerkverbindungskarten, Instrumentenverbindungskarten und allgemei­ nen I/O-Karten) zu nutzen, die im Handel zur Verfügung stehen.
Ferner können Anwendungsprogramme unter Verwendung von im Handel zur Verfügung stehenden Programmiersprachen (Visual C++, Visual Basic, usw.) entwickelt werden, zusätzlich zu speziellen Robotersprachen. Das Softwarebetriebsverfahren, das die vorliegende Erfindung implementiert, basiert auf Windows 95® Betriebsverfahren, so daß alle Benutzer, die mit anderen Anwendungen (Textverarbeitung, Tabellenkalkulation, etc.), die unter Windows 95® laufen, vertraut sind, leicht lernen können, wie die Roboterbetriebsprozeduren gemäß der vorliegenden Erfindung arbeiten.
Obwohl in Verbindung mit der vorliegenden Ausführungsform die Verwendung von Windows 95® als ein Beispiel eines allgemeinen PC-Betriebssystems erläutert wurde, können auch andere typische PC-Betriebssysteme verwendet werden.
Die vorliegende Erfindung ist keinesfalls auf die bezüglich der obigen Ausführungsformen gegebene Erläuterung beschränkt. Vielmehr sind modifizierte Ausführungsformen möglich.
Im folgenden wird eine Ausführungsform eines Robotercontrollers 10 beschrieben, der ein allgemeines PC-Betriebssystem einsetzt, das in der Lage ist, eine Echtzeit-Verarbeitung auszufüh­ ren.
Ein Betriebssystem wird hier dann als zur Durchführung einer Echtzeit-Verarbeitung angesehen, wenn der Taskwechsel durch das Betriebssystem schnell ausgeführt werden kann. Diese Art von Betriebssystem kann mittels eines Systemzeitgebers ausreichend kleine Zeitintervalle erzeugen, und eine Zeitscheibenbildung kann in ausreichend kurzen Zeitintervallen ausgeführt, um eine Echtzeit-Steuerung zuzulassen.
Im ersteren Fall kann die Erzeugung von Interrupts durch einen externen Zeitgeber in dem externen Interruptgenerator 50 der vorgenannten Ausführungsform durch einen Systemzeitgeber ersetzt werden, und all die anderen Merkmale können in gleicher Weise wie bei der vorerwähn­ ten Ausführungsform implementiert werden.
Im letzteren Fall kann die Erzeugung von Interrupts durch einen externen Zeitgeber in dem externen Interruptgenerator 50 der vorgenannten Ausführungsform ersetzt werden durch die Verwendung einer Zeitscheibenbildung, und alle anderen Merkmale können in gleicher Weise wie bei der vorgenannten Ausführungsform implementiert werden.
In beiden Fällen können Zeitintervalle, die kurz genug sind, um eine Echtzeit-Steuerung in der internen Arbeit des Systems zu erlauben, eingestellt werden. Folglich bedarf es nicht des externen Zeitgebers, der in der Hardwarekonfiguration von Fig. 2 gezeigt ist.
Der letztere Fall sei nachfolgend als Beispiel erläutert.
Fig. 6 ist ein Funktionsblockdiagramm eines Robotercontrollers 10, der ein Betriebssystem mit Echtzeit-Verarbeitungsvermögen einsetzt. Diese Figur unterscheidet sich von Fig. 1 darin, daß die Task-Wechseleinheit 30 eine Zeitscheibeneinheit 32 anstelle des externen Interruptgenerators 50 enthält. Allen anderen Komponenten sind dieselben Namen und dieselben Bezugszahlen wie in Fig. 1 zugeordnet. Eine Erläuterung der Funktionen, die ähnlich jenen in Fig. 1 sind, unter­ bleibt.
Die Zeitscheibeneinheit 32 unterteilt die Zeit in Zeitintervalle, die kurz genug sind, um Echtzeit­ steuerungen zu erlauben, beispielsweise je eine Millisekunde. Sie weist CPU-Zeit Tasks in einer Umlaufweise (round-robin) zu, um die Tasks zu starten. Für jede Zeitscheibe treibt die Zeitschei­ beneinheit die Ereignistreibereinheit 40 vor Ausführung eines gegebenen Tasks.
Das Steuerprogramm 234, das die Funktionen der Ereignistreibereinheit 40 implementiert, wird als ein Task ausgeführt, der einseitig auf einer Zeitscheibe pro Zeitscheiben-Basis ausgeführt wird. Da die Ereignistreiberverarbeitung in der Ereignistreibereinheit 40 innerhalb einer Millise­ kunde endet, wird, wenn keine Ereignisse aufgetreten sind, die normale auf Zeitscheiben-Basis beruhende Task-Aktivierung für die Restzeit in der Zeitscheibe bewirkt.
In jeglicher anderer Hinsicht kann dieses Schema die Funktionen eines Robotercontrollers in genau der gleichen Weise implementieren, wie die erste Ausführungsform.
Obwohl diese Ausführungsform die Verwendung einer Standard-Ereignissynchronisationsfunktion illustriert, die von dem System vorgesehen wird, kann jegliche Ereignissynchronisationsfunktion verwendet werden, solange sie die gleichen Wirkungen ergibt. Anders ausgedrückt, Funktionen, die von dem System oder von System aufrufen ausgeführt werden können, können eingesetzt werden. Alternativ können auch Steuerprogramme entwickelt werden, die dieselben Wirkungen wie die Ereignissynchronisationsfunktion bieten.
Obwohl die vorliegende Ausführungsform den Fall darstellt, bei dem das Betriebssystem 232 und das Steuerprogramm 234 für den Controller 10 im RAM 230 gespeichert sind, können sie auch in einem abnehmbaren externen Speichermedium gespeichert sein. Ebenso können sie von einem externen Speichermedium auf ein internes Speichermedium geladen werden, oder, mittels Kommunikationsverbindungen, von einer externen Einrichtung auf ein internes Speichermedium.
Weiterhin ist die vorliegende Erfindung keineswegs auf spezielle Robotertypen oder -Konfigura­ tionen beschränkt, sondern ist auf eine weite Vielfalt von Robotercontrollern anwendbar.
Obwohl die vorliegende Ausführungsform ein Robotercontrollersystem beschreibt, kann ein Roboterfolger (robot sequencer), der von derselben Konfiguration Gebrauch macht, ebenfalls konstruiert werden. Daher liegt auch die Anwendung der vorliegenden Erfindung auf einen Roboterfolger im Rahmen der vorliegenden Erfindung.

Claims (11)

1. Robotercontroller umfassend eine Task-Wechseleinrichtung (30), die mit einer preemptiven Multitasking-Funktion versehen ist, und eine Echtzeit-Steuereinrichtung (20), die Steuerungen dadurch ausführt, daß sie die Task-Wechseleinrichtung (30) anweist, Tasks zu wechseln, so daß die Verarbeitung als Reaktion auf das Auftreten eines Ereignisses in Echtzeit ausgeführt wird, wobei die Echtzeit-Steuereinrichtung Ereignisse auf regelmäßiger Basis in Wiederhol-Interval­ len, die zur Ausführung einer Echtzeit-Verarbeitung erforderlich sind, erfaßt und eine Ereignistrei­ bereinrichtung (40) enthält, die eine Ereignistreiberverarbeitung ausführt, welche der Task- Wechseleinrichtung einen Wechsel zu dem Task anzeigt, in welchem die mit dem Ereignis verknüpfte Verarbeitung ausgeführt wird.
2. Robotercontroller nach Anspruch 1, bei dem die Echtzeit-Steuereinrichtung (20) weiterhin eine externe Interrupt-Generatoreinrichtung (50) umfaßt, die unter Verwendung eines externen Zeitgebers (252) Interruptsignale in den Wiederhol-Intervallen erzeugt, wobei die Ereignistreibereinrichtung (40) die Ereignistreiberverarbeitung synchron mit diesen Interruptsigna­ len ausführt.
3. Robotercontroller nach Anspruch 1 oder 2, bei dem die Echtzeit-Steuereinrichtung (20) weiterhin eine Ereignisregistriereinrichtung (60) umfaßt, die registriert, daß das Programm, das die mit dem Auftreten des Ereignisses verbun­ dene Verarbeitung ausführt, auf das Auftreten des Ereignisses wartet, und die Ereignistreibereinrichtung (40), wenn sie das Auftreten des von der Ereignisregi­ striereinrichtung (60) registrierten Ereignisses feststellt, die Task-Wechseleinrichtung (30) anweist, zu dem Task zu wechseln, der von dem Programm auszuführen ist, das auf das Auftreten des von der Ereignisregistriereinrichtung (60) registrierten Ereignisses gewartet hat.
4. Robotercontroller nach einem der Ansprüche 1 bis 3, bei dem die Echtzeit-Steuereinrichtung (20) wenigstens eines von folgendem als ein Ereignis behandelt: eine Änderung in den Hardwareressourcen, die der Roboter besitzt, oder in der Ausgangsdatengruppe, die es dem Programm, das Manipulatoraktionen oder periphere Einrich­ tungen steuert, ermöglicht, Synchronisation und Kommunikation auszuführen.
5. Robotercontroller nach Anspruch 4, bei dem die Echtzeit-Steuereinrichtung (20) umfaßt:
eine Ereignisressourcenzustands-Speichereinrichtung (70), die in einem gemeinsam genutzten Speicherbereich, der von mehreren Tasks abgefragt und aktualisiert werden kann, Speicherereignisressourcenzustände speichert, um wenigstens eines von folgendem zu verfolgen: eine Änderung in den Hardwareressourcen oder den Ausgangsdaten, die das Programm, das Manipulatoraktionen oder periphere Einrichtungen steuert, in die Lage versetzt, Synchronisation und Kommunikation auszuführen, und
eine Ereignisressourcenzustands-Aktualisierungseinrichtung (80), die den Ereignisres­ sourcenzustand, der in der Ereignisressourcenzustands-Speichereinrichtung (70) gespeichert ist, auf der Basis wenigstens eines von folgendem aktualisiert: den Manipulatoroperationen und der Ausgangsdatengruppe, die es dem Programm, das periphere Einrichtungen steuert, ermöglicht, Synchronisation und Kommunikation auszuführen,
und bei dem die Ereignistreibereinrichtung (40) eine Hardwareressourcen-Aktualisie­ rungseinrichtung (44) umfaßt die Hardwareressourcen auf der Basis eines Ereignisressourcenzu­ stands aktualisiert, der von der Ereignisressourcenzustands-Aktualisierungseinrichtung (80) aktualisiert wurde.
6. Robotercontroller nach Anspruch 3 oder einem der Ansprüche 4 und 5 in ihrer Abhängigkeit von Anspruch 3, bei dem der Robotercontroller eine Auslagerungsverhinderungs­ einrichtung (90) aufweist, die das Auslagern des Programms dadurch verhindert, daß die Task- Wechseleinrichtung (30) regelmäßig in bestimmten Zeitintervallen angewiesen wird, das Programm zu starten, das die Tatsache registriert hat, daß es auf das Auftreten eines Ereignisses wartet.
7. Echtzeit-Steuerverfahren für eine mit dem Auftreten eines Ereignisses in einem Robo­ tercontroller verbundene Verarbeitung, das ein allgemeines Betriebssystem einsetzt, welches eine preemptive Multitasking-Funktion aufweist, umfassend
einen Interrupterzeugungsschritt zur Erzeugung eines externen Interruptsignals unter Verwendung eines externen Zeitgebers auf regelmäßiger Basis in Wiederhol-Intervallen, die zur Ausführung einer Echtzeit-Verarbeitung nötig sind, und
einen Ereignistreiberschritt, bei dem Ereignisse synchron mit den externen Interrupt­ signalen erfaßt werden und eine Ereignistreiberverarbeitung ausgeführt wird, bei der das allgemeine Betriebssystem angewiesen wird, auf den Task umzuschalten, in welchem die mit dem Ereignis verknüpfte Verarbeitung ausgeführt wird.
8. Verfahren nach Anspruch 7, bei dem das Programm, das die mit dem Auftreten des Ereignisses verknüpfte Verarbeitung ausführt, einen Ereignisregistrierschritt umfaßt, bei dem die Tatsache registriert wird, daß das Programm auf das Auftreten des Ereignisses wartet, wobei der Ereignistreiberschritt, wenn das Auftreten eines in dem Ereignisregistrierschritt registrierten Ereignisses festgestellt wird, das allgemeine Betriebssystem anweist, zu dem Task zu wechseln, in welchem das Programm ausgeführt wird, das auf das Auftreten des Ereignisses wartet, das in dem Ereignisregistrierschritt registriert wurde.
9. Verfahren nach Anspruch 7 oder 8, bei dem wenigstens eines von folgendem als ein Ereignis behandelt wird: eine Änderung der Hardwareressourcen, die der Roboter besitzt, oder der Ausgangsdaten, die es dem Programm, das Manipulatoraktionen oder periphere Einrichtun­ gen steuert, ermöglicht, Synchronisation und Kommunikation auszuführen.
10. Verfahren nach Anspruch 9, ferner umfassend
einen Ereignisressourcenzustands-Speicherschritt, der in einem gemeinsam genutzten Speicherbereich, der von mehreren Tasks abgerufen und aktualisiert werden kann, Speicher­ ereignisressourcenzustände speichert, um wenigstens eines von folgendem zu verfolgen: eine Änderung in den Hardwareressourcen oder den Ausgangsdaten, die es dem Programm, das Manipulatoraktionen oder periphere Einrichtungen steuert, ermöglicht, Synchronisation und Kommunikation auszuführen, und
einen Ereignisressourcenzustands-Aktualisierungsschritt, bei dem eine Aktualisierung auf der Basis wenigstens eines von folgendem ausgeführt wird: den Manipulatoroperationen und der Ausgangsdatengruppe, die es dem Programm, das periphere Einrichtungen steuert, ermög­ licht, Synchronisation und Kommunikation auszuführen,
wobei der Ereignistreiberschritt einen Hardwareressourcen-Aktualisierungsschritt umfaßt, bei dem Hardwareressourcen auf der Basis der Ereignisressourceninformation aktualisiert werden, die von dem Ereignisressourcenzustands-Aktualisierungsschritt aktualisiert wurden.
11. Verfahren nach Anspruch 8 oder einem der Ansprüche 9 und 10 in ihrer Abhängig­ keit von Anspruch 8, bei dem das Steuerverfahren einen Auslagerungsverhinderungsschritt umfaßt, der das Auslagern des Programms dadurch verhindert, daß das allgemeine Betriebssy­ stem angewiesen wird, das Programm regelmäßig in bestimmten Zeitintervallen zu starten, das die Tatsache registriert hat, daß es auf das Auftreten eines Ereignisses wartet.
DE19728726.3A 1996-07-05 1997-07-04 Robotercontroller und dessen Steuerverfahren Expired - Lifetime DE19728726B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP195352/96 1996-07-05
JP19535296A JP3832517B2 (ja) 1996-07-05 1996-07-05 ロボット用コントローラ及びその制御方法

Publications (2)

Publication Number Publication Date
DE19728726A1 true DE19728726A1 (de) 1998-01-08
DE19728726B4 DE19728726B4 (de) 2015-07-30

Family

ID=16339751

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19728726.3A Expired - Lifetime DE19728726B4 (de) 1996-07-05 1997-07-04 Robotercontroller und dessen Steuerverfahren

Country Status (3)

Country Link
US (2) US6031973A (de)
JP (1) JP3832517B2 (de)
DE (1) DE19728726B4 (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356806B1 (en) 1998-12-12 2002-03-12 Kuka Roboter Gmbh Method for handling a voltage drop in the control of a robot and for restarting a robot following a voltage drop
WO2004029804A3 (de) * 2002-09-13 2006-03-30 Phoenix Contact Gmbh & Co Echtzeitfähiges steuerungssystem mit einer sps-applikation unter einem nicht echtzeitfähigen betriebssystem
DE102006034681A1 (de) * 2006-07-24 2008-01-31 Areva Np Gmbh Verfahren zur Stabilisierung der Zykluszeit eines zyklischen Prozesses in einem Automatisierungssystem sowie Automatisierungssystem

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024666B1 (en) 2002-01-28 2006-04-04 Roy-G-Biv Corporation Motion control systems and methods
US6859671B1 (en) 1995-05-30 2005-02-22 Roy-G-Biv Corporation Application programs for motion control devices including access limitations
US20100131081A1 (en) * 1995-05-30 2010-05-27 Brown David W Systems and methods for motion control
US20060206219A1 (en) * 1995-05-30 2006-09-14 Brown David W Motion control systems and methods
US20020156872A1 (en) * 2001-01-04 2002-10-24 Brown David W. Systems and methods for transmitting motion control data
US5691897A (en) * 1995-05-30 1997-11-25 Roy-G-Biv Corporation Motion control systems
US20010032278A1 (en) * 1997-10-07 2001-10-18 Brown Stephen J. Remote generation and distribution of command programs for programmable devices
JPH11249725A (ja) * 1998-02-26 1999-09-17 Fanuc Ltd ロボット制御装置
JP3132463B2 (ja) * 1998-04-07 2001-02-05 松下電器産業株式会社 ロボット制御装置
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6879862B2 (en) * 2000-02-28 2005-04-12 Roy-G-Biv Corporation Selection and control of motion data
US20100131078A1 (en) * 1999-10-27 2010-05-27 Brown David W Event driven motion systems
US8032605B2 (en) * 1999-10-27 2011-10-04 Roy-G-Biv Corporation Generation and distribution of motion commands over a distributed network
US9235955B2 (en) * 2000-12-22 2016-01-12 Bally Gaming, Inc. Universal game monitoring unit and system
US20020019891A1 (en) * 1999-12-30 2002-02-14 James Morrow Generic device controller unit and method
US6697708B2 (en) 2000-10-11 2004-02-24 Sony Corporation Robot apparatus and robot apparatus motion control method
WO2002071241A1 (en) * 2001-02-09 2002-09-12 Roy-G-Biv Corporation Event management systems and methods for the distribution of motion control commands
US7904194B2 (en) * 2001-02-09 2011-03-08 Roy-G-Biv Corporation Event management systems and methods for motion control systems
JP3610915B2 (ja) * 2001-03-19 2005-01-19 株式会社デンソー 処理実行装置及びプログラム
US20030069998A1 (en) * 2001-08-31 2003-04-10 Brown David W. Motion services protocol accessible through uniform resource locator (URL)
US20050132104A1 (en) * 2003-11-17 2005-06-16 Brown David W. Command processing systems and methods
US20070022194A1 (en) * 2003-09-25 2007-01-25 Brown David W Database event driven motion systems
US20060064503A1 (en) * 2003-09-25 2006-03-23 Brown David W Data routing systems and methods
US8027349B2 (en) 2003-09-25 2011-09-27 Roy-G-Biv Corporation Database event driven motion systems
US7350065B2 (en) * 2003-12-15 2008-03-25 International Business Machines Corporation Method, apparatus and program storage device for providing a remote power reset at a remote server through a network connection
CN1997974B (zh) * 2004-04-30 2010-05-05 捷讯研究有限公司 内容保护入场券系统和方法
US7418584B1 (en) * 2004-05-11 2008-08-26 Advanced Micro Devices, Inc. Executing system management mode code as virtual machine guest
JP4534796B2 (ja) 2005-02-25 2010-09-01 セイコーエプソン株式会社 制御システム
US8187883B2 (en) * 2005-10-21 2012-05-29 Wisconsin Alumni Research Foundation Method and system for delivering nucleic acid into a target cell
US8055725B2 (en) * 2006-01-12 2011-11-08 International Business Machines Corporation Method, apparatus and program product for remotely restoring a non-responsive computing system
US8689217B2 (en) 2008-10-31 2014-04-01 Electronics And Telecommunications Research Institute System and method for thread processing robot software components responsive to periodic, dedicated, and passive modes
KR101248802B1 (ko) * 2008-10-31 2013-03-29 한국전자통신연구원 지능형 로봇 시스템에서의 로봇 소프트웨어 컴포넌트 관리 장치 및 방법
KR101102930B1 (ko) * 2008-10-31 2012-01-10 한국전자통신연구원 로봇용 소프트웨어 컴포넌트 장치 및 이를 이용한 쓰레드 처리 방법
US9213586B2 (en) * 2009-03-18 2015-12-15 Sas Institute Inc. Computer-implemented systems for resource level locking without resource level locks
US8572617B2 (en) * 2009-07-21 2013-10-29 Sas Institute Inc. Processor-implemented systems and methods for event handling
US8756606B2 (en) * 2011-01-31 2014-06-17 Toyota Jidosha Kabushiki Kaisha Safety controller and safety control method in which time partitions are scheduled according to a scheduling pattern
CN103481285B (zh) * 2013-09-16 2016-03-09 国家电网公司 基于现实虚拟技术的高压带电作业机器人控制系统及方法
CN204076264U (zh) * 2013-12-30 2015-01-07 北京配天技术有限公司 一种运动控制卡及机器人
CN105682864A (zh) * 2014-12-26 2016-06-15 深圳市配天智造装备股份有限公司 一种控制卡及机器人
KR102235166B1 (ko) * 2015-09-21 2021-04-02 주식회사 레인보우로보틱스 실시간 로봇 시스템, 로봇 시스템 제어 장치 및 로봇 시스템 제어 방법
EP3419793B1 (de) * 2016-02-23 2021-06-30 ABB Schweiz AG Robotersteuergerätesystem, robotanordnung, computer program und verfahren dafür
US10384347B2 (en) 2016-03-25 2019-08-20 Seiko Epson Corporation Robot control device, robot, and simulation device
EP3299258B1 (de) 2016-09-23 2020-11-04 Dana Heavy Vehicle Systems Group, LLC Steer-by-wire lenkung
US20210018912A1 (en) * 2018-04-10 2021-01-21 Fetch Robotics, Inc. Robot Management System
WO2019200012A1 (en) 2018-04-10 2019-10-17 Cairl Brian System and method for robot-assisted, cart-based workflows
WO2019225746A1 (ja) * 2018-05-25 2019-11-28 川崎重工業株式会社 ロボットシステム及び追加学習方法
CN110146845B (zh) * 2019-04-17 2021-07-27 杭州电子科技大学 一种事件驱动的固定时间电磁源定位方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59206808A (ja) * 1983-05-11 1984-11-22 Asahi Optical Co Ltd 焦点検出装置
US4954948A (en) * 1986-12-29 1990-09-04 Motorola, Inc. Microprocessor operating system for sequentially executing subtasks
US5193189A (en) * 1987-10-07 1993-03-09 Allen-Bradley Company, Inc. Programmable controller with multiple priority level task processing
US5016166A (en) * 1989-04-12 1991-05-14 Sun Microsystems, Inc. Method and apparatus for the synchronization of devices
JPH0371234A (ja) * 1989-08-10 1991-03-27 Meidensha Corp 状態変化検出装置
JP2954294B2 (ja) * 1990-08-06 1999-09-27 キヤノン株式会社 自動組立装置の制御装置
US5625821A (en) * 1991-08-12 1997-04-29 International Business Machines Corporation Asynchronous or synchronous operation of event signaller by event management services in a computer system
JPH05204672A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp インタフェースシステム
JP2574983B2 (ja) * 1993-04-06 1997-01-22 本田技研工業株式会社 マルチタスク制御システム
JP3310402B2 (ja) * 1993-06-24 2002-08-05 株式会社三協精機製作所 マルチタスク制御コントローラ
JPH07129418A (ja) * 1993-11-08 1995-05-19 Fanuc Ltd マルチタスク環境でのプログラム制御方式
DE4410775C2 (de) * 1994-03-28 2000-04-06 Daimler Chrysler Ag Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
JP3215264B2 (ja) * 1994-06-29 2001-10-02 科学技術庁航空宇宙技術研究所長 スケジュール制御装置とその方法
DE19500957A1 (de) * 1994-07-19 1996-01-25 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen oder Prozessen
DE4445651A1 (de) * 1994-12-21 1996-06-27 Bosch Gmbh Robert Verfahren zur Steuerung von technischen Vorgängen
US5627745A (en) 1995-05-03 1997-05-06 Allen-Bradley Company, Inc. Parallel processing in a multitasking industrial controller
US5850536A (en) * 1996-05-01 1998-12-15 Mci Communications Corporation Method and system for simulated multi-tasking
JPH1021093A (ja) * 1996-06-28 1998-01-23 Oki Electric Ind Co Ltd マルチウエイト監視機能付き情報処理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356806B1 (en) 1998-12-12 2002-03-12 Kuka Roboter Gmbh Method for handling a voltage drop in the control of a robot and for restarting a robot following a voltage drop
WO2004029804A3 (de) * 2002-09-13 2006-03-30 Phoenix Contact Gmbh & Co Echtzeitfähiges steuerungssystem mit einer sps-applikation unter einem nicht echtzeitfähigen betriebssystem
US7657895B2 (en) 2002-09-13 2010-02-02 Phoenix Contact Gmbh & Co. Kg Real time-capable control system having an sps application under a non-real time-capable operating system
DE102006034681A1 (de) * 2006-07-24 2008-01-31 Areva Np Gmbh Verfahren zur Stabilisierung der Zykluszeit eines zyklischen Prozesses in einem Automatisierungssystem sowie Automatisierungssystem
DE102006034681B4 (de) * 2006-07-24 2013-02-07 Areva Np Gmbh Verfahren zur Stabilisierung der Zykluszeit eines zyklischen Prozesses in einem Automatisierungssystem sowie Automatisierungssystem

Also Published As

Publication number Publication date
JP3832517B2 (ja) 2006-10-11
US6301634B1 (en) 2001-10-09
DE19728726B4 (de) 2015-07-30
US6031973A (en) 2000-02-29
JPH1015836A (ja) 1998-01-20

Similar Documents

Publication Publication Date Title
DE19728726B4 (de) Robotercontroller und dessen Steuerverfahren
DE69026379T2 (de) Nachrichtenorientierte Fehlerbeseitigungsverfahren
DE4011745C2 (de)
DE69211231T2 (de) Verfahren und Vorrichtung zur Verwaltung eines gemeinsam genutzten Speichers ausserhalb des Bildschirms
DE3587218T2 (de) Verfahren zur Ausführung von in einer hohen Programmiersprache geschriebenen Anwenderprogrammen.
DE68922769T2 (de) Verfahren zum Erzeugen eines temporären Anhaltens von Tasken, die in einem virtuellen Datenverarbeitungssystem ablaufen.
DE69130630T2 (de) Synchrones Verfahren und Gerät für Prozessoren
DE69427544T2 (de) Programmierbarer Kontroller und Verfahren zur Durchführung von SFC-Programmen mit Hilfe eines programmierbaren Kontrollers
DE3587034T3 (de) Verfahren und Einrichtung zur Steuerung automatischer Geräte.
DE69121937T2 (de) Verfahren und Gerät zum teilweisen Lauf eines Sequenzprogramms zwecks Fehlersuche
DE4410775C2 (de) Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE69518453T2 (de) Verfahren und System zum Dynamischen Auswählen eines Kommunikationsmodus
DE3750045T2 (de) Unterbrechungssteuerungsvorrichtung für eine virtuelle Maschine mit einer Vielzahl von Verarbeitungseinheiten.
EP0799441B1 (de) Verfahren zur steuerung von technischen vorgängen
DE3854323T2 (de) Jobsteuerung für Online-System.
DE10027359A1 (de) Verfahren und Vorrichtung zur Vorhersage einer Wiederanlaufzeit und Festplattenlaufwerk
DE4005042A1 (de) Architektur eines digitalen bewegungssteuerungselements hoher geschwindigkeit
DE69411096T2 (de) Entwicklungsunterstützungssystem für einen Mikrocomputer mit internem Cachespeicher
DE3650158T2 (de) Sonderzweckprozessor zur Übernahme vieler Betriebssystemfunktionen in einem grossen Datenverarbeitungssystem.
DE69031361T2 (de) Taktsignalgeneratorsystem
DE69232371T2 (de) Programmierbares Steuergerät
DE2632277A1 (de) Mikroprogrammierbarer computer fuer eine numerische steuervorrichtung
DE3520285A1 (de) Verfahren und vorrichtung zur steuerung eines dialogcomputersystems
DE4422637A1 (de) Rechnersystem und Verfahren zum Problemlösen

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8127 New person/name/address of the applicant

Owner name: SEIKO INSTRUMENTS INC., CHIBA, JP

Owner name: SEIKO EPSON CORP., TOKIO/TOKYO, JP

8127 New person/name/address of the applicant

Owner name: SEIKO EPSON CORP., TOKYO, JP

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R071 Expiry of right