Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COMPUTER SYSTEM, CONTROL APPARATUS FOR A MACHINE, IN PARTICULAR FOR AN INDUSTRIAL ROBOT, AND INDUSTRIAL ROBOT
Document Type and Number:
WIPO Patent Application WO/2009/090164
Kind Code:
A1
Abstract:
The invention relates to a computer system (6) having a multicore processor (20) and an operating system, in particular a so-called 'general-purpose' operating system. The multicore processor (6) has at least one first processor core (21) and at least one second processor core (22). The operating system is configured to allocate real-time tasks, in particular hard real-time tasks, solely to the first processor core (21) and to allocate further tasks solely to the second processor core (22).

Inventors:
MUNZ HEINRICH (DE)
Application Number:
PCT/EP2009/050307
Publication Date:
July 23, 2009
Filing Date:
January 13, 2009
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
KUKA ROBOTER GMBH (DE)
MUNZ HEINRICH (DE)
International Classes:
G06F9/50; G06F9/48
Domestic Patent References:
WO2007109894A12007-10-04
Foreign References:
US20060150185A12006-07-06
US20060294522A12006-12-28
US20070083871A12007-04-12
Attorney, Agent or Firm:
HASSA, Oliver (München, DE)
Download PDF:
Claims:

Patentansprüche

1. Computersystem, aufweisend:

- einen Mehrkernprozessor (20) , der wenigstens einen ersten Prozessorkern (21) und wenigstens einen zweiten Prozessorkern (22) aufweist, und

ein Betriebssystem, insbesondere ein so genanntes "General-Purpose" Betriebssystem, das konfiguriert ist, Echtzeitaufgaben, insbesondere harte Echtzeitaufgaben, ausschließlich dem ersten Prozessorkern (21) und weitere Aufgaben ausschließlich dem zweiten Prozessorkern (22) zuzuweisen.

2. ComputerSystem nach Anspruch 1, dessen Betriebssystem konfiguriert ist, aufgrund von ersten externen Interrupts ausgelöster und den Echtzeitaufgaben zugeordneter erster Unterbrechungsroutinen dem ersten Prozessorkern (21) und aufgrund von zweiten externen Interrupts ausgelöster und den weiteren Aufgaben zugeordneter zweiter Unterbrechungsroutinen dem zweiten Prozessorkern (22) zuzuweisen.

3, Computersystem nach Anspruch 2, dessen Betriebssystem konfiguriert ist, aus den ersten Unterbrechungsroutinen erste Deferred Procedure Calls zu initiieren, um daraus die den Echtzeitraufgaben zugeordneten ersten Unterbrechungsroutinen durchzuführen, und aus den zweiten Unter- brechungsroutinen zweite Deferred Procedure Calls zu initiieren, um daraus die den weiteren Aufgaben zugeordneten zweiten Unterbrechungsroutinen durchzuführen.

4. Computersystem nach Anspruch 3, dessen Betriebssystem beschaffen ist, dem ersten Prozessorkern (21) einen ers-

ten FIFO-Puffer (24) und dem zweiten Prozessorkern (22) einen zweiten FIFO-Puffer (25) zuzuordnen, um die ersten Deferred Procedure Calls in den ersten FIFO-Puffer (24) und die zweiten Deferred Procedure Calls in den zweiten FIFO-Puffer (25) zwischen zu speichern.

5. Computersystem nach einem der Ansprüche 1 bis 4, dessen Betriebssystem konfiguriert ist, den Echtzeitaufgaben zugeordneten erste Programmfäden dem ersten Prozessor- kern (21) und den weiteren Aufgaben zugeordneten zweite Programmfäden dem zweiten Prozessorkern (22) zuzuweisen.

6. Steuerungsvorrichtung zum Steuern einer Maschine, insbesondere eines Industrieroboters, wobei die Steuerungs- Vorrichtung (6) ein ComputerSystem nach einem der Ansprüche 1 bis 5 umfasst und die Echtzeitaufgaben zum Steuern der Maschine und/oder einzelner Maschinenteile vorgesehen sind.

7. Steuerungsvorrichtung nach Anspruch 6, bei der das Betriebssystem des Computersystems (6) einen Multimediadienst aufweist und das Betriebssystem konfiguriert ist, den Echtzeitaufgaben zugeordnete Programmfäden über den Multimediadienst zu priorisieren.

8. Steuerungsvorrichtung nach Anspruch 7, bei dem das Betriebssystem ein Windows ® Betriebssystem der Firma Microsoft ® Corporation und der Multimediadienst der Multimedia Class Scheduler Service dieses Betriebssystems ist.

9. Steuerungsvorrichtung zum Steuern einer Maschine, insbesondere zum Steuern eines Industrieroboters, aufweisend:

- einen Prozessor (20, 30) und

