CAN-Bus

Werbung
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
 816  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
Herunterladen