Berner Fachhochschule Technik und Informatik Fachbereich Elektro- und Kommunikationstechnik Labor für Technische Informatik Fischertechnik-Modell Roboter und Förderband © 2007, BFH-TI, WBR1 und SCE1 Dateiname: Erstellt am: Letzte Änderung: Autoren: Version: Fischertechnik_Foerderband.doc 28. April 2005 2. November 2007 Roger Weber, Erwin Stucki 2.0 Fischertechnik-Modell Inhaltsverzeichnis 1 EINFÜHRUNG ...........................................................................................................................................................3 1.1 1.2 2 EINSATZ DES MODELLS .........................................................................................................................................3 ZIEL DIESES DOKUMENTS ......................................................................................................................................3 AUFBAU DER BEARBEITUNGSSTRASSE ..........................................................................................................4 2.1 ÜBERSICHT ............................................................................................................................................................4 2.2 A-KNOTEN UND IHRE EIGENSCHAFTEN .................................................................................................................5 2.3 B-KNOTEN UND IHRE EIGENSCHAFTEN ..................................................................................................................6 2.3.1 Förderband Zulieferstrasse (B1)...................................................................................................................6 2.3.2 Wendeeinheit 1 (B2)......................................................................................................................................6 2.3.3 Fräseinheit (B3) (Milling).............................................................................................................................6 2.3.4 Bohreinheit (B4)............................................................................................................................................7 2.3.5 Wendeeinheit 2 (B5)......................................................................................................................................7 2.3.6 Finalstage B6 ................................................................................................................................................7 2.4 ANFAHRPOSITIONEN ..............................................................................................................................................8 3 AUFBAU DES CAN-NETZES ..................................................................................................................................9 4 BESCHREIBUNG DES CAN-PROTOKOLLS.......................................................................................................9 4.1 ÜBERSICHT ............................................................................................................................................................9 4.2 AUFGABEN DER EINZELNEN KNOTEN ..................................................................................................................11 4.2.1 Knoten A1 – A4 (3D-Roboter).....................................................................................................................11 4.2.2 Konten B1 (Zulieferstrasse) ........................................................................................................................11 4.2.3 Knoten B2 (Wendeeinheit 1) .......................................................................................................................11 4.2.4 Knoten B3 (Fräseinheit)..............................................................................................................................12 4.2.5 Knoten B4 (Bohreinheit) .............................................................................................................................12 4.2.6 Knoten B5 (Wendeeinheit 2) .......................................................................................................................12 4.2.7 Knoten B6 (Finalstage)...............................................................................................................................12 Seite 2 von 12 Fischertechnik-Modell 1 Einführung 1.1 Einsatz des Modells Das Fischertechnik-Modell mit einem Roboter und einem Förderband wird im Fachbereich EKT in Burgdorf für verschiedene Projektarbeiten der Technischen Informatik eingesetzt. Zur Zeit sind dies folgende Unterrichtsmodule: • • Vertiefungsmodul „Echtzeit Betriebssysteme“ Wahlmodul „8-Bit-Mikrokontroller“ Mit Hilfe des Modells sollen die Studierenden den Modulinhalt in praktischen Arbeiten umsetzen können. 1.2 Ziel dieses Dokuments In diesem Dokument wird der Aufbau des Modells und der einzelnen Knoten detailliert beschrieben. Weiter wird das Protokoll, über welches die einzelnen Knoten mit der Steuerung kommunizieren, definiert. Die Angaben in diesem Dokument dienen als Grundlage für die softwaremässige Implementation eines CAN-Knotens oder einer übergeordneten Steuerung. Seite 3 von 12 Fischertechnik-Modell 2 Aufbau der Bearbeitungsstrasse 2.1 Übersicht Ein 3-Achsen-Roboter beliefert eine Bearbeitungsstrasse mit Werkstücken. In der Bearbeitungsstrasse werden die Werkstücke gefräst und gebohrt. Nach der Bearbeitung der Werkstücke werden diese vom Roboter geholt und abgelegt. Der Roboter ist in 4 mechanische Einheiten aufgeteilt. - (A1) Greifer - (A2) Vertikalachse - (A3) Greifarm - (A4) Drehkranz A4 A3 Jede dieser Einheiten wird durch einen Mikrokontroller gesteuert. A2 A1 Abbildung 1: 3-Achsen-Roboter B1 B2 B3 Die Bearbeitungsstrasse ist in 6 mechanische Einheiten aufgeteilt. - (B1) Zulieferstrasse - (B2) Wendeeinheit 1 - (B3) Frässtrasse - (B4) Bohrstrasse - (B5) Wendeeinheit 2 - (B6) Endstrasse Jede dieser Einheiten wird durch einen Mikrokontroller gesteuert. B4 B6 B5 Abbildung 2: Bearbeitungsstrasse Seite 4 von 12 Fischertechnik-Modell 2.2 A-Knoten und ihre Eigenschaften Die A-Knoten sind in der Anzahl und Art ihrer Sensoren und Aktoren gleich. Jeder Knoten muss einen Motor Steuern und zwei Schalter überwachen. Dabei dient jeweils ein Schalter als Endschalter und einer zur Wegmessung Greifarm Endschalter Motor Vertikalachse Endschalter Schalter Wegmessung Schalter Wegmessung Motor Motor Endschalter Motor Endschalter Schalter Wegmessung Greifer Schalter Wegmessung Drehkranz Abbildung 3: 3D-Roboter Die folgende Tabelle zeigt die Beschaltung der CAN-A-Knoten auf den Mikrokontroller-Boards: Tabelle 1: A-Knoten CPU-Port Bezeichnung Knoten A1 – A4 P1.1 P1.2 PWM Motor A PWM Motor B Antrieb - P1.4 Input Sensor 3 - P3.0 / 3.1 RS232 Interface D-Sub-Buchse P3.2 P3.3 Input Sensor 2 Input Sensor 1 End Switch Positioning Switch P4.0 Taster T1 Taster T1 P4.1 Taster T2 Taster T2 P4.2 Enable Motor A Enable “Antrieb” P4.3 Enable Motor B - P4.4 Direction Motor A P4.5 Direction Motor B Direction “Antrieb” ( P4_5 = 0 // to zerro ) - P4.6 / 4.7 CAN Interface CAN Interface P5 LED 1 – 8 LED 1 – 8 Die Endschalter werden verwendet um die Achsen und den Greifer zu nullen. Ist ein Enschalter betätigt, so befindet sich eine Achse in der Nullposition respektive der Greifer ist offen. Für die Wegmessung wird jeweils ein weiterer Schalter verwendet. Durch das Zählen der Betätigungen kann die Position der Achsen oder des Greifers bestimmt werden. Die anzufahrenden Achspositionen sind in Abbildung 10 angegeben. Der Greifer ist geschlossen, wenn Position 18 erreicht ist. Seite 5 von 12 Fischertechnik-Modell 2.3 B-Knoten und ihre Eigenschaften 2.3.1 Förderband Zulieferstrasse (B1) Die Zulieferstrasse verfügt über einen Motor (M1) und zwei Lichtschranken L1 und L2. L1 L2 M1 Abbildung 4: Zulieferstrasse B1 CPU-Port Bezeichnung Knoten B1 P1.1 P1.2 PWM Motor A PWM Motor B Förderband P1.4 Input Sensor 3 - P3.0 / 3.1 RS232 Interface D-Sub-Buchse P3.2 Input Sensor 2 P3.3 Input Sensor 1 P4.0 Taster T1 Lichtschranke 2 (bei Wendestation) Lichtschranke 1 (Anfang Förderband) Taster T1 P4.1 P4.2 Taster T2 Enable Motor A Taster T2 - P4.3 Enable Motor B Enable “Förderband” P4.4 Direction Motor A - P4.5 Direction Motor B P4.6 / 4.7 P5 CAN Interface LED 1 – 8 Transportrichtung ( P4_5 = 0 // forward ) CAN Interface LED 1 – 8 2.3.2 Wendeeinheit 1 (B2) Die Wendeeinheit verfügt über einen Motor (M1) und zwei Endschalter S1 und S2. S1 M1 S2 Abbildung 5: Wendeeinheit B2 CPU-Port Bezeichnung Knoten B2 P1.1 P1.2 PWM Motor A PWM Motor B Motor M1 P1.4 Input Sensor 3 - P3.0 / 3.1 RS232 Interface D-Sub-Buchse P3.2 Input Sensor 2 Schalter S2 P3.3 P4.0 Input Sensor 1 Taster T1 Schalter S1 Taster T1 P4.1 Taster T2 Taster T2 P4.2 Enable Motor 1 - P4.3 Enable Motor 2 Enable “Motor M1” P4.4 Direction Motor A - P4.5 Direction Motor B P4.6 / 4.7 CAN Interface Transportrichtung ( P4_5 = 0 // forward ) CAN Interface P5 LED 1 – 8 LED 1 – 8 2.3.3 Fräseinheit (B3) (Milling) Die Fräseinheit verfügt über zwei Motoren (M1 und M2) und eine Lichtschranke L1. M2 M1 L1 Abbildung 6: Fräseinheit B3 CPU-Port Bezeichnung Knoten B3 P1.1 PWM Motor A Förderband (M2) P1.2 PWM Motor B Fräser (M1) P1.4 Input Sensor 3 - P3.0 / 3.1 P3.2 RS232 Interface Input Sensor 2 D-Sub-Buchse - P3.3 Input Sensor 1 Lichtschranke 1 P4.0 Taster T1 Taster T1 P4.1 Taster T2 Taster T2 P4.2 Enable Motor A Enable “Förderband” P4.3 P4.4 Enable Motor B Direction Motor A P4.5 Direction Motor B P4.6 / 4.7 P5 CAN Interface LED 1 – 8 Enable “Milling-Machine” Transportrichtung ( P4_4 = 0 // forward ) Transportrichtung ( P4_5 = 0 // forward ) CAN Interface LED 1 – 8 Seite 6 von 12 Fischertechnik-Modell 2.3.4 Bohreinheit (B4) Die Bohreinheit verfügt über zwei Motoren (M1 und M2) und eine Lichtschranke L1. M2 M1 L1 Abbildung 7: Bohreinheit B4 CPU-Port Bezeichnung Knoten B4 P1.1 P1.2 PWM Motor A PWM Motor B Förderband (M1) Bohrer (M2) P1.4 Input Sensor 3 - P3.0 / 3.1 RS232 Interface D-Sub-Buchse P3.2 P3.3 Input Sensor 2 Input Sensor 1 Lichtschranke 1 P4.0 Taster T1 Taster T1 P4.1 Taster T2 Taster T2 P4.2 Enable Motor A Enable “Förderband” P4.3 P4.4 Enable Motor B Direction Motor A P4.5 Direction Motor B P4.6 / 4.7 CAN Interface Enable “Bohrer” Transportrichtung ( P4_4 = 0 // forward ) Transportrichtung ( P4_5 = 0 // forward ) CAN Interface P5 LED 1 – 8 LED 1 – 8 2.3.5 Wendeeinheit 2 (B5) Die Wendeeinheit verfügt über einen Motor (M1) und zwei Endschalter S1 und S2. M1 S2 S1 CPU-Port Bezeichnung Knoten B5 P1.1 P1.2 PWM Motor A PWM Motor B Motor M1 P1.4 Input Sensor 3 - P3.0 / 3.1 RS232 Interface D-Sub-Buchse P3.2 P3.3 Input Sensor 2 Input Sensor 1 Schalter S2 Schalter S1 P4.0 Taster T1 Taster T1 P4.1 Taster T2 Taster T2 P4.2 Enable Motor 1 - P4.3 P4.4 Enable Motor 2 Direction Motor A Enable “Motor M1” - P4.5 Direction Motor B P4.6 / 4.7 CAN Interface Transportrichtung ( P4_5 = 0 // forward ) CAN Interface P5 LED 1 – 8 LED 1 – 8 Abbildung 8: Wendeeinheit B5 2.3.6 Finalstage B6 Die Finalstage verfügt über einen Motor (M1) und eine Lichtschranke L1. L1 M1 CPU-Port Bezeichnung Knoten B6 P1.1 PWM Motor A - P1.2 PWM Motor B Förderband P1.4 P3.0 / 3.1 Input Sensor 3 RS232 Interface D-Sub-Buchse P3.2 Input Sensor 2 - P3.3 Input Sensor 1 Lichtschranke 1 P4.0 Taster T1 Taster T1 P4.1 P4.2 Taster T2 Enable Motor A Taster T2 - P4.3 Enable Motor B Enable “Förderband” P4.4 Direction Motor A - P4.5 Direction Motor B P4.6 / 4.7 P5 CAN Interface LED 1 – 8 Transportrichtung ( P4_5 = 0 // forward ) CAN Interface LED 1 – 8 Abbildung 9: Finalstage B6 Seite 7 von 12 Fischertechnik-Modell 2.4 Anfahrpositionen Die Anfahrpositionen sind absolut zum jeweiligen Nullpunkt des Aktors (Vertikal, Greifarm, Drehkranz) angegeben. Der Nullpunkt eines Aktors ist sein Endschalter. Vertikal: 0x19 Greifarm: 0x49 Drehkranz: 0x09 Vertikal: 0x42 Greifarm: 0x2A Drehkranz: 0x1E Vertikal: 0x6C Greifarm: 0x06 Drehkranz: 0x14 Vertikal: 0x42 Greifarm: 0x04 Drehkranz: 0x84 Vertikal: 0x1A Greifarm: 0x48 Drehkranz: 0x8D Vertikal: 0x4D Greifarm: 0x44 Drehkranz: 0x35 Vertikal: 0x4C Greifarm: 0x3E Drehkranz: 0x60 Vertikal: 0x69 Greifarm: 0x45 Drehkranz: 0x79 Abbildung 10: Anfahrpositionen Seite 8 von 12 Fischertechnik-Modell 3 Aufbau des CAN-Netzes Alle Knoten des Roboters, der Bearbeitungsstrasse sowie die Steuerung (CARME-Kit) sind über CAN miteinander vernetzt. Der Aufbau sieht schematisch wie folgt aus: Knoten A1 CAN Knoten A4 Knoten B1 Knoten B6 CAN CAN CAN CAN CAN Steuerung CARME + µC/OS CAN-Monitor Abbildung 11: Aufbau des CAN-Netzes Mit Hilfe eines CAN-Monitors kann der Datenverkehr auf dem Bus überwacht werden. Dieser Monitor erlaubt es auch, Meldungen zu Testzwecken zu verschicken. 4 Beschreibung des CAN-Protokolls 4.1 Übersicht Die Steuerung kann durch senden von definierten Kommunikationsobjekten: • die Zustände der Knoten abfragen • die Knoten Aufträge ausführen lassen Um die Kommunikation möglichst einfach zu gestalten wird ein proprietäres Protokoll eingesetzt: Für jeden Knoten existieren folgende Kommunikationsobjekte: Command Wird ein Commandobjekt empfangen, so wird ein vom Knoten abhängiger Auftrag ausgeführt. Status Request Der Knoten schickt auf diesen Request ein Status Response. Status Response Die Status-Rückmeldung des Knotens. Sie hängt vom jeweiligen Knoten ab. Command Ack Die Bestätigung eines Command. Command Command Ack Steuerung Knoten A / B Status Request Status Response Abbildung 12: Kommunikationsobjekte Die ID der Kommunikationsobjekte können aus der folgenden Tabelle entnommen werden: Seite 9 von 12 Fischertechnik-Modell Knoten A1 Commandobjekt Status Request Status Response ID DB0 DB1 ID DB0 DB1 ID DB0 0x100 Speed 0xAA 0xCC 0x101 -- -- 0x102 dont_know opened closed opening closing 0x110 Speed 0x00 0x?? : back to zero : go to pos. 0x111 -- -- 0x112 0x120 Speed 0x00 0x?? : back to zero : go to pos. 0x121 -- -- 0x130 Speed 0x00 0x?? : back to zero : go to pos. 0x131 -- 0x200 Speed -- 0x201 0x210 Speed -- 0x220 Speed DB1 ID DB0 DB1 =0 =1 =2 =3 =4 -- 0x103 no_err = 0 invalid_speed = 1 invalid_position = 2 timeout = 3 -- dont_know moving_up moving_down not_moving =0 =1 =2 =3 position 0x113 no_err = 0 invalid_speed = 1 invalid_position = 2 timeout = 3 -- 0x122 dont_know moving_up moving_down not_moving =0 =1 =2 =3 position 0x123 no_err = 0 invalid_speed = 1 invalid_position = 2 timeout = 3 -- -- 0x132 dont_know moving_up moving_down not_moving =0 =1 =2 =3 position 0x133 no_err = 0 invalid_speed = 1 invalid_position = 2 timeout = 3 -- -- -- 0x202 not_moving moving =0 =1 L1 0 1 0 1 L2 Value 0 0 0 1 1 2 1 3 0x203 no_err = 0 invalid_speed = 1 no_block = 2 -- 0x211 -- -- 0x212 not_moving moving =0 =1 Schalter keiner =0 vorne S1 = 1 hinten S2 = 2 0x213 no_err = 0 invalid_speed = 1 -- Aktion Ein Station vorwärts 1 Fräsen 2 Stop fräsen 3 0x221 -- -- 0x222 Not_moving moving finished_milling milling =0 =1 =2 =3 L1 no_part part 0x223 =0 =1 no_err = 0 invalid_speed = 1 invalid_action = 2 timeout = 3 Aktion Ein Station vorwäts 1 Bohren 2 Stop bohren 3 0x231 Not_moving moving finished_drilling drilling =0 =1 =2 =3 L1 no_part part 0x233 =0 =1 no_err = 0 invalid_speed = 1 invalid_ action = 2 timeout = 3 : öffnen : schliessen (Greifer) A2 (Vetikalachse) A3 (Greifarm) A4 (Drehkranz) B1 Command Ack (Conveyor) B2 (Conveyor) B3 (Conveyor) 0x230 B4 Speed (Conveyor) B5 -- -- 0x232 0x240 Speed -- 0x241 -- -- 0x242 not_moving moving =0 =1 Schalter keiner =0 vorne S1 = 1 hinten S2 = 2 0x243 no_err = 0 invalid_speed = 1 -- 0x250 Speed -- 0x201 -- -- 0x252 not_moving moving =0 =1 L1 no_part part 0x253 no_err = 0 invalid_speed = 1 timeout = 3 -- (Conveyor) B6 (Conveyor) Tabelle 2: Übersicht CAN-Messages Seite 10 von 12 =0 =1 Fischertechnik-Modell 4.2 Aufgaben der einzelnen Knoten Die Aufgaben der Knoten sind unterschiedlich. Im Folgenden sind die Kommunikations-Objekte der einzelnen Knoten genauer beschrieben. 4.2.1 Knoten A1 – A4 (3D-Roboter) Die Command- und Status Response-Objekte der 4 Roboter-Knoten sind im wesentlichen identisch. Im Databyte 0 des Commandobjektes ist die Geschwindigkeit in Prozent [%] abgelegt. Im Databyte 1 befindet sich die auszuführende Aktion. Bei Knoten A1 bedeutet „0xAA = öffnen“ und „0xCC = schließen“. Bei den übrigen Knoten steht im Datenbyte 1 die anzufahrende Position. 0x00 bedeutet „gehe zurück zum Nullpunkt“. Die Command-Acknowledge-Objekte geben an, ob der Command ausgeführt werden kann, oder ob Fehler in den Übergabeparametern vorliegen. "Timeout" als Rückgabewert bedeutet, dass die Position nach einer definierten Zeit noch nicht erreicht wurde, beispielsweise weil ein Arm des Roboters blockiert wurde. In den Status Response Objekten wird der Zustand der Knoten übermittelt. Nach dem Einschalten ist der Zustand immer "don't know". 4.2.2 Konten B1 (Zulieferstrasse) Command: Wird ein Commandobjekt empfangen, so wird ein „Klotz“ um eine Stufe weitertransportiert. Pos.1 → Pos.2 : Förderband läuft so lange, bis der Klotz bei Pos.2 angelangt ist. Pos.2 → Pos.3 : Förderband läut so lange bis ein weiterer Klotz von Pos.1 auf Pos.2 transportiert oder bis ein Timeout erreicht wurde. 300 L1 300 300 L2 M1 Abbildung 13 Position 1 Abbildung 14 Position 2 Abbildung 15 Position 3 Status Request: Die Steuerung will Informationen über den Status des Knotens B1. Status Response: Es wird der Zustand des Bandes sowie der Zustand von L1 und L2 übermittelt Command Ack: Bestätigung ob der Command ausgeführt werden kann: Entweder ok, ungültige Geschwindigkeit oder kein Klotz vor einer Lichtschranke. 4.2.3 Knoten B2 (Wendeeinheit 1) Command: Wird ein Commandobjekt empfangen, so wird ein „Klotz“ von Pos.1 nach Pos.2 transportiert. Die Wendeeinheit geht danach selbstständig wieder in den Ausgangszustand zurück (Pos1.) M1 Abbildung 16 M1 Position 1 Abbildung 17 Position 2 Status Request: Die Steuerung will Informationen über den Status des Knotens B2. Status Response: Es wird der Zustand des Bandes sowie der Zustand der Schalter S1 und S2 übermittelt. Command Ack: Bestätigung ob der Command ausgeführt werden kann: Entweder ok oder ungültige Geschwindigkeit. Seite 11 von 12 Fischertechnik-Modell 4.2.4 Knoten B3 (Fräseinheit) Wird ein Commandobjekt empfangen, so steht im Databyte 2 die auszuführende Aktion. Action 1 → Eine Station vorwärts Action 2 → Fräsen Action 3 → Stop Fräsen Bei Action = 1: Pos.1 → Pos.2 : Förderband läuft so lange, bis der Klotz bei Pos.2 angelangt ist. Pos.2 → Pos.3 : Förderband läut so lange bis bis ein Klotz von Pos.1 auf Pos.2 transportiert oder bis ein Timeout erreicht wurde. Command: M2 M1 L1 Abbildung 18 Position 1 L1 Abbildung 19 Position 2 Abbildung 20 Position 3 Status Request: Die Steuerung will Informationen über den Status des Knotens B3. Status Response: Es wird der Zustand des Bandes, der Zustand der Fräseinheit sowie der Zustand von L1 übermittelt Command Ack: Bestätigung ob der Command ausgeführt werden kann: Entweder ok, ungültige Geschwindigkeit, ungültige Aktion oder Timeout. 4.2.5 Knoten B4 (Bohreinheit) Die Bohreinheit ist analog zur Fräseinheit zu programmieren. 4.2.6 Knoten B5 (Wendeeinheit 2) Die Wendeeinheit 2 ist analog zur Wendeeinheit 1 zu programmieren. 4.2.7 Knoten B6 (Finalstage) Wird ein Commandobjekt empfangen, so wird ein „Klotz“ um eine Stufe weitertransportiert. Pos.1 → Pos.2 : Förderband läuft so lange, bis der Klotz bei Pos.2 angelangt ist. Pos.2 → Pos.3 : Förderband läut so lange bis ein weiterer Klotz von Pos.1 auf Pos.2 transportiert oder bis ein Timeout erreicht wurde. Command: L1 L1 M1 Abbildung 21 Position 1 Abbildung 22 Position 2 Abbildung 23 Position 3 Status Request: Die Steuerung will Informationen über den Status des Knotens B6. Status Response: Es wird der Zustand des Bandes sowie der Zustand von L1 übermittelt Command Ack: Bestätigung ob der Command ausgeführt werden kann: Entweder ok, ungültige Geschwindigkeit, oder Timeout. Seite 12 von 12