ein. Betriebssystem, insbesondere ein so genanntes "General-Purpose" Betriebssystem, das einen Multimediadienst umfasst, wobei das Betriebssystem konfigu- riert ist, Echtzeitaufgaben, insbesondere harte Echtzeitaufgaben, die der Prozessor (20, 30) zum Steuern der Maschine abarbeitet, über den Multimediadienst zu priorisieren.

10. Steuerungsvorrichtung nach Anspruch 9, deren Betriebssystem konfiguriert ist, den Echtzeitaufgaben zugeordnete Programmfäden über den Multimediadienst zu priorisieren.

11. SteuerungsVorrichtung nach Anspruch 9 oder 10, bei dem das Betriebssystem ein Windows ® Betriebssystem der Firma Microsoft ® Corporation und der Multimediadienst der Multimedia Class Scheduler Service dieses Betriebssystems ist.

12. Industrieroboter, aufweisend einen Roboterarm (1) und eine Steuerungsvorrichtung (6, 36) nach einem der Ansprüche 6 bis 11 zum Steuern einer Bewegung des Roboterarms ( 1 ) .

13. Verwendung eines Multimediadienstes eines Betriebssystems zur Priorisierung von Echtzeitaufgaben, insbesondere von harten Echtzeitaufgaben, die vorgesehen sind, die Bewegung eines Industrieroboters zu steuern.

14. Verwendung nach Anspruch 13, bei der den Echtzeitaufgaben zugeordnete Programmfäden über den Multimediadienst priorisiert werden.

15. Verwendung nach Anspruch 13 oder 14, bei dem das Betriebssystem ein Windows ® Betriebssystem der Firma Microsoft ® Corporation und der Multimediadienst der Multimedia Class Scheduler Service dieses Betriebssystems ist.

Description:

Computersystem, Steuerungsvorrichtung für eine Maschine, insbesondere für einen Industrieroboter, und Industrieroboter

Die Erfindung betrifft ein Computersystem, eine Steuerungs- Vorrichtung für eine Maschine, insbesondere für einen Industrieroboter und einen Industrieroboter.

Aus Kostengründen ist es erstrebenswert, möglicht keine Spe- ziallösungen, sondern allgemein verfügbare Produkte oder Lö- sungen zu verwenden. Aus diesem Grund existiert bereits seit Mitte der 1990er Jahre die Tendenz, in der industriellen Maschinensteuerung Produkte aus der Büroumgebung, wie z.B. PCs für die Steuerung und Ethernet als Kommunikationstechnolo- gie, zu verwenden.

Bei einem Einsatz von Software in Büroumgebungen kommt es jedoch hauptsächlich auf die korrekte Funktion der Software und nicht so sehr auf einen genauen zeitlichen Aspekt an. Die Software sollte ihre Aufgabe lediglich in einem für menschliche Verhältnisse angemessenen Rahmen, also im einstelligen Sekundenbereich oder knapp darunter, erledigen. Da bei einer Maschinensteuerung die Software die Bewegung der Maschine vorgibt, muss sie zeitlich relativ genau und synchron zur Maschinenbewegung arbeiten. Je schneller und ge- nauer sich die Maschine bewegen soll, um so zeitlich genauer muss die Software sein. Bei modernen, relativ hochgenauen Maschinen ist es nicht unüblich, dass Motoren der Maschinen in einer Sekunde 8.000 Mal (entspricht 125 Mikrosekunden Zykluszeit) oder auch öfters von der Software nachgeregelt werden müssen. Hier ist es also nicht nur wichtig, dass eine Software ihre Aufgabe relativ korrekt erfüllt, sondern muss dies auch möglichst schnell tun. Man spricht in diesem Zusammenhang von der Echtzeitfähigkeit der Software. Je strikter diese Echtzeitfähigkeit ist, umso schneller und genauer kann sich die Maschine bewegen.

Standard-Betriebssysteme, die auch als "General-Purpose" Betriebssysteme bezeichnet werden und auf gängigen PCs in der Bürowelt installiert sind, sind jedoch in der Regel nicht echtzeitfähig, da dies für die vorgesehene Anwendung auch nicht notwendig ist. Standard-Betriebssysteme achten bei einer großen Auslastung des Systems eher auf eine gleichmäßige Ausgewogenheit des Gesamtsystems, ohne bestimmte Anwendungen zu priorisieren.

Die Aufgabe der vorliegenden Erfindung ist es daher, ein ComputerSystem mit einem Standard-Betriebssystem derart auszuführen, dass dieses auch für die Steuerung von Maschinen insbesondere in Echtzeit geeignet ist.

Die Aufgabe der Erfindung wird gelöst durch ein Computersystem, aufweisend:

