DE102006059378A1 - Nachrichtenübermittlung mit mehrfacher Priorität - Google Patents

Nachrichtenübermittlung mit mehrfacher Priorität Download PDF

Info

Publication number
DE102006059378A1
DE102006059378A1 DE102006059378A DE102006059378A DE102006059378A1 DE 102006059378 A1 DE102006059378 A1 DE 102006059378A1 DE 102006059378 A DE102006059378 A DE 102006059378A DE 102006059378 A DE102006059378 A DE 102006059378A DE 102006059378 A1 DE102006059378 A1 DE 102006059378A1
Authority
DE
Germany
Prior art keywords
data
priority
buffer
node
transfer
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.)
Withdrawn
Application number
DE102006059378A
Other languages
English (en)
Inventor
Michael B. Half Moon Bay Druke
Philip L. San Jose Graves
Theodore C. Portola Valley Walker
Christopher J. Mountain View Jacques
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.)
Intuitive Surgical Inc
Original Assignee
Intuitive Surgical Inc
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 Intuitive Surgical Inc filed Critical Intuitive Surgical Inc
Publication of DE102006059378A1 publication Critical patent/DE102006059378A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61BDIAGNOSIS; SURGERY; IDENTIFICATION
    • A61B34/00Computer-aided surgery; Manipulators or robots specially adapted for use in surgery
    • A61B34/30Surgical robots
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1661Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1689Teleoperation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0086Unequal error protection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/263Rate modification at the source after receiving feedback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/35Flow control; Congestion control by embedding flow control information in regular packets, e.g. piggybacking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25221Identification of messages and their relative priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
    • H04L1/0083Formatting with frames or packets; Protocol or part of protocol for error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1664Details of the supervisory signal the supervisory signal being transmitted together with payload signals; piggybacking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1671Details of the supervisory signal the supervisory signal being transmitted together with control information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Surgery (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Medical Informatics (AREA)
  • Computer Security & Cryptography (AREA)
  • Biomedical Technology (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Molecular Biology (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • Communication Control (AREA)

Abstract

Verfahren, Systeme und Computerprogrammprodukte zur Übertragung von Daten mit erster Priorität und Daten mit zweiter Priorität. Die Daten mit erster Priorität und die Daten mit zweiter Priorität werden in separaten Datenpuffern gespeichert und die Daten mit erster Priorität werden bevorzugt gegenüber den Daten mit zweiter Priorität übertragen.

Description

  • 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.

Claims (23)

  1. Robotergestütztes chirurgisches System mit: einem programmierbaren Prozessor, der zum Ausführen von Befehlen wirksam ist; einem ersten Datenpuffer, der mit dem programmierbaren Prozessor gekoppelt ist, wobei der programmierbare Prozessor wirksam ist, um Daten mit erster Priorität zum ersten Datenpuffer in Reaktion auf die Befehle zu übertragen, wobei der erste Datenpuffer zur Verwendung mit nur den Daten mit erster Priorität dient; einem zweiten Datenpuffer, der mit dem programmierbaren Prozessor gekoppelt ist, wobei der programmierbare Prozessor wirksam ist, um Daten mit zweiter Priorität zum zweiten Datenpuffer in Reaktion auf die Befehle zu übertragen, wobei der zweite Datenpuffer zur Verwendung mit nur den Daten mit zweiter Priorität dient; einer Datenverbindung; und einer Übertragungslogik, die mit dem ersten und dem zweiten Puffer und mit der Datenverbindung gekoppelt ist, wobei die Übertragungslogik wirksam ist, um die Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität über die Datenverbindung gemäß einem Nachrichtenübermittlungsprotokoll zu übertragen.
  2. Robotergestütztes chirurgisches System nach Anspruch 1, wobei: die Daten mit erster Priorität Befehle zum Steuern der Bewegung eines Roboterarms umfassen; und die Daten mit zweiter Priorität mindestens eine von nicht-kritischen Zustandsinformationen und Fehlerprotokollierungsinformationen umfassen.
  3. Robotergestütztes chirurgisches System nach Anspruch 1, welches ferner umfasst: einen dritten Datenpuffer, der mit dem programmierbaren Prozessor gekoppelt ist, wobei der programmierbare Prozessor wirksam ist, um Daten mit dritter Priorität zum dritten Datenpuffer in Reaktion auf die Befehle zu übertragen, wobei der dritte Datenpuffer zur Verwendung mit nur den Daten mit dritter Priorität dient, 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.
  4. Robotergestütztes chirurgisches System nach Anspruch 3, wobei: das Nachrichtenübermittlungsprotokoll erfordert, 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.
  5. Robotergestütztes chirurgisches System nach Anspruch 4, wobei: das Nachrichtenprotokoll ferner erfordert, 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.
  6. Robotergestütztes chirurgisches System nach Anspruch 5, wobei das Nachrichtenübermittlungsprotokoll ferner erfordert, 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.
  7. Datenverarbeitungsvorrichtung nach Anspruch 4, wobei: die Übertragung der Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität die Übertragung von irgendwelchen verfügbaren Daten mit erster Priorität vor irgendwelchen verfügbaren Daten mit zweiter Priorität umfasst.
  8. Datenverarbeitungsvorrichtung nach Anspruch 4, wobei: die Übertragung der Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität das Zuweisen von mehr Sendeschlitzen zu verfügbaren Daten mit erster Priorität als zu verfügbaren Daten mit zweiter Priorität umfasst.
  9. Datenverarbeitungsvorrichtung nach Anspruch 1, wobei der programmierbare Prozessor die Übertragungslogik umfasst.
  10. Verfahren, umfassend: Vorsehen eines robotergestützten chirurgischen Systems, das eine Vielzahl von Knoten umfasst, wobei die Vielzahl von Knoten zumindest einen Sendeknoten, der durch eine Datenverbindung mit einem Empfangsknoten verbunden ist, umfassen, und am Sendeknoten: Erzeugen von Daten mit erster Priorität und Daten mit zweiter Priorität; Setzen der Daten mit erster Priorität in einen ersten Datenpuffer, wobei der erste Datenpuffer zur Verwendung mit nur Daten mit erster Priorität dient; Setzen der Daten mit zweiter Priorität in einen zweiten Datenpuffer, wobei der zweite Datenpuffer zur Verwendung mit nur Daten mit zweiter Priorität dient; und Übertragen der Daten mit erster Priorität und der Daten mit zweiter Priorität vom ersten und vom zweiten Datenpuffer über die Datenverbindung, wobei die Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität übertragen werden.
  11. Verfahren nach Anspruch 10, welches ferner am Sendeknoten umfasst: Erzeugen von Daten mit dritter Priorität, 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; Setzen der Daten mit dritter Priorität in einen dritten Datenpuffer, wobei der dritte Datenpuffer zur Verwendung mit nur Daten mit dritter Priorität dient; und Übertragen der Daten mit dritter Priorität vom dritten Datenpuffer über die Datenverbindung, wobei die Daten mit erster Priorität bevorzugt gegenüber den Daten mit dritter Priorität übertragen werden und die Daten mit dritter Priorität bevorzugt gegenüber den Daten mit zweiter Priorität übertragen werden.
  12. Verfahren nach Anspruch 10, welches ferner am Sendeknoten umfasst: Identifizieren eines Nachrichtenübermittlungsprotokolls, wobei die bevorzugte Übertragung die bevorzugte Übertragung gemäß dem Nachrichtenübermittlungsprotokoll umfasst.
  13. Verfahren nach Anspruch 10, wobei: die Übertragung der Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität die Übertragung von irgendwelchen verfügbaren Daten mit erster Priorität vor irgendwelchen verfügbaren Daten mit zweiter Priorität umfasst.
  14. Verfahren nach Anspruch 10, wobei: die Übertragung der Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität das Zuweisen von mehr Sendeschlitzen zu verfügbaren Daten mit erster Priorität als zu verfügbaren Daten mit zweiter Priorität umfasst.
  15. Verfahren nach Anspruch 10, wobei: die Daten mit erster Priorität zeitkritische Nachrichten umfassen.
  16. Verfahren nach Anspruch 10, wobei: die Daten mit zweiter Priorität mindestens eine von nicht-kritischen Zustandsinformationen und Fehlerprotokollierungsinformationen umfassen.
  17. Computerprogrammprodukt, das real auf einem maschinenlesbaren Medium verkörpert ist, das in einem Sendeknoten eines robotergestützten chirurgischen Systems enthalten ist, wobei der Sendeknoten durch eine Datenverbindung mit einem Empfangsknoten gekoppelt ist, wobei das maschinenlesbare Medium Befehle umfasst, die wirksam sind, um zu bewirken, dass ein programmierbarer Prozessor die folgenden Operationen durchführt: Erzeugen von Daten mit erster Priorität und Daten mit zweiter Priorität; Setzen der Daten mit erster Priorität in einen ersten Datenpuffer, wobei der erste Datenpuffer zur Verwendung mit nur Daten mit erster Priorität dient; Setzen der Daten mit zweiter Priorität in einen zweiten Datenpuffer, wobei der zweite Datenpuffer zur Verwendung mit nur Daten mit zweiter Priorität dient; und Übertragen der Daten mit erster Priorität und der Daten mit zweiter Priorität vom ersten und vom zweiten Datenpuffer über dieselbe Datenverbindung, wobei die Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität übertragen werden.
  18. Computerprogrammprodukt nach Anspruch 17, welches ferner Befehle umfasst, die wirksam sind, um die folgenden Operationen durchzuführen: Erzeugen von Daten mit dritter Priorität, 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; Setzen der Daten mit dritter Priorität in einen dritten Datenpuffer, wobei der dritte Datenpuffer zur Verwendung mit nur Daten mit dritter Priorität dient; und Übertragen der Daten mit dritter Priorität vom dritten Datenpuffer über die Datenverbindung, wobei die Daten mit erster Priorität bevorzugt gegenüber den Daten mit dritter Priorität übertragen werden und die Daten mit dritter Priorität bevorzugt gegenüber den Daten mit zweiter Priorität übertragen werden.
  19. Computerprogrammprodukt nach Anspruch 17, welches ferner Befehle umfasst, die wirksam sind, um die folgenden Operationen durchzuführen: Identifizieren eines Nachrichtenübermittlungsprotokolls, wobei die bevorzugte Übertragung die bevorzugte Übertragung gemäß dem Nachrichtenübermittlungsprotokoll umfasst.
  20. Computerprogrammprodukt nach Anspruch 17, wobei: die Übertragung der Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität die Übertragung von irgendwelchen verfügbaren Daten mit erster Priorität vor irgendwelchen verfügbaren Daten mit zweiter Priorität umfasst.
  21. Computerprogrammprodukt nach Anspruch 17, wobei: die Übertragung der Daten mit erster Priorität bevorzugt gegenüber den Daten mit zweiter Priorität das Zuweisen von mehr Sendeschlitzen zu verfügbaren Daten mit erster Priorität als zu verfügbaren Daten mit zweiter Priorität umfasst.
  22. Computerprogrammprodukt nach Anspruch 17, wobei: die Daten mit erster Priorität zeitkritische Nachrichten umfassen.
  23. Computerprogrammprodukt nach Anspruch 17, wobei: die Daten mit zweiter Priorität mindestens eine von nicht-kritischen Zustandsinformationen und Fehlerprotokollierungsinformationen umfassen.
DE102006059378A 2005-12-22 2006-12-15 Nachrichtenübermittlung mit mehrfacher Priorität Withdrawn DE102006059378A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US75399105P 2005-12-22 2005-12-22
US60/753,991 2005-12-22
US11/480,282 2006-06-30
US11/480,282 US7757028B2 (en) 2005-12-22 2006-06-30 Multi-priority messaging

Publications (1)

Publication Number Publication Date
DE102006059378A1 true DE102006059378A1 (de) 2007-09-06

Family

ID=38137703

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006059378A Withdrawn DE102006059378A1 (de) 2005-12-22 2006-12-15 Nachrichtenübermittlung mit mehrfacher Priorität

Country Status (6)

Country Link
US (1) US7757028B2 (de)
EP (1) EP1963976B1 (de)
KR (1) KR101325022B1 (de)
DE (1) DE102006059378A1 (de)
FR (1) FR2895618A1 (de)
WO (1) WO2007130155A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010112327A1 (de) * 2009-04-03 2010-10-07 Continental Teves Ag & Co. Ohg Datensicherheit für die kommunikation mit gleichgestellten teilnehmern

Families Citing this family (180)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060227898A1 (en) * 2003-07-10 2006-10-12 Gibson Timothy P Radio receiver
US7756036B2 (en) * 2005-12-22 2010-07-13 Intuitive Surgical Operations, Inc. Synchronous data communication
US8054752B2 (en) * 2005-12-22 2011-11-08 Intuitive Surgical Operations, Inc. Synchronous data communication
US8006019B2 (en) * 2006-05-22 2011-08-23 Apple, Inc. Method and system for transferring stored data between a media player and an accessory
US8150933B2 (en) * 2006-09-08 2012-04-03 Research In Motion Limited Apparatus and method for delivering messages over multiple mediums
US20080084861A1 (en) * 2006-10-10 2008-04-10 Honeywell International Inc. Avionics communication system and method utilizing multi-channel radio technology and a shared data bus
US8081933B2 (en) * 2007-07-13 2011-12-20 Honeywell International Inc. Reconfigurable aircraft radio communications system
US7948945B2 (en) * 2008-01-23 2011-05-24 Honeywell International Inc. Method and apparatus for improved message delivery for higher priority nodes or messages in an industrial wireless network
US8483223B2 (en) * 2008-02-01 2013-07-09 Qualcomm Incorporated Packet transmission via multiple links in a wireless communication system
US8019338B2 (en) * 2008-05-29 2011-09-13 Honeywell International Inc. Reconfigurable aircraft communications system with integrated avionics communication router and audio management functions
US8344852B2 (en) * 2008-12-24 2013-01-01 Blackboard Connect Inc. Method and system for transmitting a plurality of notifications in a notification pool
CN101673255B (zh) * 2009-10-21 2012-07-11 威盛电子股份有限公司 通用串行总线主机控制器和通用串行总线主机控制方法
CN101692213B (zh) * 2009-10-23 2012-06-27 威盛电子股份有限公司 通用串行总线主机控制方法和通用串行总线主机控制器
TWI493351B (zh) * 2009-11-16 2015-07-21 Via Tech Inc 通用串列匯流排主機控制方法和通用串列匯流排主機控制器
DE102010020446B4 (de) * 2010-05-12 2012-12-06 Wago Verwaltungsgesellschaft Mbh Automatisierungsgerät und Verfahren zur beschleunigten Verarbeitung von selektierten Prozessdaten
JP5492750B2 (ja) * 2010-11-24 2014-05-14 株式会社日立製作所 パケット転送装置およびパケット転送方法
US8711993B2 (en) 2010-12-10 2014-04-29 Honeywell International Inc. Wideband multi-channel receiver with fixed-frequency notch filter for interference rejection
US8943236B1 (en) * 2011-06-21 2015-01-27 Netlogic Microsystems, Inc. Packet scheduling using a programmable weighted fair queuing scheduler that employs deficit round robin
GB2496681A (en) * 2011-11-21 2013-05-22 Push Technology Ltd A publish/subscribe system with time-sensitive message delivery to subscribers
US11871901B2 (en) 2012-05-20 2024-01-16 Cilag Gmbh International Method for situational awareness for surgical network or surgical network connected device capable of adjusting function based on a sensed situation or usage
US9413797B2 (en) 2013-04-23 2016-08-09 Gurulogic Microsystems Oy Data communication system and method
GB2513345B (en) * 2013-04-23 2017-07-26 Gurulogic Microsystems Oy Data communication system and method
US9454499B2 (en) 2013-06-11 2016-09-27 Intel Corporation Asynchronous communication between devices
KR102463600B1 (ko) 2013-08-09 2022-11-07 인튜어티브 서지컬 오퍼레이션즈 인코포레이티드 복수의 말단에 수용된 모터를 제어하기 위한 원격 전류 제어기를 갖는 의료 로봇 시스템
US9446517B2 (en) * 2013-10-17 2016-09-20 Intuitive Surgical Operations, Inc. Fault reaction, fault isolation, and graceful degradation in a robotic system
US9397792B2 (en) * 2013-12-06 2016-07-19 Intel Corporation Efficient link layer retry protocol utilizing implicit acknowledgements
US9325449B2 (en) 2013-12-06 2016-04-26 Intel Corporation Lane error detection and lane removal mechanism to reduce the probability of data corruption
CN105813582B (zh) 2013-12-11 2019-05-28 柯惠Lp公司 用于机器人手术系统的腕组件及钳夹组件
US9826039B2 (en) * 2014-02-04 2017-11-21 Honeywell International Inc. Configurable communication systems and methods for communication
US9628382B2 (en) 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match
US9883641B2 (en) * 2014-05-07 2018-02-06 Vivint, Inc. Sprinkler control systems and methods
CN110063791B (zh) 2014-08-13 2022-04-15 柯惠Lp公司 机器人控制的具有机械优势的夹持
US11504192B2 (en) 2014-10-30 2022-11-22 Cilag Gmbh International Method of hub communication with surgical instrument systems
CN107249498B (zh) 2015-02-19 2024-04-23 柯惠Lp公司 机器人手术系统的输入装置的重定位方法
CN107405172B (zh) 2015-03-10 2021-04-13 柯惠Lp公司 测量机器人手术系统的连接器部件的健康状况
CN107666866A (zh) 2015-06-03 2018-02-06 柯惠Lp公司 偏置器械驱动单元
US10360267B2 (en) * 2015-06-10 2019-07-23 Futurewei Technologies, Inc. Query plan and operation-aware communication buffer management
JP6761822B2 (ja) 2015-06-16 2020-09-30 コヴィディエン リミテッド パートナーシップ ロボット外科用システムトルク変換検知
JP6719487B2 (ja) 2015-06-23 2020-07-08 コヴィディエン リミテッド パートナーシップ ロボット外科手術アセンブリ
WO2017053363A1 (en) 2015-09-25 2017-03-30 Covidien Lp Robotic surgical assemblies and instrument drive connectors thereof
WO2017070275A1 (en) 2015-10-23 2017-04-27 Covidien Lp Surgical system for detecting gradual changes in perfusion
US10660714B2 (en) 2015-11-19 2020-05-26 Covidien Lp Optical force sensor for robotic surgical system
WO2017173524A1 (en) 2016-04-07 2017-10-12 Titan Medical Inc. Camera positioning method and apparatus for capturing images during a medical procedure
CA3022139A1 (en) 2016-05-26 2017-11-30 Covidien Lp Instrument drive units
JP6945560B2 (ja) 2016-05-26 2021-10-06 コヴィディエン リミテッド パートナーシップ ロボット外科手術アセンブリ
CN114504387A (zh) 2016-06-03 2022-05-17 柯惠Lp公司 用于机器人手术系统的被动轴系统
EP3463162A4 (de) 2016-06-03 2020-06-24 Covidien LP Systeme, verfahren und computerlesbare programmprodukte zur steuerung eines robotisch bereitgestellten manipulators
US11553984B2 (en) 2016-06-03 2023-01-17 Covidien Lp Robotic surgical system with an embedded imager
WO2017210499A1 (en) 2016-06-03 2017-12-07 Covidien Lp Control arm for robotic surgical systems
US10574788B2 (en) * 2016-08-23 2020-02-25 Ebay Inc. System for data transfer based on associated transfer paths
EP3582708A4 (de) 2017-02-15 2020-12-23 Covidien LP System und vorrichtung zur quetschverhinderung für medizinische roboteranwendungen
US10158431B2 (en) 2017-04-25 2018-12-18 Bae Systems Information And Electronic Systems Integration Inc. Dynamic relay assignment for jamming mitigation in wireless networks
US10237885B2 (en) 2017-05-01 2019-03-19 Bae Systems Information And Electronic Systems Integration Inc. Multiple access wireless network with low latency subnet
US11717361B2 (en) 2017-05-24 2023-08-08 Covidien Lp Electrosurgical robotic system having tool presence detection
EP3629980A4 (de) 2017-05-25 2021-03-10 Covidien LP Robotisches chirurgisches system mit automatischer führung
CN110177518B (zh) 2017-05-25 2023-01-31 柯惠Lp公司 用于在图像捕获装置的视场内检测物体的系统和方法
EP3629983B1 (de) 2017-05-25 2023-06-28 Covidien LP Robotische chirurgische systeme und abdecktücher zum abdecken von komponenten von chirurgischen robotersystemen
WO2019050829A1 (en) 2017-09-05 2019-03-14 Covidien Lp COLLISION MANAGEMENT ALGORITHMS FOR ROBOTIC SURGICAL SYSTEMS
EP3678573A4 (de) 2017-09-06 2021-06-02 Covidien LP Grenzskalierung von chirurgischen robotern
US10779901B2 (en) 2017-09-18 2020-09-22 Verb Surgical Inc. Robotic surgical system having a communication network of a ring topology and method for use therewith
US10624707B2 (en) * 2017-09-18 2020-04-21 Verb Surgical Inc. Robotic surgical system and method for communicating synchronous and asynchronous information to and from nodes of a robotic arm
US11564756B2 (en) 2017-10-30 2023-01-31 Cilag Gmbh International Method of hub communication with surgical instrument systems
US11801098B2 (en) 2017-10-30 2023-10-31 Cilag Gmbh International Method of hub communication with surgical instrument systems
US11311342B2 (en) 2017-10-30 2022-04-26 Cilag Gmbh International Method for communicating with surgical instrument systems
US11510741B2 (en) 2017-10-30 2022-11-29 Cilag Gmbh International Method for producing a surgical instrument comprising a smart electrical system
US11051836B2 (en) 2017-10-30 2021-07-06 Cilag Gmbh International Surgical clip applier comprising an empty clip cartridge lockout
US11317919B2 (en) 2017-10-30 2022-05-03 Cilag Gmbh International Clip applier comprising a clip crimping system
US11291510B2 (en) 2017-10-30 2022-04-05 Cilag Gmbh International Method of hub communication with surgical instrument systems
US11406390B2 (en) 2017-10-30 2022-08-09 Cilag Gmbh International Clip applier comprising interchangeable clip reloads
US11911045B2 (en) 2017-10-30 2024-02-27 Cllag GmbH International Method for operating a powered articulating multi-clip applier
US11832840B2 (en) 2017-12-28 2023-12-05 Cilag Gmbh International Surgical instrument having a flexible circuit
US10758310B2 (en) 2017-12-28 2020-09-01 Ethicon Llc Wireless pairing of a surgical device with another device within a sterile surgical field based on the usage and situational awareness of devices
US11666331B2 (en) 2017-12-28 2023-06-06 Cilag Gmbh International Systems for detecting proximity of surgical end effector to cancerous tissue
US11571234B2 (en) 2017-12-28 2023-02-07 Cilag Gmbh International Temperature control of ultrasonic end effector and control system therefor
US11266468B2 (en) 2017-12-28 2022-03-08 Cilag Gmbh International Cooperative utilization of data derived from secondary sources by intelligent surgical hubs
US11304763B2 (en) 2017-12-28 2022-04-19 Cilag Gmbh International Image capturing of the areas outside the abdomen to improve placement and control of a surgical device in use
US11818052B2 (en) 2017-12-28 2023-11-14 Cilag Gmbh International Surgical network determination of prioritization of communication, interaction, or processing based on system or device needs
US11864728B2 (en) 2017-12-28 2024-01-09 Cilag Gmbh International Characterization of tissue irregularities through the use of mono-chromatic light refractivity
US20190201042A1 (en) 2017-12-28 2019-07-04 Ethicon Llc Determining the state of an ultrasonic electromechanical system according to frequency shift
US11291495B2 (en) 2017-12-28 2022-04-05 Cilag Gmbh International Interruption of energy due to inadvertent capacitive coupling
US10892995B2 (en) 2017-12-28 2021-01-12 Ethicon Llc Surgical network determination of prioritization of communication, interaction, or processing based on system or device needs
US11432885B2 (en) 2017-12-28 2022-09-06 Cilag Gmbh International Sensing arrangements for robot-assisted surgical platforms
US11786251B2 (en) 2017-12-28 2023-10-17 Cilag Gmbh International Method for adaptive control schemes for surgical network control and interaction
US11464559B2 (en) 2017-12-28 2022-10-11 Cilag Gmbh International Estimating state of ultrasonic end effector and control system therefor
US11132462B2 (en) 2017-12-28 2021-09-28 Cilag Gmbh International Data stripping method to interrogate patient records and create anonymized record
US11832899B2 (en) 2017-12-28 2023-12-05 Cilag Gmbh International Surgical systems with autonomously adjustable control programs
US11903601B2 (en) 2017-12-28 2024-02-20 Cilag Gmbh International Surgical instrument comprising a plurality of drive systems
US11419667B2 (en) 2017-12-28 2022-08-23 Cilag Gmbh International Ultrasonic energy device which varies pressure applied by clamp arm to provide threshold control pressure at a cut progression location
US20190201039A1 (en) 2017-12-28 2019-07-04 Ethicon Llc Situational awareness of electrosurgical systems
US11857152B2 (en) 2017-12-28 2024-01-02 Cilag Gmbh International Surgical hub spatial awareness to determine devices in operating theater
US11253315B2 (en) 2017-12-28 2022-02-22 Cilag Gmbh International Increasing radio frequency to create pad-less monopolar loop
US11424027B2 (en) 2017-12-28 2022-08-23 Cilag Gmbh International Method for operating surgical instrument systems
US11304745B2 (en) 2017-12-28 2022-04-19 Cilag Gmbh International Surgical evacuation sensing and display
US11896322B2 (en) 2017-12-28 2024-02-13 Cilag Gmbh International Sensing the patient position and contact utilizing the mono-polar return pad electrode to provide situational awareness to the hub
US11540855B2 (en) 2017-12-28 2023-01-03 Cilag Gmbh International Controlling activation of an ultrasonic surgical instrument according to the presence of tissue
US11423007B2 (en) 2017-12-28 2022-08-23 Cilag Gmbh International Adjustment of device control programs based on stratified contextual data in addition to the data
US11529187B2 (en) 2017-12-28 2022-12-20 Cilag Gmbh International Surgical evacuation sensor arrangements
US11304720B2 (en) 2017-12-28 2022-04-19 Cilag Gmbh International Activation of energy devices
US11596291B2 (en) 2017-12-28 2023-03-07 Cilag Gmbh International Method of compressing tissue within a stapling device and simultaneously displaying of the location of the tissue within the jaws
US11324557B2 (en) 2017-12-28 2022-05-10 Cilag Gmbh International Surgical instrument with a sensing array
US11559307B2 (en) 2017-12-28 2023-01-24 Cilag Gmbh International Method of robotic hub communication, detection, and control
US11364075B2 (en) 2017-12-28 2022-06-21 Cilag Gmbh International Radio frequency energy device for delivering combined electrical signals
US11410259B2 (en) 2017-12-28 2022-08-09 Cilag Gmbh International Adaptive control program updates for surgical devices
US11559308B2 (en) 2017-12-28 2023-01-24 Cilag Gmbh International Method for smart energy device infrastructure
US11672605B2 (en) 2017-12-28 2023-06-13 Cilag Gmbh International Sterile field interactive control displays
US11896443B2 (en) 2017-12-28 2024-02-13 Cilag Gmbh International Control of a surgical system through a surgical barrier
US11317937B2 (en) 2018-03-08 2022-05-03 Cilag Gmbh International Determining the state of an ultrasonic end effector
US11576677B2 (en) 2017-12-28 2023-02-14 Cilag Gmbh International Method of hub communication, processing, display, and cloud analytics
US11678881B2 (en) 2017-12-28 2023-06-20 Cilag Gmbh International Spatial awareness of surgical hubs in operating rooms
US11389164B2 (en) 2017-12-28 2022-07-19 Cilag Gmbh International Method of using reinforced flexible circuits with multiple sensors to optimize performance of radio frequency devices
US11744604B2 (en) 2017-12-28 2023-09-05 Cilag Gmbh International Surgical instrument with a hardware-only control circuit
US11234756B2 (en) 2017-12-28 2022-02-01 Cilag Gmbh International Powered surgical tool with predefined adjustable control algorithm for controlling end effector parameter
US11446052B2 (en) 2017-12-28 2022-09-20 Cilag Gmbh International Variation of radio frequency and ultrasonic power level in cooperation with varying clamp arm pressure to achieve predefined heat flux or power applied to tissue
US11419630B2 (en) 2017-12-28 2022-08-23 Cilag Gmbh International Surgical system distributed processing
US11589888B2 (en) 2017-12-28 2023-02-28 Cilag Gmbh International Method for controlling smart energy devices
US11786245B2 (en) 2017-12-28 2023-10-17 Cilag Gmbh International Surgical systems with prioritized data transmission capabilities
US11602393B2 (en) 2017-12-28 2023-03-14 Cilag Gmbh International Surgical evacuation sensing and generator control
US11202570B2 (en) 2017-12-28 2021-12-21 Cilag Gmbh International Communication hub and storage device for storing parameters and status of a surgical device to be shared with cloud based analytics systems
US11109866B2 (en) 2017-12-28 2021-09-07 Cilag Gmbh International Method for circular stapler control algorithm adjustment based on situational awareness
US11937769B2 (en) 2017-12-28 2024-03-26 Cilag Gmbh International Method of hub communication, processing, storage and display
US11464535B2 (en) 2017-12-28 2022-10-11 Cilag Gmbh International Detection of end effector emersion in liquid
US11696760B2 (en) 2017-12-28 2023-07-11 Cilag Gmbh International Safety systems for smart powered surgical stapling
US11278281B2 (en) 2017-12-28 2022-03-22 Cilag Gmbh International Interactive surgical system
US11612444B2 (en) 2017-12-28 2023-03-28 Cilag Gmbh International Adjustment of a surgical device function based on situational awareness
US11308075B2 (en) 2017-12-28 2022-04-19 Cilag Gmbh International Surgical network, instrument, and cloud responses based on validation of received dataset and authentication of its source and integrity
US11633237B2 (en) 2017-12-28 2023-04-25 Cilag Gmbh International Usage and technique analysis of surgeon / staff performance against a baseline to optimize device utilization and performance for both current and future procedures
US11284936B2 (en) 2017-12-28 2022-03-29 Cilag Gmbh International Surgical instrument having a flexible electrode
US11166772B2 (en) 2017-12-28 2021-11-09 Cilag Gmbh International Surgical hub coordination of control and communication of operating room devices
US11304699B2 (en) 2017-12-28 2022-04-19 Cilag Gmbh International Method for adaptive control schemes for surgical network control and interaction
US20190201113A1 (en) 2017-12-28 2019-07-04 Ethicon Llc Controls for robot-assisted surgical platforms
US11659023B2 (en) 2017-12-28 2023-05-23 Cilag Gmbh International Method of hub communication
US11311306B2 (en) 2017-12-28 2022-04-26 Cilag Gmbh International Surgical systems for detecting end effector tissue distribution irregularities
AU2019205201B2 (en) 2018-01-04 2020-11-05 Covidien Lp Systems and assemblies for mounting a surgical accessory to robotic surgical systems, and providing access therethrough
CA3090594A1 (en) * 2018-02-02 2019-08-08 Covidien Lp Surgical robotic system including synchronous and asynchronous networks and a method employing the same
US11189379B2 (en) 2018-03-06 2021-11-30 Digital Surgery Limited Methods and systems for using multiple data structures to process surgical data
US20190274662A1 (en) 2018-03-08 2019-09-12 Ethicon Llc Adjustment of complex impedance to compensate for lost power in an articulating ultrasonic device
US11259830B2 (en) 2018-03-08 2022-03-01 Cilag Gmbh International Methods for controlling temperature in ultrasonic device
US11844545B2 (en) 2018-03-08 2023-12-19 Cilag Gmbh International Calcified vessel identification
WO2019173056A1 (en) 2018-03-08 2019-09-12 Covidien Lp Surgical robotic systems
US11197668B2 (en) 2018-03-28 2021-12-14 Cilag Gmbh International Surgical stapling assembly comprising a lockout and an exterior access orifice to permit artificial unlocking of the lockout
US11471156B2 (en) 2018-03-28 2022-10-18 Cilag Gmbh International Surgical stapling devices with improved rotary driven closure systems
US11259806B2 (en) 2018-03-28 2022-03-01 Cilag Gmbh International Surgical stapling devices with features for blocking advancement of a camming assembly of an incompatible cartridge installed therein
US11278280B2 (en) 2018-03-28 2022-03-22 Cilag Gmbh International Surgical instrument comprising a jaw closure lockout
US11090047B2 (en) 2018-03-28 2021-08-17 Cilag Gmbh International Surgical instrument comprising an adaptive control system
WO2019204012A1 (en) 2018-04-20 2019-10-24 Covidien Lp Compensation for observer movement in robotic surgical systems having stereoscopic displays
US10623523B2 (en) * 2018-05-18 2020-04-14 Oracle International Corporation Distributed communication and task handling to facilitate operations of application system
EP3817683A4 (de) 2018-07-03 2022-04-20 Covidien LP Systeme, verfahren und computerlesbare medien zur detektion der bildverschlechterung während chirurgischer eingriffe
US11923084B2 (en) * 2018-09-07 2024-03-05 Cilag Gmbh International First and second communication protocol arrangement for driving primary and secondary devices through a single port
US20200078071A1 (en) 2018-09-07 2020-03-12 Ethicon Llc Instrument tracking arrangement based on real time clock information
US11804679B2 (en) 2018-09-07 2023-10-31 Cilag Gmbh International Flexible hand-switch circuit
US11666368B2 (en) 2018-09-07 2023-06-06 Cilag Gmbh International Method for constructing and using a modular surgical energy system with multiple devices
US11109746B2 (en) 2018-10-10 2021-09-07 Titan Medical Inc. Instrument insertion system, method, and apparatus for performing medical procedures
GB2593644B (en) * 2018-11-14 2023-09-06 Skywave Networks Llc Communication system and method of using variable-length messages
US11586106B2 (en) 2018-12-28 2023-02-21 Titan Medical Inc. Imaging apparatus having configurable stereoscopic perspective
US11185379B2 (en) * 2019-01-10 2021-11-30 Verily Life Sciences Llc Comprehensive messaging system for robotic surgical systems
US11717355B2 (en) 2019-01-29 2023-08-08 Covidien Lp Drive mechanisms for surgical instruments such as for use in robotic surgical systems
US11576733B2 (en) 2019-02-06 2023-02-14 Covidien Lp Robotic surgical assemblies including electrosurgical instruments having articulatable wrist assemblies
US11484372B2 (en) 2019-02-15 2022-11-01 Covidien Lp Articulation mechanisms for surgical instruments such as for use in robotic surgical systems
US11517309B2 (en) 2019-02-19 2022-12-06 Cilag Gmbh International Staple cartridge retainer with retractable authentication key
US11357503B2 (en) 2019-02-19 2022-06-14 Cilag Gmbh International Staple cartridge retainers with frangible retention features and methods of using same
US11369377B2 (en) 2019-02-19 2022-06-28 Cilag Gmbh International Surgical stapling assembly with cartridge based retainer configured to unlock a firing lockout
US11317915B2 (en) 2019-02-19 2022-05-03 Cilag Gmbh International Universal cartridge based key feature that unlocks multiple lockout arrangements in different surgical staplers
US11464511B2 (en) 2019-02-19 2022-10-11 Cilag Gmbh International Surgical staple cartridges with movable authentication key arrangements
US11743665B2 (en) 2019-03-29 2023-08-29 Cilag Gmbh International Modular surgical energy system with module positional awareness sensing with time counter
US11318618B2 (en) 2019-04-05 2022-05-03 Verb Surgical Inc. Robotic surgical system and method for handling real-time and non-real-time traffic
USD964564S1 (en) 2019-06-25 2022-09-20 Cilag Gmbh International Surgical staple cartridge retainer with a closure system authentication key
USD950728S1 (en) 2019-06-25 2022-05-03 Cilag Gmbh International Surgical staple cartridge
USD952144S1 (en) 2019-06-25 2022-05-17 Cilag Gmbh International Surgical staple cartridge retainer with firing system authentication key
USD939545S1 (en) 2019-09-05 2021-12-28 Cilag Gmbh International Display panel or portion thereof with graphical user interface for energy module
USD928726S1 (en) 2019-09-05 2021-08-24 Cilag Gmbh International Energy module monopolar port
USD924139S1 (en) 2019-09-05 2021-07-06 Ethicon Llc Energy module with a backplane connector
USD928725S1 (en) 2019-09-05 2021-08-24 Cilag Gmbh International Energy module
USD963851S1 (en) 2020-07-10 2022-09-13 Covidien Lp Port apparatus
CN113300816B (zh) * 2020-07-15 2022-04-12 阿里巴巴集团控股有限公司 节点定位方法、网络传输方法、装置及设备
US11963727B2 (en) 2021-03-30 2024-04-23 Cilag Gmbh International Method for system architecture for modular energy system
US11857252B2 (en) 2021-03-30 2024-01-02 Cilag Gmbh International Bezel with light blocking features for modular energy system
US11950860B2 (en) 2021-03-30 2024-04-09 Cilag Gmbh International User interface mitigation techniques for modular energy systems
US11968776B2 (en) 2021-03-30 2024-04-23 Cilag Gmbh International Method for mechanical packaging for modular energy system
US11948226B2 (en) 2021-05-28 2024-04-02 Covidien Lp Systems and methods for clinical workspace simulation
WO2023101968A1 (en) 2021-11-30 2023-06-08 Endoquest Robotics, Inc. Steerable overtube assemblies for robotic surgical systems

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5068851A (en) 1989-08-01 1991-11-26 Digital Equipment Corporation Apparatus and method for documenting faults in computing modules
US5762458A (en) * 1996-02-20 1998-06-09 Computer Motion, Inc. Method and apparatus for performing minimally invasive cardiac procedures
EP0733965B1 (de) 1995-03-23 2001-12-05 Agfa-Gevaert N.V. Parallele Verarbeitung des Datenstroms der Seitenbeschreibungssprache
US6041345A (en) * 1996-03-08 2000-03-21 Microsoft Corporation Active stream format for holding multiple media streams
US6182120B1 (en) * 1997-09-30 2001-01-30 International Business Machines Corporation Method and system for scheduling queued messages based on queue delay and queue priority
US6035228A (en) * 1997-11-28 2000-03-07 Picker International, Inc. Frameless stereotactic arm apparatus and method of using same
US6680944B1 (en) * 1998-03-09 2004-01-20 Sony Corporation Apparatus for and method of predictive time stamping of isochronous data packets transmitted over an IEEE 1394-1995 serial bus network
US6424625B1 (en) 1998-10-28 2002-07-23 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for discarding packets in a data network having automatic repeat request
ATE278990T1 (de) * 1998-12-03 2004-10-15 Metrologic Instr Inc Automatisch aktivierter, tragbaerer laser- strichkodeabtaster mit daten- übertragungsvorrichtung
US7002988B1 (en) * 1998-12-04 2006-02-21 Tekelec Methods and systems for communicating SS7 messages over packet-based network using transport adapter layer interface
US6021129A (en) * 1999-03-08 2000-02-01 Efficient Networks, Inc. System and method for communicating information from a communications link to a host using a universal serial bus
DE19915846C1 (de) 1999-04-08 2000-08-31 Implex Hear Tech Ag Mindestens teilweise implantierbares System zur Rehabilitation einer Hörstörung
US6754223B1 (en) * 1999-08-17 2004-06-22 Conexant Systems, Inc. Integrated circuit that processes communication packets with co-processor circuitry to determine a prioritized processing order for a core processor
US6674731B1 (en) 1999-08-27 2004-01-06 Tachyon, Inc. Transmission and reception of TCP/IP data over a wireless communication channel
US7447229B2 (en) * 1999-12-16 2008-11-04 Intel Corporation Method for providing prioritized data movement between endpoints connected by multiple logical channels
US20020080719A1 (en) * 2000-12-22 2002-06-27 Stefan Parkvall Scheduling transmission of data over a transmission channel based on signal quality of a receive channel
US20040196861A1 (en) * 2001-01-12 2004-10-07 Joseph Rinchiuso Packet data transmission within a broad-band communication system
US7388872B2 (en) * 2001-04-06 2008-06-17 Montgomery Jr Charles D Dynamic communication channel allocation method and system
US6728599B2 (en) * 2001-09-07 2004-04-27 Computer Motion, Inc. Modularity system for computer assisted surgery
US20030112758A1 (en) * 2001-12-03 2003-06-19 Pang Jon Laurent Methods and systems for managing variable delays in packet transmission
JP3937855B2 (ja) * 2002-02-06 2007-06-27 日本電気株式会社 マルチリング制御方法およびそれを用いるノード並びに制御プログラム
US8010180B2 (en) * 2002-03-06 2011-08-30 Mako Surgical Corp. Haptic guidance system and method
AU2003230708A1 (en) * 2002-03-25 2003-10-13 Netli, Inc. System for fast recovery from losses for reliable data communication protocols
WO2005048086A2 (en) * 2003-11-17 2005-05-26 Roy-G-Biv Corporation Command processing systems and methods
US7302282B2 (en) * 2003-12-05 2007-11-27 Agilent Technologies, Inc. Communications system for implementation of synchronous, multichannel, galvanically isolated instrumentation devices
US6920586B1 (en) 2004-01-23 2005-07-19 Freescale Semiconductor, Inc. Real-time debug support for a DMA device and method thereof
US7440793B2 (en) 2004-07-22 2008-10-21 Sunita Chauhan Apparatus and method for removing abnormal tissue
US7742505B2 (en) * 2005-12-14 2010-06-22 Adtran, Inc. Systems and methods for enabling clock signal synchronization
US7756036B2 (en) * 2005-12-22 2010-07-13 Intuitive Surgical Operations, Inc. Synchronous data communication
US8054752B2 (en) * 2005-12-22 2011-11-08 Intuitive Surgical Operations, Inc. Synchronous data communication

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010112327A1 (de) * 2009-04-03 2010-10-07 Continental Teves Ag & Co. Ohg Datensicherheit für die kommunikation mit gleichgestellten teilnehmern
US9003020B2 (en) 2009-04-03 2015-04-07 Continental Teves Ag & Co. Ohg Data integrity for communication with coequal subscribers

Also Published As

Publication number Publication date
EP1963976B1 (de) 2015-10-21
US20070150631A1 (en) 2007-06-28
WO2007130155A3 (en) 2008-08-14
WO2007130155A2 (en) 2007-11-15
EP1963976A4 (de) 2011-12-21
KR101325022B1 (ko) 2013-11-04
US7757028B2 (en) 2010-07-13
KR20080086503A (ko) 2008-09-25
FR2895618A1 (fr) 2007-06-29
EP1963976A2 (de) 2008-09-03

Similar Documents

Publication Publication Date Title
DE102006059378A1 (de) Nachrichtenübermittlung mit mehrfacher Priorität
DE102006059376A1 (de) Synchrone Datenübertragung
DE102006059377A1 (de) Synchrone Datenübertragung
DE60111551T2 (de) Mechanismus zur vervollständigung von nachrichten im speicher
DE69735740T2 (de) Asynchrone paketvermittlung
DE69628092T2 (de) Rückquittierungsnachricht für ein Kommunikationssystem
DE60031263T2 (de) Umhüllungsverfahren für protokolldateneinheiten
DE112011100164B4 (de) Umsetzen einer geordneten und zuverlässigen Übertragung von Datenpaketen
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
DE60132735T2 (de) Fehlerkorrekturübertragungsverfahren zum Übertragen von Datenpaketen in einem Netzkommunikationssystem
DE19924922A1 (de) System und Verfahren für Nachrichtenübermittlung zwisfchen Netzwerkknoten, die durch parallele Verbindungen verbunden sind
DE10360190A1 (de) Vorrichtung für die Erfassung von Verbindungsfehlern auf der Backplane des hochverfügbaren Ethernet
DE3736550C2 (de)
WO2012028541A1 (de) Parallele programmierung und aktualisierung von beleuchtungstechnik-busteilnehmern
DE102018124173A1 (de) Verfahren und Vorrichtungen zum Erweitern von USB-3.0-Konformer Kommunikation über ein Erweiterungsmedium
DE112011105003B4 (de) Sendevorrichtung, Empfangsvorrichtung, Kommunikationsvorrichtung, Kommunikationssystem und Sendeverfahren
DE10102323A1 (de) Verfahren und Vorrichtung zur zuverlässigen Übertragung von Datenpaketen
EP1642207A1 (de) Zuordnung von stationsadressen zu kommunikationsteilnehmern in einem bussystem
DE102019106410A1 (de) Vorrichtung und Verfahren zur Datenübertragung
AT520049B1 (de) Verfahren und Vorrichtung zum sequentiellen Übertragen von Daten aus mehreren Datenquellen
DE69928606T2 (de) Verwaltungssystem für Stossbetriebdatenübertragung
EP0762696A1 (de) Lokales, nach dem asynchronen Transfermodus (ATM) arbeitendes Netzwerk zur Erzeugung von priorisierten Zellen
EP4070530B1 (de) Verfahren zum zyklischen übertragen von daten zwischen kommunikationsteilnehmern auf einem datenübertragungskanal und datenübertragungssystem
EP4160427A1 (de) Übertragung von usb-daten in einem datenstrom
DE102022200501A1 (de) Verfahren zur paketorientierten Datenkommunikation zwischen zwei Recheneinheiten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee