Benutzer:Claude Marksteiner/SwissBus

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

SwissBus ist ein offener Standard für die Kommunikation von elektrischen Komponenten innerhalb eines Hauses.

Technologie[Bearbeiten | Quelltext bearbeiten]

Der SwssBus-Standard basiert auf einem adaptierten OSI-Referenz-Modell, das in der physischen Schicht auf einen RS48-Bus aufbaut.

OSI-Schicht SwissBus
7 Application tdb
6 Presentation tdb
5 Session tdb
4 Transport tdb
3 Network tdb
2 Data Link tdb
1 Pysical RS485

Application Layer[Bearbeiten | Quelltext bearbeiten]

Das SwissBus Protokoll des Application Layers ist message-basiert. Jede Message besteht aus einem fixen Message Body und einem optionalen Message Wert. Der Message Body hat die folgende Struktur:

Feld Grösse
Component Type 4 bit
Component Subtype 3 bit
Multi Component 1 bit
Component Number 8 bit (falls Multi Component = 1, sonst fällt das Attribut weg)
Message Type 3 bit
Message Value 1 bit
Message 4 bit
Value Length 8 bit
  • Component Type: Typ der adressierten Geräte-Komponente
  • Component Subtype: Unter-Typ der adressierten Geräte-Komponente
  • Multi Component: 1 falls mehrere Komponenten dieses Typs im Device vorhanden sind, sonst 0)
  • Component Number: Nummer der adressierten Geräte-Komponente falls mehrere Komponenten dieses Typs im Device vorhanden sind (d.h. falls Multi Component = 1). Falls nur eine Komponente dieses Typs im Device vorhanden ist, wird das Attribut vollständig weggelassen.
  • Message Type: Typ der Message
  • Message Value: 1 falls die Message über einen Value verfügt.
  • Message: Die eigentliche Message
  • Value Length: Länge des Message Wertes (in Bytes) falls ein solche vorhanden ist (Attribut Message Value = 1)

Abhänig von der gesendeten Message folgt auf den Message Body der Message Wert.

Im Anschluss an den Message Body und den optionalen Message Wert folgt eine Checksumme. Falls es sich um eine 2-Byte-Message handelt (keine Component Number und keinen Message Wert) so handelt es sich um eine CRC-8 Checksumme über den Message-Body. In den übrigen Fällen handelt es sich um eine CRC-16 Checksumme über den Message Body und den Message Value.

Presentation Layer[Bearbeiten | Quelltext bearbeiten]

tdb

Session Layer[Bearbeiten | Quelltext bearbeiten]

Der SuissBus ist ein meldungsorientierter Bus. Zusammenhängende Sessions gibt es beim SuissBus keine. Aus diesem Grund findet der Session Layer keine Verwendung und ist im SuissBus nicht implementiert.

Transport Layer[Bearbeiten | Quelltext bearbeiten]

Der Einsatz von SuissBus beschränkt sich auf einen zusmmenhängenden lokalen Bus. Aus diesem Grund findet der Transport Layer keine Verwendung und ist im SuissBus nicht implementiert. Für die Kommunikation mit Geräten ausserhalb des SussBuses z.B. internetbasierte Bussteuerung wird ein Gateway eingesetzt, das auf dem Application Layer aufsetzt.

Network Layer[Bearbeiten | Quelltext bearbeiten]

Datenpaket[Bearbeiten | Quelltext bearbeiten]

Datei:SwissBus-Message.png
SwissBus-Message

tdb

Data Link Layer[Bearbeiten | Quelltext bearbeiten]

Datenframe[Bearbeiten | Quelltext bearbeiten]

Datenframe

Ein Datenframe ist zwischen 5 und 64 Byte gross. Es besteht aus einem 5 Byte grossen Header und 3 bis 59 Byte Nutzdaten des Network Layers.

Der Header ist in Version 1 wie folgt aufgebaut:

  • Version (4 bit): Gibt an welche Version des Datenframes verwendet wird (aktuell ist nur die Version 1 definiert)
  • Gesamt-Länge (4 bit): Länge des gesamten Datenframes als Mehfaches von 4 Byte (Länge = n*4 Byte)
  • Quell-Adresse (8 bit): Geräteadresse des Senders
  • Ziel-Adresse (8 bit): Geräteadresse des Empfängers (255 = Broadcast)
  • Protokoll (4 bit): Gibt an nach welchem Protokoll die Nutzdaten aufgebaut sind (siehe Network Layer)
  • Reserviert (4 bit): Wird zurzeit nicht verwendet und muss 0 sein
  • Header-Checksumme (8 bit): Checksumme des Headers nach CRC-8
  • Nutzdaten (3 + x*8 Byte): Nutzdaten, die nach dem im Protokoll-Nibble agegebenen Protokoll aufgebaut sind. Die Länge des Nutzdaten-Blocks entspricht der im Gesamt-Länge angegebenen Wert*4 Byte - 5 Byte

Pysical Layer[Bearbeiten | Quelltext bearbeiten]

Signalverlauf

Der Layer 1 basiert auf einem RS-485 (EIA-485) Bus, der auf einem EIB-Kabel realisiert ist. Jedes Byte wird in einem 8N1-Frame (1 Start bit, 8 Daten bits, 1 Stopp bit) mit 19'200 Baud übertragen. Die Übertragung eines Bytes dauert also ca. 0.6ms.

Der Bus wird als Multimaster-Bus im halbduplex Modus betrieben. Es können also mehrere Geräte Daten über den Bus versenden, es darf aber zur selben Zeit nur ein Sender den Bus belegen. Um sicherstellen zu können, dass kein anderer Sender aktiv ist, ist jeder Sender verpflichet, vor dem Senden den Bus abzuhören und abzuwarten bis der Bus mindestens 5 ms + eine zufällige Dauer zwischen 1 us und 100 us frei war. Während des Sendens muss der Sender ebenfalls den Bus abhöhren und das empfangene Signal mit dem gesendeten Signal vergleichen. Sind die zwei Signale unterschiedlich, so muss der Sender den Sendevorgang sofort abbrechen und diesen wiederholen wenn, der Bus wieder mindestens 5 ms + eine zufällige Dauer zwischen 1 us und 100 us frei war. Der Sender ist ausserdem verpflichtet nach dem Versenden eines Datenframes mindestens 10 ms zu warten bevor er einen neuen Sendevorgang startet.

Literatur[Bearbeiten | Quelltext bearbeiten]

  • tbd
  • tbd
  • tbd

Weblinks[Bearbeiten | Quelltext bearbeiten]

  • tbd
  • tbd
  • tbd

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. tbd
  2. tbd
  3. tbd