einen Mehrkernprozessor, der wenigstens einen ersten Pro- zessorkern und wenigstens einen zweiten Prozessorkern aufweist, und

ein Betriebssystem, insbesondere ein so genanntes "General-Purpose" Betriebssystem, das konfiguriert ist, Echt- zeitaufgaben ausschließlich dem ersten Prozessorkern und weitere Aufgaben ausschließlich dem zweiten Prozessorkern zuzuweisen.

Das erfindungsgemäße ComputerSystem umfasst den Mehrkernpro- zessor, der wiederum mehrere Prozessorkerne aufweist. Prozessorkerne werden im Englischen als Core bezeichnet und sind dafür vorgesehen, Rechenprogramme abzuarbeiten.

Das erfindungsgemäße Computersystem ist mit einem Betriebs- System ausgestattet. Ein Betriebssystem im Allgemeinen ist

eine Software, die den Betrieb des ComputerSystems ermöglicht. Es verwaltet seine Ressourcen, wie z.B. den Mehrkernprozessor und eventuell an das ComputerSystem angeschlossene Ein- und Ausgabegeräte, sowie die Ausführung von auf dem ComputerSystem laufenden Rechenprogrammen.

Das Betriebssystem ist insbesondere ein Standard- Betriebssystem, das auch als "General-Purpose" Betriebssystem bezeichnet wird. Ein "General-Purpose" Betriebssystem ist ein Betriebssystem, das nicht für eine spezielle Anwendung und insbesondere nicht speziell zum Steuern einer Maschine, z.B. eines Industrieroboters, vorgesehen ist. Obwohl einige Hersteller von "Genaral-Purpose" Betriebssystemen behaupten, ihre Betriebssysteme seien Echtzeit fähig, trifft dies für "General-Purpose" Betriebssystemen im Allgemeinen nicht zu. Beispiele von "General-Purpose" Betriebssystemen sind die Windows ® Betriebssysteme der Microsoft ® Corporation. Die Begriffe "Windows" und "Microsoft" sind markenrechtlich geschützte Begriffe der Microsoft Corporation.

Damit mit dem Standard-Betriebssystem, das in der Regel nicht für Echtzeitaufgaben vorgesehen ist, auch Echtzeitanwendungen ausgeführt werden können, ist erfindungsgemäß das Betriebssystem des erfindungsgemäßen ComputerSystems derart konfiguriert, dass Echtzeitaufgaben ausschließlich dem ersten Prozessorkern und weitere Aufgaben, also anfallende Aufgaben, die in Nicht-Echtzeit abgearbeitet werden können, ausschließlich dem zweiten Prozessorkern zugewiesen werden. Somit wird sicher gestellt, dass der wenigstens eine erste Prozessorkern ausschließlich hochpriore Aufgaben abarbeitet und keine Rechenleistung für niederpriore Aufgaben (die weiteren Aufgaben) verwenden muss. Niederpriore Aufgaben sind z.B. betriebssysteminterne Aufgaben.

In der Informatik wird zwischen den Begriffen "Echtzeit" und "Modellzeit" unterschieden. Echtzeit bezieht sich auf die Zeit, die Abläufe in der "realen Welt" verbrauchen. Modellzeit hingegen bezieht sich dagegen auf die von einem Rechen- programm selbstverwaltete Laufzeit.

Unter einem echtzeitfähigen System kann man ein System verstehen, das auf ein Ereignis innerhalb eines vorgegebenen Zeitrahmens reagieren muss. Der vorgegebene Zeitrahmen hängt von der jeweiligen Aufgabe ab, die mit Echtzeit verarbeitet werden soll, und kann beispielsweise im Mikrosekundenbereich z.B. für schnelle digitale Steuerungs- und/oder Regelungsaufgaben oder auch im Sekundenbereich z.B. für Temperaturregelungen oder Füllstandsüberwachungen liegen.

' Bisweilen unterscheidet man zwischen weicher und harter Echtzeit. Bei der sogenannten harten Echtzeit bedeutet ein überschreiten des vorgegebenen Zeitrahmens einen Fehler. Bei der sogenannten weichen Echtzeit arbeitet dagegen das System die relevanten Eingaben in der Regel innerhalb des vorgegebenen Zeitrahmens ab, wobei grundsätzlich ein vereinzeltes überschreiten des vorgegebenen Zeitrahmens möglich ist und zu keinem Fehler führt. Nach einer Ausführungsform des erfindungsgemäßen Computersystems ist dessen Betriebssystem konfiguriert, ausschließlich die harten Echtzeitaufgaben dem ersten Prozessorkern zuzuweisen. Die weichen Echtzeitaufgaben sind dann Teil der weiteren Aufgaben, die zur Abarbeitung ausschließlich dem zweiten Prozessorkern zugewiesen werden .

