RS485 Bricklet

Features

  • Unterstützt low-level RS485 sowie Modbus-RTU-Master/Slave
  • Modbus-RTU-Implementierung standardkonform für alle Read/Write-Funktionen von Coils und Registern
  • Unterstützt Halb- und Voll-Duplex
  • Konfigurierbare Baudrate, Parität, Stoppbits und Wortlänge
  • Schaltbare 120 Ohm Terminierung

Beschreibung

Mit dem RS485 Bricklet können Bricks differentielle Daten über RS-485 empfangen und senden.

Es unterstützt Halb- und Voll-Duplex und hat eine konfigurierbare Terminierung.

Das Bricklet hat drei Modi:

  • RS485,
  • Modbus-RTU-Master und
  • Modbus-RTU-Slave.

Im RS485-Modus können beliebige Daten empfangen und gesendet werden. Die Modbus-Modi sind Modbus-Standardkonform. Im Modbus-RTU-Master-Modus können beliebige Coils/Register von einem Slave gelesen und gesetzt werden. Im Modbus-RTU-Slave-Modus ist möglich Daten für Coils/Register bereitzustellen und über eine Modbus-Master Schreiboperation zu empfangen.

Das Bricklet verfügt über keine galvanische Trennung zum Tinkerforge System. Das heißt es gibt eine direkte elektrische Verbindung zwischen den Anschlussklemmen des Bricklets und dem restlichen System. Sollte dies in der jeweiligen Anwendung zu ungewollten Verbindungen, Masseschleifen oder Kurzschlüssen führen, so ist der Einsatz zusammen mit einem Isolator Bricklet ratsam.

Technische Spezifikation

Eigenschaft Wert
Stromverbrauch 64mW (12,8mA bei 5V, Idle)
   
Baudrate 100 - 2000000 baud
Parität keine / ungerade / gerade
Stoppbits 1 / 2
Wortlänge 5 / 6 / 7 / 8
Duplex halb / voll
   
