User manual

RP6 ROBOT SYSTEM - 4. Programmierung des RP6
Beispiel 20: I²C Bus Interface – Slave Modus
Verzeichnis: <RP6Examples>\RP6BaseExamples\Example_I2C_SLAVE\
Datei: RP6Base_I2C_SLAVE.c
Dieses Programm tut von sich aus erstmal nichts. Man muss den Roboter mit einem
Erweiterungsmodul ausstatten, welches die Kontrolle übernimmt und als I²C Mas-
ter agiert.
Es ist sehr sinnvoll, den Roboter mit weiteren Controllern auszustatten. Meist möchte
man dann auch gleich einen der Controller auf den Erweiterungsmodulen zur Steue-
rung des ganzen Roboters verwenden. Das ist deshalb sinnvoll, weil der Controller auf
der Roboterbasiseinheit schon relativ viel mit dem ACS, der Motorregelung und allem
anderen zu tun hat. Auf einem externen Controller steht noch viel mehr Rechenzeit
zur Verfügung, die auch nicht von diesen anderen Aufgaben unterbrochen wird.
Genau dafür ist dieses Programm gedacht: Alle wichtigen Funktionen des Roboters
kann man mit diesem Programm über den I²C Bus steuern. Der Controller ist als Sla-
ve Device unter einer einstellbaren Adresse ansprechbar. Die bekannten Features, wie
die automatische Geschwindigkeitsregelung kommen mit diesem Programm besonders
gut zur Geltung, da man jetzt nämlich mit einem Master Controller z.B. einfach nur
kurz das Kommando „Fahre mit <Geschwindigkeit> geradeaus“ über den Bus senden
muss und der Rest dann automatisch erledigt wird, ohne dass man sich weiter drum
kümmern müsste. Natürlich kann man diesen Vorgang auch unterbrechen, z.B. wenn
ein Sensor ein Hindernis meldet.
Im Programmcode ist eine Liste mit den gültigen Befehlen und der zugehörigen Para-
meter zu finden. Dort finden Sie auch weitere Informationen zur Ansteuerung.
Der Controller auf der Roboterbasis löst bei Bedarf automatisch ein Interrupt Signal
auf der ersten Interruptleitung (INT1) der Erweiterungsanschlüsse aus, wenn sich der
Zustand der Sensoren geändert hat, oder ein Fahrbefehl ausgeführt wurde.
Alle Sensorwerte können über eine Reihe von Registern ausgelesen werden wenn
also ein Interrupt ausgelöst wurde, kann man erst einige Statusregister auslesen und
überprüfen, welcher Sensor das Ereignis ausgelöst hat. Dann kann man anschließend
die betreffenden Register auslesen.
Alternativ kann man auch einfach alle Sensorregister in einem Rutsch auslesen. Das
kostet natürlich etwas Zeit.
Mehr Details dazu und vor allem die genauen Registerbezeichnungen finden Sie im
Quellcode des Programms.
Weitere Beispielprogramme zur Ansteuerung des Slaves werden demnächst zusam-
men mit den Erweiterungsmodulen veröffentlicht. Einige sind bereits auf der CD-ROM
zusammen mit den Beispielen für das RP6 CONTROL M32 zu finden.
- 125 -