Das Betriebssystem des erfindungsgemäßen ComputerSystems ist gemäß einer Ausführungsform konfiguriert, aufgrund von ersten externen Interrupts ausgelöster und den Echtzeitaufgaben bzw. den harten Echtzeitaufgaben zugeordneter erster Unter- brechungsroutinen dem ersten Prozessorkern und aufgrund von

zweiten externen Interrupts ausgelöster und den weiteren Aufgaben zugeordneter zweiter Unterbrechungsroutinen dem zweiten Prozessorkern zuzuweisen.

Unter einem Interrupt versteht man in der Informatik ein externes Ereignis, z.B. eine abgelaufene Zeit eines Timers oder eines sonstigen Hardwaresignals, das eine Unterbrechung eines der Prozessorkerne und die Verzweigung in eine entsprechende Unterbrechungsroutine erzwingt. Aufgrund eines Interrupts bzw. einer dem Interrupt zugeordneten Unterbrechungsanforderung (Interrupt Request) wird die Unterbrechungsroutine, die auch als "Interrupt Service Routine (ISR) " bezeichnet wird, initiiert, die der Prozessorkern abarbeitet, den das Betriebssystem auswählt. Aufgrund der Un- terbrechungsanforderung wird der normale Programmablauf un- terbrochen, um die Unterbrechungsroutine auszuführen. Ist die Unterbrechungsroutine abgearbeitet, dann kehrt der Programmablauf wieder an die Stelle vor der Unterbrechung zurück.

Aufgrund dieser Variante des erfindungsgemäßen Computersystems werden von externen Interrupts ausgelöste und den Echtzeitaufgaben bzw. den harten Echtzeitaufgaben zugeordnete Unterbrechungsroutinen lediglich dem ersten Prozessorkern zum Abarbeiten zugewiesen. Die restlichen Unterbrechungsroutinen arbeitet der zweite Prozessorkern ab. Somit wird sicher gestellt, dass der wenigstens eine erste Prozessorkern ausschließlich für das Abarbeiten der den Echtzeitaufgaben bzw. der den harten Echtzeitaufgaben zugeordneten Unterbre- chungsroutinen vorbehalten ist.

Systembedingt kann es sein, dass aus einer Unterbrechungsan- forderung bestimmte, wenn nicht gar die meisten Betriebssystemaufrufe nicht durchgeführt werden können. Aus so genann- ten Deferred Procedure Calls (DPCs) ist dies jedoch möglich.

Das erfindungsgemäße ComputerSystem kann daher derart ausgeführt sein, dass dessen Betriebssystem derart konfiguriert ist, aus den ersten Unterbrechungsroutinen erste Deferred Procedure Calls zu initiieren, um daraus die den Echtzeit- aufgaben zugeordneten ersten Unterbrechungsroutinen durchzuführen, und aus den zweiten Unterbrechungsroutinen zweite Deferred Procedure Calls zu initiieren, um daraus die den weiteren Aufgaben zugeordneten zweiten Unterbrechungsroutinen durchzuführen. Dadurch ist es möglich, dass die relevan- te Unterbrechungsroutine als solche uneingeschränkt vom relevanten Prozessorkern durchgeführt werden kann, indem z.B. eine Kommunikation mit auf dem ComputerSystem laufenden Programmfäden (Threads) ermöglicht wird. Ein Programmfaden, der im Englischen als "Thread" bezeichnet wird, ist ein einzel- ner Programmablauf.

Standard-Betriebssysteme können derart ausgeführt sein, dass sie Deferred Procedure Calls in einen FIFO-Puffer ("First- In-First-Out " ) ablegen und in der Reihenfolge des Ablegens durch die Unterbrechungsanforderung vom System auch wieder nacheinander herausholen. Nach einer Variante des erfindungsgemäßen Computersystems ist dessen Betriebssystem konfiguriert, dem ersten Prozessorkern einen ersten FIFO-Puffer und dem zweiten Prozessorkern einen zweiten FIFO-Puffer zu- zuordnen, um die ersten Deferred Procedure Calls in den ersten FIFO-Puffer und die zweiten Deferred Procedure Calls in den zweiten FIFO-Puffer zwischen zu speichern. Dadurch wird sicher gestellt, dass keine niederprioren und für den zweiten Prozessorkern vorgesehene Unterbrechungsroutinen das Zu- führen von für den ersten Prozessorkern bestimmten höherpri- oren Unterbrechungsroutinen blockieren.

Das Betriebssystem des erfindungsgemäßen Computersystems kann auch konfiguriert sein, den Echtzeitaufgaben bzw. den harten Echtzeitaufgaben zugeordneten erste Programmfäden dem

