Startseite Lösungen Modbus-Kommunikation zwischen Host und Smart Display mit Schalter- und Indicator-Steuerung

Modbus-Kommunikation zwischen Host und Smart Display mit Schalter- und Indicator-Steuerung

Oct 26, 2023

Einführung

Modbus-Kommunikation zwischen Host und Smart Display

Um Entwicklern den Einstieg in die WINSTAR Smart Displays zu erleichtern und die Funktionsweise anschaulich zu vermitteln, stellen wir regelmäßig praxisorientierte Demo-Projekte für unterschiedliche Anwendungsszenarien vor. In diesem Beitrag zeigen wir ein weiteres Modbus-Beispiel, das sowohl Einsteigern als auch erfahrenen Entwicklern einen schnellen Überblick über die grundlegende Funktionsweise vermittelt.

Modbus ist ein in der Industrieautomation weit verbreitetes Kommunikationsprotokoll zur Anbindung und Steuerung verschiedener Geräte und Sensoren. In dieser Anwendung übernimmt ein Arduino-Board die Funktion des Host-Controllers für die Systemintegration. Über Modbus kann der Arduino verschiedene Sensoren und Toggle Buttons einbinden und damit das Smart Display, Gauge, Indicator sowie LEDs steuern. In diesem Demo-Projekt kommuniziert ein Arduino Mega 2560 mit RS485 Shield über Modbus mit dem Smart Display.

Das Programm zeigt, wie Sensorwerte über Modbus-Register ausgelesen, Display-Seiten gewechselt und LEDs abhängig von den erfassten Sensorwerten gesteuert werden.

Systemblockdiagramm
Systemblockdiagramm

 

Für diese Anwendung werden folgende Komponenten benötigt:

  1. 7-Zoll Smart Display mit Modbus
  2. Arduino Mega 2560
  3. RS485 Modbus Shield für Arduino Mega 2560
  4. Arduino IDE v2.0.4
  5. Modbus RS485 Dongle
  6. Physischer Taster
  7. Potentiometer-Sensor (Rotary Angle Sensor)
  8. LED
  9. GUI Builder v0.4.2 oder höher
 

Das Demo-Projekt gliedert sich in drei Schritte:

  1. Demo-Projekt im GUI Builder erstellen.
  2. Projekt erstellen und hochladen.
  3. Arduino-Host programmieren.
 

Demo-Projekt im GUI Builder erstellen

Öffnen Sie zunächst eine aktuelle Version des GUI Builders und erstellen Sie ein neues Projekt. Geben Sie den Projektnamen ein und überprüfen Sie den standardmäßig automatisch ausgewählten Projektordner. Wählen Sie anschließend den Gerätetyp aus; für diese Anwendung wird ein 7-Zoll-Gerät verwendet. Wählen Sie danach das Kommunikationsprotokoll aus und übernehmen Sie für die Display-Ausrichtung die Standardeinstellung Landscape. Wählen Sie unter UI Template die Option Blank und klicken Sie abschließend auf die Schaltfläche Create, um das neue Projekt wie in der folgenden Abbildung dargestellt anzulegen.

Demo-Projekt im GUI Builder erstellen - 1

 

Nach dem Erstellen des Projekts wird die folgende Ansicht angezeigt.

Demo-Projekt im GUI Builder erstellen - 2

 

Für das vorgesehene Demo-Szenario wird eine weitere Seite benötigt. Klicken Sie dazu auf die Schaltfläche Page und anschließend auf die Schaltfläche +, um eine neue Seite hinzuzufügen.

Demo-Projekt im GUI Builder erstellen - 3

 

Im Bereich Resource kann ein benutzerdefinierter Hintergrund ausgewählt und als Hintergrund der Seite verwendet werden.

Demo-Projekt im GUI Builder erstellen - 4

 

Der Hintergrund kann auch im Bereich Page ausgewählt werden.

Demo-Projekt im GUI Builder erstellen - 5

 

Wechseln Sie anschließend zurück zum Bereich Controls auf der ersten Seite. Wählen Sie entsprechend dem Demo-Szenario den Toggle Button aus und ziehen Sie ihn per Drag-and-drop in den Layoutbereich der Seite. Platzieren Sie Gauge und Indicator auf die gleiche Weise.

