Long Distance Bus

Wer im IoT-Bereich unterwegs ist, steht oft vor der Herausforderung, Daten auch über weitere Stecken zu übertragen. Dazu gibt es mit Fernfunkverbindung (LTE, LoRa) oder Nahbereichsfunk (WiFi, Bluetooth, 433/868MHz, Zigbee u.a.) und natürlich Kabelverbindungen. Gerade im Gebäude sind Kabel oft die erste Wahl, da damit auch die Energieversorgung möglich ist und Funk nicht immer stabil funktioniert. Lange Kabel haben aber besondere Herausforderungen bezüglich Störungen etc.

Problem mit langen Leitungen

Die Übertragung von Signalen über Kabel unterliegt verschiedenen Störeinflüssen, die je nach Technik auch schon bei kurzen Kabeln auftreten. Auch die Geschwindigkeit der übertragenen Daten ist zu beachten.

  • Widerstand
    Haben Sie schon einmal im Kindergeburtstag mehrere Waffeleisen an eine Kabeltrommel angeschlossen? Die Kabel werden ganz schön warm und das ist auch ein Zeichen, Dass hier ein Verlust auftritt. Am Ziel kommt also nicht mehr die komplette Leistung an. Der Leitungswiderstand, der auch was mit dem Leitermaterial (Kupfer, Aluminium etc.) und dem Durchschnitt zu tun hat, wirkt wir ein Spannungsteiler. Wer vorne 5V anlegt, sollte nicht 5V am Ziel erwarten.

    Allerdings ist der Strom an allen Stellen gleich. Wer also nicht die Spannung sondern den Strom misst, erkennt Signale besser aber bezahlt dafür mit einem höheren Energiebedarf.
  • Kapazitäten
    Der zweite Störfaktor ist die Tatsache, dass nebeneinanderliegende Leitungen wie die Platten eines Kondensators wirken und eine kapazitive Komponenten mit in den Bild bringt. Die Leitung lädt sich quasi auf und wer Rechtecksignale auflegt, wird "abgerundete" Flanken erhalten.

    Das lässt sich nicht verhindern aber man muss einfach die Signalverarbeitung darauf abstellen, z.B. indem man Flanken statt Level auswertet oder die Stabilisierung des Pegels abwarten. Je schneller die Übertragung ist, desto kritischer werden diese Einflüsse.
  • Störungen/Überspannung
    Ein Kabel ist natürlich auch eine riesige Antenne und andere elektromagnetische Felder, z.B. 50 Hz Stromleitungen, Smartphones etc. induzieren Störsignale. Abgeschirmte bzw. verdrillte Leitungen und korrekte Erdung (nur eine Seite wegen Schleifenstrom) helfen hier. Ebenso können die die Datenrate auf die niedrige notwendige Geschwindigkeit reduzieren, über Prüfsummen solche Fehler erkennen und Daten erneut anfordern oder sogar korrigieren oder das Übertragungsverfahren (Frequenzen statt Pegel) ändern.
  • Bus
    Bei einem Bus mit mehreren Geräten gibt es meist eine Signalleitung, die von allen Geräten auf Masse gezogen werden kann. Wenn nur ein Gerät spricht, reicht damit eine Leitung. Manchmal kommt noch eine separate Taktleitung dazu. Aber je länger die Leitung wird, desto höher werden die Widerstände und viele Geräte dämpfen weiter. Aber der Pullup-Widerstand kann auch nicht endlos hoch sein.

Spätestens jetzt können Sie erahnen, dass wir im IoT-Bereich gerne über digitale Technik mit "1" und "0" sprechen aber das nur im Nahbereich, quasi auf dem Breadboard, gilt. Sobald das Gehäuse verlassen wird, kommen andere knifflige Aufgaben ins Bild und aus der schönen digitalen Technik werden wieder Analogsignale, bei denen manchmal dann ein Oszilloskop, Entstörkondensatoren, Drosselspulen, Varistoren u.a. Bausteine dazu gehören.