ersten Prozessorkern, und den weiteren Aufgaben zugeordneten zweite Programmfäden dem zweiten Prozessorkern zuzuweisen. Mit dieser Variante des erfindungsgemäßen ComputerSystems wird sicher gestellt, dass Programmfäden (Threads) , die den Echtzeitaufgaben bzw. den harten Echtzeitaufgaben zugeordnet sind, ausschließlich vom ersten Prozessorkern abgearbeitet werden, und der erste Prozessorkern keine Programmfäden (Threads) abarbeitet, die den weiteren, niederprioren Aufgaben zugeordnet sind.

In einem weiteren Aspekt der vorliegenden Erfindung wird das erfindungsgemäße Computersystem zum Steuern einer Maschine, insbesondere eines Industrieroboters, verwendet, wobei die Echtzeitaufgaben zum Steuern der Maschine vorgesehen sind. Demzufolge ist es möglich, ein Standard-Betriebssystem, das insbesondere nicht für die Steuerung einer Maschine entwickelt wurde, auch als SteuerungsVorrichtung zum Steuern einer Maschine, insbesondere in Echtzeit, zu verwenden. Unter dem Begriff "Steuern" wird hier auch "Regeln" verstanden.

Die zu steuernde Maschine ist insbesondere ein Industrieroboter. Industrieroboter sind Handhabungsmaschinen, die zur selbsttätigen Handhabung von Objekten mit zweckdienlichen Werkzeugen ausgerüstet und in mehreren Bewegungsachsen ins- besondere hinsichtlich Orientierung, Position und Arbeitsablauf programmierbar sind. Industrieroboter weisen ein Computersystem auf, das beim erfindungsgemäßen Industrieroboter im Wesentlichen durch das erfindungsgemäße ComputerSystem gebildet ist.

Weist das Betriebssystem des erfindungsgemäßen Computersystems einen Multimediadienst auf, dann kann gemäß einer Ausführungsform der erfindungsgemäßen Steuerungsvorrichtung das Betriebssystem derart konfiguriert sein, den Echtzeitaufga- ben zugeordnete Programmfäden über den Multimediadienst zu

priorisieren. Der Multimediadienst ist vorgesehen, damit der Mehrkernprozessor Multimedia-Programme, wie insbesondere Audio- oder Video-Wiedergabeprogramme, möglichst unterbrechungsfrei abarbeitet. Multimediadienste können ausgeführt sein, automatisch bestimmten Programmfäden (Threads) mittels entsprechender Programmiermethoden mehr Rechenzeit des Prozessors zur Verfügung zu stellen. Mittels entsprechender Programmiermethoden ist es möglich, bestimmte Programmfäden anzugeben, die das Computersystem, insbesondere der Mehr- kernprozessor, bevorzugt behandeln soll, indem ihnen mehr Rechenzeit zur Verfügung gestellt wird.

Handelt es sich beim Betriebssystem um ein Windows ® Betriebssystem der Firma Microsoft ® Corporation und bei dem Multimediadienst um den so genannten Multimedia Class Sche- duler Service dieses Betriebssystems, dann ist die Priori- sierung der Echtzeitaufgaben über Informationen, die in der 'Registry des Betriebssystems gespeichert sind, möglich.

In einem weiteren Aspekt der vorliegenden Erfindung wird ei- ne Steuerungsvorrichtung zum Steuern einer Maschine, insbesondere zum Steuern eines Industrieroboters, angegeben, die einen Prozessor und ein Betriebssystem, insbesondere ein so genanntes "General-Purpose" Betriebssystem, aufweist das einen Multimediadienst umfasst, wobei das Betriebssystem kon- figuriert ist, Echtzeitaufgaben, insbesondere harte Echtzeitaufgaben, die der Prozessor zum Steuern der Maschine abarbeitet, über den Multimediadienst zu priorisieren. Das Betriebssystem kann insbesondere konfiguriert sein, den Echtzeitaufgaben zugeordnete Programmfäden über den Multimedia- dienst zu priorisieren. Handelt es sich bei dem Betriebssystem um ein Windows ® Betriebssystem der Firma Microsoft ® Corporation, dann ist der Multimediadienst insbesondere der Multimedia Class Scheduler Service dieses Betriebssystems.

Ausführungsbeispiele der Erfindung sind exemplarisch in den beigefügten schematischen Zeichnungen dargestellt. Es zeigen:

Fig. 1 einen Industrieroboter mit einem Steuerrechner und

Fig. 2 ein alternativer Steuerrechner für den Industrieroboter.

Die Fig. 1 zeigt einen Industrieroboter mit einer Kinematik für Bewegungen in beispielsweise sechs Freiheitsgraden als Beispiel einer Maschine. Der Industrieroboter weist in allgemein bekannter Weise einen Roboterarm 1 mit sechs Bewegungsachsen, Gelenken, Hebeln 3, 4 und einem Flansch 5 auf. In der Figur 1 ist nur eine der Bewegungsachsen mit dem Bezugszeichen 2 versehen und der Roboterarm 1 ist auf einem Sockel 7 befestigt.

