CAN-Bus
Arbitrierung
Arbitrierung
21
0.0 (0)
Trung Hieu Tran
Trung Hieu Tran
Kartei Details
Karten | 21 |
---|---|
Sprache | Deutsch |
Kategorie | Elektrotechnik |
Stufe | Universität |
Erstellt / Aktualisiert | 13.03.2013 / 30.07.2023 |
Weblink |
https://card2brain.ch/box/canbus
|
Einbinden |
<iframe src="https://card2brain.ch/box/canbus/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Kennwerte des CAN-Buses
- Der Bus ist sternförmig oder linear und besitzt eine Multi-Master Architektur
- Die Kommunikation ist ereignisgesteuert
- Es können bis zu 2032 verschiedene Nachrichten Indentifier definiert werden
- Maximale Brutto-Datenrate beträgt 1 MBit/s
- Die Nettorate liegt bei 58 %
- Die maximal erzielbare Länge liegt bei ca. 40 m
- Es wird das CSMA/CA Arbitrierungsverfahren verwendet
- Im CAN-Protokoll wird die NRZ-Codierung verwendet
CAN-Telegrammtypen
je nach Anwendungsfall drei Haupttypen von Botschaften
- Datentelegramm
- Datenübertragung zu einem oder mehreren Empfängern und wird auf Initiative des Senders versandt
- Datenanforderung
- Anforderung einer Botschaft durch einen Busteilnehmer, wird auf Initiative des Empfängers versandt
- Fehlertelegramm
- Signalisieren Sender oder Empfänger das Erkennen eines Fehlers
Datenanforderung
- Anforderung zum Senden eines Data Frames an einen bestimmten Knoten
- Identifier der angeforderten Botschaft wird gesendet
- RTR = rezessiv, kein Datenfeld
- Knoten sendet als Antwort die geforderte Botschaft
- falls Data Frame und Remote Frame gleichzeitig gesendet werden, gewinnt Data (da dominant) und Nachricht kann sofort gelesen werden
Arbitrierung
- beim CAN können alle Teilnehmer gleichberechtigt zugreifen --> Buszugriffssteuerung durch zerstörungsfreie (Nachricht mit höchster Priorität muss nicht nochmals gesendet werden), bitweise Arbitrierung
- Prioritäten sind im Identifier umgesetzt --> gesendet wird nach Rangfolge der Prioritäten
- Zustände Null und Eins müssen auf dem Bus dominant und rezessiv umgesetzt werden --> eine Eins soll während der Arbitrierung von einer Null überschrieben werden können (Null = dominant, Eins = rezessiv)
- für Identifier bedeutet dies, je kleiner seine Binärzahl, umso größer ist seine Priorität
- durch Verwendung offener Kollektoren können mehrere Teilnehmer auf den Bus parallel geschaltet werden, ohne dass im Konfliktfall elektrische Kurzschlüsse entstehen
- Zustand mit zwei unterschiedlichen Pegeln auf CAN-H und CAN-L wird dominant genannt (Pegeldifferenz > 0,9 Volt), Zustand mit zwei gleichen Pegeln ist als rezessiv bezeichnet
- dominant entspricht einer logischen Null --> legt ein Knoten eine logische Null auf den Knoten, überschreibt er ggfs. den Zustand einer logischen Eins eines anderen Knotens
- Kopplung der Knoten über die Busleitung stellt eine logische Und-Verknüpfung (Wired-And) dar
- jeder Teilnehmer muss während des Sendevorgangs den logischen Pegel auf dem Bus lesen
- stimmen Werte nicht überein, muss der Teilnehmer aufhören zu senden
- Teilnehmer mit kleinsten binärwert (höchste Priorität) gewinnt die Übertragung
Fehlermechanismen
Ziele: Systemweite Datenkonsistenz, keine Busblockade durch defekte Steuergeräte
- Bitmonitoring
- sendende Knoten prüft ob der zur Sendung beabsichtigte Pegel auch auf dem Bus erscheint
- Überwachung des Telegrammformats
- jeder Netzknoten überwacht, ob die auf dem Bus gesendete Botschaft Formfehler hat
- Zyklische Blocksicherung
- CRC - Bildung einer Prüfsequenz und Überprüfung beim Empfänger
- Überwachung Ackknowledgement
- Sender erwartet Bestätigung des fehlerfreien Empfangs durch Aufschaltung eines dominanten Pegels im ACK-Feld durch Empfänger
- Bleibt Bestätigung aus, geht Sender von einem Fehler bei der Übertragung aus
- Überwachung Bitstuffing
- alle Busteilnehmer überwachen die Einhaltung der Bitstuffing-Regel
Fehlertelegramm
- erste Steuergerät, dass Fehler entdeckt, sendet das Error-Flag
- 6 dominante Bits --> überschreibt alles und verletzt Bitstuffing-Regel
- andere Steuergeräte erkennen Fehler und senden ebenfalls Error-Flag --> kann bis zu 12 Bit lang werden
- nach Fehlermeldung folgen 8 rezessive Bits, um das Ende der Fehlermeldung zu signalisieren
- Fehlersignale
- aktiv: 6 dominante Bits (wie oben beschrieben)
- passiv: 6 aufeinander folgenden gleichen Bits (wartet auf Fehler/Fehlermeldung)
Fehlerzustände
- zur Vermeidung von Busblockaden durch Steuergeräte, die ständig ein Errorframe senden, existieren 3 Fehlerzustände: Fehleraktiv, Fehlerpassiv, und Bus-Off
- Steuergeräte besitzen Sendefehlerzähler und Empfangsfehlerzähler, sie in- oder dekrementieren die Zähler nach best. Regeln und nach Zählerstand werden die Zustände gewechselt
- Fehleraktiv: ohne Einschränkung darf das SG Error Frames senden
- Fehlerpassive: 6 rezessive Bits --> Fehlerfreie Botschaften anderer SG können nicht überschrieben werden
- Bus-Off: vollständig abgekoppelt, Empfang von Nachricht ist je nach Implementierung möglich --> darf erst nach dem Empfang von 128 x 11 rezessiven Bits in den Zustand Fehleraktiv zurückkehren (128 Botschaften der anderen SG kann in dieser Zeit übertragen werden)
Kennwerte LIN-Bus
- Kostengünstiger Bus für Sensoren und Aktuatoren, wo Bandbreite und Vielseitigkeit von CAN nicht benötigt wird
- Geeignet für nicht sicherheitsrelavante Anwendungen --> als Subbus für Tür oder Sitz
- Single Master – Multiple Slave --> Übertragung wird durch den Master gesteuert
- Maximal 16 Slaves möglich
- LIN-Master hängt am CAN-Bus
- Maximale Übertragungsrate 20 kBit/s
- Datenübertragung über eine Eindrahtleitung
Funktionsweise LIN-Bus
- Master sendet Botschaftsheader, der mit mindestens 13 Low-Bits und einem 1 High-Bit (Synchonisationsbreak) beginnt
- Anschließedn folgt Synchronisations-byte (Low-High Bitfolge)
- Danach wird der LIN–Identifier gesendet --> Damit wird die Datenbotschaft ausgewählt, die einer der Slaves senden soll
- der ausgewählte Slave antwortet mit einer Data 1- 8 Byte und CRC-Summe
- max 64 Nachrichten-Identifier, Anzahl Datenbytes je Nachricht: 1 bis 8
- Standard: Übertragung der Nachrichten im festen Zeitraster --> System wird berechenbar und es ist vorhersagbar, wann eine Nachricht übertragen wird
- Zusätzlich: ereignisgesteuerte Frames, spontane Frames, Diagnoseframes und benutzerdefinierte Frames
- Fehlererkennung: Bitfehler, CRC, Identifier-Parity-Fehler, Slave-Not-Response-Fehler, Inconsistence-Synchron-Fehler, Physical-Bus-Fehler
Grenzen des ereignisgesteuerten CAN-Bus
- erhöhte Sicherheitsanforderung an Kommunikation bei Systemen, wie X-by-Wire
- CAN-Bus dafür ungeeignet
- kritisch sind Belastungsspitzen, wenn alle SG gleichzeitig senden wollen
- Lösung: zeitgesteuerte Systeme mit synchronen Buszugriff
- Vorhersagbarkeit - deterministisches Verhalten auch unter Spitzenlast
- Betriebssicherheit - Fehlertoleranz- und Fehlererkennungsmechanismen
Umsetzung durch TTCAN und FlexRay
Kennwerte TTCAN
- Zeitgesteuerte Variante des CAN
- Aufteilung zwischen fest zugewiesenen Zeitfenstern und Zeitfenster über Arbitrierung
- Ereignisgesteuerte Datenübertragung nach wie vor möglich
- Eine Station übernimmt die Aufgabe des Taktmasters und sendet Referenzbotschaften zur Zeitsynchronisierung. Dabei wird der Bus in Basiszyklen eingeteilt zu deren Anfang jeweils die Zeitsynchronisierung stattfindet.
- Redundanz durch mehrere Zeitmaster um Totalausfall zu vermeiden. Alle Zeitmaster senden gleichzeitig, aber mit unterschiedlichem Identifier. Der Zeitmaster mit der höchsten Priorität sendet und gibt den Basiszyklus vor.
- Gleiches Protokoll und gleicher Physical-Layer wie beim bisherigen CAN
- Maximale Übertragungsrate 1 Mbit/s
- Referenznachricht – Wird am Anfang jedes Basiszyklus von einem Zeitmaster zur globalen Zeitsynchronisation gesendet
- Es gibt drei Arten von Zeitfenstern
- Exklusive Zeitfenster – Jeweils ein Steuergerät darf eine Nachricht senden. Das Zeitfenster dient der zeitsynchronen Kommunikation für sicherheitsrelevante Anwendungen. Keine Buskollision möglich. --> zeitgesteuertes, periodisches Senden
- Arbitrierende Zeitfenster – Für gewöhnliche ereignisgesteuerte CAN-Botschaften mit Arbitrierung nach dem CSMA/CA-Buszugriffsverfahren --> sporadisches Senden
- Freie Zeitfenster – Für spätere Erweiterungen
Kennwerte FlexRay
- Entwickelt für den Einsatz in X-by-Wire Systemen (X = Brake, Steer, …)
- Hohe Datenübertragungsrate – 10 MBit/s (Netto 5 MBit/s)
- Echtzeitfähigkeit
- Ausfallsicherheit
- Synchrone und Asynchrone Datenübertragung --> Statische und Dynamische Zeitfenster (und/oder möglich)
- bis zu 254 Byte Nutzdaten pro Botschaft
- Ein- und zweikanalige Systeme möglich. Zweiter Kanal für redundante Übertragung in sicherheitskritischen Anwendungen oder zur Erhöhung der Bitraten
- Geschirmte/verdrillte Zwei-Draht-Leitung und optische Verbindungen
- Linien-, Stern und Multi-Sterntopologie möglich
- „Wake Up“ über Bus
Frame-Aufbau FlexRay
Header Segment
- Null frame indicator – Gibt an ob Payload Daten enthält
- Sync frame indicator – Nachricht wird zur Synchronisation verwendet
- StartUp frame indicator – Nachricht wird zum „Startup“ verwendet (Kaltstartknoten)
- Frame-ID – Bestimmt Zeitschlitz in dem die Nachricht gesendet wird
- Payload length – Länge Payload geteilt durch 2
- Cycle Count – aktueller Wert des Zykluszählers
Payload Segment
- Enthält gerade Anzahl von Nutzdaten bis 254 Byte
- Statisch: ersten 12 Byte ggf. als Network Management Vector (Informationen Netzwerkaufbau)
- Dynamisch: ersten 2 Byte ggf. als Message ID (Nachrichtenkennung)
Trailer Segment
- CRC-Checksumme über alle vorherigen Segmente
Kommunikation FlexRay
Statischer Teil
- Buszugriff über TDMA (Time-Division-Mutliple Access)
- Feste Anzahl von Nachrichten mit jeweils fester Länge
- Zuordnung und Reihenfolge des Sendefensters über Frame ID
- Sicherheitsrelevante Funktionen: Datenübertragung synchron auf beiden Kanälen
- Bei Ausfall eines Knotens verstreicht das Zeitfenster ungenutzt
Dynamischer Teil
- Buszugriff über FTDMA (Flexible Time-Division-Mutliple Access) nach der Byteflight Spezifikation
- Reihenfolge des Sendens über Frame ID (niedrigste ID beginnt)
- Sendet ein Knoten nicht, wird der Sendezähler inkrementiert und der Knoten mit der nächst höheren Frame ID beginnt zu senden
Symbol Fenster – Sendung von Einzelsymbolen oder für High-Level Protokolle
Netzwerk Leerlaufzeit – Warten bis konfigurierte Zykluszeit abgelaufen ist
Zeitsynchronsierung
- Microtick – Interne Zeitbasis des Knotens
- Makrotick – Zeitbasis durch Synchronisierung