Demo-Projekt im GUI Builder erstellen - 6

 

Projekt erstellen und hochladen

Nachdem die vorherigen Schritte abgeschlossen, zwei separate Seiten erstellt und die Widgets Toggle Button, Gauge und Indicator auf der ersten Seite platziert wurden, kann das Projekt erstellt werden. Wechseln Sie zum Bereich Page Info. Klicken Sie auf die Schaltfläche Device und wählen Sie Device Properties. Überprüfen Sie die Einstellung unter Protocol, wählen Sie anschließend den COM-Port aus und stellen Sie die Baudrate ein. Klicken Sie danach auf "Connect to device", um die Verbindung zum Gerät herzustellen. Klicken Sie abschließend wie in der folgenden Abbildung gezeigt auf Upload, um das Projekt hochzuladen, und warten Sie, bis der Upload abgeschlossen ist.

Projekt erstellen und hochladen - 1

 

Nach Abschluss des Projekt-Uploads klicken Sie wie in der folgenden Abbildung gezeigt auf OK.

Projekt erstellen und hochladen - 2

 

Nach Abschluss des Uploads wird der Startbildschirm wie in der folgenden Abbildung angezeigt.

Projekt erstellen und hochladen - 3

 

Nach dem Startbildschirm wechselt das Display zur ersten Seite. Damit sind das Erstellen und Hochladen des Projekts über den GUI Builder abgeschlossen.

Projekt erstellen und hochladen - 4

 

Arduino-Host programmieren

Die folgende Abbildung zeigt die im Arduino-IDE-Programm definierten Registeradressen und weiteren erforderlichen Einstellungen. Zu Beginn werden die Pins für den physischen Taster, den Drehwinkelsensor und die LEDs festgelegt. Anschließend wird die Modbus-Kommunikation mithilfe der ModbusMaster-Bibliothek initialisiert. Darüber hinaus werden die Modbus-Registeradressen für die Seitenumschaltung sowie für die Widgets Indicator, Gauge und Toggle Button definiert.

Arduino-Host programmieren - 1

 

Weitere Details zum Kommunikationsablauf lassen sich im Bereich „Test Device“ bzw. „Simulator“ des Kommunikationsprotokolls im GUI Builder nachvollziehen. Dort ist ersichtlich, wie der Host über Modbus RS485 mit dem Smart Display kommuniziert.

Die folgende Abbildung zeigt die Log-Daten des „Toggle Button“. Anhand dieser Daten lässt sich erkennen, über welche Adresse auf das Widget zugegriffen wird. Das zweite Byte im Feld Data Byte enthält den Hexadezimalwert 00 06. Dieser Wert entspricht der Adresse des Toggle Button und ergibt nach der Umrechnung in das Dezimalsystem den Wert 6. Über diese Adresse können Daten in das Widget geschrieben werden. In diesem Beispiel wird der Toggle Button jedoch zum Lesen von Daten aus dem Smart Display verwendet. Hierfür wird die Registeradresse „7“ verwendet.

Arduino-Host programmieren - 2

 

Warum wird zum Auslesen des Toggle Button die Registeradresse „7“ verwendet? Detaillierte Informationen zur Registerbelegung und zum Kommunikationsablauf finden Sie im Datenblatt des Modbus Smart Display. Der folgende Ausschnitt aus dem Datenblatt zeigt die für das erste Objekt (Widget), den Toggle Button, verwendeten Adressen.

Arduino-Host programmieren - 3

 

Die folgende Abbildung zeigt die Log-Daten des „Gauge“. Daraus lässt sich die Adresse des Gauge-Widgets ermitteln. Das zweite Byte im Feld Data Byte enthält den Hexadezimalwert 00 6A. Dieser entspricht der Adresse des Gauge und ergibt nach der Umrechnung in das Dezimalsystem den Wert 106. Über diese Adresse können Daten in das Gauge-Widget geschrieben werden.

Arduino-Host programmieren - 4

 

Die folgende Abbildung zeigt die Log-Daten des „Indicator“. Daraus lässt sich die Adresse des Indicator-Widgets ermitteln. Das zweite Byte im Feld Data Byte enthält den Hexadezimalwert 00 CE. Dieser entspricht der Adresse des Indicator und ergibt nach der Umrechnung in das Dezimalsystem den Wert 206. Über diese Adresse können Daten in das Indicator-Widget geschrieben werden.

