-
Die
vorliegende Offenbarung betrifft Informationssysteme.
-
Bestimmte
Systeme übertragen
Informationen mit verschiedenen Graden an Bedeutung zwischen Systemkomponenten.
Wichtigeren Informationen kann während
der Verarbeitung eine höhere
Priorität
gegeben werden. In herkömmlichen
robotergestützten
chirurgischen Systemen wird beispielsweise Steuer- und Rückkopplungssignalen
typischerweise während
der Verarbeitung eine höhere
Priorität
gegeben. Anderen Arten von Signalen, wie z.B. Routine-Systemzustandsmeldungen,
wird typischerweise während
der Verarbeitung eine niedrigere Priorität gegeben. Das System ist typischerweise
für die
Verzögerung
von Signalen mit niedriger Priorität flexibel.
-
Ein
herkömmliches
Kommunikationssystem, das in robotergestützten chirurgischen Systemen verwendet
wird, verwendet mehrere hundert Wege (z.B. Drähte), um die Steuerkonsole
eines Chirurgen mit Roboterarmen zu verbinden. Die Verwendung von
hunderten von Wegen ermöglicht
einen zweckgebundenen Weg für
jede Art von Signal, der zur Entwurfszeit auf das spezielle Signal
zugeschnitten wird. Die Verwendung von hunderten von Wegen macht
jedoch die Einrichtung und Wartung des Systems mühselig und erfordert beträchtlichen
Raum, um alle Wege zu leiten.
-
In
einem Aspekt wird ein System bereitgestellt, das einen programmierbaren
Prozessor, der wirksam ist, um Befehle auszuführen, und einen ersten Datenpuffer,
der mit dem programmierbaren Prozessor gekoppelt ist, umfasst. Der
programmierbare Prozessor überträgt Daten
mit erster Priorität
zum ersten Datenpuffer in Reaktion auf die Befehle. Der erste Datenpuffer
dient zur Verwendung mit nur den Daten mit erster Priorität. Ein zweiter
Datenpuffer ist mit dem programmierbaren Prozessor gekoppelt und der
programmierbare Prozessor überträgt Daten
mit zweiter Priorität
zum zweiten Datenpuffer in Reaktion auf die Befehle. Der zweite
Datenpuffer dient zur Verwendung mit nur den Daten mit zweiter Priorität. Das System
umfasst auch eine Datenverbindung und eine Übertragungslogik, die mit dem
ersten und dem zweiten Puffer und mit der Datenverbindung gekoppelt
ist. Die Übertragungslogik überträgt die Daten mit
erster Priorität
bevorzugt gegenüber
den Daten mit zweiter Priorität über die
Datenverbindung gemäß einem
Nachrichtenübermittlungsprotokoll.
-
Spezielle
Implementierungen können
eines oder mehrere der folgenden Merkmale umfassen. Die Daten mit
erster Priorität
können
Befehle zum Steuern der Bewegung eines Roboterarms umfassen und
die Daten mit zweiter Priorität
können
zumindest eine von nicht-kritischen Zustandinformationen und Fehlerprotokollierungsinformationen
umfassen. Ein dritter Datenpuffer kann mit dem programmierbaren Prozessor
gekoppelt sein. Der programmierbare Prozessor kann Daten mit dritter
Priorität
zum dritten Datenpuffer in Reaktion auf die Befehle übertragen
und der dritte Datenpuffer kann zur Verwendung mit nur den Daten
mit dritter Priorität
dienen. Die Daten mit erster Priorität können Daten mit hoher Priorität sein, die
Daten mit zweiter Priorität
können
Daten mit niedriger Priorität
sein und die Daten mit dritter Priorität können Daten mit mittlerer Priorität sein.
-
Das
Nachrichtenübermittlungsprotokoll
kann erfordern, dass die Übertragungslogik
die Daten mit erster Priorität
vom ersten Datenpuffer bevorzugt gegenüber den Daten mit zweiter Priorität vom zweiten Datenpuffer überträgt. Das
Nachrichtenübermittlungsprotokoll
kann erfordern, dass die Übertragungslogik
die Daten mit erster Priorität
vom ersten Datenpuffer bevorzugt gegenüber den Daten mit dritter Priorität vom dritten
Datenpuffer überträgt. Das Nachrichtenübermittlungsprotokoll
kann erfordern, dass die Übertragungslogik
die Daten mit dritter Priorität
vom dritten Datenpuffer bevorzugt gegenüber den Daten mit zweiter Priorität vom zweiten
Datenpuffer überträgt. Die Übertragung
der Daten mit erster Priorität
bevorzugt gegenüber
den Daten mit zweiter Priorität
kann die Übertragung
beliebiger verfügbarer
Daten mit erster Priorität
vor beliebigen verfügbaren
Daten mit zweiter Priorität
umfassen. Die Übertragung
der Daten mit erster Priorität
bevorzugt gegenüber
den Daten mit zweiter Priorität
kann das Zuweisen von mehr Sendeschlitzen zu den verfügbaren Daten
mit erster Priorität
als zu den verfügbaren
Daten mit zweiter Priorität
umfassen. Der programmierbare Prozessor kann die Übertragungslogik
umfassen.
-
In
einem weiteren Aspekt werden ein Verfahren und ein Computerprogrammprodukt
bereitgestellt, die das Erzeugen von Daten mit erster Priorität und Daten
mit zweiter Priorität
umfassen. Die Daten mit erster Priorität werden in einen ersten Datenpuffer
gegeben und der erste Datenpuffer dient zur Verwendung mit nur den
Daten mit erster Priorität.
Die Daten mit zweiter Priorität
werden in einen zweiten Datenpuffer gegeben und der zweite Datenpuffer dient
zur Verwendung mit nur den Daten mit zweiter Priorität. Die Daten
mit erster Priorität
und die Daten mit zweiter Priorität werden vom ersten und vom zweiten
Datenpuffer über
die Datenverbindung übertragen.
Die Daten mit erster Priorität
werden bevorzugt gegenüber
den Daten mit zweiter Priorität übertragen.
-
Spezielle
Implementierungen können
ein oder mehrere der folgenden Merkmale umfassen. Daten mit dritter
Priorität
können
erzeugt werden, wobei die Daten mit erster Priorität Daten
mit hoher Priorität
sind, die Daten mit zweiter Priorität Daten mit niedriger Priorität sind und
die Daten mit dritter Priorität
Daten mit mittlerer Priorität
sind. Die Daten mit dritter Priorität können in einen dritten Datenpuffer gegeben
werden und der dritte Datenpuffer kann zur Verwendung mit nur den
Daten mit dritter Priorität dienen.
Die Daten mit dritter Priorität
können
vom dritten Datenpuffer über
die Datenverbindung übertragen
werden. Die Daten mit erster Priorität können bevorzugt gegenüber den
Daten mit dritter Priorität übertragen
werden und die Daten mit dritter Priorität können bevorzugt gegenüber den
Daten mit zweiter Priorität übertragen
werden. Ein Nachrichtenübermittlungsprotokoll
kann identifiziert werden und das Übertragen kann vorzugsweise
das bevorzugte Übertragen
gemäß dem Nachrichtenübermittlungsprotokoll
umfassen. Das Übertragen
der Daten mit erster Priorität
bevorzugt gegenüber
den Daten mit zweiter Priorität
kann die Übertragung
beliebiger verfügbarer
Daten mit erster Priorität
vor beliebigen verfügbaren
Daten mit zweiter Priorität
umfassen. Die Übertragung
der Daten mit erster Priorität
bevorzugt gegenüber
den Daten mit zweiter Priorität
kann das Zuweisen von mehr Sendeschlitzen zu den verfügbaren Daten
mit erster Priorität
als zu den verfügbaren Daten
mit zweiter Priorität umfassen.
Die Daten mit erster Priorität
können
zeitkritische Nachrichten umfassen. Die Daten mit zweiter Priorität können zumindest
eine der nichtkritischen Zustandinformationen und Fehlerprotokollierungsinformationen
umfassen.
-
Spezielle
Ausführungsbeispiele
können
implementiert werden, um einen oder mehrere der folgenden Vorteile
zu verwirklichen. Mehrere unabhängige
Ströme
von Daten, die verschiedenen Prioritätsniveaus zugewiesen sind,
können über ein
ganzes System unter Verwendung von seriellen Punkt-Punkt-Verbindungen übertragen
werden. Ein gleiches Nachrichtenübermittlungsprotokoll
kann für mehrere
Kommunikationsverbindungen mit verschiedenen Arten und Geschwindigkeiten
im System verwendet werden.
-
Die
Details von einem oder mehreren Ausführungsbeispielen der Erfindung
sind in den zugehörigen
Zeichnungen und der nachstehenden Beschreibung dargelegt. Weitere
Merkmale, Aspekte und Vorteile der Erfindung werden aus der Beschreibung,
den Zeichnungen und den Ansprüchen
ersichtlich.
-
1A ist
ein Blockdiagramm eines Systems, das mehrere durch Verbindungen
verbundene Knoten umfasst.
-
1B ist
ein Blockdiagramm eines einzelnen Knotens.
-
1C ist
ein Ablaufplan eines Sendeprozesses, der an einem Knoten durchgeführt wird.
-
2 ist
ein Diagramm der Struktur eines Datenpakets auf Hardwareebene.
-
3 ist
ein Ablaufdiagramm einer Paketübertragung
zwischen Knoten.
-
4 ist
ein Ablaufdiagramm eines Fehlerwiederherstellungsszenarios.
-
5 ist
ein Ablaufdiagramm eines Fehlerwiederherstellungsszenarios.
-
6 ist
ein Ablaufplan eines an einem Knoten durchgeführten Prozesses.
-
7 ist
ein Diagramm der Struktur einer Nachricht.
-
8 ist
ein Diagramm der Struktur einer Nachricht.
-
Gleiche
Bezugsziffern und Bezeichnungen in den verschiedenen Zeichnungen
geben gleiche Elemente an.
-
Ein
Verfahren und eine Architektur (einschließlich Datenstrukturen) zur Übertragung
von Datennachrichten in einem System werden beschrieben, die ermöglichen,
dass Nachrichten mit verschiedenen Prioritäten über einen einzigen seriellen
Weg zwischen zwei Systemknoten übertragen
werden. Die Knoten können
beispielsweise Computer, programmierbare Prozessoren, anwenderprogrammierbare
Verknüpfungsfelder
(FPGAs) oder andere Datenverarbeitungsvorrichtungen umfassen. Die
Datennachrichten (z.B. Softwarenachrichten) können unter Verwendung einer
beliebigen geeigneten Verbindungsebene übertragen werden. In dieser
Anmeldung wird eine Implementierung beschrieben, die einen im Wesentlichen
kontinuierlichen Strom von seriellen Duplex-Daten zwischen zwei
Knoten überträgt. Die
Datennachrichten werden in ein oder mehrere Segmente unterteilt,
von denen jedes in einem Hardwareebenenpaket mit fester Länge übertragen wird.
Die Datennachrichten werden in dieser Anmeldung typischerweise einfach
als "Nachrichten" bezeichnet.
-
Die
Pakete mit fester Länge
werden kontinuierlich zwischen zwei Knoten ungeachtet dessen übertragen,
ob Nachrichtendaten zur Übertragung zur
Verfügung
stehen. Wenn keine Daten zur Übertragung
zur Verfügung
stehen, kann das Datenfeld eines Pakets mit "Füllfeld"-Daten gefüllt werden,
die am Empfangsknoten verworfen werden können. Die übertragenen Pakete umfassen
Bestätigungen
von vorher empfangenen Paketen und ein Sendeknoten überträgt ein erstes
Paket und beginnt die Übertragung
mindestens eines nachfolgenden Pakets vor dem Empfang einer Bestätigung des
ersten Pakets vom Empfangsknoten. Die Übertragung und der Empfang
von Paketen an einem Knoten sind verriegelt, wie nachstehend genauer
beschrieben wird.
-
Wie
in 1A gezeigt, können
Nachrichtendaten von einem ersten Knoten 110 zu mehreren Zielknoten – beispielsweise
einem zweiten Knoten 120, einem dritten Knoten 130 und
einem vierten Knoten 140 – durch Multiplexieren der
Daten auf einer seriellen Verbindung übertragen werden. Knoten zwischen
dem ersten Knoten 110 und einem speziellen Zielknoten können die
Daten leiten. Der erste Knoten 110 kann Daten für den zweiten
Knoten 120 über
eine erste Verbindung 125 übertragen. Der erste Knoten 110 kann
auch Daten für
den dritten Knoten 130 über
die erste Verbindung 125 zum zweiten Knoten 120 übertragen
und der zweite Knoten 120 kann die Daten über eine
zweite Verbindung 135 zum dritten Knoten 130 leiten.
Ebenso kann der erste Knoten 110 Daten für den vierten
Knoten 140 über
die erste Verbindung 125 übertragen und der zweite Knoten 120 kann
die Daten über
eine dritte Verbindung 145 zum vierten Knoten 140 leiten.
-
Die
Bezeichnung eines Zielknotens kann in einer Implementierung in den übertragenen
Nachrichtendaten gehandhabt werden. In dieser Implementierung verarbeitet
der zweite Knoten 120 typischerweise zumindest einen Teil
einer Nachricht, die vom ersten Knoten 110 gesandt wird,
bevor Hardwareebenenpakete, die Teile der Nachricht enthalten, zum
Zielknoten gesandt werden. Wenn der zweite Knoten 120 selbst
der Zielknoten ist, muss die Nachricht nicht weiter übertragen
werden.
-
In
einigen Systemen geschehen Kommunikationen häufiger zwischen dem ersten
Knoten 110 und dem dritten Knoten 130 und dem
vierten Knoten 140 als Kommunikationen zwischen dem dritten
Knoten 130 und dem vierten Knoten 140 geschehen.
In solchen Systemen kann die erste Verbindung 125 eine
Verbindung mit höherer
Geschwindigkeit als die zweite Verbindung 135 oder die
dritte Verbindung 145 sein, um eine ausreichende Kapazität für das größere Volumen
von Daten, das über
die erste Verbindung 125 läuft, bereitzustellen.
-
Die
Knoten 110, 120, 130 und 140 können einen
oder mehrere Hardware-Datenpuffer 152-164 umfassen,
die Nachrichten empfangen und die Nachrichten halten, bis die Software,
die auf dem jeweiligen Knoten oder auf einer Datenverarbeitungsvorrichtung
in Kombination mit dem jeweiligen Knoten ausgeführt wird, bereit ist, die Nachrichten
zu empfangen. Die Hardwaredatenpuffer 152-164 können auch
Nachrichten von einer Softwareanwendung empfangen, die dem jeweiligen
Knoten zugeordnet ist, und die Nachrichten halten, bis der Knoten
bereit ist, die Nachrichten zu übertragen.
-
Wie
in 1B gezeigt, umfasst eine Implementierung eines
Knotens 170 einen Nachrichtenmanager 174, eine
Sende/Empfangs-Logik 178, einen Sendepuffer 182 und
einen Empfangspuffer 184. Der Sendepuffer 182 und
der Empfangspuffer 184 sind jeweils in Abschnitte unterteilt
(wobei z.B. separate Sendepuffer 182-1, 2, 3 bzw. Empfangspuffer 184-1,
2, 3 erzeugt sind), die für
verschiedene Prioritäten
von Nachrichten festgelegt sind, wie nachstehend erläutert wird.
In einer Implementierung sind mehrere Sendepuffer 182 vorgesehen,
einer oder mehrere für
jedes Prioritätsniveau.
Für die
Zwecke der nachstehenden Erörterung
wird auf eine Implementierung Bezug genommen, die mehrere Sende- und
Empfangspuffer umfasst. Andere Konfigurationen sind möglich. Jeder
Puffer ist individuell adressierbar, so dass der Nachrichtenmanager 174 und die
Sende/Empfangs-Logik 178 unabhängig von den anderen Puffern
Bytes in einen beliebigen Puffer setzen oder Bytes aus einem beliebigen
Puffer lesen können.
-
Der
Nachrichtenmanager 174 kann eine Nachricht oder einen Teil
einer Nachricht in irgendeinen der Sendepuffer 182-1, 2,
3 setzen. In einer Implementierung setzt der Nachrichtenmanager 174 Nachrichten
mit hoher Priorität
in einen Sendepuffer 182-1 mit hoher Priorität, Nachrichten
mit mittlerer Priorität
in den Sendepuffer 182-2 mit mittlerer Priorität und Nachrichten
mit niedriger Priorität
in den Sendepuffer 182-3 mit niedriger Priorität. Obwohl
drei Prioritätsniveaus
in diesem Beispiel gezeigt sind, können weniger (z.B. 2) oder
mehr Prioritätsniveaus
vom System zugewiesen und verarbeitet werden.
-
Die
Sende/Empfangs-Logik 178 überträgt Nachrichten oder Teile von
Nachrichten vom Sendepuffer 182 über die serielle Verbindung 186 gemäß einem
Nachrichtenübermittlungsprotokoll.
Das Nachrichtenübermittlungsprotokoll
kann eine vorgeschriebene Dienstqualität für Nachrichten mit verschiedenen
Prioritätsniveaus
bereitstellen (z.B. auf der Basis dessen, welchem Puffer die Nachricht
zugewiesen ist), wobei Kommunikationskanäle zwischen den jeweiligen
Knoten erzeugt werden. In einer Implementierung besitzt jeder Kanal
ein anderes Prioritätsniveau.
Die Sende/Empfangs-Logik 178 kann automatisch einen Teil
einer Nachricht übertragen,
sobald genügend
Daten in einen Puffer geschrieben sind, um ein Hardwareebenenpaket
zu füllen.
Das heißt, die
Nachrichtenübertragung
kann durchgeführt
werden, wenn Daten verfügbar
werden, und muss nicht warten, bis eine ganze Nachricht in den Puffer
geschrieben ist.
-
Das
Nachrichtenübermittlungsprotokoll
kann implementiert werden, um eine auswählbare (z.B. vom Benutzer oder
anderweitig definiert) Dienstqualität bereitzustellen. In einer
Implementierung, wenn Nachrichten mit verschiedenen Prioritäten zur Übertragung
verfügbar
sind (z.B. Nachrichten in den Sendepuffern 182-1 und 182-2 mit
hoher und mittlerer Priorität
vorhanden sind), überträgt die Sende/Empfangs-Logik 178 eine
Nachricht mit höchster
Priorität oder
einen Teil einer Nachricht bevorzugt gegenüber anderen Nachrichten mit
niedrigerer Priorität.
Die Sende/Empfangs-Logik 178 überträgt beispielsweise eine Nachricht
vom Sendepuffer 182-1 mit hoher Priorität, bevor eine Nachricht oder
ein Teil einer Nachricht von den Sendepuffern mit mittlerer Priorität 182-2 oder
niedriger Priorität 182-3 gesandt
wird. Ebenso werden Nachrichten oder Teile von Nachrichten vom Sendepuffer 182-2 mit
mittlerer Priorität
vor Nachrichten, die im Sendepuffer 182-3 mit niedriger Priorität gespeichert
sind, übertragen.
-
In
einer weiteren Implementierung kann die Sende/Empfangs-Logik 178 ein
Nachrichtenübermittlungsprotokoll
implementieren, das Nachrichten multiplexiert. In dieser Implementierung
definiert die Sende/Empfangs-Logik 178 Schlitze zur Übertragung
zwischen den Knoten. Die Schlitze können gemäß der vorgeschriebenen Dienstqualität gefüllt werden.
Verfügbaren
Nachrichten oder Teilen von Nachrichten im Sendepuffer 182-1 mit
hoher Priorität
können
beispielsweise mehr Sendeschlitze zugewiesen werden als verfügbaren Nachrichten
oder Teilen von Nachrichten in den Sendepuffern mit mittlerer Priorität 182-2 oder
niedriger Priorität 182-3.
-
In
noch einer weiteren Implementierung kann die Sende/Empfangs-Logik 178 ein
Nachrichtenübermittlungsprotokoll
implementieren, das Nachrichten oder Teile von Nachrichten, die
im Sendepuffer 182 verfügbar
sind, in einer Round-Robin-Weise abarbeitet
(z.B. überträgt), aber
mehr Sendepuffer mit hoher Priorität (z.B. 4) sind vorgesehen
als Puffer mit mittlerer Priorität
(z.B. 2) oder Puffer mit niedriger Priorität (z.B. 1).
-
Die
Sende/Empfangs-Logik 178 empfängt auch Nachrichten und Teile
von Nachrichten von der seriellen Verbindung 186 und setzt
die Nachrichten oder Teile von Nachrichten in den entsprechenden Puffer
im Empfangspuffer 184. Die Sende/Empfangs-Logik 178 verwendet
eine Kanalangabe in den Hardwareebenenpaketen, die über die
serielle Verbindung 186 übertragen werden (nachstehend
erörtert),
um festzustellen, zu welchem Prioritätsniveau eine gegebene Nachricht
oder ein Teil davon gehört. In
einer Implementierung leitet die Sende/Empfangs-Logik 178 empfangene
Nachrichten zum Nachrichtenmanager 174 und der Empfangspuffer 184 wird
nicht verwendet. In einer alternativen Implementierung werden empfangene
Nachrichten nicht gemäß der Priorität im Empfangspuffer 184 getrennt.
-
Der
Nachrichtenmanager 174 und die Sende/Empfangs-Logik 178 können jeweils
ein Computer, ein programmierbarer Prozessor, ein FPGA, eine Maschine
oder eine andere Datenverarbeitungsvorrichtung sein. Obwohl der
Nachrichtenmanager 174 und die Sende/Empfangs-Logik 178 als
separate Komponenten dargestellt sind, können sie zu einer einzigen
Komponente kombiniert werden. Die Sende/Empfangs-Logik 178 kann
auch in separate Sendelogik- und Empfangslogikelemente unterteilt
werden.
-
Der
Sendepuffer 182 und der Empfangspuffer 184 können FIFO-Datenpuffer
sein oder können zirkulare
Puffer mit Lese- und Schreibzeigern sein. Der Sendepuffer 182 und
der Empfangspuffer 184 können jeweils an separaten Vorrichtungen
(z.B. separaten integrierten Schaltungen) implementiert werden oder
können
an Teilen einer einzigen Vorrichtung implementiert werden. In einer
Implementierung werden alle der Komponenten des Knotens 170,
einschließlich
der Puffer, in einem einzigen FPGA implementiert.
-
1C zeigt
einen Prozess 102 zur Übertragung
von Nachrichten mit verschiedenen Prioritäten. In dem Beispiel sind drei
Nachrichtenprioritäten
enthalten: Nachrichten mit hoher, mittlerer und niedriger Priorität. Als Anfangsschritt
werden Nachrichten zur Übertragung
identififiziert und typisiert (Schritt 190) (z.B. durch
eine Software, die am Nachrichtenmanager 174 in 1B ausgeführt wird).
Die Nachrichten werden gemäß dem Typ
in jeweilige Sendepuffer gesetzt (Schritt 192), Nachrichten
mit hoher Priorität
in einen Sendepuffer mit hoher Priorität, Nachrichten mit mittlerer
Priorität
in einen Sendepuffer mit mittlerer Priorität und Nachrichten mit niedriger
Priorität
in einen Sendepuffer mit niedriger Priorität. Ein Nachrichtenübermittlungsprotokoll
wird identifiziert (z.B. bestimmt die Sende/Empfangs-Logik 178 eine Dienstqualität für jeden
Typ von Nachricht (Schritt 193)). Die Nachrichten werden
dann gemäß dem identifizierten
Nachrichtenprotokoll übertragen
(z.B. durch die Sende/Empfangs-Logik 178)
(z.B. werden die Nachrichten mit hoher Priorität bevorzugt gegenüber den
Nachrichten mit mittlerer und niedriger Priorität übertragen (Schritt 194)
und die Nachrichten mit mittlerer Priorität werden bevorzugt gegenüber den
Nachrichten mit niedriger Priorität übertragen (Schritt 196)).
Mögliche
Weisen, in denen Nachrichten bevorzugt übertragen werden können, wurden vorstehend
im Zusammenhang mit der Sende/Empfangs-Logik 178 erörtert.
-
Wie
in 2 gezeigt, kann ein Paket 200 mit fester
Länge von
einer Implementierung mehrere Bytes 201-240 umfassen.
Obwohl ein 40-Byte-Paket gezeigt ist, kann das Paket mit fester
Länge andere Längen aufweisen.
In der gezeigten Implementierung sind Steuerinformationen in 8 der
40 Bytes angeordnet und Daten sind in den restlichen 32 Bytes angeordnet.
Das erste Byte 201 ist ein Synchronisationsfeld, das verwendet
werden kann, um die Bytesynchronisation an einem Knoten, der die
Pakete empfängt,
aufrechtzuerhalten. Ein zusätzliches
Synchronisationsbyte kann periodisch zu einem Paket (z.B. einmal
all 128 Pakete) hinzugefügt werden, um die Taktdrift
zwischen Knoten zu kompensieren. Das zweite Byte 202 ist
ein Bestätigungsfeld,
das angibt, ob das letzte Paket, das vom Knoten empfangen wurde,
der das Paket 200 überträgt, korrekt
empfangen wurde (z.B. eine gültige
Fehlerprüfinformation
enthielt). Das zweite Byte 202 kann auf einen Eins-Wert (z.B.
0 × AC)
gesetzt werden, um eine Bestätigung (ACK)
anzugeben, dass das letzte Paket korrekt empfangen wurde, und auf
den inversen Wert (z.B. 0 × 53)
gesetzt werden, um anzugeben, dass das letzte Paket nicht korrekt
empfangen wurde (keine Bestätigung
oder NAK). In einer Implementierung kann irgendein anderer Wert
als der Bestätigungswert
als keine Bestätigung
interpretiert werden. In dieser Implementierung ist, wenn der NAK-Wert
das Inverse des ACK-Werts ist, ein 8-Bit-Fehler erforderlich, um eine übertragene
NAK in eine ACK zu transformieren.
-
Das
dritte Byte 203 ist ein Antwortfeld, das mehrere Steuerbits
enthält,
wie z.B. ein Testmodusbit, das angibt, dass sich das System in einem
Diagnosetestmodus befindet, und ein XOFF-Bit für jeden von mehreren Nachrichtenkanälen (z.B.
Kanäle
mit niedriger, mittlerer und hoher Priorität). Die Steuerbits können auch
ein Neuübertragungsbit
umfassen, das, wenn es gesetzt ist, angibt, dass das Paket 200 eine
Neuübertragung
eines früheren
Pakets ist. Eines oder mehrere der Steuerbits können auch Fehlerbits sein,
die angeben, dass im System ein Fehler aufgetreten ist.
-
Das
vierte Byte 204 ist ein Kopffeld. Das Kopffeld kann mehrere
Unterfelder wie z.B. ein Kanalauswahl-Unterfeld und ein Befehlsunterfeld,
umfassen. Das Kanalauswahl-Unterfeld wird verwendet, um anzugeben,
auf welchem Prioritätskanal
die Daten im Paket 200 übertragen
werden. Das Befehlsunterfeld kann Befehle umfassen, um Puffer zu
spülen und
einen Nachrichtenstrom erneut zu starten. Das Befehlsunterfeld kann
Befehle, die anfordern, dass spezielle Daten über den Hardwarekanal gesandt werden,
oder Codes, um solche Daten zu identifizieren, umfassen. Das Befehlsunterfeld
kann auch verwendet werden, um das System zu synchronisieren. Am
Beginn eines Synchronisationszyklus kann beispielsweise ein Paket,
das den Synchronisationsbefehl enthält, gesandt werden, was Untersysteme
innerhalb des Systems aktiviert, die die Synchronisation (z.B. auf
innerhalb 10 Mikrosekunden) aufrechterhalten. Das fünfte Byte 205 ist
ein Sequenznummerfeld, das eine Hardwareebenenpaket-Sequenznummer enthält, die
von einem Empfangsknoten verwendet werden kann, um Übertragungsfehler
zu erfassen. Das sechste Byte 206 bis 37. Byte 237 gehören zu einem
Datenfeld, das 32 Datenbytes hält,
wie z.B, eine Nachricht oder ein Teil einer Nachricht.
-
Das
38. Byte 238 ist ein Paketende-Feld, das festlegen kann,
wie viele der Bytes im Datenfeld einer Nachricht entsprechen und
wie viele Bytes Füllbytes sind.
Das Paketende-Feld kann auch ein Nachrichtenende-Indikatorbit umfassen,
das gesetzt wird, wenn die Bytes im Datenfeld eine Nachricht beenden.
Das Nachrichtenende-Indikatorbit kann eine Unterbrechung am Empfangsknoten
auslösen.
Das 39. Byte 239 und das 40. Byte 240 sind ein
Teil eines Fehlerprüffeldes,
das in einer Implementierung einen 16-Bit-CRC-Wert (z.B. unter Verwendung
des CCITT-16-Bit-Algorithmus berechnet) enthalten kann. Wenn ein
Knoten ein Paket empfängt,
kann der Knoten das Fehlerprüffeld
verwenden, um festzustellen, ob ein Fehler aufgetreten ist, während das
Paket gesandt oder empfangen wurde.
-
Die
Struktur des Pakets 200 ermöglicht Fehlerreaktions-Logik-(FRL)
Signale, die einen Fehler in einem Knoten angeben, der in mehreren
Weisen übertragen
werden soll. FRL-Signale können
beispielsweise in Paketsteuerinformationen (z.B. in Steuerbits des
Antwortfeldes des Pakets 200) und/oder in Nachrichten übertragen
werden. Die Übertragung
von FRL-Signalen direkt in Paketsteuerinformationen ermöglicht,
dass die Fehlerinformationen sehr schnell systemweit übertragen
werden und auf einer sehr niedrigen Ebene bearbeitet werden. Ein
systemweites Fehlersignal kann ohne Softwareeingriff ausgebreitet
werden und eine Fehlerreaktionshardware kann das System in einen
sicheren Zustand setzen, wenn ein Fehlersignal empfangen wird. Sobald
das Problem, das den Fehler verursacht hat, gelöst wurde (z.B. durch den Eingriff
einer menschlichen Bedienperson), kann das Fehlersignal gelöscht werden
und das System kann in einen Betriebszustand zurückkehren. Wenn das Fehlersignal
gelöscht wird,
wird das FRL-Signal, das einen Fehler angibt, typischerweise nicht
in den Paketsteuerinformationen übertragen,
bis ein weiterer Fehler auftritt. Redundante FRL-Signale können in
Nachrichten mit hoher und mittlerer Priorität übertragen werden.
-
Die
beschriebene Hardwarepaketstruktur ermöglicht, dass Nachrichten auf
einem einzigen Kanal oder auf mehreren Kanälen, die auf einer seriellen Verbindung
multiplexiert werden, gesandt werden. Der Kanal, auf dem eine spezielle
Nachricht gesandt wird, wird durch das Kanalauswahl-Unterfeld im
Paket 200 angegeben. Zeitkritische Nachrichten können auf
dem Kanal mit hoher Priorität übertragen werden,
während
relativ unbedeutende Nachrichten auf dem Kanal mit niedriger Priorität übertragen
werden können.
-
Ein
Beispiel eines Systems, in dem die Übertragung von Nachrichten
mit verschiedenen Prioritätsniveaus
vorteilhaft ist, ist ein robotergestütztes chirurgisches System.
Ein solches System kann mehrere Roboterarme umfassen, die chirurgische
Instrumente oder Vorrichtungen (z.B. Laparoskope, Endoskope, Lichter,
Kameras und Insufflatoren) halten, von denen sich einige innerhalb
eines Patienten befinden können.
Die Roboterarme werden typischerweise von einem Chirurgen ferngesteuert,
der an einer Steuerkonsole sitzt. Kommunikationen zwischen den Steuerungen,
die der Chirurg bedient, und den Knoten, die die Roboterarme steuern,
können die
Verfahren, Systeme und Vorrichtungen, die in der vorliegenden Offenbarung
beschrieben werden, verwenden. Befehle vom Chirurgen zum Steuern
der Bewegung eines Roboterarms werden typischerweise auf einem Kanal
mit hoher Priorität übertragen,
so dass die Verzögerung
zwischen der Ausgabe eines Befehls und der resultierenden Bewegung
minimiert wird. Reaktionen vom Roboterarm (z.B. Messungen der tatsächlichen
Bewegung des Arms von Sensoren im Arm) können auch auf dem Kanal mit
hoher Priorität übertragen
werden, um eine schnelle Rückkopplung
der Reaktion des Arms auf die Befehle zu ermöglichen. Asynchrone Systemnachrichten,
wie z.B. nicht kritische Zustandsinformationen und Fehlerprotokollierungsinformationen
können
auf dem Kanal mit mittlerer oder niedriger Priorität übertragen
werden.
-
Die
XOFF-Bits im dritten Byte 203 steuern den Fluss von Daten
in den Kanälen.
Jeder Knoten kann mehrere Hardwarepuffer umfassen, die Nachrichten
empfangen, die auf einem jeweiligen der mehreren Kanäle übertragen
werden. Nachrichten mit hoher Priorität werden beispielsweise in
einem Puffer mit hoher Priorität
gespeichert und Nachrichten mit niedriger Priorität werden
in einem Puffer mit niedriger Priorität gespeichert. Wenn ein erster
Knoten, der das Paket 200 überträgt, ein XOFF-Bit im Paket 200 setzt,
befiehlt der erste Knoten einem zweiten Knoten, der das Paket 200 empfängt, die Übertragung
von Daten zum ersten Knoten auf dem jeweiligen Datenkanal zu stoppen.
Die Hardware des ersten Knotens kann automatisch ein XOFF-Bit für einen Datenkanal
setzen, beispielsweise wenn ein Puffer, in den der erste Knoten
Nachrichten von diesem Datenkanal setzt, voll wird. In einer Implementierung wird
eine Schwelle dafür,
wenn ein Knoten das XOFF-Bit für
einen gegebenen Kanal setzt, gleich der Größe des Empfangspuffers des
jeweiligen Kanals im Knoten (z.B. 512 Worte) minus 32 Worte (4 Pakete)
gesetzt. Die 32-Wort-Toleranz gibt dem Empfangsknoten Zeit, um das
XOFF-Signal mit einer Toleranz für
Fehler zu empfangen und zu verarbeiten. Andere Schwellenpegel sind
möglich.
Die Hardware des ersten Knotens kann auch das XOFF-Bit für den Datenkanal
setzen, wenn sich eine große
Anzahl (z.B. 12) von Nachrichten im Empfangspuffer befindet. Die
Hardware kann das XOFF-Bit für
den Datenkanal automatisch löschen,
sobald Pakete oder Nachrichten aus dem Puffer entfernt werden. Jeder Prioritätskanal
kann einen jeweiligen Empfangspuffer in einem Knoten aufweisen.
Da die XOFF-Bits
in jedem Paket übertragen
werden, gilt das Fehlerprüffeld für die XOFF-Bits
und schützt
gegen eine Verfälschung
der XOFF-Bits.
-
Mehrere
Kommunikationskanäle
können
in der Verbindungsebene unter Verwendung des vorstehend beschriebenen
Kanalauswahl-Unterfeldes zur Verfügung gestellt werden. Ein Hardwarekanal und
Kanäle
mit hoher, mittlerer und niedriger Priorität können beispielsweise implementiert
werden. Nachrichten können
in der Länge
variieren (z.B. zwischen 3 und 128 Worten) und können in einem oder mehreren
Paketen in Abhängigkeit
von der Länge
der Nachricht übertragen
werden. Die Systemhardware kann Nachrichten in mehrere Pakete an
einem Sendeknoten fragmentieren und die Nachrichten an einem Empfangsknoten
defragmentieren. Wenn eine Nachricht den Datenteil eines Pakets
nicht füllt,
können
Fülldaten
in den Rest des Datenteils eingefügt werden. Sende- und Empfangspuffer
für die
Nachrichten können
in der Hardware implementiert werden. Ein Knoten kann beispielsweise
Hardware-Sende und – Empfangspuffer
für jeden
Kanal (z.B. Kanäle
mit hoher, mittlerer und niedriger Priorität) umfassen. In einer Implementierung
sind die Sende- und Empfangspuffer für die Kanäle 1,5 mal eine maximale Nachrichtengröße.
-
3 zeigt
ein konzeptionelles Ablaufdiagramm für die Kommunikation zwischen
zwei Knoten unter Verwendung von Paketen wie z.B. den im Zusammenhang
mit 2 erörterten.
Pakete 301-304 werden nacheinander von einem primären Knoten
zu einem sekundären
Knoten übertragen.
Pakete 311-314 werden am sekundären Knoten
empfangen und entsprechen den Paketen 301-304,
obwohl die Pakete 311-314 verfälschte Versionen der jeweiligen Pakete 301-304 sein
können,
wenn Übertragungsfehler
aufgetreten sind. Der Empfang der Pakete 311-314 ist
aufgrund der endlichen Ausbreitungszeit der Pakete entlang einer
Verbindung relativ zur Übertragung
der Pakete 301-304 zeitlich verzögert. In dem
in 3 gezeigten Beispiel ist die Ausbreitungszeit
des Pakets geringer als die Dauer des Pakets (die Menge an Zeit,
die für
den primären
Knoten erforderlich ist, um das Paket zu übertragen).
-
Der
sekundäre
Knoten überträgt Pakete 355-358 zum
primären
Knoten. Pakete 365-368 werden am primären Knoten
nach einer Verzögerung empfangen
und entsprechen den Paketen 355-358. Das Paket 356 umfasst
ein Bestätigungsfeld,
das für das
Paket 301 gilt. Wenn das Paket 311 (das dem Paket 301 entspricht),
korrekt am sekundären
Knoten empfangen wurde, umfasst das Paket 356 eine ACK
für das
Paket 301. Wenn das Paket 311 nicht korrekt empfangen
wurde, umfasst das Paket 356 eine NAK. Das Paket 357 umfasst
ein Bestätigungsfeld,
das dem Paket 302 entspricht. Ebenso umfasst das Paket 303 ein
Bestätigungsfeld,
das angibt, ob das Paket 365 am primären Knoten korrekt empfangen
wurde oder nicht, und das Paket 304 umfasst ein Bestätigungsfeld
für das
Paket 366.
-
In
einer Implementierung beginnt der sekundäre Knoten die Übertragung
von Paketen nicht, bis ein erstes Bestätigungsfeld vom primären Knoten empfangen
wird. Der sekundäre
Knoten beginnt beispielsweise die Übertragung des Pakets 355 nicht, bis
der sekundäre
Knoten das Bestätigungsfeld
im Paket 311 empfängt.
Um die anfängliche
Synchronisation zwischen dem primären und dem sekundären Knoten
zu erleichtern, können
die zwei Knoten mehrere sequentielle Synchronisationsbytes zueinander übertragen,
bevor der primäre
Knoten das Paket 301 überträgt.
-
3 stellt
einen Fall dar, in dem sich eine Zwei-Paket "Pipeline" zwischen dem primären und dem sekundären Knoten
befindet. Das Paket 356 enthält ein Bestätigungsfeld für das Paket 301.
Wenn das Bestätigungsfeld
eine ACK enthält, überträgt der primäre Knoten
das Paket 303. Wenn jedoch das Bestätigungsfeld des Pakets 356 eine
NAK enthält, kann
der primäre
Knoten die Pakete 301 und 302 neu synchronisieren
und neu übertragen.
In dieser Implementierung werden zwei Pakete erneut übertragen, wenn
eine NAK für
das erste der zwei Pakete empfangen wird, um das System erneut zu
synchronisieren. Wenn das erste der zwei Pakete nicht korrekt empfangen
wurde, kann das zweite Paket neu übertragen werden, ohne zu prüfen, ob
das zweite Paket zum ersten Mal, zu dem es übertragen wurde, korrekt empfangen
wurde. In einer Situation, in der der Fehler im ersten Paket durch
den Verlust der Synchronisation zwischen den zwei Knoten verursacht
wurde, würde
das zweite Paket wahrscheinlich Fehler enthalten, so dass das Paket
präventiv
neu übertragen wird.
Der Knoten, der die NAK übertragen
hat, überträgt die letzten
zwei Pakete, die er vor der Übertragung
der NAK übertragen
hat, auch erneut. 3 ist als mit einer Zwei-Paket-Pipeline
zwischen dem primären
und dem sekundären
Knoten beschrieben, da ein Bestätigungsfeld
für ein
gegebenes Paket erst dann empfangen wird, nachdem ein anderes Paket übertragen
wurde. Die Umlaufzeit zwischen dem primären und dem sekundären Knoten
ist gleich der oder geringfügig
geringer als die Zeit, die erforderlich ist, um ein Paket zu übertragen – das heißt, der
primäre
Knoten beginnt den Empfang des Pakets 365, bevor der primäre Knoten
die Übertragung
des Pakets 301 beendet hat. Die Umlaufzeit hängt typischerweise
von der Ausbreitungsverzögerung über eine
Verbindung und der Verarbeitungszeit an einem Knoten ab. Längere Umlaufzeiten
(länger
in der absoluten Zeit oder in der Zeit relativ zur Paketdauer) können auch
in einem System verwendet werden und können zu einer Pipeline führen, die
tiefer als zwei Pakete ist.
-
Pakete
werden im Wesentlichen kontinuierlich zwischen dem primären und
dem sekundären Knoten
ungeachtet dessen übertragen,
ob Nachrichten zum Anordnen in den Datenfeldern der Pakete vorhanden
sind. Die Pakete werden in einer verriegelten Weise übertragen,
wie in 3 gezeigt. Die verriegelte Übertragung von Paketen mit
fester Länge
verursacht einen festen Phasenversatz zwischen den an einem Knoten
empfangenen Paketen und den vom Knoten gesandten Paketen. Der Knoten
empfängt
ein Paket von einem entfernten Knoten, das eine Bestätigung eines
fehlerfreien Empfangs eines vorher übertragenen Pakets enthält, um eine
vorbestimmte Menge an Zeit nach der Übertragung des vorher übertragenen
Pakets. Die kontinuierliche Übertragung
von verriegelten Pakten ermöglicht Kommunikationen
mit hoher Bandbreite und niedriger Wartezeit mit einer genauen Synchronisation
zwischen Knoten. Außerdem
ermöglicht
die kontinuierliche Übertragung
von Paketen, dass das System die Bitfehlerrate (BER) einer Verbindung
zwischen Knoten genau und im Wesentlichen kontinuierlich berechnet.
-
Wenn
der sekundäre
Knoten ein Paket 411 vom primären Knoten empfängt und
feststellt, dass ein Übertragungsfehler
aufgetreten ist, der verursacht hat, dass die Daten im Paket 411 verfälscht werden,
beendet der sekundäre
Knoten, wie in 4 gezeigt, die Übertragung
eines Pakets und überträgt anstelle
der Übertragung
eines nächsten
Pakets eine NAK und eine Neusynchronisationssequenz 456 zum
primären
Knoten. Die Neusynchronisationssequenz 456 wird übertragen,
um die Synchronisation zwischen dem primären und dem sekundären Knoten
wiederherzustellen, da ein Grund dafür, dass das Paket 411 verfälscht worden
sein kann, darin besteht, dass die Synchronisation zwischen dem
primären und
sekundären
Knoten abgenommen haben kann oder verloren gegangen sein kann. Die
Neusynchronisationssequenz kann aus abwechselnden Synchronisationsfeldern
und Verbindungsfeldern bestehen, wobei das Verbindungsfeld ein vorbestimmter Code
wie z.B. 0 × A3
sein kann. In einer Implementierung müssen vier Verbindungsbytes
empfangen werden, bevor ein Knoten als neu synchronisiert betrachtet
wird. Der primäre
Knoten empfängt
eine NAK und eine Neusynchronisationssequenz 466 und überträgt eine
Neusynchronisationssequenz 403. Nachdem der primäre Knoten
die Neusynchronisationssequenz 403 übertragen hat, sendet der primäre Knoten
die letzten Pakete, die vor dem Empfang der NAK übertragen wurden, erneut. Im
Fall einer N-Paket-Pipeline werden die letzten N Pakete erneut gesandt.
Sobald der sekundäre
Knoten eine ACK in einem ersten neu übertragenen Paket 414 empfängt, beginnt
der sekundäre
Knoten auch die Neuübertragung
von Paketen.
-
Wenn
der primäre
Knoten ein Paket 565 vom sekundären Knoten empfängt und
feststellt, dass ein Übertragungsfehler
aufgetreten ist, der verursacht hat, dass die Daten im Paket 565 verfälscht werden, sendet
der primäre
Knoten, wie in 5 gezeigt, eine NAK und Neusynchronisationssequenz 503 zum
sekundären
Knoten. Der sekundäre
Knoten empfängt eine
NAK und Neusynchronisationssequenz 513 und sendet eine
Neusynchronisationssequenz 557. Nachdem der primäre Knoten
die NAK und Neusynchronisationssequenz 503 übertragen
hat, sendet der primäre
Knoten die letzten Pakete, die vor dem Empfang des verfälschten
Pakets übertragen
wurden, erneut. Sobald der sekundäre Knoten eine ACK in einem
ersten erneut übertragenen
Paket 514 empfängt,
beginnt der sekundäre
Knoten auch die Neuübertragung
von Paketen.
-
Ein
Fehlerzähler
kann die Anzahl von Hardware-Übertragungsfehlern,
die in einem Knoten auftreten, verfolgen. Eine Unterbrechung kann
aktiviert werden, wenn der Zähler
eine Schwelle erreicht. In einer Implementierung kann der Fehlerzähler von
der Software im Knoten gelesen werden und die Software kann die
Unterbrechungsschwelle setzen. Eine Fehlererkennung und -korrektur
können
in diesem System auf einer sehr niedrigen Ebene bearbeitet werden
und eine Software-Ebene, die auf der beschriebenen Verbindungsebene
arbeitet, muss keine zusätzliche
Fehlererkennung und -korrektur implementieren.
-
6 stellt
einen Prozess 600 dar, der an einem Knoten in einer Implementierung
durchgeführt wird.
Der Knoten beginnt mit dem Empfang eines ersten Pakets (Schritt 610)
und empfängt
ein Bestätigungsfeld
im ersten Paket (Schritt 615). Der Knoten stellt fest,
ob das Bestätigungsfeld
eine ACK oder eine NAK ist (Schritt 620). Wenn das Bestätigungsfeld
eine NAK ist, überträgt der Knoten
eine Neusynchronisationssequenz (Schritt 625) und überträgt das Paket,
das der empfangenen NAK entspricht, zusammen mit irgendwelchen Paketen,
die nach diesem Paket übertragen
wurden, erneut (Schritt 630). Wenn das Bestätigungsfeld
eine ACK ist, beginnt der Knoten mit der Übertragung eines zweiten Pakets
(Schritt 635) und prüft
das erste Paket auf Fehler (Schritt 640), beispielsweise
durch Überprüfen eines CRC-Werts
im Paket. Wenn Fehler im ersten Paket erkannt wurden, beendet der
Knoten die Übertragung
des zweiten Pakets (Schritt 645) und überträgt eine NAK und Neusynchronisationssequenz
(Schritt 650).
-
Wenn
keine Fehler im ersten Paket erkannt wurden, stellt der Knoten fest,
ob ein Fehlerbit im ersten Paket gesetzt war (Schritt 655).
Wenn ein Fehlerbit gesetzt war, wird der Knoten in einen Fehlermodus
oder einen sicheren Zustand gesetzt (Schritt 660). Wenn
das Fehlerbit nicht gesetzt war oder sobald der Knoten in einen
Fehlermodus gesetzt wird, beendet der Knoten die Übertragung
des zweiten Pakets (Schritt 665) und beginnt mit der Übertragung
eines dritten Pakets (Schritt 670).
-
7 zeigt
eine Nachricht 700, die über die im Zusammenhang mit 2-6 beschriebene Verbindungsebene übertragen
werden kann, um zwischen Knoten im System zu kommunizieren. Die Nachricht 700 kann
auch über
andere Verbindungen übertragen
werden, wie z.B. USB, RS-232 oder IEEE 802.3 (Ethernet).
Dieselbe Nachricht 700 kann über jede Art von Verbindung,
in einen verbindungsspezifischen Wrapper eingehüllt, wie geeignet, übertragen werden.
Eine Nachricht, die beispielsweise im sechsten Byte 206 bis 37.
Byte 237 des Pakets 200 (2) übertragen
wird, ist eine Nachricht 700, die in einen Wrapper eingehüllt ist,
der nachstehend im Zusammenhang mit 8 beschrieben
wird. Da ein allgemeines Format im ganzen System für die Nachricht 700 verwendet
wird, kann die Nachricht 700 zu einem beliebigen Knoten
im System ohne Umsetzung übertragen
werden.
-
Die
Nachricht 700 umfasst mehrere Bytes 701-708.
Die ersten sechs Bytes 701-706 der Nachricht 700 bilden
einen Kopf und die letzten Bytes 707-708 bilden
einen Nachrichtenkörper.
Der Nachrichtenkörper
in den letzten Bytes 707-708 kann in der Länge variieren
(Bytes zwischen dem Byte 707 und 708 sind nicht
gezeigt). Das erste Byte 701 des Kopfs umfasst ein Prüfsummenfeld
für die
folgenden Bytes. Das zweite Byte 702 umfasst ein Befehlsfeld, das
beispielsweise einen Synchronisationsbefehl oder einen Konfigurationsprüfbefehl
umfassen kann. Ein Knoten kann auf einen von einem anderen Knoten
ausgegebenen Befehl antworten (z.B. um den Status der Befehlsausführung zu
melden) und das Befehlsfeld kann ein Antwortbit umfassen. Der antwortende
Knoten kann das Antwortbit des Befehlsfeldes in einer Antwortnachricht
setzen, die zu dem Knoten gesandt wird, der den Befehl ausgegeben hat.
Das Antwortbit gibt an, dass die Nachricht eine Antwort auf einen
Befehl ist und keinen neuen Befehl umfasst.
-
Das
dritte Byte 703 in der Nachricht 700 umfasst ein
Quellenfeld, das angibt, von welchem Knoten die Nachricht 700 übertragen
wurde. Das vierte Byte 704 umfasst ein Zielfeld, das angibt,
zu welchem Knoten (oder zu welchen Knoten) die Nachricht 700 übertragen
werden sollte. Das fünfte
Byte 705 umfasst ein Statusfeld. Ein antwortender Knoten kann
Informationen über
die Ausführung
eines Befehls im Statusfeld umfassen (die z.B. Erfolg oder Fehlschlag
angeben), wenn eine Antwortnachricht gesandt wird. Das sechste Byte 706 umfasst
ein Längenfeld,
das angibt, wie lang der Körper
der Nachricht 700 ist.
-
Wie
in 8 gezeigt, umfasst eine Nachricht 800 zur Übertragung
unter Verwendung der vorstehend beschriebenen Verbindungsebene mehrere Bytes 801-810.
Die ersten vier Bytes 801-804 bilden einen Kopf,
die letzten vier Bytes 807-810 bilden einen Abschluss
und die mittleren Bytes 805-806 bilden einen Körper, der
die Nachricht 700 (7) enthält. Das
erste Byte 801 des Kopfs umfasst ein Längenfeld, das angibt, wie lang
der Körper
der Nachricht ist. Das zweite Byte 802 des Kopfs umfasst
ein Typenfeld, das einen Typ der Nachricht angeben kann. Das dritte
Byte 803 des Kopfs umfasst ein Quellenfeld, das angibt,
von welchem Knoten die Nachricht 800 übertragen wurde. Das vierte
Byte 804 des Kopfs umfasst ein Zielfeld, das angibt, zu
welchem Knoten (oder welchen Knoten) die Nachricht 800 übertragen
werden sollte.
-
Die
mittleren Bytes 805-806 können in der Länge variieren
(Bytes zwischen dem Byte 805 und Byte 806 sind
nicht gezeigt) und enthalten die Nachricht 700 (7).
Das erste Byte 807 des Abschlusses kann ein Füllbyte sein,
das für
die zukünftige
Verwendung reserviert ist. Das zweite Byte 808 des Abschlusses
kann ein Sequenznummerfeld sein. Das dritte und das vierte Byte 809-810 des
Abschlusses kann ein Prüfsummenfeld
für den
Kopf und den Körper
der Nachricht 800 sein.
-
Das
Sequenznummerfeld im zweiten Byte 808 des Abschlusses kann
eine Sequenznummer für die
Nachricht 800 umfassen, die für den Prioritätskanal
spezifisch ist, auf dem die Nachricht 800 übertragen
wird. Das heißt,
das System kann Sequenznummern zu Nachrichten unabhängig von
den anderen Prioritätskanälen zuweisen,
die auf einem gegebenen Prioritätskanal übertragen
werden. Die Sequenznummer kann auch davon abhängen, welcher Knoten die Übertragung
der Nachricht 800 bildet und beginnt. In dieser Weise kann
jeder Knoten im System eine andere Beginnsequenznummer für jeden
Prioritätskanal
am Knoten aufweisen. Die Sequenznummer für einen gegebenen Knoten und
Prioritätskanal wird
inkrementiert, nachdem eine Nachricht erfolgreich von diesem speziellen
Knoten auf diesem speziellen Prioritätskanal übertragen wurde.
-
Das
Prüfsummenfeld
im dritten und vierten Byte 809-810 des Abschlusses
kann eine Summierung der Bytes im Kopf und im Körper sein. Das Prüfsummenfeld
kann verwendet werden, um Fehler in der Nachricht 800 zu
erkennen. Der Körper
der Nachricht 800 kann auch eine CRC-Prüfsumme für eine robustere Fehlererkennung
umfassen.
-
Wenn
das System hochgefahren wird, kann die Software in einem Hauptknoten
(z.B. an der Konsole des Chirurgen in einem robotergestützten chirurgischen
System) Knoten-IDs jedem Knoten im System zuweisen, die verwendet
werden, um den jeweiligen Knoten in den Quellen- und Zielfeldern
der Nachricht 800 zu identifizieren. Eine oder mehrere spezielle
IDs können
reserviert und verwendet werden, um anzugeben, dass eine Nachricht,
die diese spezielle ID im Zielfeld umfasst, zu mehreren Knoten gesandt
werden soll.
-
Die
Software im Hauptknoten kann die anderen Knoten im System abfragen,
um festzustellen, welche Version der Software die anderen Knoten
abarbeiten. Wenn ein Knoten im System eine unerwartete Version der
Software abarbeitet (z.B. die Version nicht mit der Version des
Hauptknotens übereinstimmt
oder nicht mit erforderlichen Versionsinformationen übereinstimmt,
die in der Haupt-Steuereinheit gespeichert
sind), kann ein Fehler ausgelöst
werden und die Knoten des Systems können in einen sicheren Zustand
gesetzt werden, bis eine Bedienperson die korrekte Version der Software
auf den Knoten lädt oder
den Knoten gegen einen anderen Knoten mit der installierten korrekten
Version der Software austauscht.
-
Wenn
ein Fehler im System auftritt, wird die Ursache des Fehlers typischerweise
in einem Fehlerprotokoll an dem Knoten, an dem der Fehler aufgetreten
ist, gespeichert. Informationen über
die Ursache des Fehlers werden typischerweise auch zum Hauptknoten übertragen,
damit sie dort ebenso protokolliert werden.
-
In
einer Implementierung kann ein Knoten einen Anschluss zur Kommunikation
unter Verwendung der vorstehend beschriebenen Verbindungsebene,
einen USB-Anschluss,
einen RS-232-Anschluss und einen Ethernet-Anschluss umfassen. Einige
oder alle der Anschlüsse
können
verwendet werden, um mit anderen Knoten zu kommunizieren, und einige
oder alle der Anschlüsse
können
verwendet werden, um eine Anlage anzuschließen, die das System testet
oder aktualisiert. Wenn die Anlage, die das System testet oder aktualisiert,
mit einem Anschluss verbunden wird, kann das System erfordern, dass
die Anlage ein Passwort für
die Sicherheit liefert.
-
Nachrichten
können
für die
Systemwartung und -aktualisierung verwendet werden. Nachrichten können beispielsweise
verwendet werden, um Softwareaktualisierungen zu einem Knoten von
einem anderen Knoten oder von einer Aktualisierungsanlage (z.B.
einem Laptop-Computer), die mit einem der Knoten gekoppelt wird,
zu übertragen.
Die Diagnose- oder Aktualisierungsanlage, die mit einem Knoten gekoppelt
wird, kann mit diesem Knoten kommunizieren und kann auch mit anderen
Knoten in dem System unter Verwendung des Knotens, mit dem die Anlage
verbunden wird, kommunizieren, um Nachrichten zum gewünschten
Knoten weiterzuleiten (z.B. durch Festlegen des gewünschten
Knotens im Zielfeld der Nachricht 800). Die Verwendung
eines allgemeinen Formats für
die Nachricht 700 im ganzen System ermöglicht, dass die Diagnose- oder Aktualisierungsanlage
mit einem beliebigen Knoten im System in einer problemlosen Weise
kommuniziert.
-
Ausführungsbeispiele
der Erfindung und alle der funktionalen Operationen, die in dieser
Patentbeschreibung beschrieben sind, können in einer digitalen elektronischen
Schaltung oder in der Computersoftware, -firmware oder – hardware,
einschließlich der
in dieser Patentbeschreibung offenbarten Strukturen und ihrer strukturellen Äquivalente,
oder in Kombinationen von einer oder mehreren von ihnen implementiert
werden. Ausführungsbeispiele
der Erfindung können
als ein oder mehrere Computerprogrammprodukte, d.h. ein oder mehrere
Module von Computerprogrammbefehlen, die auf einem maschinenlesbaren
Medium codiert sind, zur Ausführung durch
oder zum Steuern der Operation einer Datenverarbeitungsvorrichtung
implementiert werden. Das maschinenlesbare Medium kann eine maschinenlesbare
Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine
Speichervorrichtung, eine Zusammensetzung einer Sache, die ein maschinenlesbares
ausgebreitetes Signal bewirkt, oder eine Kombination von einem oder
mehreren von ihnen sein. Der Begriff "Datenverarbeitungsvorrichtung" umfasst alle Geräte, Vorrichtungen
und Maschinen zur Verarbeitung von Daten, einschließlich als
Beispiel eines programmierbaren Prozessors, eines Computers oder
mehrerer Prozessoren oder Computer. Die Vorrichtung kann zusätzlich zur
Hardware einen Code umfassen, der eine Ausführungsumgebung für das fragliche
Computerprogramm erzeugt, z.B. einen Code, der eine Prozessorfirmware,
ein Protokollprofil, ein Datenbankverwaltungssystem, ein Betriebssystem
oder eine Kombination von einem oder mehreren von ihnen bildet.
Ein ausgebreitetes Signal ist ein künstlich erzeugtes Signal, z.B.
ein von einer Maschine erzeugtes elektrisches, optisches oder elektromagnetisches
Signal, das erzeugt wird, um Informationen zur Übertragung zu einer geeigneten
Empfängervorrichtung
zu codieren.
-
Ein
Computerprogramm (auch als Programm, Software, Softwareanwendung,
Skript oder Code bekannt) kann in einer beliebigen Form von Programmiersprache
geschrieben werden, einschließlich
kompilierter oder interpretierter Sprachen, und es kann in einer
beliebigen Form entwickelt werden, einschließlich als eigenständiges Programm oder
als Modul, Komponente, Subroutine oder andere Einheit, die zur Verwendung
in einer Rechenumgebung geeignet ist. Ein Computerprogramm entspricht nicht
notwendigerweise einer Datei in einem Dateisystem. Ein Programm
kann in einem Teil einer Datei gespeichert werden, die andere Programme
oder Daten hält
(z.B. ein oder mehrere Skripts, die in einem Dokumentenauszeichnungssprachen-Dokument
gespeichert sind), in einer einzelnen Datei, die für das fragliche
Programm zweckgebunden ist, oder in mehreren koordinierten Dateien
(z.B. Dateien, die ein oder mehrere Module, Unterprogramme oder
Teile eines Codes speichern.). Ein Computerprogramm kann eingesetzt
werden, damit es auf einem Computer oder auf mehreren Computern
ausgeführt
wird, die sich an einem Ort befinden oder über mehrere Orte verteilt und
durch ein Kommunikationsnetzwerk miteinander verbunden sind.
-
Die
Prozesse und die Logikflüsse,
die in dieser Patentbeschreibung beschrieben sind, können von
einem oder mehreren programmierbaren Prozessoren durchgeführt werden,
die ein oder mehrere Computerprogramme ausführen, um Funktionen durch Verarbeiten
von Eingangsdaten und Erzeugen einer Ausgabe durchzuführen. Die
Prozesse und Logikflüsse
können
auch durch eine Speziallogikschaltung, z.B. ein FPGA (anwenderprogrammierbares Verknüpfungsfeld)
oder eine ASIC (anwendungsspezifische integrierte Schaltung), durchgeführt werden und
die Vorrichtung kann als diese implementiert werden.
-
Prozessoren,
die für
die Ausführung
eines Computerprogramms geeignet sind, umfassen beispielhaft sowohl
Universal- als auch Spezial-Mikroprozessoren und irgendeiner oder
mehrere Prozessoren irgendeiner Art eines digitalen Computers. Im Allgemeinen
empfängt
ein Prozessor Befehle und Daten von einem Festwertspeicher oder
einem Direktzugriffsspeicher oder beiden. Die wesentlichen Elemente
eines Computers sind ein Prozessor zum Durchführen von Befehlen und eine
oder mehrere Speichervorrichtungen zum Speichern von Befehlen und
Daten. Im Allgemeinen umfasst ein Computer auch eine oder mehrere
Massenspeichervorrichtungen zum Speichern von Daten, z.B. magnetische, magnetooptische
Platten oder optische Platten, oder ist wirksam gekoppelt zum Empfangen
von Daten von oder Übertragen
von Daten zu diesen oder beides. Ein Computer muss jedoch nicht
solche Vorrichtungen aufweisen. Überdies
kann ein Computer in eine andere Vorrichtung eingebettet sein, z.B.
ein Mobiltelefon, einen persönlichen
digitalen Assistenten (PDA), ein mobiles Audiowiedergabegerät, einen Empfänger eines
globalen Positionierungssystems (GPS), um nur einige zu nennen.
Maschinenlesbare Medien, die zum Speichern von Computerprogrammbefehlen
und Daten geeignet sind, umfassen alle Formen von nicht-flüchtigem
Speicher, Medien und Speichervorrichtungen, einschließlich als
Beispiel Halbleiterspeichervorrichtungen, z.B. EPROM, EEPROM und
Flash-Speichervorrichtungen;
Magnetplatten, z.B. interne Festplatten oder entnehmbare Festplatten;
magnetooptische Platten; und CD-ROM- und DVD-ROM-Platten. Der Prozessor
und der Speicher können
durch eine Speziallogikschaltung ergänzt oder in diese integriert
sein.
-
Um
einen Dialog mit dem Benutzer bereitzustellen, können Ausführungsbeispiele der Erfindung auf
einem Computer mit einer Anzeigevorrichtung, z.B. einem CRT-(Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige)
Monitor, zum Anzeigen von Informationen für den Benutzer und einer Tastatur
und einer Zeigevorrichtung, z.B. einer Maus oder einer Rollkugel,
durch die der Benutzer eine Eingabe in den Computer liefern kann,
implementiert werden. Andere Arten von Vorrichtungen können verwendet werden,
um ebenso eine Wechselwirkung mit einem Benutzer vorzusehen; beispielsweise
kann eine Rückkopplung,
die zum Benutzer geliefert wird, eine beliebige Form von sensorischer
Rückkopplung
sein, z.B. eine visuelle Rückkopplung,
eine akustische Rückkopplung
oder eine taktile Rückkopplung;
und eine Eingabe vom Benutzer kann in einer beliebigen Form empfangen
werden, einschließlich
akustischer, Sprach- oder taktiler Eingabe.
-
Obwohl
diese Patentbeschreibung viele Besonderheiten enthält, sollten
diese nicht als Begrenzungen des Schutzbereichs der Erfindung oder
dessen, was beansprucht sein kann, sondern vielmehr als Beschreibungen
von Merkmalen, die für
spezielle Ausführungsbeispiele
der Erfindung spezifisch sind, aufgefasst werden. Bestimmte Merkmale,
die in dieser Patentbeschreibung im Zusammenhang mit separaten Ausführungsbeispielen
beschrieben sind, können
auch in Kombination in einem einzigen Ausführungsbeispiel implementiert
werden. Dagegen können
verschiedene Merkmale, die im Zusammenhang mit einem einzigen Ausführungsbeispiel
beschrieben sind, auch in mehreren Ausführungsbeispielen separat oder
in einer beliebigen geeigneten Unterkombination implementiert werden.
Obwohl Merkmale vorstehend beschrieben sein können, die in bestimmten Kombinationen
wirken und sogar anfänglich
als solche beansprucht sind, können überdies
ein oder mehrere Merkmale von einer beanspruchten Kombination in
einigen Fällen
von der Kombination entfernt werden und die beanspruchte Kombination
kann auf eine Unterkombination oder Variation einer Unterkombination
gerichtet sein.
-
Obwohl
Operationen in den Zeichnungen in einer speziellen Reihenfolge dargestellt
sind, sollte dies ebenso nicht als Erfordernis verstanden werden, dass
solche Operationen in der gezeigten speziellen Reihenfolge oder
in einer sequentiellen Reihenfolge durchgeführt werden oder dass alle dargestellten Operationen
durchgeführt
werden, um erwünschte Ergebnisse
zu erreichen. Unter bestimmten Umständen können Multitasking und parallele
Verarbeitung vorteilhaft sein. Überdies
sollte die Trennung von verschiedenen Systemkomponenten in den vorstehend beschriebenen
Ausführungsbeispielen
nicht als Erfordernis für eine
solche Trennung in allen Ausführungsbeispielen
verstanden werden, und es sollte selbstverständlich sein, dass die beschriebenen
Programmkomponenten und Systeme im Allgemeinen in einem einzigen
Softwareprodukt zusammen integriert oder in mehrere Softwareprodukte
gepackt werden können.
-
Folglich
wurden spezielle Ausführungsbeispiele
der Erfindung beschrieben. Andere Ausführungsbeispiele liegen innerhalb
des Schutzbereichs der folgenden Ansprüche. Die in den Ansprüchen angeführten Handlungen
können
beispielsweise in einer anderen Reihenfolge durchgeführt werden
und dennoch erwünschte
Ergebnisse erreichen. Die vorstehend beschriebenen Verfahren, Systeme
und Vorrichtungen können
mit verschiedenen physikalischen Transportmechanismen, einschließlich Faseroptik (die
z.B. mit 160 Mb/s arbeitet), spannungsarmer Differentialsignalisierung
(die z.B, mit 122 Mb/s arbeitet), quellensynchroner serieller und
asynchroner Rückwandplatinendrähten, verwendet
werden. in einer Implementierung müssen verfälschte Pakete nicht erneut übertragen
werden, wenn die Pakete Daten enthalten, die Fehler tolerieren können. Gelegentliche
Störspitzen
in einem Video- oder Audiostrom sind beispielsweise annehmbar. Die
Fehlererkennung und Neusynchronisation können dennoch in dieser Implementierung
verwendet werden, um eine schnelle, durch die Handware implementierte
Wiederherstellung von Synchronisationsfehlern zu ermöglichen.