Anstatt die Spannung auf dem Bus zwischen 0 und 5 Volt oder 0 und 3,3Volt schwanken zu lassen, könnte man mit höheren Spannungen mehr Reserve bereitstellen. Damit wird aber der Batteriebetrieb erschwert. Ein Wechsel auf differenzielle Pegel verbessert auch die Signalsicherheit. RS-232 nutzt z.B.: +3-24V als "0" und -3 bis -24V als "1" und der Bereich von -3 bis +3 Volt ist ungültig. Allerdings erlaubt RS232 nur eine Verbindung zwischen zwei Stationen und keinen Bus. Im Industriebereich gibt es auch "Stromschleifen", d.h. anstatt dem Spannungspegel wird die Stromstärke, typischerweise 20mA genutzt. Der Strom in einem Stromkreis ist ja überall gleich. 20mA bei 5 Volt bedeuten aber eine Verlustleistung von 100mW, was für Batteriegeräte schon nicht mehr möglich ist. Zuletzt gibt es natürlich noch die Modulation der Daten auf einer Leitung als Frequenzen, wie dies z.B. bei DSL genutzt wird. Damit wird die Elektronik aber schon deutlich komplexer und damit teurer und energiehungriger

Bus-Vergleich

Wie so oft gibt es nicht nur eine Verbindung sondern mehrere Systeme, um Daten zu übertragen. Einige Beschreibungen beziehen sich auf elektrische Eigenschaften während andere auch die Signalinterpretation festlegen. Ein Beispiel ist RS-485, was eigentlich eine elektrische Schnittstelle beschreibt aber oft gleichwertig mit "MODBUS RTU" als Datenprotokoll genannt wird. MODBUS selbst kann aber auch über TCP und andere Wege übertragen werden. Hier versuche ich mich auf die elektrischen Systeme zu beschränken.

Name Elektrisch Min Signaladern Duplex ca. Länge Max Geräte Speed Beschreibung

I2C

Bus

SDA, SCL, GND

Nein

112 Adressen

01,-5MBit

Der Bus wurde ursprünglich in TV-Geräten zur Kommunikation zwischen Einheiten genutzt. Dabei kommuniziert ein Master mit den Slaves

SPI

1:1

Bus

Stern

4

Nein

Nahbereich

Serieller Bus, bei dem Geräte über eine "ChipSelect"-Leitung aktiviert werden und die Daten über MOSI /MISO-Leitungen übertragen werden. Oft als Schnittstelle zwischen Mikrocontrollern oder Displayansteuerung.

1-Wire
TWI

Bis

1
+GND
VCC-Optional

 

100m

ca. 150

16,3kBit

Häufig für Temperatursensoren genutzt, bei denen jede eine eindeutige Adresse, ähnlich MAC-Adresse, hat und seriell angesprochen werden. In der minimalen Ausprägung reicht eine Datenleitung neben der Masseleitung, welche zugleich Energie zuführen kann

RS232

1:1

3
RxD/TxD/GND

Ja

max. 15m

2

kBit

Quasi jedes Computermodem aus der BTX/Mailbox-Zeit wurden per RS 232/V.24 angeschlossen um digitale Daten in Töne für die Telefonleitung zu verwandeln. Die Spannungspegel von +/-24 Volt sind für moderne Prozessoren eher ungewöhnlich aber über passende Treiberbausteine (MAXIM232).

Auch wenn mit abgeschirmten Kabel mehr möglich ist, sind 300, 2400, 9600 bis 115200 Bit/Sek übliche Raten.

20mA Loop

1:1

2

Nein

?

2

kBit

Um die Nachteiler der Signalerkennung über Spannungen zu umgehen, kann auch der fließende Strom genutzt werden. Üblich ist eine Spannung von 24V und ein Strom von 4..20mA als Erkennung einer 1. Kein Strom steht für eine 0.

RS-485
EIA-485

Bus

2

Nein