Arduino-Host programmieren - 5

 

Die Konstante ADC_REF ist auf 5 V gesetzt und definiert die Referenzspannung des ADC (Analog-Digital-Wandler). Sie wird zur Verarbeitung des Signals des angeschlossenen Sensors verwendet. GROVE_VCC ist auf den Wert 5 gesetzt und definiert die VCC-Spannung der in der Schaltung verwendeten Grove-Schnittstelle. FULL_ANGLE ist auf 300 gesetzt und gibt den vollständigen Drehwinkel des verwendeten Drehwinkelsensors in Grad an.

Arduino-Host programmieren - 6

 

Im nächsten Abschnitt werden die erforderlichen Variablen und Datentypen definiert und mit dem Wert 0 initialisiert.

Arduino-Host programmieren - 7

 

Anschließend werden die Pin-Modi und Einstellungen für die externen Komponenten, beispielsweise den physischen Taster und die LEDs, festgelegt. Zusätzlich wird die Baudrate für die serielle Kommunikation konfiguriert, wie in der folgenden Abbildung dargestellt.

Arduino-Host programmieren - 8

 

Die folgende Abbildung zeigt die Definition der Funktion „ChangePageFunction“. Zum Schreiben der Daten in das entsprechende Modbus-Register wird die Funktion „writeSingleRegister“ verwendet.

Arduino-Host programmieren - 9

 

Die folgende Abbildung zeigt die Verarbeitung des Drehwinkelsensors (Variable Resistor / Rotary Angle Sensor). Erkennt der Arduino-Host eine Änderung des Sensorwerts, wird der neue Wert über das Modbus-Protokoll an das Smart Display übertragen und zur Aktualisierung des Gauge verwendet. Liegt der Gauge-Wert unter 120, bleibt die LED an Pin 13 ausgeschaltet und der Indicator wird grün dargestellt. Bei einem Wert von 120 oder höher wird die LED eingeschaltet und der Indicator wechselt auf Rot.

Arduino-Host programmieren - 10

 

Die folgende Abbildung zeigt die Verarbeitung des physischen Tasters. Erkennt der Arduino-Host eine Änderung des Tasterzustands, wird der entsprechende Wert über das Modbus-Protokoll an das Smart Display übertragen, um die angezeigte Seite umzuschalten.

Arduino-Host programmieren - 11

 

Die folgende Abbildung zeigt, wie der Arduino-Host den Zustand des Toggle Button über das Modbus-Protokoll vom Smart Display ausliest. Abhängig vom empfangenen Wert wird die an Pin 12 angeschlossene LED ein- oder ausgeschaltet.

Arduino-Host programmieren - 12

 

Ein wichtiger Punkt in diesem Programm ist die Verwendung der Funktionen „writeSingleRegister“ und „readHoldingRegisters“. Mit „writeSingleRegister“ werden Daten in Register des Smart Display geschrieben, während „readHoldingRegisters“ zum Auslesen von Daten aus dem Smart Display dient. Bei der Kommunikation mit aktiven Widgets wie dem Gauge ist außerdem auf ausreichende Verzögerungszeiten zwischen den einzelnen Modbus-Kommunikationsvorgängen zu achten. Nachdem eine Anfrage übertragen und die entsprechende Antwort empfangen wurde, kann der nächste Kommunikationsvorgang ausgeführt werden. Daher werden im Programm entsprechende Verzögerungen zwischen den Lese- und Schreibvorgängen berücksichtigt.

Arduino-Host programmieren - 13

 

Nachdem das Programm in der Arduino IDE erfolgreich überprüft und auf den Arduino geladen wurde, können die vorgesehenen Demo-Szenarien ausgeführt werden. Befindet sich der Toggle Button im Zustand OFF, ist auch die extern an Pin 12 angeschlossene LED ausgeschaltet. Wird der Toggle Button auf ON gesetzt, schaltet sich die LED unmittelbar ein, wie in der folgenden Abbildung dargestellt.

Arduino-Host programmieren - 14

 

