Home » Presse » Fachartikel » SOME/IP im Detail 

SOME/IP im Detail

SOME/IP Header

SOME/IP Nachrichten bestehen aus einem Header und einer Payload. Der Header einer SOME/IP Nachricht beginnt mit einem 32 Bit langen Feld für die Message-ID. Diese Message-ID wird noch zur Hälfte unterteilt in eine Service-ID und eine Method-ID. Im Anschluss an die Message-ID kommt das Längen-Feld. Danach kommt die Request-ID. Sie besteht auch zur Hälfe aus der Client-ID und der Session-ID. Danach kommt das 8 Bit lange Feld für die Protocol-Version. Dieses Feld wird aktuell immer mit 0x1 befüllt. Im anschließenden Feld für die Version wird die Major-Version des Service-Interfaces eingetragen. Die nächsten 8 Bit sind für den Message-Type reserviert. Der Message-Type kann den Wert 0x0 für Request, 0x1 für RequestNoReturn, 0x2 für Notifikation, 0x40 für RequestAck, 0x41 für RequestNoReturnAck, 0x42 für NotificationAck, 0x80 für Response und 0x81 für Error beinhalten. In den nächsten 8 Bit wird der Return-Code übertragen. Für OK wird hier 0x0 eingesetzt. Im Anschluss werden die Daten in der Payload übertragen. Für SOME/IP Nachrichten über UDP ist die Datenlänge auf 1400 Bytes beschränkt.

SOME/IP Header

SOME/IP Datentypen

In der Payload einer SOME/IP Nachricht werden die Daten in unterschiedlicher Art und Weise übertragen. Es gibt die Möglichkeit Daten direkt von CAN/FlexRay zu tunneln. Oder es werden Daten mit den klassischen Umrechnungsvorschriften, wie man sie u.a. aus der CAN- und FlexRay-Welt, übertragen. Der Vorteil von SOME/IP ist aber, die Daten mit Hilfe von Datentypen, wie man sie aus der C-Programmierung kennt, zu übertragen. Der Vorteil ist dabei, dass man sich die Umrechnungen erspart. Es werden alle Basisdatentypen unterstützt:

  • boolean [8 Bit]
  • uint8 [8 Bit]
  • uint16 [16 Bit]
  • uint32 [32 Bit]
  • sint8 [8 Bit]
  • sint16 [16 Bit]
  • sint32 [32 Bit]
  • float32 [32 Bit]
  • float64 [64 Bit]

Des Weiteren werden Strukturen unterstützt. Strukturen können dabei auch ineinander verschachtelt sein. Bei der Serializierung der Datenstrukturen in eine SOME/IP Nachricht müssen die Daten nach bestimmten Regeln in eine „flache“ Hierarchie gebracht werden. Strings werden in den Varianten für UTF-8 und UTF-16 mit einer fixen oder einer dynamischen Länge unterstützt.  Arrays werden in ein- und mehrdimensional Art unterstützt. Dabei wird noch unterschieden ob den Arrays ein Längenfeld vorausgeht oder nicht. Des Weiteren gibt es in der Payload einer SOME/IP Nachricht noch Enumerationen und Unions.

Teil 1: SOME/IP und automobiles Ethernet