Hausbus

Aus bytewerk-Wiki
Zur Navigation springen Zur Suche springen

Werksbus

Wir haben einen CAN-Bus Hausbus. Die Baudrate beträgt 500 kbit/s


Botschaften-Schema

Die CAN Ids haben eine bestimmte Struktur, damit die wichtigsten Adressen einzelner Geräte( z.B. reset ) offensichtlich sind. Ausserdem lässt sich aus der Struktur der Id erkennen, zu welcher Art von Gerät die Botschaft gehört.


Aufbau(Ids)

Hier ist noch keine Nachrichten Struktur festgelegt. Allerdings sind die Botschaften fuer Signale gedacht, die allgemeine Informationen verbreiten(z.B. ob die Tür verschlossen, oder das Licht eingeschaltet ist).


Aufbau(extended Ids)

0x0<Geräte Klasse[8]><GeräteId[8]><Gerätspezifisch[12]>

  • Geräte Klasse: Die Geräte Klasse gibt Auskunft ueber die Art des Geräts. Sie ist 8 bit lang.
  • GeräteId: Die Geräte Id ist eine Fortlaufende Nummer, die fuer jeden Busteilnehmer in seiner Klasse einzigartig ist. Sie ist 8 bit lang.
  • Gerätespezifisch: Diese 12 Bits sind frei wählbar.

Ausnahme: Die Botschaft 0x0****FFF ist bestimmt für die Reset-Botschaft mit der man das Gerät zum Reset zwingen kann.

Ausnahme: Die Botschaft 0x0****000 ist bestimmt für die Heartbeat-Botschaft mit der das Gerät seinen Status und seine Anwesenheit meldet.

Beispiel
0x00102003
Dritte Botschaft des Geräts
Das Gerät hat die Id 2
Die Geräteklasse ist 1(Licht)
0x00102FFF ist die Reset-Botschaft fuer dieses Gerät

Aufbau heartbeat

Die Heartbeat Nachricht ist die niedrigste ID, die ein Busteilnehmer nutzen darf. Sie endet auf 0x0****000

Aufbau: <Zeit seit boot in Millisekunden[32]>


Reservierter Adressraum

  • MessageIds unter 0x100 sind reserviert
  • MessageIds über 0x700 sind reserviert
  • Extended MessageIds unter 0x00001000 sind reserviert (verwechslungsgefahr)
  • Extended MessageIds über 0x10000000 sind reserviert (bootloader)
  • Gerätespezifische Extended Botschaft 0x0****FFF ist fuer den Reset Befehl bestimmt(siehe oben).
  • Gerätespezifische Extended Botschaft 0x0****000 ist die Heartbeat-Botschaft. Sie wird mindestens 1 mal pro Sekunde gesendet und enthält Informationen über den allgemeinen Status des Geräts(siehe oben).


Bus Geräteklassen

Id Name Beschreibung
0x01 Licht Geräte, die Licht steuern.
0x02 Sensoren Geräte die für alle anderen Busteilnehmer Messwerte zur Verfügung stellen.
0x03 Displays ansteuerbare Displays

BusNutzer

Projektname Start-Adresse End-Adresse Beschreibung Verantwortlich
Beleuchtetes Fassadenschild 0x00101000 0x00101FFF Blinkenlichten an der Fassade hk
Hitzeflimmern 0x00201000 0x00201FFF Heatmap des Vereinsheims hk
Sperrwerk 0x00202000 0x00202FFF Sperr- und Schliesszustand des der Eingangstür hk
Feuchtwerk_1 0x00211000 0x00211FFF Luftfeuchte- Temperatur und Helligkeit 1 (runder Tisch) xor
Feuchtwerk_2 0x00212000 0x00212FFF Luftfeuchte- Temperatur und Helligkeit 2 (Raum mit den Sofas) xor
Feuchtwerk_3 0x00213000 0x00213FFF Luftfeuchte- Temperatur und Helligkeit 3 (Werkstatt) xor
Feuchtwerk_4 0x00214000 0x00214FFF Luftfeuchte- Temperatur und Helligkeit 4 (Mate-Lager) xor

Steckerbelegung

Wir setzen einen SUB-D 9 ein.

  • Pin 1: -
  • Pin 2: CAN Low
  • Pin 3: GND
  • Pin 4: Klemme 15 (GND wenn Hauptstom aktiv, sonst hohe Impedanz)
  • Pin 5: -
  • Pin 6: -
  • Pin 7: CAN High
  • Pin 8: -
  • Pin 9: +12V


SocketCan auf dem Pi

Raspian installieren und updaten

 $ sudo apt-get update
 $ sudo apt-get install linux-image-rpi-rpfv
 $ ls /boot/*-rpi
   /boot/config-3.18.0-trunk-rpi
   /boot/initrd.img-3.18.0-trunk-rpi
   /boot/System.map-3.18.0-trunk-rpi
   /boot/vmlinuz-3.18.0-trunk-rpi

Die version des installiertem kernel Image merken und an das Ende der folgenden Datei anhaengen:

 $ sudo nano /boot/config.txt

Beispiel

 kernel=vmlinuz-3.18.0-trunk-rpi
 initramfs initrd.img-3.18.0-trunk-rpi followkernel