Im Demo-Szenario wird das Gauge über den Drehwinkelsensor gesteuert. Liegt der Gauge-Wert zwischen 0 und unter 120, wird der Indicator grün dargestellt und die LED an Pin 13 bleibt ausgeschaltet. Erreicht oder überschreitet der Gauge-Wert 120, wechselt der Indicator auf Rot und die LED an Pin 13 wird eingeschaltet, wie in der folgenden Abbildung dargestellt.

Arduino-Host programmieren - 15

 

In diesem Demo-Szenario kann außerdem mithilfe des physischen Tasters zwischen den Seiten gewechselt werden. Beim ersten Betätigen des Tasters wechselt das Display auf die zweite Seite. Wird der Taster erneut gedrückt, kehrt das Display zur ersten Seite zurück, wie in der folgenden Abbildung dargestellt.

Arduino-Host programmieren - 16

 

Damit ist das Demo-Projekt für das 7-Zoll Smart Display vollständig eingerichtet. In diesem Beispiel werden verschiedene Sensoren und LEDs eingesetzt, um über einen physischen Taster zwischen den Displayseiten zu wechseln sowie das Gauge, die Indicators und externe LEDs zu steuern. Das vollständige Programm und weitere Informationen zu diesem Demo-Projekt finden Sie im GitHub-Demoprogramm.

Hinweis: Weitere Informationen zum in diesem Demo-Projekt verwendeten Modbus RS485 Shield finden Sie in der Dokumentation zum Modbus RS485 Shield. Der tatsächliche Hardwareaufbau ist in der folgenden Abbildung dargestellt.

Arduino-Host programmieren - 17

 

Fazit

Zusammenfassend zeigt dieses Programm beispielhaft, wie ein Arduino-Board über das Modbus-Protokoll mit einem Smart Display kommuniziert. Dabei werden Sensorwerte ausgelesen, Displayseiten umgeschaltet sowie Indicators und externe LEDs über Modbus-Register gesteuert. Das Beispiel vermittelt damit praxisnah die grundlegende Modbus-Kommunikation und deren Einsatz bei der Steuerung eines Smart Display.

Haben Sie Fragen zu Displaylösungen für Ihr Unternehmen? Kontaktieren Sie uns!

Abonnieren

Erhalten Sie E-Mails mit den aktuellsten Neuigkeiten von Winstar

Kontaktieren Sie uns

Preis /Datenblatt/ Allgemeine Anfrage

Technischer Support

Kontaktieren Sie uns wegen technischer Informationen

go top
Kontakt
close

Wir schätzen Ihre Privatsphäre

Durch Klicken auf „Alle Cookies zulassen“ stimmen Sie der Speicherung von Cookies auf Ihrem Gerät zu, um die Navigation auf der Website zu verbessern, die Nutzung der Website zu analysieren und unsere Marketing- und Leistungsbemühungen zu unterstützen. Weitere Informationen zu diesem Thema finden Sie in unserer Richtlinie. Datenschutzrichtlinie

Wir schätzen Ihre Privatsphäre

Winstar und bestimmte Drittparteien verwenden Cookies auf www.winstar.com.tw. Die Einzelheiten zu den Arten von Cookies, ihrem Zweck und den beteiligten Drittparteien sind unten sowie in unserer Cookie-Richtlinie beschrieben. Klicken Sie auf „Alle zulassen“, um unserer Verwendung von Cookies zuzustimmen und die bestmögliche Erfahrung auf unseren Websites zu erzielen. Sie können auch Ihre Präferenzen festlegen oder Cookies ablehnen (mit Ausnahme der unbedingt erforderlichen Cookies).

Einwilligungspräferenzen verwalten

Immer aktiv
Notwendige Cookies

Diese Cookies sind unerlässlich, um Ihnen das Navigieren auf der Website zu ermöglichen und ihre Funktionen zu nutzen, wie z. B. das Festlegen Ihrer Datenschutzpräferenzen, das Einloggen oder das Ausfüllen von Formularen.

Analyse-Cookies

Diese Cookies, auch als „Statistik-Cookies“ bekannt, sammeln Informationen darüber, wie Sie eine Website nutzen, z. B. welche Seiten Sie besucht und auf welche Links Sie geklickt haben. Siehe Details.