Jede der Bewegungsachsen 2 wird von einem nicht näher darge- stellten Antrieb bewegt. Die Antriebe umfassen beispielsweise jeweils einen elektrischen Motor und Getriebe, wie es dem Fachmann allgemein bekannt ist.

Der Industrieroboter weist ferner einen Steuerrechner 6 auf, der mit den Antrieben des Industrieroboters in nicht dargestellter Weise verbunden ist und diese mittels eines auf dem Steuerrechner 6 laufenden Rechenprogramms steuert, sodass der Flansch 5 des Industrieroboters eine vorgegebene Bewegung durchführt .

Der Steuerrechner 6 weist im Falle des vorliegenden Ausführungsbeispiels einen Mehrkernprozessor 20 auf. Der Mehrkernprozessor 20 ist auf einem Motherboard 23 befestigt und weist einen ersten Prozessorkern 21 und einen zweiten Pro- zessorkern 22 innerhalb seines Gehäuses auf. Die beiden Pro-

zessorkerne 21, 22 sind eigenständige Recheneinheiten. Weitere Ressourcen des Steuerrechners 6, wie z.B. Speicher, und Ein- und Ausgänge sind nicht näher gezeigt.

Der Steuerrechner 6 ist ferner mit einem Betriebssystem konfiguriert. Ein Betriebssystem im Allgemeinen ist eine Software, die den Betrieb eines Computers, im Falle des vorliegenden Ausführungsbeispiels des Steuerrechners 6, ermöglicht. Es verwaltet die Ressourcen des Steuerrechners 6, wie z.B. den Mehrkernprozessor 20 und eventuell an den Steuerrechner 6 angeschlossene Ein- und Ausgabegeräte, sowie die Ausführung von auf dem Steuerrechner 6 laufenden Rechenprogrammen, wie z.B. das für die Steuerung des Industrieroboters vorgesehene Rechenprogramm.

Im Falle des vorliegenden Ausführungsbeispiels handelt es sich bei dem Betriebssystem um ein so genanntes "General- Purpose" Betriebssystem (Standard-Betriebssystem) . Ein "General-Purpose" Betriebssystem ist ein Betriebssystem das nicht für eine spezielle Anwendung und insbesondere nicht speziell zum Steuern einer Maschine, wie den Industrieroboter, vorgesehen ist. Im Falle des vorliegenden Ausführungsbeispiels läuft auf dem Steuerrechner 6 das Betriebssystem Windows ® Vista ® der Microsoft ® Corporation. Die Begriffe "Windows", "Microsoft" und "Vista" sind markenrechtlich geschützte Begriffe der Microsoft Corporation. Unter dem Begriff "Steuern" soll auch "Regeln" verstanden werden.

Im Falle des vorliegenden Ausführungsbeispiels ist das Be- triebssystem des Steuerrechners 6 derart konfiguriert, dass es Rechenaufgaben, die das zur Steuerung des Industrieroboters 1 vorgesehene Rechenprogramm in Echtzeit, insbesondere in harter Echtzeit, durchführen soll, ausschließlich dem ersten Prozessorkern 21 zum Abarbeiten zuführt, und die restlichen Aufgaben, wie insbesondere betriebssysteminterne

Aufgaben oder zeitunkritische Aufgaben, aber auch eventuell weiche Echtzeitaufgaben, dem zweiten Prozessorkern 22 zum Abarbeiten zuführt.

Des Weiteren können folgende Arten von Aufgaben auf unterschiedlichen Arbeitsebenen unterschieden werden: Interrupts, so genannte Deferred Procedure Calls (DPCs) und Programmfäden. Ein Programmfaden, der im Englischen als "Thread" bezeichnet wird, ist ein einzelner Programmablauf.

Unter einem Interrupt versteht man in der Informatik ein externes Ereignis, z.B. eine abgelaufene Zeit eines Timers, einen Impuls synchron zu Drehungen von Bewegungsachsen 2 des Industrieroboters oder eines sonstigen Hardwaresignals, das eine Unterbrechung eines der Prozessorkerne 21, 22 und die Verzweigung in eine entsprechende Unterbrechungsroutine erzwingt. Aufgrund eines Interrupts bzw. einer dem Interrupt zugeordneten Unterbrechungsanforderung (Interrupt Request) wird die Unterbrechungsroutine, die auch als "Interrupt Ser- vice Routine (ISR) " bezeichnet wird, initiiert, die der Prozessorkern 21, 22 abarbeitet, den das Betriebssystem auswählt. Aufgrund der Unterbrechungsanforderung wird der normale Programmablauf des relevanten Prozessorkerns 21, 22 unterbrochen, um die Unterbrechungsroutine auszuführen. Ist die Unterbrechungsroutine abgearbeitet, dann kehrt der Programmablauf wieder an die Stelle vor der Unterbrechung zurück.

