Startseite Lösungen CANopen-Kommunikation zwischen Host und Smart Display mit Taster- und Anzeigesteuerung

CANopen-Kommunikation zwischen Host und Smart Display mit Taster- und Anzeigesteuerung

Jul 25, 2023

Einführung

CANopen-Kommunikation zwischen Host und Smart Display

Für die Steuerung eines Smart Displays sind eine Systemschnittstelle und ein Kommunikationsprotokoll erforderlich. Dieser Artikel zeigt anhand eines praktischen Arduino-Beispiels aus Sicht der Host-Steuerung, wie der HOST Befehle sendet, um die Farbe eines Indicators auf dem Smart Display zu ändern. In diesem Beispiel wird ein Touch-Button in der Benutzeroberfläche platziert und ein physischer Taster mit dem Arduino verbunden. Wird entweder der physische Taster oder der Touch-Button betätigt, ändert sich die Farbe des Indicators auf dem Display und die externe LED wird ein- bzw. ausgeschaltet.

Dieses Anwendungsbeispiel zeigt, wie ein 3,5-Zoll CAN Smart Display mit einem Arduino-Entwicklungsboard gesteuert wird. Dazu gehören die Programmierung des physischen Tasters, des Touch-Buttons, des Indicators auf dem Display und der LED auf dem Board sowie der Empfang von Befehlen vom HOST durch das Smart Display. Als Host-Controller dient ein Arduino Mega 2560 mit CAN Bus Shield, der über CANopen mit dem Smart Display kommuniziert.

Das Systemblockdiagramm ist nachfolgend dargestellt:

CANopen-Kommunikation zwischen Arduino-Host und Smart Display

Systemblockdiagramm

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

  1. 3,5-Zoll CANopen Smart Display
  2. Arduino Mega 2560
  3. CAN Bus Shield für Arduino Mega 2560
  4. CAN Bus Dongle
  5. Physischer Taster
  6. LED
  7. Smart Display GUI Builder v0.4.2 oder höher
 

Dieses Beispiel gliedert sich in drei Teile:

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

Projekt in GUI Builder erstellen

Erstellen Sie zunächst ein neues Projekt und geben Sie einen Projektnamen ein. Wählen Sie anschließend den Gerätetyp aus; in diesem Beispiel wird ein 3,5-Zoll-Gerät verwendet. Wählen Sie CANopen als Kommunikationsprotokoll und stellen Sie die Displayausrichtung auf Landscape ein. Wählen Sie anschließend unter den UI-Vorlagen die Option Blank Template und klicken Sie auf Create, um das neue Projekt zu erstellen, wie nachfolgend dargestellt.

Projekt für CANopen Smart Display in GUI Builder erstellen

Nach Abschluss dieser Einstellungen wird eine leere Seite geöffnet.

Leere Projektseite in Smart Display GUI Builder

Für dieses Anwendungsbeispiel werden ein Touch-Button und ein Indicator-Widget zum Arbeitsbereich hinzugefügt. Wählen Sie die benötigten Widgets im Bedienfeld aus und ziehen Sie sie per Drag-and-drop in den Arbeitsbereich, wie nachfolgend dargestellt.

Touch-Button und Indicator-Widget in GUI Builder hinzufügen

Projekt erstellen und hochladen

Nachdem die vorherigen Einstellungen und das UI-Design abgeschlossen sind, kann das Projekt erstellt und hochgeladen werden. Klicken Sie in der Symbolleiste von GUI Builder auf Device und wählen Sie Device Property. Im Fenster Device Property können Sie die voreingestellte Baudrate verwenden oder diese entsprechend den Anforderungen Ihrer Anwendung anpassen. Stellen Sie sicher, dass die im Arduino-Programm konfigurierte Baudrate mit der Einstellung in GUI Builder übereinstimmt. Klicken Sie anschließend auf Upload, um das Projekt auf das Smart Display zu übertragen, wie nachfolgend dargestellt.

Projekt mit GUI Builder erstellen und auf das Smart Display hochladen

Nach Abschluss des Projekt-Uploads wird die Meldung "Upload project completed" angezeigt. Klicken Sie auf OK, um das Fenster zu schließen, wie nachfolgend dargestellt.

Abgeschlossener Projekt-Upload in GUI Builder

Nach Abschluss des Uploads zeigt das Smart Display den Startbildschirm an, wie nachfolgend dargestellt.

Startbildschirm des Smart Displays nach dem Upload

Nach dem Startbildschirm wechselt das Smart Display zur hochgeladenen Anwendungsseite. Damit ist das Projekt erfolgreich erstellt und hochgeladen.

Hochgeladene Anwendungsseite auf dem Smart Display

Arduino-Host programmieren

