Der CAN-Bus mit Anwendungsbeispiel PowerCube von Sandra Theidel Claus Lohrberg Sven Henkel Inhalt 1. 2. 3. 4. 5. 6. 7. 8. 9. Einführung Prinzip der Nachrichtenübertragung Arbitration Kodierung Fehlerhandhabung allgemein Fehlerbehandlung Bit-Timing Technische Realisierung des CAN-Busses PowerCube 1. Einführung Controller Area Network entwickelt von Bosch Mitte der 80er Jahre kostengünstiger serieller Bus 1.1 Anwendungen Medizinische Systeme Nautische Instrumente Kontrollsysteme für Fahrstühle Textilproduzierende Maschinen Fertigungskontrolle Landwirtschaftliche Maschinen 1.2 Vorteile des CAN-Busses kleine Controller kostengünstig robust leicht zu konfigurieren und zu erweitern automatische Fehlererkennung 2. Prinzip der Nachrichtenübertragung eindeutiger Nachrichten-Identifier Keine direkte Adressierung Multi-Casting 2.1 Multi-Casting Versand an alle Knoten Jeder Knoten prüft Relevanz der Nachricht 2.2 Frame-Typen Data Frame Remote Frame Error Frame Overload Frame Interframe Spacing 2.2.1 Data Frame überträgt Daten vom Sender zum Empfänger 2.2.2 Remote Frame Anforderung an einen Knoten zum Senden eines Data Frame mit demselben Identifier 2.2.3 Error Frame wird von einem Knoten bei Feststellung eines Fehlers gesendet 2.2.4 Overload Frame Verzögerung zwischen zwei Data oder Remote Frames 2.2.5 Interframe Spacing Trennung zweier Frames 3. Arbitration Priorität wird durch Identifier bestimmt 4. Kodierung Non-Return-To-Zero-Kodierung (NRZ) (nicht jedes Bit besitzt eine Flanke!) Durch NRZ-Kodierung u.U. keine Flanken zur Synchronisation Stuffing 4.1 Stuffing Nach 5 aufeinanderfolgenden gleichwertigen Bits wird ein anderswertiges eingefügt 5. Fehlerhandhabung allgemein falsche Ergebnisse entstehen durch: – – Programmierfehler zufällige Einflüsse und Störungen z.B. elektromagnetische Felder Mechanismen Wiederholung: – Bei Störungen: Abbruch der Übertragung Erneuter Versuch nach Wartezeit Plausibilitätstest Plausiblilitätstest Alle Ergebnisse werden auf Zulässigkeit geprüft Wichtig: Ergebnisse müssen nicht richtig sein! => Ergebnisse könnten richtig sein – z.B. bei Rechtschreibprüfung: Baum/Raum Maskierungswahrscheinlichkeit fehlerhafte Ergebnisse werden auf falsche, aber zulässige Variationen der Ausgabe abgebildet Ziel: geringe Maskierungswahrscheinlichkeit Vorraussetzung:wenig zulässige Worte gegenüber allen Ergebnissen pFM Häufigkeit falscher , aber zulässiger Ausgaben Häufigkeit aller Ausgaben Lösung Erzeugung Fehlererkennender Codes: – Anhängen weiterer Bitstellen an das Codewort (Datenvektor) Beispiel: pFM 28 28 16 816 24 2 2 2 Verbesserung Informationsvektor der Länge r wird auf Datenvektor der Länge w + r abgebildet Abbildung geschieht pseudozufällig Maskierungswahrscheinlichkeit beträgt 2-r Prüfkennzeichen Zufällige Abbildung ist störend: Erschwert Lesen und – Weitere Verarbeitung der Daten Aufspaltung in Informationsvektor und Prüfkennzeichen – Prüfkennzeichen Informationsvektor ist unverschlüsselt kodiert Methoden: – – Einführung von einem Bit als Prüfkennzeichen Zu jedem Informationsvektor wird zufällig ein Datenvektor/Prüfkennzeichen erzeugt: Diese Tabelle liegt dem Sender und Empfänger vor Plausiblilitätstest Veränderung eines oder beider Vektoren bedeutet: – Vektoren passen nicht mehr zusammen Erneute Erzeugung des Prüfkennzeichens und Vergleich Polynomendivision Zur Erzeugung von pseudozufälligen Vektoren 6. Fehlerbehandlung beim CAN-Bus Fehlerarten Fehlerhandhabung Fehlersignalisierung 6.1 Fehlerarten Bit-Fehler Stuffing-Fehler CRC-Fehler Form-Fehler ACK-Fehler 6.1.1 Bit-Fehler Wert auf dem Bus stimmt nicht mit gesendetem überein Ausnahmen – – Arbitration Field Ack-Slot 6.1.2 Stuffing-Fehler Beim Empfang von 6 aufeinanderfolgenden gleichwertigen Bits (verstößt gegen Stuffing-Regel) 000000 Fehler 6.1.3 Weitere Fehlerarten CRC-Fehler: Empfangene Prüfsumme (CRC) stimmt nicht mit berechneter überein Form-Fehler: Fest vorgeschriebene Bits entsprechen nicht den erwarteten Werten ACK-Fehler: Empfang einer Nachricht wurde nicht durch Setzen des ACK-Bits bestätigt 6.2 Fehlerhandhabung Jeder Knoten befindet sich in einem von 3 Zuständen: – – – Error active Error passive Bus off Zustand wechselt bei Fehlerhäufung 6.2.1 Fehlerzustände 6.3 Fehlersignalisierung Je nach Knoten-Status wird Error-Active-Flag bzw. Error-Passive-Flag gesendet Im Bus-Off-Status keine Fehlersignalisierung 7. Bit-Timing Synchronisation der Controller durch 2 Verfahren: – – Harte Synchronisation Resynchronisation 7.1 Harte Synchronisation Erfolgt am Anfang des Frames Synchronisation auf die erste Signal-Flanke 7.2 Resynchronisation Während des Empfangs eines Frames Synchronisation durch Abgleich des internen Taktes auf die Flankenwechsel Durch Stuffing Synchronisation mindestens alle 5 Bits 8. Technische Realisierung des CAN-Busses Zahlreiche Medien als Bus verfügbar (1 oder 2 Kabelstränge, Funk, Glasfaser…) Am häufigsten verwendet: ISO 11989-2 Standard CAN-Bus nach ISO 11898-2 CAN-Bus nach ISO 11898-2 Einsatz von Twisted-Pair-Kabeln zur Reduktion von elektromagnetischen Störungen Endwiderstände zur Vermeidung von Signalreflektionen Ermöglicht Buslänge von 40m bei 1 Mbit/s bis zu 1km bei 50 Kbit/s Pegelbestimmung durch Spannungsmessung zwischen CAN_L und CAN_H – – Rezessiv: UCAN_H – UCAN_L < 0.5V Dominant: UCAN_H – UCAN_L > 0.9V Pegelbestimmung bei ISO 11898-2 Fehlertoleranz bei ISO 11898-2 Einsatz von „intelligenten“ Controllern ermöglicht im Störungsfall Wechsel auf einadrigen Bus (bei geringerer Übertragungsfrequenz) Dadurch wird der Bus tolerant gegen Störungen wie Kabelbruch einer Ader oder Kurzschluss 9. PowerCube Idee Elektrisches Interface Lokale Intelligenz Komponenten Beispiel 9.1 Idee Baukastensystem Dadurch hohe Flexibilität Zu lösende Probleme – – – Mechanisches Interface Elektrisches Interface Lokale Intelligenz 9.2 Elektrisches Interface Zentrale Stromversorgung Anschluss über ein Kabel (Strom und Daten) Mögliche Bus-Systeme: CAN-Bus, Profibus, RS485 und RS232 9.3 Lokale Intelligenz 16-Bit-Mikrocontroller (C167) in jedem aktiven Element Ermöglicht Steuerung auf zwei Arten – – Direkte Steuerung (Drehung, Bewegung...) Komplexe Befehle (Gehe auf Position x...) Ermöglicht eine Statusabfrage Watchdog-Logik PID-Regler 9.3.1 PID-Regler Proportional-IntegralDifferential-Regler Vergleicht den Ist- (x) und Soll-Wert (w) Regelt über die Stellgröße (y) z ist Störgröße die auf die Regelstrecke wirkt 9.3.2 Störantwort eines Reglers 9.3.3 Regler in PowerCube-Modulen Regel- und Steuerkreise mit den Aufgaben: – – Motorreglung Überwachung prüft: – – Endlage Überstrom Unterstrom Temperatur des Motors Temperatur der Endstufe ... Kommunikationsinterface Rampengenerator 9.4 Komponenten 8 aktive Elemente Verschiedene passive Elemente (Verbindungs- und Adapterstücke) 9.4.1a PowerCube Rotary Drehgelenk Doppelwürfel mit 9 mechanischen Interfaces Gleichstrommotor mit Getriebe 100:1 bzw. 160:1 Inkrementgeber Positions-, Geschwindigkeits- und Stromregler Endlagen- und Referenzschalter 16-Bit-Mikrocontroller (C167) Überwachung der Endlagen, Motorstrom und Temperatur 9.4.1b PowerCube Rotary o o o o o o o o Kommunikations-Schnittstelle für RS 232, RS485, CAN und Profibus Normales Antriebsmoment von 13 bis 93 Nm Erhöhtes Antriebsmoment von 26 bis 228 Nm Max. Geschwindigkeit 135°/s bzw. 216°/s Lageerfassung über 888 bzw. 555 inc./° 0,02° Wiederholgenauigkeit der Positionierung Aktionsbereich von 160° Gewicht 1,8 bis 6,6 kg 100 bis 500 W Motorleistung 9.4.2 PowerCube Wrist Handgelenk Drehung um Längs- und Mittelachse Achsen sind unabhängig => ‚2 in 1‘-Modul Aktionsbereich beim Drehen ±1080° und beim Neigen ± 100° 9.4.3 PowerCube Linear Belt und PowerCube Linear Screw Laufschiene Verschiedene Längen (Aktionsbereich von 200 bis 5900 mm) Realisierung durch Zahnriemen (Linear Belt) oder Gewindespindel (Linear Screw) Schubkraft bis zu 2000 N 9.4.4 PowerCube Gripper Greifmodul mit zwei „Fingern“ Max. Greifkraft 200N bzw. 500N Greifposition, Kraft und Geschwindigkeit einstellbar Finger nach Wunsch 9.4.5 PowerCube Drive Unit und PowerCube System Motor Antriebsmodule Mit Getriebe (Drive Unit) bzw. ohne Getriebe (System Motor) Arbeitsmoment bis 155 Nm (Drive Unit) Drehzahl bis 5300 U/min (System Motor) 9.5 Beispiel Erstes Ziel: Der Roboterarm soll etwas tun Aufbau Vorgehensweise Probleme / weitere Ziele Anderes Beispiel 9.5.1a Aufbau Der Roboterarm ist über das PowerCAN-Kabel mit einem Netzteil und einem C167-Mikrocontroller verbunden Der C167-Mikrocontroller ist in einem Industriecomputer eingebaut, der den Arm steuert Dieser ist über Funk mit einem weiteren Rechner verbunden, von dem aus der Industriecomputer gesteuert wird Grund für gerade diesen Aufbau: Der Arm soll auf eine mobile Einheit moniert werden. 9.5.1b Aufbau 9.5.2 Vorgehensweise Erst nur mit einem Motor arbeiten Bus-Geschwindigkeit herausfinden Motor-ID herausfinden Message-Objekte für die CAN-Bus-Kommunikation vorbereiten Versuch den Motor anzusteuern 9.5.2.1 Message-Objekte Ist für das CAN-Interface des C167 wird gebraucht, um eine CAN-Nachricht zu bauen Besteht aus: – – – – Message Control Register (MCR) [gibt den Status der Nachricht an] Upper Arbitation Register (UAR) [Nachricht ID] Lower Arbitation Register (LAR) [ungenutzt] Message Configuration and Data (MCFG) [Länge der Nachricht, 11- oder 29-Bit-Identifier, Richtung, Daten] 9.5.2.2 Erste Schritte Initialisieren des Busses – – – reset: Geschwindigkeit einstellen Registereinträge auf Default-Wert setzen Erzeugen von Message-Objekten zur Bus-Kommunikation Aktivieren der CAN-Interrupts Senden von ‘MODULEREQ‘ => Modul-Antwort: ‘MODULEACK‘ Senden von ‘DORESET‘ Senden von ‘DOSYNC‘ Senden von ‘DOFREEDRIVE‘ 9.5.2.3 Weitere Schritte Setzen der max. Geschwindigkeit Setzen der max. Beschleunigung Setzen der pos. + neg. Endlagen Setzen der Bewegung: – – Bewegungsmodus: POS RAMP STEP VEL Position Beobachten der Bewegung durch wiederholtes Abfragen der aktuellen Position 9.5.3 Probleme / weitere Ziele Schon gelöst: – – – – Bus-Geschwindigkeit Modul-ID‘s Einstellen der genauen Nullposition ausreichende Stromversorgung für ganzen Arm (Bleiakku) Noch zu lösen: – – – Vektor-Befehle für den Roboterarm (in Arbeit) Kommunikation mit dem Host Steuerung durch Weltkoordinaten 9.5.4 Anderes Beispiel ENDE