nodeLink-Protokoll
Das nodeLink-Protokoll (früher ERFC) ermöglicht die Kommunikation zwischen verteilten Netzwerkknoten, unabhängig vom hierbei verwendeten Übertragungsmedium. Jedes bidirektionale Übertragungsmedium kann über ein entsprechendes Interface an den Protokollstack angebunden werden. Jeder Knoten wird im nodeLink-Netz über eine eindeutige Adresse identifiziert. Die Knoten erkennen sich automatisch untereinander mittels des DRC-Protokolls (dynamic route configuration) und aktualisieren dynamisch ihre Routingtabellen. nodeLink ist dadurch hot-plug-fähig. Die Datenübertragung ist paketorientiert und erfolgt im Uni-, Multi- oder Broadcast-Verfahren. Verloren gegangene oder beschädigte Pakete werden durch die Transportsicherung automatisch wiederholt. Für fehlertolerante Daten kann die Transportsicherung deaktiviert werden, indem Pakete als Datagram gesendet werden. Optional können die Daten mittels einer Kryptographie-Schicht verschlüsselt werden. Jeder Knoten stellt eigene Funktionen im Netz zur Verfügung, die von anderen Knoten aufgerufen werden können. Zusätzlich können Knoten Events emittieren, auf die sich andere Knoten als Empfänger registrieren können. Dies reduziert unter anderem die Buslast, da Pakete nur bei Bedarf generiert werden. Für die Übertragung von größeren Datenmengen steht das Cargo-Protokoll, welches auf dem nodeLink-Basisprotokoll aufsetzt, bereit. Dieses wird dem Anwender über ein streambasiertes API zur Verfügung gestellt. nodeLink ermöglicht ein verteiltes und transparentes Applikations-Netzwerk. Es stehen Mechanismen zur Verwaltung und Diagnose von Knoten sowie des gesamten Netzes zur Verfügung.
Schichtenmodell
Technische Daten
Protokolleigenschaften
- Es können 62 Knoten in einem Netz adressiert werden (zwei Adressen sind für Diagnose und Broadcasts reserviert)
- Der Header ist 4 Byte lang.
- Nach dem Header können bis zu 32 Byte Payload folgen.
- Jedes Datenpaket wird mit einer 2 Byte Prüfsumme (CRC16) gesichert.
- Um den Datendurchsatz zu steigern, werden mehrere Anfragen hintereinander an einen Knoten gesendet, ohne zuerst auf einzelne Bestätigungen zu warten.
- Jeder Knoten sendet Informationen an alle Netzteilnehmer, welche ihre Routingtabellen entsprechend aktalisieren.
- Das Cargo Protokoll ermöglicht größere Datenmengen (z.B. Bildinhalte für Displays, Firmwareimages) als Bytestrom zu übertragen.
Funktionen
- Eine Funktion wird über eine Nummer (FID) referenziert und führt eine bestimmte Aktion aus (z.B. „set_speed“).
- Jeder Funktion können Parameter übergeben werden und kann Rückgabeparameter an den Aufrufer zurückgeben.
- Jeder Knoten kann bis zu 128 Funktionen zur Verfügung stellen (davon sind 16 für das Protokoll reserviert).
- Es stehen pro Aufruf bis zu 32 Byte für Parameter sowie Rückgabewert(e) zur Verfügung.
Ereignisse
- Ein Ereignis wird über eine Nummer (EID) referenziert. Tritt das jeweilige Ereignis ein (z.B. „power_fail“) werden alle Knoten, welche sich für das jeweilige Ereignis angemeldet haben, benachrichtigt.
- Jedes Ereignis kann Parameter an die registrierten Knoten übergeben.
- Jeder Knoten kann bis zu 128 Ereignisse zur Verfügung stellen (davon sind 16 für das Protokoll reserviert).
- Es stehen bis zu 32 Byte für Parameter zur Verfügung.
- Die Übertragung kann mit oder ohne Transportsicherung sowie als Broadcast erfolgen.
Diagnose-/Servicefunktionen
- Der nodeLink-Protokollstack enthält fest definierte Funktionen für die Diagnose jedes einzelnen Knotens.
- Knotenbeschreibung abrufen (u.a. Knotenname, Seriennummer, Hardware-, Bootloader- und Firmwareversion, Prüfsummen)
- Neustart durchführen
- Firmware aktualisieren
- Funktions- und Ereignisliste auslesen
- Knotenstatistik auslesen/rücksetzen (u.a. Paketanzahl, Paketfehler, Routingfehler, Retransmits, Adressierungsfehler)
- Übertragung von Status-/Debugnachrichten des jeweiligen Knotens
Unterstützte Schnittstellen
- UART
- USB
- CAN
- Bluetooth (SPP)
- Ethernet - TCP/IP