Im Falle des vorliegenden Ausführungsbeispiels wird die Zu- Ordnung bestimmter Aufgaben zu den beiden Prozessorkernen 21, 22 u.A. wie folgt realisiert:

Die den normalen Programmablauf des Steuerrechners 6 unterbrechende Interrupts haben die höchste Priorität im System und werden von externen Ereignissen ausgelöst. Im Falle des

vorliegenden Ausführungsbeispiels ist das Betriebssystem des Steuerrechners 6 derart initialisiert, dass bestimmte Interrupts zur Abarbeitung ihrer Unterbrechungsroutinen nur einem bestimmten der beiden Prozessorkerne 21, 22 zugeführt wer- den. Im Falle des vorliegenden Ausführungsbeispiels ist das Betriebssystem derart konfiguriert, dass es Interrupts, die zur Steuerung des Industrieroboters vorgesehen sind und deren Unterbrechungsroutinen insbesondere in Echtzeit abgearbeitet werden müssen, ausschließlich dem ersten Prozessor- kern 21 zugeführt werden. Alle anderen Interrupts werden dem zweiten Prozessorkern 22 zum Abarbeiten ihrer Unterbrechungsroutinen zugeführt. Somit ist sicher gestellt, dass der erste Prozessorkern 21 im Wesentlichen nur Unterbrechungsroutinen höherpriorer Interrupts, insbesondere in Echtzeit abzuarbeitende Unterbrechungsroutinen zugewiesen bekommt und seine Rechenleistung nicht durch niederpriore Aufgaben verwendet wird.

Im Falle des hier verwendeten Betriebssystems Windows ® Vis- ta ® ist die Zuordnung bestimmter Interrupts zu vorbestimmten Prozessorkernen 21, 22 durch geeignete Einträge in der so genannten Registry des Betriebssystems möglich.

Es ist möglich, dass systembedingt aus einer Unterbrechungs- anforderung bestimmte, wenn nicht gar die meisten Betriebssystemaufrufen nicht durchgeführt werden können. Aus so genannten Deferred Procedure Calls (DPCs) ist dies jedoch möglich. Aus diesem Grunde ist im Falle des vorliegenden Ausführungsbeispiels das Betriebssystem des Steuerrechners 6 derart konfiguriert, dass eine Unterbrechungsroutine einen Deferred Procedure CaIl anstößt, welcher die Unterbrechungs- routine als solche uneingeschränkt durchführen kann, indem z.B. eine Kommunikation mit auf dem Steuerrechner 6 laufenden Programmfäden (Threads) ermöglicht wird.

Im Falle des vorliegenden Ausführungsbeispiels werden die DPCs in FIFO-Puffer zwischen gespeichert und in der Reihenfolge ihrer Zwischenspeicherung durch die Unterbrechungsroutine vom System auch wieder nacheinander abgerufen, um abge- arbeitet zu werden. "FIFO" ist die Abkürzung für First-In- First-Out" .

Im Falle des vorliegenden Ausführungsbeispiels ist das Betriebssystem des Steuerrechners 6 derart ausgeführt, dass es jedem Prozessorkern 21, 22 einen eigenen FIFO-Puffer zuordnet. In der Fig. 1 ist ein dem ersten Prozessorkern 21 zugeordneter erster FIFO-Puffer 24 und ein dem zweiten Prozessorkern 22 zugeordneter zweiter FIFO-Puffer 25 dargestellt. Somit werden im Falle des vorliegenden Ausführungsbeispiels Deferred Procedure Calls, die Interrupts zugeordnet sind, deren Unterbrechungsroutinen der erste Prozessorkern 21 abarbeiten soll, im ersten FIFO-Puffer 24 zwischengespeichert. Deferred Procedure Calls, die Interrupts zugeordnet sind, deren Unterbrechungsroutinen der zweite Prozessorkern 22 ab- arbeiten soll, werden dagegen im zweiten FIFO-Puffer 25 zwischengespeichert .

Im Falle des vorliegenden Ausführungsbeispiels werden auf dem Prozessor 20 auch Programmfäden (Threads) abgearbeitet. Damit sicher gestellt wird, dass Programmfäden (Threads), die dem zur Steuerung des Industrieroboters vorgesehenen Rechenprogramm zugeordnet sind und insbesondere in (harter) Echtzeit abgearbeitet werden müssen, auch in (harter) Echtzeit vom Prozessor 20 abgearbeitet werden können, ist das Betriebssystem des Steuerrechners 6 derart konfiguriert, dass es die zur Steuerung des Industrieroboters vorgesehenen Rechenprogramms zugeordneten Programmfäden (Threads) dem ersten Prozessorkern 21 zur Abarbeitung zuweist. Alle anderen Programmfäden weist das Betriebssystem des Steuerrech- ners 6 dem zweiten Prozessorkern 22 zur Abarbeitung zu.