500m

16/Bus

kBit bis 10 MBit

Die Rs 485-Schnittstelle ist sehr störfest und kommt als Feldbus an vielen Stellen vor, z.B.: der Veranstaltungstechnik als DMX aber auch bei der Haussteuerung und erlaubt bis zu 32 Geräte an einem Bus.

KNX

Stern
Baum
Bus

2

Nein

<700-1000m

kBit

klassische Gebäudesteuerung und beschreibt elektrische Eigenschaften und Protokoll

KNX
https://de.wikipedia.org/wiki/KNX-Standard

Und das sind noch lange nicht alle Bus-Systeme, die es so gibt. Gerade in der Computerecke gibt es mit ISA, EISA, Centronics, USB, Ethernet, PCI, PCI-X, SATA noch eine Unmenge für deutlich höhere Datenraten, die sich aber alle im gleichen Gehäuse abspielen und daher in der Bastelbude nicht weiter interessant sind.

Für eigene IoT-Projekte müssen Sie halt schauen, welche Geräte miteinander sprechen wollen. Sensoren lassen sich in der Nähe des Mikroprozessors meist per I2C oder SPI anbinden. Auch 1-Wire wird gerade mit Temperaturfühlern gerne genutzt. Auch serielle Schnittstellen, dann allerdings mit TTL-Pegel sind nicht nur für die Programmierung von Mikroprozessoren üblich sondern auch für einfache Ausgaben auf ein Terminal.

Wenn Sie aber über weitere Strecken eine Kommunikation aufbauen wollen, die aber nicht per Funk (WLAN, LoRa, LTE) arbeitet und dennoch im Gebäude bleibt, dann würde ich mir RS 485 genauer anschauen. Wer kabellos nur ab und an Messwerte senden will, könnte das per 433/868 MHz oder BluetoothLE und einem empfangsbereiten Gateway zur Weiterverarbeitung machen.

Wenn Sie dann immer noch nicht fündig geworden sind, dann können Sie ja weitere Feldbusse in die Auswahl aufnehmen.

Bus-Kaskade

Wenn die meisten BusSysteme so empfindlich oder wie RS-485 auf 16 Geräte pro Abschnitt beschränkt sind aber es sich dennoch um einen Bus handelt, könnte man ja eine Verkettung überlegen. Ich habe mir folgendes überlegt, um z.B.: viele Sensoren hintereinander zu verbinden und die Signale durchzureichen. Sie kennen das vielleicht schon von den LED-Bändern (LEDs und WS2812), bei denen immer ein Datagram durchgesendet wird und eine LED ihre drei Byte abgreift und den Rest weitergibt. In meinem Fall würde ich das umdrehen, dass ein Gerät die empfangenen Daten einfach weiter gibt und ggfls die Adresse hochzählt. So muss ich nicht mal pro Gerät eine individuelle Adresse vergeben.

Jedes Gerät behauptet einfach es wäre alleine und hätte die Nummer "0".  Wenn es die Daten wegsendet und der nächste Hop schon der Empfänger ist, dann passt das. Wenn das nächste Gerät aber selbst ein Sender ist, dann kann es einfach den Zähler erhöhen. Aus dem Gerät 0 wird dann die 1 und das empfangene Gerät nimmt dessen Position ein.

Wenn am Ende z.B. 100 Geräte angeschlossen sind und das erste sendet seine Information, dann kommt es beim Empfänger mit der Nummer 99 an, da jedes Gerät die Nummer um eins erhöht. Als Empfänger weiß ich dann dennoch, welches Gerät die Information gesendet hat. Natürlich funktioniert das nur dann gut, wenn der Bus "statisch" und nicht dauernd Geräte addiert oder entfernt werden.

Bislang habe ich so einen Bus aber noch nicht umgesetzt, denn mit RS-485 oder 1-Wire gibt es ja schon bewährte Systeme, die vermutlich auch ausreichend Sensoren unterstützen.

Weitere Links