ATMEL Microcontroller und CAN-Bus
2 Der CAN-Bus
Was CAN der Bus?
Was ist ein Bus?
- Feldbussysteme - spezialisierte busbasierte Netzwerke in einem kleinen (Um-)feld
- CAN
- ControlNet
- PROFIBUS
- INTERBUS
- Vorteile: weniger Kabel/Gewicht, kurze Signalwege, Schutz gegen Störsignale, flexible Erweiterbarkeit, Standardisierung
- Nachteile: geringfügig höhere Reaktionszeit, Komponenten teurer
Buszugriffsverfahren
- Unterscheidung in deterministisch - zentral/dezentral gesteuert und zufällig - (nicht) kollisionsfrei
- Master-Slave-Verfahren
- Delegated Token
- Token Passing
- TDMA (Time Division Multiple Access)
- CSMA/AD (Carrier Sense Multiple Access Collision Avoidance)
- CSMA/CD (Carrier Sense Multiple Access Collision Detect)
2.1 Geschichte und Allgemeines
- seit 1983 von BOSCH vorrangig für KFZ-Bereich entwickelt
- Ziel: Reduzierung der oft bis über 2km langen Kabel (100kg)
- notwendig für zentrale Steuerung von Fensterhebern, Spiegel- und Sitzeinstellung, Motormanagement, ABS, ESP, Klima, ...
- heute: KFZ der Oberklasse mit ca. 100 Mikrocontrollern
- Notwendigkeit für:
- hohe Fehlertoleranz
- Optmierung auf kleine Datenmengen
- mgl. einfache und billige ICs
- einfacher Busaufbau
- verschiedene andere Bussysteme zugunsten von CAN eingestellt
- seit 1992 Einsatz bei Mercedes, heute von fast allen Automobilkonzernen genutzt
- Interesse auch von Industrie => messen, steuern, regeln (Bsp.: Aufzüge)
- Ergebnis: simple Handhabung, große Verbreitung und (genormte) Produktvielfalt, günstige Preise
2.1.1 Normung
- ISO/OSI-Referenzmodell
- Physical Layer (1) - Low-Speed-CAN ISO 11519-2 (5-125 kBit/s) und High-Speed-CAN ISO 11898 (max. 1 MBit/s)
- Data Link Layer (2) - Logical Link Control, Medium Access Control nach ISO 11898 => CAN 2.0A, CAN 2.0B
- Application Layer (7) - CAL (CAN Application Layer for industrial Application), Spezifikationen für DeviceNet und SDS (Smart Distributed System)
- Layer 8 - CANopen, DeviceNet, SDS
- Normung und Weiterentwicklung von CiA (CAN in Automation) http://can-cia.de
2.1.2 Spezifikationen
- Unterscheidung:
- CAN (laut 2.0A/2.0B max. 32 Teilnehmer)
- CANopen (vorrangig Industrieautomatisierung, Datenfeld wird für Objektadressierung mitgenutzt, enthält Synchronisationsprotokoll)
- DeviceNet (max. 64 Teilnehmer, meist mehrere Identifier pro Teilnehmer)
- Busrealisierung mit TP-Kabeln, Anschlüsse meist 9-pol. SUB-D, Abschlußwid. ca. 120 Ohm
- CSMA/CA auf 2 Leitungen (CAN_HIGH, CAN_LOW), meist auf 3. Leitung (Schirm) CAN_GND
- Spannungsversorgung über Bus optional mgl.
- max. Datenübertragungsrate 1 Mbit/s bis 40m, 125 kbit/s bis 500m
- Differenzspannungen nach ISO11898:
- rezessive Bits (Potential CAN_GND +0...0,5V)
- dominante Bits (Potential CAN_GND +0,9...2,0V)
- verschiedene fertige Tranceiver verfügbar
- weiterhin genormt: Busanzapfungen, Interfaceanschlußstecker
- auch andere als hier erwähnte Realisierungen am Markt (z.B. einadrige Bussyteme, andere Differenzspannungen, (dynamisches) Zeitschlitzverfahren als Ergänzung zum CSMA/CA)
2.2 Datenübertragung
2.2.1 Nachrichtenaustausch
- allgemeine Unterscheidung in:
- teilnehmerorientiert (z.B. TCP/IP)
- objektorientiert (z.B. CAN)
- Priorisierung (über Identifier)
- 0 = dominant, 1 = rezessive
- Verwendung von CAN-Frames:
- Data-Frame
- Remote-Frame
- Error-Frame
- Overload-Frame
- 0-8 Byte Daten im Data-Frame
- 11-Bit-Identifier nach CAN 2.0A (max. 2,032 Objekte, Framelänge max. 117 Bit)
- 29-Bit-Identifier nach CAN 2.0B (max. 536,870,896 Objekte, Framelänge max. 136 Bit)
2.2.2 Data-Frame
Quelle: Elektor 10/1999
- Start of Frame (dominantes Bit)
- Arbitration Field (11 Bit Identifier, Remote Transmission Request Bit)
- Control Field (Identifier Extension-Bit (rezessiv => 29-Bit-Identifier), dominantes Reserve-Bit 0)
- Data Length Code
- Data-Field
- CRC-Field (15 Bit Checksumme, 1 dominantes Bit)
- Acknowledge-Field (ACK-Slot wird rezessiv gesendet, Empfänger überschreibt bei Erfolg dominant)
- EOF-Field (7 rezessive Bits)
- Intermission-Field (3 Bit Pause auf Bus für Datenverarbeitung durch Clients)
2.3 Fehlertoleranz
- Hamming-Distanz HD=6 (Feldbus allg. mind. 4, Wikipedia, Hamming-Abstand)
- 5 Fehlererkennungsstrategien bei CAN:
- Bit-Fehler-Erkennung (Selbsttest der gesendeten Daten)
- Stuffbit-Fehler-Erkennung (max. 5 gleiche Bits in Folge, dann Komplementärbit, Ausnahme EOF-Field)
- CRC-Fehler-Erkennung (Integritätscheck Daten-CRC-Summe)
- Acknowledgement-Fehler-Erkennung (mind. 1 Empfänger muß ACK-Slot-Bit dominant überschreiben)
- Format-Fehler-Erkennung (Erkennung von dominanten Bits an rezessiven Stellen)
- bei erkanntem Fehler:
- Nachricht wird verworfen
- Senden eines Error-Frames mit 6 dominanten und 8 rezessiven Bits
- Sender erkennt Fehler ebenfalls und wiederholt später die Nachricht
- CAN enthält Konzepte für stationsinterne Fehler
2.4 Lösungen am Markt
- Unterscheidung BasicCAN, FullCAN (Filterung, Speichertiefe)
- fast alle namhaften Hersteller von ICs bieten CAN-Lösungen an
- Stand-alone Controller:
- Philips SJA1000 (Nachfolger vom 82C200), sehr stark verbreitet, oft auch integriert, Modul CANDIP
- Intel 82527
- Microchip MCP2510
- OKI MSM9225
- Infineon 82C900
- Bosch C_CAN
- mit integr. Microcontroller:
- Atmel T89C51CC01
- Dallas DS80C390
- Infineon C515C/C505C/C167CS
- Philips P8xC592/P8xC591/XA C3
- auch erhältlich: Controller mit CAN-Multiplexer, I/O mit CAN, ASICs mit CAN
- CAN-Tranceiverbausteine
- Infineon TLE 6250/TLE 6254 G/TLE 6255 G/
- Philips 80C250/80C251/80C252/TJA 1050/TJA 1054
- Motorola MC 33388
2.5 Einfaches SJA1000-Interface
2.5.1 Referenzdesign / Elektorlösung
Quelle: Elektor 11/1999
- wichtige Datasheets/Appnotes:
2.5.2 Eigenentwicklung
- angelehnt an Elektorlösung, aber 1-seitige Platine
- Microcontroller über Port 1/2 und Busabkopplung über Port 3 steckbar
- integrierte Spannungsversorgung mit Gleichrichter und 5V-Spannungsregler
zurück: /Elektronik /Zusammenfassung ATMEL und CAN /Kapitel 1 - vorwärts: Kapitel 3