Bei dem hier verwendeten Windows ® Betriebssystem kann dies durch das Konfigurieren einer so genannten "Thread Affinity Maske" erreicht werden.

Viele "General-Purpose" Betriebssysteme umfassen einen MuI- timediadienst , mittels derer Multimedia-Programme, wie insbesondere Audio- oder Video-Wiedergabeprogramme möglichst unterbrechungsfrei abgearbeitet werden können. Beim Micro- soft ® Vista ® Betriebssystem wird dieser Mechanismus Multimedia Class Scheduler Service genannt, der automatisch bestimmten Programmfäden (Threads) mittels entsprechender Programmiermethoden mehr Rechenzeit des Mehrkernprozessors 20 zur Verfügung stellt. Der Multimedia Class Scheduler Service bedient sich dabei Informationen, die in der Registry gespeichert sind, um entsprechende Anwendungen (Tasks) zu erkennen und die entsprechende Priorität der Programmfäden (Threads) dieser Anwendungen zu bestimmen. Für die entsprechenden Programmiermethoden können z.B. so genannte API- Aufrufe (API ist die Abkürzung für "Application Program Interface", auf deutsch: Schnittstelle für Anwendungsprogramme) verwendet werden.

Alternativ oder zusätzlich kann es vorgesehen sein, die dem Rechenprogramm zur Steuerung des Industrieroboters zugeordneten Programmfäden (Threads), die insbesondere vom Mehrkernprozessor 20 in Echtzeit abgearbeitet werden müssen, über den Multimedia Class Scheduler Service des Betriebssystems eine höhere Priorität zu geben, so dass der Mehrkern- Prozessor 20 diese bevorzugt vor den restlichen Programmfäden (Threads) abarbeitet.

Der in der Fig. 1 gezeigte Mehrkernprozessor 20 weist genau zwei Prozessorkerne 21, 22 auf. Es ist auch möglich, einen Mehrkernprozessor mit mehr als zwei Prozessorkernen zu ver-

wenden. In diesem Fall ist wenigstens einer der Prozessorkerne den (harten) Echtzeitaufgaben und wenigstens ein Mehrkernprozessor den übrigen Aufgaben zugeordnet.

Die Fig. 2 zeigt einen weiteren Steuerrechner 36, der anstelle des in der Fig. 1 gezeigten Steuerrechners 6 zum Steuern des Industrieroboters verwendet werden kann. Im Gegensatz zum Steuerrechner 6 der Fig. 1 weist der Steuerrechner 36 im Falle des vorliegenden Ausführungsbeispiels einen Prozessor 30 mit einem einzigen Prozessorkern 31 auf. Der

Steuerrechner 36 kann aber auch mit einem Mehrkernprozessor versehen sein. Der Prozessor 30 ist auf einem Motherboard 33 befestigt. Weitere Ressourcen des Steuerrechners 36, wie z.B. Speicher, und Ein- und Ausgänge sind nicht näher ge- zeigt.

Der Steuerrechner 36 ist mit einem Betriebssystem ausgestattet. Es verwaltet die Ressourcen des Steuerrechners 36, wie z.B. den Prozessor 30 und eventuell an den Steuerrechner 36 angeschlossene Ein- und Ausgabegeräte, sowie die Ausführung von auf dem Steuerrechner 36 laufenden Rechenprogrammen, wie z.B. ein für die Steuerung des Industrieroboters vorgesehene Rechenprogramm.

Im Falle des vorliegenden Ausführungsbeispiels handelt es sich bei dem Betriebssystem um ein so genanntes "General- Purpose" Betriebssystem. Im Falle des vorliegenden Ausführungsbeispiels läuft auf dem Steuerrechner 6 ebenfalls das Betriebssystem Windows ® Vista ® der Microsoft ® Corporati- on.

Im Falle des vorliegenden Ausführungsbeispiels ist es vorgesehen, die dem Rechenprogramm zur Steuerung des Industrieroboters zugeordneten Programmfäden (Threads) , die insbesonde- re vom Prozessor 30 in harter Echtzeit abgearbeitet werden

müssen, über den Multimedia Class Scheduler Service des Betriebssystems eine höhere Priorität zu geben, so dass der Prozessor 30 diese bevorzugt vor den restlichen Programmfäden (Threads) abarbeitet.




 
Previous Patent: CAVITY EXAMINATION DEVICE

Next Patent: WO/2009/090165