Share this

Roboter-Host-Server-Kommunikation basierend auf dem USB-Bus

2026-02-21 11:11:18 · · #1
Der Bildungsroboter EDUROBOT-680-II ist ein fünfachsiger, mehrgelenkiger Roboter mit fünf Freiheitsgraden, der vom Robotik-Institut der Shanghai Jiao Tong Universität mit einem Weltbankkredit entwickelt wurde. Er verfügt über die grundlegenden Funktionen eines Industrieroboters, eine hohe Offenheit und eine benutzerfreundliche Oberfläche und dient primär als Lehr- und Forschungsinstrument für Universitäten und Forschungseinrichtungen. Studierende können Industrieroboter praktisch kennenlernen und bedienen, während Forschende Weiterentwicklungen durchführen können. Der Host-Computer (Hauptsteuerungsrechner) und der Slave-Computer (Bewegungssteuerung) des Bildungsroboters kommunizierten ursprünglich über einen Parallelport (LPT1) mittels SPP (Simultaneous Page Protocol). Die bidirektionale Datenübertragung wurde durch die Lesefähigkeit des LPT1-Statusregisters und die Übertragung von Daten-Nibbles realisiert. Die zeitliche Abfolge der Übertragungen wurde softwareseitig festgelegt, und Daten wurden gemäß dem Kommunikationsprotokoll des Bildungsroboters unter Berücksichtigung des Steuerworts empfangen und gesendet. USB gewinnt zunehmend an Bedeutung und ersetzt nach und nach serielle und parallele Schnittstellen in Computersystemen. Um die Leistungsfähigkeit von USB in der Echtzeitkommunikation zu untersuchen, hat der Autor die Kommunikation zwischen dem oberen und unteren Rechner des Lehrroboters auf die Verwendung eines USB-Anschlusses umgestellt. 1. Eigenschaften und Anwendungen von USB: Der Universal Serial Bus (USB) ist eine Ende 1994 von Compaq, IBM, Microsoft und anderen Unternehmen gemeinsam entwickelte Computerschnittstelle. Mittlerweile existiert USB 2.0. Aufgrund der folgenden Eigenschaften hat sich USB schnell verbreitet und seine dominante Stellung unter den Computerschnittstellen etabliert: (1) Benutzerfreundlichkeit: USB unterstützt Hot-Plugging und Plug-and-Play. (2) Skalierbarkeit: Durch den Anschluss eines USB-Hubs an einen vorhandenen Port kann die Anzahl der USB-Anschlüsse erhöht werden. An einen Hub können weitere Hubs angeschlossen werden. Theoretisch lassen sich bis zu 127 Peripheriegeräte an den USB-Bus anschließen. (3) Geschwindigkeit: USB Version 1.1 spezifiziert zwei Übertragungsraten: Low-Speed ​​und Full-Speed. Die Low-Speed-Übertragungsrate beträgt 1,5 Mbit/s, die Full-Speed-Übertragungsrate 12 Mbit/s. Dies ist nicht nur deutlich höher als die herkömmliche Übertragungsrate serieller Schnittstellen, sondern auch um ein Vielfaches schneller als die parallele. Der kürzlich eingeführte USB 2.0-Standard ermöglicht eine maximale Übertragungsrate von bis zu 480 Mbit/s. (4) Zuverlässigkeit. Die Zuverlässigkeit von USB beruht sowohl auf dem Hardware-Design als auch auf dem USB-Datenübertragungsprotokoll. Die Hardware-Spezifikationen von USB-Treibern, -Empfängern und -Kabeln eliminieren die meisten Störungen, die Datenfehler verursachen könnten. Das USB-Protokoll nutzt Fehlerprüfungs- und Datenwiederholungsmechanismen, um die Genauigkeit der Datenübertragung zu maximieren. (5) Integrierte Stromversorgung. Der USB-Bus verfügt über eine integrierte Stromversorgung, die Peripheriegeräte mit 5 V und bis zu 500 mA versorgt und damit den Strombedarf der meisten stromsparenden Peripheriegeräte deckt. [align=center] Abbildung 2: Flussdiagramm der Datenübertragung zwischen zwei Hosts über PL-2301[/align] Aufgrund dieser herausragenden Vorteile von USB bieten nicht nur einige traditionelle Peripheriegeräte USB-Schnittstellen an, sondern auch zahlreiche neue Peripheriegeräte nutzen USB als primäre oder sogar einzige Schnittstelle, beispielsweise MP3-Player und mobile Festplatten. Dank der hohen Zuverlässigkeit und ausreichend schnellen Übertragungsgeschwindigkeit wird USB zunehmend in der industriellen Echtzeitkommunikation und -steuerung eingesetzt, beispielsweise in der Kommunikation zwischen dem Teach-Pendant und der Steuerung eines Robotersystems. Auch die in diesem Artikel beschriebene Nutzung von USB-Anschlüssen zur Realisierung der Kommunikation zwischen dem Roboter-Host-Computer und dem Slave-Computer fällt in diese Kategorie. 2. Implementierung der Dual-Computer-Kommunikation über USB: Da das USB-Modell eine Host-Slave-Architektur ist, können zwei Hosts ohne Peripheriegeräte nicht direkt über den USB-Bus kommunizieren. Dies lässt sich jedoch durch den Einsatz von Peripheriecontrollern realisieren, die es den beiden Hosts ermöglichen, über ihre USB-Anschlüsse zu kommunizieren. Jeder Peripheriecontroller ist mit einem anderen Host verbunden und tauscht Daten über einen gemeinsamen Puffer aus. Cypress' EZ-Link und Prolifics PL-2301 integrieren zwei Peripheriecontroller und einen gemeinsamen Puffer auf einem einzigen Chip und dienen als Brücke für die Kommunikation zwischen zwei Hosts über den USB-Bus. Auch andere Unternehmen bieten ähnliche Steuerchips an. Der PL-2301 wird in Bildungsrobotern eingesetzt. Es handelt sich um einen Full-Speed-USB-Steuerchip, der von Prolific in Taiwan hergestellt wird. Das Blockdiagramm des PL-2301 ist in Abbildung 1 dargestellt. Der PL-2301 enthält zwei unabhängige USB-Steuereinheiten. Durch die Koordination von Handshake-Signalen tauschen sie Daten nicht-blockierend über zwei FIFO-Puffer aus. Der PL-2301 verfügt über vier Anschlüsse: einen Standard-Steueranschluss (Adresse 00H), einen Interrupt-Anschluss (Adresse 81H), einen Blockausgangsanschluss (Adresse 02H) und einen Blockeingangsanschluss (Adresse 83H). Steuerübertragungen dienen der Konfiguration des PL-2301 während der Host-Enumerationsphase und der Steuerung der Handshake-Signale des PL-2301 bei der Kommunikation zwischen zwei Hosts. Interruptübertragungen werden vom PL-2301 verwendet, um den Status der Handshake-Signale periodisch (jede Millisekunde) an die Hosts zu melden. Blockübertragungen werden für den Echtzeit-Datenaustausch zwischen den beiden Hosts eingesetzt. Blockübertragungen unterstützen die Fehlererkennung, die für Echtzeitkommunikation und -steuerung unerlässlich ist. Steuerübertragungen stehen garantiert 10 % der USB-Bus-Bandbreite zur Verfügung, Interrupt- und isochrone Übertragungen können bis zu 90 % der Bandbreite nutzen, und Blockübertragungen nutzen die verbleibende maximal verfügbare Bandbreite (bis zu 95 %). Bei geringer Busauslastung sind Blockübertragungen aufgrund ihres kleinen Headers (13 Byte) die schnellsten aller Übertragungsarten. Um eine möglichst schnelle Kommunikation zwischen den Host- und Slave-Computern des Lehrroboters zu gewährleisten und die Echtzeitanforderungen zu erfüllen, sollte der Anschluss zu vieler USB-Peripheriegeräte an den USB-Bus vermieden werden. Zusätzlich zur Beantwortung standardmäßiger USB-Anfragen kann der PL-2301 auch auf verschiedene herstellerdefinierte Anfragen reagieren. Die benutzerdefinierten Anfragen ClearQuickLinkFeature und SetQuickLinkFeature steuern die Handshake-Signale des PL-2301 bei der Kommunikation zwischen zwei Hosts. Diese Handshake-Signale sind: (1) TX_RDY, ein Signal, das anzeigt, ob der lokale USB-Port zur Datenübertragung bereit ist. (2) S_EN, ein Signal zur Aktivierung des Ruhezustands. Ist dieses Signal gesetzt, unterstützt der PL-2301 die standardmäßige USB-Ruhezustandsfunktion. (3) RESET_O, ein Reset-Signal für den Blockausgangskanal, das diesen im Fehlerfall zurücksetzt. (4) RESET_IN, ein Reset-Signal für den Blockeingangskanal, das diesen im Fehlerfall zurücksetzt. (5) TX_REQ, ein Anforderungssignal für die Blockübertragung. (6) TX_C, ein Signal, das anzeigt, dass die Blockübertragung abgeschlossen ist. (7) PEER_E, ein Signal, das dem Gegenüber mitteilt, ob der lokale Port verbunden ist. Durch die Koordination dieser Handshake-Signale können Host- und Slave-Computer bidirektional kommunizieren. Abbildung 2 zeigt ein Flussdiagramm der Datenübertragung von Host-PC A zu PC B. Diese Details auf niedriger Ebene erfordern keine Steuerung und werden vom PL-2301-Treiber verarbeitet. 3. Softwarestruktur 3.1 Softwarestruktur des Lehrroboters Die Steuerungssoftware des Lehrrobotersystems EDUROBOT-680-II umfasst eine Low-Level-Steuerungssoftware auf dem Host-Rechner und eine High-Level-Steuerungssoftware auf dem Slave-Rechner. Die Kommunikation erfolgt über einen USB-Anschluss. Die Softwarestruktur ist in Abbildung 3 dargestellt. Die High-Level-Steuerungssoftware läuft unter Windows 98 und bietet dem Benutzer eine Mensch-Maschine-Schnittstelle zur Interaktion mit dem Roboter sowie zur Datenverarbeitung und Interpolationsberechnung für komplexe Bewegungssteuerungen. Sie besteht aus vier Hauptmodulen: Mensch-Maschine-Schnittstelle, arithmetische Interpolation, Hauptsteuerung und Kommunikation. Das Kommunikationsmodul kann in Echtzeit Steuerbefehle an die untergeordnete Maschine senden und Rückmeldungen von ihr empfangen, wobei die Genauigkeit der Datenübertragung gewährleistet ist. Um USB-Unterstützung zu bieten (zur Verbesserung der Echtzeitfähigkeit und Kompaktheit des Steuerungssystems ist der nächste Schritt die Ablösung des Systems durch ein USB-fähiges Windows CE, VxWorks oder Embedded Linux), nutzt das Steuerungssystem aktuell die Windows 98-Plattform. Die Steuerungssoftware-Schnittstelle empfängt Steuerbefehle von der übergeordneten Steuerungssoftware, interpretiert und führt diese aus. Dies wird durch Multithreading realisiert. Das Modul für Aufgabenplanung und -verwaltung bildet den Hauptthread der zugrundeliegenden Steuerungssoftware. Es ist für das Abrufen, Interpretieren und Ausführen von Anweisungen aus der Befehlswarteschlange zuständig. Der Ausführungsprozess des Hauptthreads erzeugt einen Hilfsthread – den Kommunikationsthread. Dieser ruft die Ausgabefunktion des Kommunikationsmoduls auf und überwacht den USB-Anschluss. Sendet der Host-Computer einen Steuerbefehl, empfängt er diesen und speichert ihn gemäß dem Kommunikationsprotokoll des Programmierroboters in der Befehlswarteschlange. 3.2 Implementierung des Kommunikationsmoduls Der Host-Computer und die Steuerungssoftware des übergeordneten Computers verwenden denselben PL-2301-Clienttreiber, dasselbe Übertragungsmodul (von Prolific) und dasselbe Kommunikationsmodul. Der PL-2301-Clienttreiber ist ein typischer WDM-Treiber. Er verbirgt die zugrundeliegenden Hardware-Details und das USB-Protokoll, sodass die übergeordnete Software ausschließlich über die Treiberschnittstelle auf den PL-2301 zugreifen kann. Die wichtigsten Treiberschnittstellenfunktionen sind CreateFile(), WriteFile(), ReadFile() und DeviceIOControl(). Das Übertragungsmodul (Transfer.dll) ist das übergeordnete Modul des Treibers. Es realisiert die grundlegende Kommunikation zwischen den beiden Hosts über den PL-2301 durch Aufruf der Treiberschnittstellenfunktionen. Transfer.dll erzeugt drei Threads: (1) Sende-Thread. Dieser Thread reiht die Sendeanforderungen in eine Warteschlange ein und verarbeitet sie der Reihe nach. Im Fehlerfall versucht er, den Fehler zu beheben. (2) Empfangs-Thread. Dieser Thread wartet auf Meldungen vom Status-Thread. Stellt der Empfangsthread fest, dass der andere Host Daten senden möchte, empfängt er diese gemäß dem Übertragungsprotokoll. Die empfangenen Daten werden im Empfangs-FIFO-Puffer abgelegt und von der übergeordneten Software (Comm.dll) abgerufen. Im Fehlerfall wird ebenfalls versucht, den Fehler zu beheben. (3) Status-Thread. Dieser Thread überwacht die Statussignale des PL-2301. Bei jeder Statusänderung sendet er eine Nachricht an den entsprechenden Thread oder ruft eine Callback-Funktion auf, um die übergeordnete Software zu benachrichtigen. Die Transfer.dll stellt der übergeordneten Software (Comm.dll) mehrere Exportfunktionen zur Verfügung: • USB_InitService(): Diese Funktion muss vor dem Aufruf anderer Exportfunktionen in der Transfer.dll aufgerufen werden. • USB_OpenConnect(): Diese Funktion dient zum Abrufen des Handles des PL-2301. Dieses Handle wird zum Senden und Empfangen von Daten verwendet. • USB_WriteConnect(): Diese Funktion sendet die angegebenen Daten an den anderen Host. Die Funktion `USB_ReadConnect()` liest Daten aus dem Empfangs-FIFO-Puffer. Das Kommunikationsmodul (Comm.dll) sendet und empfängt Steuerbefehle für den Programmierroboter, indem es die von `Transfer.dll` bereitgestellten Ausgabefunktionen aufruft. Zur Koordination des Sendens und Empfangens von Befehlen ist ein Satz von Steuerwörtern als Handshake-Signal für die Kommunikation zwischen Host- und Slave-Computer definiert (dies ist nicht mit dem Handshake-Signal des PL-2301 verwandt). Wenn der Host-Computer Daten (Steuerbefehle oder Steuerwörter) sendet, ruft er direkt `USB_WriteConnect()` auf. Der Slave-Computer liest Daten mittels Polling, indem er wiederholt `USB_ReadConnect()` aufruft, um den USB-Anschluss zu scannen. Werden Daten gefunden, werden diese empfangen. Empfangene Befehle werden in die Befehlswarteschlange gestellt und warten darauf, vom Aufgabenverwaltungs- und Planungsthread abgerufen zu werden. Abbildung 4 zeigt ein schematisches Diagramm des Host-Computers beim Senden eines Befehls. Einige Befehle erfordern, dass der Slave-Computer einen Rückgabewert an den Host-Computer sendet. Beispielsweise erfordert der Befehl zum Auslesen des Roboterstatus, dass der Slave-Computer einen Rückgabewert an den Host-Computer sendet, und der Befehl zum Auslesen des Roboterstatus erfordert, dass der Slave-Computer den Roboterstatus an den Host-Computer zurücksendet. Der Prozess des Sendens eines Rückgabewerts durch den Slave-Computer ähnelt dem Prozess des Sendens eines Befehls durch den Host-Computer. USB, als aufstrebender Standard für Computerperipherieschnittstellen, verfügt über technische Eigenschaften, die es ihm ermöglichen, nicht nur als Schnittstelle zwischen Computern und allgemeinen Peripheriegeräten, sondern auch für Echtzeitkommunikation und -steuerung zu dienen. Dieser Artikel stellt eine neuartige, komfortable und zuverlässige Lösung für die Kommunikation zwischen einer Lehrmaschine und ihrem Host-Computer über USB vor und bietet somit eine Lösung für die Kommunikation zwischen Host-Computern in Robotern. Mit der Einführung von USB 2.0 kann die Übertragungsrate von bis zu 480 Mbit/s die hohen Echtzeitanforderungen der Steuerung industrieller Anlagen und der Echtzeitübertragung dynamischer Bilder erfüllen und legt damit eine solide Grundlage für den Einsatz von USB in einem breiteren Anwendungsfeld. [align=center] Abbildung 4: Flussdiagramm des Host-Computers beim Senden eines Steuerbefehls[/align]
Read next

Anwendung von SPS im Bereich der Stahlwalzproduktion

Dieser Artikel beschreibt den Einsatz des ABB MasterPiece200/1 SPS-Steuerungssystems in der Stabbündelungsanlage einer S...

Articles 2026-02-20