Abmessungen (B x T x H) 40 x 40 x 14mm (1,57 x 1,57 x 0,55")
Gewicht 13g

Ressourcen

Anschlussmöglichkeiten

Im Voll-Duplex Modus müssen TX+, TX-, RX+, RX- und GND verbunden werden.

Im Halb-Duplex Modus sind TX+ / RX+ und TX- / RX- gebrückt, es reicht also entweder TX+ / TX- / GND oder RX+ / RX- / GND zu verbinden. Es ist auch möglich darüber eine Kette von Modbus Geräten zu verbinden.

RS485 Bricklet Verbindungsmöglichkeiten

Duplex und Terminierung

Mit den DIP-Schaltern auf dem Bricklet können Duplex und Terminierung konfiguriert werden.

Es kann zwischen Voll- und Halb-Duplex gewählt werden und eine 120 Ohm Terminierung kann ein- und aus-geschaltet werden.

RS485 Bricklet DIP-Schalter Einstellungen

Eine Legende mit den unterschiedlichen Konfigurationsmöglichkeiten befindet sich auch auf der Unterseite des Bricklets.

  • DIP-Schalter 1 verbindet einen 120 Ohm Terminierungswiderstand zwischen TX+ und TX-
  • DIP-Schalter 2 verbindet TX+ mit RX+ für Half-Duplex-Betrieb
  • DIP-Schalter 3 verbindet TX- mit RX- für Half-Duplex-Betrieb
  • DIP-Schalter 4 verbindet einen 120 Ohm Terminierungswiderstand zwischen RX+ und RX-

Der gesamte Terminierungswiderstand eines einzelnen Busses muss 120 Ohm betragen. Daher wird im Halb-Duplex Modus mit Terminierung nur DIP-Schalter 1 angeschaltet und DIP-Schalter 4 bliebt aus, da ansonsten führt die TX+/RX+ und TX-/RX- Verbindung dazu das beide 120 Ohm Terminierungswiderstände parallel geschaltet wären und so der gesamte Terminierungswiderstand bei 60 Ohm liegen würde.

Modbus-RTU-Funktionen

Im Modbus-Master/Slave-Modus können Modbus-Nachrichten gesendet und empfangen werden. Zum Beispiel kann ein Modbus-Master eine Anfrage an einen Modbus-Slave senden. Die Modbus-Funktionen basieren auf Callbacks.

Zum besseren Verständnis des generellen Konzepts beschreiben wir hier ein Szenario. In diesem Szenario sind zwei RS485-Bricklets im Bus. Eins ist im Modbus-Master-Modus und das andere ist im Modbus-Slave-Modus. Der Modbus-Master möchte 4 Register beginnend mit dem Register 400002 (also dem zweiten Holding Register) vom Modbus-Slave mit Adresse 8 lesen:

  1. Dazu registriert der Master den modbus_master_read_holding_registers_response Callback, welcher ausgeführt wird, wenn der Slave auf eine Anfrage des Masters antwortet. Das Bricklet welches im Slave-Modus operiert, muss sich auf den modbus_slave_read_holding_registers_request registrieren. Dieser wird bei Empfangen einer Anfrage aufgerufen.
  2. Der Master ruft die Funktion modbus_master_read_holding_registers auf. Die Parameter der Funktion sind die Slave-Adresse, die Nummer des ersten Registers und die Anzahl der zu lesenden Register. Dabei ist die Präfix-Ziffer 4, die das Register als Holding Register ausweist, implizit. Es muss also nur 2 als Registernummer übergeben werden. Die Funktion sendet die Anfrage auf dem Bus.
  3. Auf der Slave-Seite wird der registrierte Callback aufgerufen. Die Parameter zeigen, dass der Master 4 Holding Register beginnend beim Register 2 lesen möchte.
  4. Der Slave ruft die Funktion modbus_slave_answer_read_holding_registers_request mit den angeforderten Daten auf, diese sendet die Antwort auf dem Bus.
  5. Nach Empfang der Antwort wird beim Master der Callback modbus_master_read_holding_registers_response aufgerufen mit den angeforderten Daten aufgerufen.

Für Details dieser Funktionen siehe Programmierschnittstelle.

Alle Verfügbaren Modbus-Funktionen können auch über den Brick Viewer ausprobiert werden:

RS485 Bricklet im Brick Viewer

Erster Test

Um ein RS485 Bricklet testen zu können, müssen zuerst Brick Daemon und Brick Viewer installiert werden. Brick Daemon arbeitet als Proxy zwischen der USB Schnittstelle der Bricks und den API Bindings. Brick Viewer kann sich mit Brick Daemon verbinden, gibt Informationen über die angeschlossenen Bricks und Bricklets aus und ermöglicht es diese zu testen.

Als nächstes muss das RS485 Bricklet mittels eines Bricklet Kabels mit einem Brick verbunden werden. Verbinde dann den RX+ mit dem TX+ Pin und den RX- mit dem TX- Pin mit jeweils einem kurzen Kabel, damit das Bricklet seine eigene Ausgabe zurück liest. Konfiguriere die DIP-Schalter auf Voll-Duplex, mit halber Terminierung (1: an, 2: aus, 3: aus, 4: aus). Dies ist eine Abweichung vom normalen Voll-Duplex Modus mit Terminierung, da das Bricklet mit sich selbst kommuniziert für diesen Test. Bei voller Terminierung wäre der gesamte Terminierungswiderstand 60 Ohm statt 120 Ohm, bedingt durch die Parallelschaltung beider verbundener Terminierungswiderstände.

Wenn der Brick per USB an den PC angeschlossen wird sollte einen Moment später im Brick Viewer ein neuer Tab namens "RS485 Bricklet" auftauchen. Wähle diesen Tab aus. Konfiguriere hier den Modus RS485 und die Duplexoption Full-Duplex und drücke den Save Configuration-Button Wenn alles wie erwartet funktioniert, kann jetzt Text in das Eingabefeld getippt und mit Enter abgeschickt werden. Der gleiche Text sollte dann im Textfeld darüber erscheinen.

RS485 Bricklet im Brick Viewer

Nun kann ein eigenes Programm geschrieben werden. Der Abschnitt Programmierschnittstelle listet die API des RS485 Bricklet und Beispiele in verschiedenen Programmiersprachen auf.

Gehäuse

Ein laser-geschnittenes Gehäuse für das RS485 Bricklet ist verfügbar.

Gehäuse für RS485 Bricklet

Der Aufbau ist am einfachsten wenn die folgenden Schritte befolgt werden:

  • Schraube Abstandshalter an das Bricklet,
  • schraube Unterteil an untere Abstandshalter,
  • baue Seitenteile auf,
  • stecke zusammengebaute Seitenteile in Unterteil und
  • schraube Oberteil auf obere Abstandshalter.

Im Folgenden befindet sich eine Explosionszeichnung des RS485 Bricklet Gehäuses:

Explosionszeichnung für RS485 Bricklet

Hinweis: Auf beiden Seiten der Platten ist eine Schutzfolie, diese muss vor dem Zusammenbau entfernt werden.

Programmierschnittstelle

Siehe Programmierschnittstelle für eine detaillierte Beschreibung.

Sprache API Beispiele Installation
C/C++ API Beispiele Installation
C/C++ für Mikrocontroller API Beispiele Installation
C# API Beispiele Installation
Delphi/Lazarus API Beispiele Installation
Go API Beispiele Installation
Java API Beispiele Installation
JavaScript API Beispiele Installation
LabVIEW API Beispiele Installation
Mathematica API Beispiele Installation
MATLAB/Octave API Beispiele Installation
MQTT API Beispiele Installation
openHAB API Beispiele Installation
Perl API Beispiele Installation
PHP API Beispiele Installation
Python API Beispiele Installation
Ruby API Beispiele Installation
Rust API Beispiele Installation
Shell API Beispiele Installation
Visual Basic .NET API Beispiele Installation
TCP/IP API    
Modbus API