🚨Fehlerbehandlung & CAN FD

Jeder Knoten prüft jeden Frame. Findet einer einen Fehler, zerstört er den Frame per Error Flag für alle – der Sender wiederholt ihn automatisch. Damit ein defekter Knoten nicht den ganzen Bus lahmlegt, führt jeder Controller Fehlerzähler.

🧮Fehlerzähler zum Ausprobieren

Error ActiveZustand des simulierten Knotens
TEC (Sendefehlerzähler)0
127255
REC (Empfangsfehlerzähler)0
127

Normalbetrieb. Erkennt der Knoten einen Fehler, sendet er ein aktives Error Flag (6 dominante Bits) und zerstört damit den Frame für alle.

    Vereinfacht: Grundregeln +8 / +1 / −1 aus ISO 11898-1, Sonderfälle weggelassen. Ein defekter Sender schaltet sich so nach 32 Fehlversuchen selbst ab, statt den Bus dauerhaft zu stören.

    Die fünf Fehlerarten

    FehlererkenntBedingung
    BitfehlerSenderDer Sender liest ein anderes Bit zurück, als er gesendet hat (außerhalb der Arbitrierung und des ACK-Slots).
    Stuff-FehlerEmpfängerSechs gleiche Bits hintereinander im gestopften Bereich – die Stuffing-Regel wurde verletzt.
    CRC-FehlerEmpfängerDie selbst berechnete CRC-15 stimmt nicht mit der empfangenen überein.
    FormfehlerEmpfängerEin Bit mit fester Form (CRC-Delimiter, ACK-Delimiter, EOF) ist dominant statt rezessiv.
    ACK-FehlerSenderIm ACK-Slot bleibt der Bus rezessiv – niemand hat den Frame bestätigt (z. B. einziger Knoten am Bus).
    Error Frame (aktiv):
     … Daten │ 000000 │ 0…000000 │ 11111111 │ Pause
             │ Flag   │ Echo der │ Delimiter│
             │ 6 dom. │ anderen  │ 8 rez.   │
     → alle verwerfen den Frame, der Sender wiederholt ihn automatisch

    🔁Zustandsautomat

                TEC > 127 oder REC > 127
     ┌──────────────┐ ─────────────────────► ┌───────────────┐
     │ Error Active │                        │ Error Passive │
     │ aktive Flags │ ◄───────────────────── │ passive Flags │
     └──────────────┘  TEC ≤ 127 und REC ≤ 127└───────┬───────┘
            ▲                                         │ TEC > 255
            │  128 × 11 rezessive Bits                ▼
            │  (Zähler auf 0)                  ┌───────────────┐
            └──────────────────────────────────│    Bus Off    │
                                               └───────────────┘

    🚀CAN FD – kurz erklärt

    CAN with Flexible Data-Rate (Bosch 2012, genormt in ISO 11898-1:2015) behält Arbitrierung und Grundprinzip bei, räumt aber zwei Grenzen aus dem Weg:

    📦 Bis 64 Byte Daten

    DLC 0–8 wie bisher, darüber sind die Werte gestuft:

    DLC 9 → 12 BDLC 10 → 16 BDLC 11 → 20 BDLC 12 → 24 BDLC 13 → 32 BDLC 14 → 48 BDLC 15 → 64 B

    ⚡ Bitrate umschalten (BRS)

    Arbitrierung weiter langsam (z. B. 500 kbit/s), weil alle Knoten gleichzeitig mitreden. Im Datenteil darf nur noch einer senden – dort sind z. B. 2 oder 5 Mbit/s möglich.

    🧾 Neue Steuerbits & CRC

    FDF (statt r0, rezessiv = FD-Frame), BRS (Bitratenwechsel), ESI (Sender ist Error Passive), RTR entfällt (RRS). Längere CRCs: CRC-17 bis 16 Byte, CRC-21 darüber, dazu ein Stuff-Bit-Zähler.

    CAN FD (11-Bit-ID):
    SOF │ ID 11 │ RRS │ IDE │ FDF │ res │ BRS │ ESI │ DLC │ Daten 0…64 B │ Stuff-Zähler │ CRC-17/21 │ ACK │ EOF
    ◄───── Nominal-Bitrate ─────────────────►◄──────── Daten-Bitrate (schnell) ─────────────►◄── Nominal ──►

    Für OBD-II spielt CAN FD bisher kaum eine Rolle: ISO 15765-4 schreibt klassisches CAN vor, neuere Diagnosekonzepte (z. B. SAE J1979-2 mit UDS) öffnen den Weg für FD.