openABK-Support für programmierbare Displays und Gateways
Autor: Wolfgang Büscher, MKT Systemtechnik
Datum: 2020-05-29 (ISO 8601)
Quelldatei ("Master"): <WoBu><ProgrammingTool>..help\openABK_49.htm
Online: www.mkt-sys.de/MKT-CD/upt/help/openABK_49.htm
Inhalt
- Einleitung
- Parametrieren der openABK-Funktionen im Programmiertool
- Interaktion von openABK und Script
- Siehe auch (Links zu weiteren Dokumenten):
-
Handbuch zum Programmiertool : 'Display-Variablen mit Anbindung an openABK',
Stichwort-Verzeichnis ('von A bis Z'),
Feature Matrix (mit Übersicht in welchen MKT-Geräten ein openABK-Client oder/und -Server enthalten ist),
openABK.org : Beschreibung der offenen Schnittstelle zwischen Datenloggern und Displays.
1. Einleitung
Dieses Dokument beschreibt die openABK-Funktionalität, die in verschiedenen
(aber nicht allen) programmierbaren
Anzeige-Geräten von MKT Systemtechnik optional zur Verfügung steht.
Die openABK-Protokoll-Spezifikation konnte anno 2015 von openABK.org heruntergeladen werden.
Die deutsch-englische Abkürzung 'openABK' steht für 'offenes Anzeige- und Bedienkonzept'.
Das Protokoll dient im Wesentlichen zur Kommunikation zwischen 'Display' und 'Logger', wozu
UDP/IP, TCP/IP, HTTP, und verschiedene Web-Services verwendet werden.
Mangels Nachfrage wurde die Weiterentwicklung von openABK in den Anzeigegeräten
von MKT (u.A. das 'konfigurationsfreie Auflisten' von Signalen ohne Programmierung)
wieder eingestellt. Die anno 2016 bis 2018 im MKT-View III integrierten Funktionen
werden bei nachfolgenden Generationen (speziell beim CAN-FD-fähigen MKT-View V)
wohl nicht mehr enthalten sein.
1.1 OpenABK-'Discovery' (Protokoll zum Auffinden von IP-Adressen)
MKT-Geräte mit Ethernet-Anschluss können per openABK-'Discovery'-Prokoll im lokalen Netzwerk gefunden werden.
Das Programmiertool kann damit eine Liste mit den IP-Adressen aller vorhandenen Geräte erstellen,
unabhängig davon ob diese eine per DHCP zugewiesene dynamische, oder eine statische IP-Adresse verwenden.
Das Aus- und Wiedereinschalten des Gerätes (um das Senden einer DHCP-Abfrage zu erzwingen)
ist beim Einsatz des openABK-'Discovery'-Protokolls daher nicht mehr erforderlich.
Einige 'MKT-Views' (z.B. MKT-View III) unterstützen zwar das openABK-'Discovery'-Protokoll
zum Erkennen der IP-Adresse, enthalten aber keinen 'vollwertigen' OpenABK-HTTP-Server !
Solche Geräte (die nur das 'Discovery'-Protokoll unterstützen) antworten auf entsprechende
UDP-Broadcasts an Port 51234 mit ihrer IP-Adresse, melden per JSON-Objekt aber statt "Key":"AbkServer"
das Wertepaar "Key":"UPT" (d.h. User Programmable Terminal, aber kein "ABK-Server").
Dadurch werden Probleme mit anderen OpenABK-Clients im Netzwerk vermieden, die nur auf die
Antwort von einem 'vollwertigen' OpenABK-Server reagieren sollten.
Alle per 'Discovery' erkannten Geräte werden in der Liste von IP-Adressen angezeigt (zusätzlich zu den
per DHCP anhand ihrer MAC-Adresse als 'MKT-Gerät' erkannten Displays).
Zur Erleichterung der Auswahl wird zusätzlich der Name des openABK-Gerätes angehängt :
(Screenshort nach 'Transfer'..'MKT- und OpenABK-Geräte im lokalen Netz finden'.
Verschiedene Geräte wurden im Netzwerk gefunden,
darunter ein MKT-View (IV) mit dem Host-Namen "MKTVIEW4WB"
und ein Open-ABK-'Test'-Server mit fehlerhaft gemeldeter IP-Adresse )
1.2 OpenABK-Server im MKT-View (IV)
Für die ersten Tests mit openABK steht seit Januar 2016 ein openABK-Server im MKT-View IV zur Verfügung.
Geplant: Dieser wird (später) in einer kostenoptimierten, Display-losen Variante als 'CAN-openABK-Gateway',
eventuell auch als openABK-kompatibler 'Logger' verfügbar sein.
Stand der Entwicklung im Februar 2016:
- Server-Informationen, Variablenlisten, Mailbox-Listen können vom Server angefordert werden,
- einzelne Variablen- und Mailbox-Werte können per POST abgefragt werden (/abk/variables/var_value, etc),
- DAQ-Listen können per PUT erstellt, per GET abgefragt, und per DELETE gelöscht werden (/abk/variables/daq_list, etc),
- Server-Events können per GET (mit 'long polling') abgefragt werden
- Als openABK-Variablen stehen alle UPT-'Display-Variablen' zur Verfügung, die z.B. per CAN mit der 'Aussenwelt' verbunden sind
- Als openABK-'Mailboxen' stehen alle UPT-Display-Variablen zur Verfügung, die nicht per CAN mit der 'Aussenwelt' verbunden sind
Die im weiteren Verlauf dieses Dokumentes beschriebenen Funktionen werden nur für 'fortgeschrittene' Anwendungen, bzw. für dem Einsatz des MKT-Views (IV) als openABK-Client benötigt.
1.3 OpenABK-Client im MKT-View (IV)
Stand der Entwicklung im Februar 2016:- Im MKT-View IV ist z.Z. nur der in Kapitel 1.2 vorgestellte openABK-Server vorhanden,
- Im Programmiertool ist dagegen ein openABK-Client vorhanden,
dieser dient bislang allerdings nur zum Zugriff auf den im MKT-View laufenden Server.
2. Parametrieren der openABK-Funktionen im Programmiertool
Für die Konfiguration der Applikation (im MKT-View oder openABK-Gateway) enthält das Programmiertool
das in diesem Kapitel vorgestellte Dialogfenster.
Der Dialog wird üblicherweise nach dem Einlesen der Informationen vom openABK-Server (in vielen Fällen
direkt aus dem openABK-Server) aufgerufen. Für den Verbindungsaufbau mit dem Server
wird zunächst das 'Discovery'-Protokoll verwendet, um einen
geeigneten openABK-Server im Netzwerk zu finden. Anschließend versucht der im Programmiertool
integrierte openABK-Client, alle für die Konfiguration benötigten Informationen per HTTP
(Hypertext Transfer Protocol) aus dem Server zu lesen. Der Server kann ein Gerät
von MKT Systemtechnik sein, oder ein beliebiger Server (z.B. ein Logger mit openABK-Funktionalität).
Um eine Verbindung zum openABK-Server aufzubauen, wählen Sie im Hauptmenü des Programmiertools
den Eintrag Transfer, openABK, und im daraufhin angezeigten Untermenü die Funktion
Definition von Variablen und Mailboxen aus einem openABK-Server lesen.
Sie werden anschliessend nach der IP-Adresse und der Portnummer des openABK-Servers gefragt.
Als Port-Nummer verwendet ein openABK-Server 8080 oder 8090 (Quelle: openABK-Spezifikation V1.0),
es wurden in der Praxis allerdings auch anders konfigurierte openABK-Server beobachtet.
Wenn das Gerät nicht vorher per 'Discovery' gefunden wurde,
entnehmen Sie die IP-Adresse und openABK-Port-Nummer bitte der Beschreibung des Herstellers.
Bei Geräten von MKT Systemtechnik kann sowohl die (statische) IP-Adresse als auch die openABK-Port-Nummer
im Netzwerk-Setup flexibel eingestellt werden.
Die per Discovery ermittelte IP-Adresse wird als 'Vorgabe' verwendet. Vor dem Auslesen der Server-Informationen
kann dessen Adresse ggf. manuell geändert werden kann (falls das 'Discovery'-Protokoll nicht funktioniert,
weil z.B. die dafür benötigten UDP-Telegramme nicht korrekt geroutet werden):
(Screenshot : Eingabe der IP-Adresse und Port-Nummer eines openABK-Servers)
(Screenshot : 'Verbindungsaufbau' oder 'Kommunikation mit dem openABK-Server' im UPT-Programmiertool)
2.1 Verknüpfen von openABK-Variablen mit UPT-Display-Variablen
Nach Abschluss der in Kapitel 2.0 beschriebenen Datenübertragung schaltet das UPT-Programmiertool in ein neues Fenster um, in dem u.A. die auf dem openABK-Server vorhandenen Variablen mit den UPT-Display-Variablen (bzw den Variablen im MKT-Gateway) verknüpft werden können.- Hinweis
- Für Signale im openABK-Server von Loggern oder Gateways (z.B. im MKT-View IV)
ist diese Zuordnung nicht erforderlich, denn per Default sind alle UPT-Variablen
automatisch auch als openABK-Variablen im openABK-Server verfügbar (*).
(Screenshot : Registerkarte 'openABK-Variablen' im UPT-Programmiertool)
In dem Fall muss der noch in Planung befindliche Client-seitige openABK-Support in der Script-Sprache verwendet werden. Entsprechende Script-Beispiele werden im Bedarfsfall noch erstellt.
2.2 Verknüpfen von openABK-'Mailboxen' mit UPT-Display-Variablen
Aus Sicht des Entwicklers stellen openABK-'Mailboxen' ebenfalls Variablen dar. Soweit das der anno 2015 verfügbaren openABK-Spezifikation zu entnehmen war, besteht zwischen 'Variablen' und 'Mailboxen' lediglich der folgende Unterschied:- 'Variablen' sind (aus Sicht eines openABK-Servers) immer mit 'Messwerten' verbunden, z.B. vom CAN-Bus
- 'Mailboxen' dienen wohl zur Signalsiserung von Logger-internen Zuständen und Ereignissen.
Zitat aus der openABK-Spezifikation (anno 2012, V1.0, Seite 9):
> Mailboxen sind für Handshake-Funktionen gedacht.
> Mit ihnen können z.B. Elemente in einem Dialog synchronisiert werden, z.B. ein Fortschritts-Balken.
> Die Funktionsweise ist sehr ähnlich wie die der Variablen.
Dazu dient die Registerkarte 'Mailboxen' im Dialogfenster 'openABK':
(Screenshot : Registerkarte 'openABK-Mailboxen' im UPT-Programmiertool)
2.3 Metadaten von openABK-Variablen und 'Mailboxen'
Intern werden zwischen openABK-Client und -Server auch Meta-Daten ausgetauscht. In den Meta-Daten sind z.B. Informationen über die Skalierung von Messwerten, Kommentare, die physikalische Einheit (z.B. 'km/h'), und ein 'Symbol' (z.B. Formelzeichen 'V' für Velocity) enthalten.Wenn das Programmiertool eine direkte Verbindung mit dem openABK-Server aufgebaut hat, können die Meta-Daten des ersten selektierten Eintrags in der Liste von openABK-Variablen (bzw. Mailboxen) in der Info-Box im unteren Teil des Dialogfensters angezeigt werden:
(Screenshot : Anzeige von openABK-'Metadaten' im UPT-Programmiertool)
2.4 Optionen (Einstellungen) für die openABK-Anwendung
- (Sollte überraschenderweise noch Interesse an openABK bestehen,
nehmen Sie für weitere Informationen bitte Kontakt mit dem Entwickler auf.)
3. Interaktion von openABK und dem Script
(2016-02: Die openABK-Script-Anbindung ist noch in Planung...
2020-05: Die Weiterentwicklung von openABK wurde mangels Nachfrage eingestellt.)
3.1 openABK-Server mit Script-Steuerung
(in Vorbereitung.. siehe oben)
3.2 openABK-Client mit Script-Steuerung
(in Vorbereitung.. siehe oben)
3.3 openABK-spezifische API in der Script-Sprache
(in Vorbereitung.. siehe oben)
3.4 openABK-spezifische Callback-Funktionen
(in Vorbereitung.. siehe oben)