In diesem Beispiel wird Arduino IDE v2.0.4 zur Programmierung des Arduino-Hosts verwendet. Für die CAN-Bus-Kommunikation kommen die Bibliothek mcp2515_can.h sowie mehrere unterstützende Bibliotheken zum Einsatz. Weitere Einzelheiten finden Sie im Arduino-Code. Beim Aufbau der Kommunikation zwischen Host und Smart Display ist es wichtig, die den Objekten zugeordneten Adressen zu überprüfen. Weitere Informationen zur CAN-Bus-Kommunikation zwischen Host und Smart Display finden Sie im Kommunikationsprotokoll von GUI Builder. Die erforderlichen Objektadressen sind im Arduino-IDE-Programm definiert, wie nachfolgend dargestellt.

Objektadressen im Arduino-Programm für die CAN-Bus-Kommunikation

In der CANopen-Struktur entspricht der Index des Button-Stils 0 (0x2000), während der Index des Indicator-Stils 1 (0x2001) entspricht. Der jeweilige Index eines Objekts muss bei der Programmierung berücksichtigt werden. Ist der Index eines Objekts bekannt, kann dessen Status über das Arduino-Host-Programm geändert werden. Die entsprechenden Objektindizes lassen sich anhand der Befehlsinformationen in der nachfolgend dargestellten Simulation-Log-Tabelle erkennen:

Button-Objektindex im Simulation Log von GUI Builder

 

Indicator-Objektindex im Simulation Log von GUI Builder

Hier wird der Datentyp der einzelnen Objekte definiert. Wenn weitere Objekte hinzugefügt werden sollen, müssen auch deren entsprechende Datentypen im Programm definiert werden.

Definition der Datentypen für die Objekte im Arduino-Programm

Die folgende Abbildung zeigt, wie ObjectFunCallback die von den einzelnen Objekten empfangenen Werte verarbeitet. Der Code kann entsprechend den Anforderungen der Anwendung angepasst oder um die Verarbeitung weiterer Objekte ergänzt werden.

Verarbeitung der Objektwerte mit ObjectFunCallback

Wenn der Arduino-Host eine Änderung des Zustands des physischen Tasters erkennt, sendet er den entsprechenden Wert über CANopen an das Smart Display. Der folgende Code zeigt die in der Befehlsstruktur verwendeten IDs und Subindizes. Dieser Programmabschnitt aktualisiert den Wert des Indicators (object index 2) entsprechend dem Zustand des physischen Tasters.

CANopen-Befehl zum Aktualisieren des Indicators über den physischen Taster

Definieren Sie die Registeradressen für alle Objekte, konfigurieren Sie die Pin-Modi für externe Komponenten wie den physischen Taster und die LED als Ein- bzw. Ausgänge und stellen Sie die Baudrate ein, wie nachfolgend dargestellt:

Definition der Registeradressen und Pin-Konfiguration im Arduino-Programm

Konfiguration der Baudrate im Arduino-Programm

Abschließend wird in loop() die für dieses Anwendungsszenario erforderliche Programmlogik definiert. Wird entweder der physische Taster oder der Touch-Button auf dem Smart Display betätigt, ändert das System die Farbe des Indicators auf dem Display und schaltet die externe LED ein bzw. aus.

Arduino-Programmlogik zur Steuerung von Indicator und LED

Nachdem das Programm in Arduino IDE erfolgreich überprüft und hochgeladen wurde, wird durch Betätigen des physischen Tasters oder des Touch-Buttons auf dem Smart Display die LED eingeschaltet und die Farbe des Indicators auf Grün geändert. Ist der Indicator rot und die LED ausgeschaltet, wird weder der physische Taster noch der Touch-Button betätigt, wie nachfolgend dargestellt.

Steuerung von Indicator und LED über physischen Taster und Touch-Button

Das oben beschriebene Programm kann über den GitHub-Link heruntergeladen werden. In den Beispielen stehen außerdem weitere Dateien und Informationen zu diesem Demo-Projekt zur Verfügung. Der tatsächliche Hardwareaufbau ist nachfolgend dargestellt.

Hardwareaufbau der CANopen-Demo mit Arduino und Smart Display

Nach Abschluss dieser Schritte können der physische Taster oder der Touch-Button auf dem Smart Display verwendet werden, um den Status des Indicators auf dem Display und die externe LED zu steuern. Damit ist diese Smart Display CANopen-Kommunikationsdemo abgeschlossen.

Fazit

Dieses Beispiel veranschaulicht die Bedienung und Anwendung von GUI Builder und zeigt, wie sich Host-seitige Steuerungsanwendungen über CAN Bus entwickeln lassen. Darüber hinaus wird erläutert, wie der Host Befehle sendet und empfängt, um das Smart Display zu steuern. Anhand dieses Beispiels erhalten Entwickler ein besseres Verständnis der CANopen-Kommunikation und -Steuerung zwischen Host und Smart Display und können es als Referenz für die Entwicklung weiterer Smart Display-Anwendungen nutzen.

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.