# Treiber

> Was ein Treiber ist, wo die Treiber aufgeführt sind und wie einer der Station hinzugefügt wird, der feste Treiber eines Geräts, die Tabelle jedes Treibers, den dieses Produkt kennt, was jede Treiberseite dokumentiert, und der Hinweis auf Treiber, die das Paket nicht mitbringt.

Ein **Treiber** ist das Protokoll, mit dem die Station mit einer Familie von Anlagen spricht: Modbus-Register über TCP, ein OPC UA-Server, eine Siemens-Steuerung. Jedes Gerät auf der Seite Connector gehört zu genau einem Treiber, und der Treiber entscheidet, welche Verbindungsfelder das Gerät zeigt, wie seine Tags adressiert werden, welche Datentypen sie tragen dürfen, ob sie geschrieben werden können, ob der Treiber nach Anlagen suchen kann und ob die Station sie zyklisch liest oder die Anlage von sich aus sendet. Diese Gruppe enthält eine Seite je Treiber; diese Seite ist das, was sie gemeinsam haben.

## Das Verzeichnis {#the-registry}

Die Menge der Treiber ist fest: Sie kommt mit der Anwendung und lässt sich von der Seite aus nicht erweitern. Der Ordner **Treiber** oben im Baum der Spalte Kommunikation öffnet den Katalog derer, die diese Installation mitbringt, jeden mit seiner Beschreibung, der Anzahl seiner Geräte, seinem Zustand und **Treiber hinzufügen**, oder **Öffnen** und **Treiber entfernen**, sobald er hinzugefügt ist; der Katalog und seine Regeln stehen auf [Die Treiberliste und die Seite eines Treibers](connector-drivers).

Jeder Treiber, den das Paket mitbringt, ist sofort einsatzbereit, ohne Schalter zum Ein- oder Ausschalten: Die Station fügt die hinzu, die sie nutzt. Unter dem Ordner Treiber führt der Baum die hinzugefügten Treiber auf, mit oder ohne etwas darunter, die Spalte enthält also, was die Station lesen soll. Ein Treiber wird mit **Treiber hinzufügen** in seiner Zeile im Katalog oder im Menü Neu… der Spalte hinzugefügt und mit **Treiber entfernen** in seiner Zeile im Katalog, auf seiner eigenen Leiste oder in seinem Rechtsklickmenü entfernt. Entfernen löscht nichts: Es wird abgelehnt, solange der Treiber ein Gerät, eine serielle Leitung, einen Broker oder einen Ordner enthält, und ein Treiber, der eines davon enthält, ist immer hinzugefügt. Eine neue Station hat keinen Treiber hinzugefügt; eine Station, die von einer früheren Version aktualisiert wurde, beginnt mit den Treibern hinzugefügt, die sie schon nutzt.

## Der Treiber eines Geräts ist fest {#the-driver-of-a-device-is-fixed}

Sie wählen den Treiber, wenn Sie das Gerät anlegen: Im Menü Neu… der Spalte wird das Gerät über den Eintrag des Treibers selbst angelegt, und Gerät hinzufügen auf der Seite eines Treibers legt unter diesem Treiber an. Von da an zeigt die Karte Gerät den Treiber als Text, der nur gelesen wird. Um ein Gerät auf ein anderes Protokoll zu bringen, legen Sie ein neues Gerät unter dem anderen Treiber an und löschen das alte; die Adresse ändert sich, die Verweise müssen also über die Karte Verwendet von jedes Tags auf die neuen Tags gerichtet werden.

## Jeder Treiber {#every-driver}

Die Treiber sind nach der Geräteart gruppiert, die sie erreichen: in denselben Gruppen und in derselben Reihenfolge, in der der Katalog **Treiber** und **Treiber hinzufügen** im Menü Neu… sie auflisten.

### SPS {#plcs}

| Treiber | Spricht mit |
| --- | --- |
| [Beckhoff ADS](driver-beckhoff-ads) | Beckhoff TwinCAT-Steuerungen über ADS/AMS. |
| [Mitsubishi MC](driver-mitsubishi) | Mitsubishi-Steuerungen über den Treiber MELSEC MC. |
| [Omron](driver-omron) | Omron-Steuerungen: CJ, CS und CP über die Speicheradresse per FINS (UDP, TCP oder Host Link auf einer seriellen Leitung), NJ, NX und NY über den Variablennamen per EtherNet/IP. |
| [Rockwell EtherNet/IP](driver-rockwell) | Allen-Bradley- und Rockwell-Steuerungen über EtherNet/IP (CIP). |
| [Siemens S7](driver-siemens-s7) | Siemens S7-Steuerungen über den Treiber S7comm. |

### Industrieprotokolle {#industrial-protocols}

| Treiber | Spricht mit |
| --- | --- |
| [BACnet](driver-bacnet) | BACnet/IP-Geräten der Gebäudeautomation. |
| [Generic serial and TCP](driver-generic-serial-tcp) | Anlagen mit einem eigenen Text- oder Byteprotokoll, etwa Wägeterminals und Barcodeleser, über eine serielle Leitung, TCP oder UDP. |
| [Modbus RTU](driver-modbus-rtu) | Modbus-Registern über eine serielle Leitung (RS-485/232), im Übertragungsmodus RTU oder ASCII. |
| [Modbus TCP](driver-modbus-tcp) | Modbus-Registern über TCP/IP, im MBAP-Rahmen oder als RTU-Rahmen für einen Seriell-Ethernet-Wandler. Standardport 502. |
| [MQTT](driver-mqtt) | Geräten, die über einen externen MQTT-Broker veröffentlichen, in einfachem MQTT oder Sparkplug B. |
| [OCPP](driver-ocpp) | Ladestationen für Elektrofahrzeuge über OCPP (die Ladestationen verbinden sich mit dieser Station). |
| [OPC DA](driver-opc-da) | Klassische OPC-Data-Access-Server über COM/DCOM, über einen eigenen 32-Bit-Hilfsprozess. |
| [OPC UA](driver-opc-ua) | OPC Unified Architecture als Client über opc.tcp. |
| [SNMP](driver-snmp) | Netzwerkgeräte, die SNMP v1, v2c oder v3 beantworten, etwa USV-Anlagen, PDUs, Switches und Sensoren im Technikraum; mit Redfish für die Server deckt er den Technikraum ab. |

### Messgeräte und Datenerfassung {#instruments-and-acquisition}

| Treiber | Spricht mit |
| --- | --- |
| [Fluke NetDAQ](driver-fluke-netdaq) | Datenerfassungsgeräte Fluke NetDAQ (2640A, 2645A) und 2680 Series (2680A, 2686A), aus den Tags konfiguriert und über die eigene Bibliothek von Fluke in einem 32-Bit-Hilfsprozess gelesen. |
| [NI-DAQmx](driver-ni-daqmx) | Messdatenerfassungs-Hardware von National Instruments (cDAQ-Chassis und ihre Module, USB- und PCI-Express-Geräte) über das auf diesem Rechner installierte NI-DAQmx, ein Abtastwert je Abfrage. |
| [SCPI instruments](driver-scpi) | Laborgeräte, die SCPI sprechen, etwa Multimeter, Netzgeräte und elektronische Lasten, über TCP, eine serielle Leitung oder USB und GPIB über VISA. |

### Funk {#wireless}

| Treiber | Spricht mit |
| --- | --- |
| [LoRaWAN](driver-lorawan) | LoRaWAN-Sensoren und Funkkonzentratoren über den eingebetteten Netzwerkserver Basics Station. |
| [Matter](driver-matter) | Matter-Geräten des vernetzten Zuhauses (Inbetriebnahme über Bluetooth). |

### Web und APIs {#web-and-apis}

| Treiber | Spricht mit |
| --- | --- |
| [AVEVA PI](driver-aveva-pi) | Punkten des AVEVA PI System über die PI Web API, standardmäßig über HTTPS. |
| [HTTP](driver-http) | Beliebigen HTTP- und HTTPS-Endpoints, die als Tags zyklisch gelesen werden, mit optionalen Anmeldedaten. |
| [Redfish](driver-redfish) | Der REST-API Redfish für Server- und Rechenzentrumshardware. |

### Dateien und Datenbanken {#files-and-databases}

| Treiber | Spricht mit |
| --- | --- |
| [Database](driver-database) | Die Tabellen der Datenbank eines Systems im Werk (SQL Server, PostgreSQL, MySQL und MariaDB, SQLite oder jede Datenbank über ihren ODBC-Treiber), wobei jedes Tag eine Zelle über Tabelle, Spalte und Zeile liest oder eine eigene Abfrage ausführt; die Zelle oder ein eigener Befehl des Tags wird geschrieben, wo ein Tag es verlangt. |
| [File](driver-file) | Dateien, die ein anderes Programm in einen lokalen oder Netzwerkordner schreibt (CSV und Text in Spalten, freier Text, JSON, XML), eine Datei auf einmal oder aus einem Eingangsordner gelesen; Zeilen oder ganze Dateien, die für dieses Programm geschrieben werden, wo das Gerät es erlaubt. |

### Tests {#test}

| Treiber | Spricht mit |
| --- | --- |
| [Simulated](driver-simulated) | Künstlichen Signalen in der Anwendung, zum Prüfen ohne Hardware. |

Der [Modbus-Server](connector-modbus-server) steht nicht in dieser Tabelle: Er ist kein Treiber, sondern die Station selbst, die ihre Tags und Variablen der Logic über Modbus TCP an SPS, HMIs und Gebäudeleitsysteme liefert, von einer eigenen Zeile unter dem Ordner Server aus.

## Was die Treiber gemeinsam haben und worin sie sich unterscheiden {#what-the-drivers-have-in-common-and-where-they-differ}

Der Connector zeichnet einen Editor für jeden Treiber und lässt den Treiber entscheiden, welche Teile erscheinen. Diese Tabelle sagt, was Sie erwartet, bevor Sie die Seite eines Treibers öffnen:

| Treiber | Verbindungsfelder auf der Seite Gerät | Adressierung der Tags | Abfrageintervall | Schreiben auf Tags | Suchen |
| --- | --- | --- | --- | --- | --- |
| Simulated | keine | der Name des Tags und die Form des Signals | ja | ja | ja (sein Katalog) |
| Modbus TCP | Host, Port, Unit-ID, Rahmenformat (MBAP oder RTU), minimales Transaktionsintervall | typisiert: Registerklasse und Nummer | ja | ja | ja (Suchlauf über Host oder CIDR) |
| Modbus RTU | Serielle Leitung (fest; die Leitung legt den Übertragungsmodus fest, RTU oder ASCII), Unit-ID | typisiert: Registerklasse und Nummer | ja | ja | ja (Abtasten der Unit-IDs auf einer Leitung) |
| OPC UA | Host, Port, Ressourcenpfad, Benutzername, Passwort | Freitext: Node-ID | ja | ja | ja (Adresse des Servers) |
| OPC DA | Host, Server / Schlüssel | Freitext: Item-ID | ja | ja | ja (die Server eines Rechners) |
| Siemens S7 | Host, Rack / Slot | typisiert: Bereich, DB, Byte, Bit | ja | ja | nein |
| Rockwell EtherNet/IP | Host, Slot | Freitext: Controller-Tag und ein Versatz | ja | ja | ja (Broadcast) |
| Beckhoff ADS | Host, Port, lokale IP (AMS) | Freitext: Symbol | ja | ja | nein |
| Mitsubishi MC | Host, Port | Freitext: Geräteadresse | fest 1 s | ja | nein |
| BACnet | Host, Port, Geräte-ID | typisiert: Objekttyp und Instanz | fest 1 s | ja | ja (Who-Is) |
| OCPP | Kennung | typisiert: Nummer des Ladepunkts; der Name des Tags endet auf Meter, Status oder Transaction | von der Ladestation gesendet | nein (nur lesen) | ja (verbundene Ladestationen) |
| Redfish | Host, Port, Benutzername, Passwort | Freitext: Ressourcenpfad und ein JSON-Zeiger | ja | ja | ja (Adresse des Dienstes) |
| Matter | Node-ID (nur lesen) | typisiert: Ausgang, Cluster und Attribut; die Tags kommen vom Gerät | ja | ja (die Werte, die der Treiber zu ändern weiß) | ja (in Betrieb genommene Knoten, mit den Werten, die jeder veröffentlicht) |
| LoRaWAN | Kennung (DevEUI), Server / Schlüssel (App-Key) | typisiert: Kanal oder Versatz, LPP-Typ | vom Sensor gesendet | nein (nur lesen) | nein |
| AVEVA PI | Host, Port, Ressourcenpfad, Transport, Benutzername, Passwort, Bearer-Token | Freitext: PI-Pfad | ja | ja | ja (AF-Element nach der Adresse des Dienstes) |
| HTTP | Host, Port, Ressourcenpfad | Freitext: Pfad | ja | ja | nein |
| MQTT | Broker (fest; der Broker hält Host, Port, Übertragungsweg und Anmeldung), Protokoll, bei Sparkplug B die Gruppen-, Edge-Node- und Geräte-ID | Freitext: MQTT-Topic, dazu ein Wertpfad in JSON-Nutzdaten, oder Sparkplug B-Metrik | über den Broker zugestellt | ja (auf einem Befehls-Topic oder als Sparkplug B-Befehl) | ja (Zuhören auf einem Broker) |
| Generic serial and TCP | Übertragungsweg (TCP-Client oder UDP-Empfang), Host, Port, oder die Serielle Leitung (fest) bei einem Gerät auf einer Leitung; dazu die Karten Nachrichten und Prüfsumme | typisiert: Lesemodus, Anfrage, Nachrichtenfilter und wo der Wert in der Nachricht steht | ja; ein mithörendes Tag behält, was die Anlage sendet | ja (eine Schreibnachricht; nicht über UDP) | nein |
| Omron | Hostadresse, Protokoll (FINS oder NJ/NX-Tags nach Name); über FINS der Port und die Karte FINS (Transport, Netzwerk, Knoten, Einheit, Zeitlimit für die Antwort); auf einer seriellen Leitung die Serielle Leitung (fest), die Unit-ID (die Host-Link-Einheitennummer) und das Zeitlimit für die Antwort | Freitext: Speicheradresse (FINS) oder Variablenname (NJ/NX) | ja | ja | ja (eine FINS-Abfrage einer Steuerung und ein Rundruf nach NJ/NX-Steuerungen) |
| SCPI instruments | Übertragungsweg (TCP (LXI-Socket) oder VISA), Hostadresse und Port oder die VISA-Ressource, oder die Serielle Leitung (fest) bei einem Gerät auf einer Leitung; dazu die Karte Messgerät (Endezeichen, Zeitlimit für die Antwort, Schreibbestätigung, Einrichtungsbefehle) | Freitext: Abfrage, dazu welcher Wert einer kommagetrennten Antwort, und ein Schreibbefehl | ja | ja (ein Schreibbefehl, bestätigt über die Fehlerwarteschlange des Messgeräts) | ja (die Messgeräte, die VISA auflistet, und eine TCP-Abfrage eines Hosts) |
| NI-DAQmx | keine: an ihrer Stelle die Karte NI-DAQmx-Gerät (Gerätename und das Produkt, das NI-DAQmx liest) | typisiert: Physischer Kanal und Messgröße, mit Bereich, Verdrahtung, Thermoelement- oder Zählereinstellungen der Messgröße | ja | ja (digitale Ausgangsleitungen und Spannungsausgänge) | ja (jedes Gerät, das NI MAX kennt, mit seinen Kanälen) |
| Fluke NetDAQ | Hostadresse; dann die Karte Messgerät (Basiskanal, Scangeschwindigkeit) | typisiert: Punkt (ein analoger Kanal und seine Funktion, eine digitale Leitung, ein Relais oder der Summenzähler) | ja; das Messgerät scannt im kürzesten Intervall unter den Tags des Geräts | ja (digitale Leitungen und Relais, und der Summenzähler auf null zurückgesetzt) | nein |
| SNMP | Host, Port; dann die Karte SNMP-Agent (Version, Community oder SNMPv3-Benutzer und Sicherheit, Zeitlimit für die Antwort, Wiederholungen) | Freitext: OID, in Zahlen oder mit Standardnamen | ja | ja (ein SET, das der Agent annimmt; ein Standardobjekt, das seine MIB als nur lesbar erklärt, bleibt nur lesbar) | ja (ein Durchlauf der Standard-Teilbäume eines Agenten) |
| File | keine: an ihrer Stelle die Karte Ordner und Datei (Ordnerpfad, Dateiname oder das Muster des Eingangsordners, Lesen aus, Dateiformat), dann die Karten Text der Datei und Schreiben | typisiert: was das Tag liest (ein Wert, die ganze Datei oder eine Angabe zur Datei) und bei einem Wert eine Spalte und eine Zeile (CSV), eine Zeile und ihre Zeichen (freier Text) oder ein Pfad (JSON, XML) | ja | ja (bei einem Gerät, das Schreiben erlaubt: eine angehängte Zeile, die ganze Datei ersetzt oder eine andere Datei benannt) | ja (eine Datei, die eines Geräts oder eine eingegebene) |
| Database | keine: an ihrer Stelle die Karte Datenbank (Datenbanktyp, dann Datenbankserver, Port, Instanzname und Datenbankname, die Datenbankdatei oder die Datenquelle oder der Verbindungstext), dann die Karte Anmeldung (Benutzername und Passwort, und bei SQL Server die Windows-Anmeldung und die Verschlüsselung) | typisiert: wie das Tag liest (eine Zelle über Tabelle, Wertspalte und Zu lesende Zeile, oder der Abfragetext seiner eigenen Abfrage) | ja | ja (die Zelle, die es liest, oder sein eigener Schreibbefehl) | ja (die Tabellen der Datenbank eines Geräts) |

Jeder Treiber schränkt außerdem die Liste **Datentyp** eines Tags auf das ein, was er tatsächlich übertragen kann; die genaue Liste steht auf der Seite des Treibers. Wo die Tabelle "fest 1 s" sagt, übergeht der Treiber das eingestellte Intervall, die Seiten Gerät und Tag verbergen das Feld Abfrageintervall für ihn also. Wo sie "nur lesen" sagt, bietet das Feld Zugriff allein Nur lesen an, und das Schreibfeld erscheint nie.

## Was jede Treiberseite dokumentiert {#what-every-driver-page-documents}

Jede Treiberseite geht dieselben Abschnitte in derselben Reihenfolge durch: die Verbindungsfelder, die die Karte Gerät zeigt, und wie sie den Basis-URI zusammensetzen; wie ein Tag adressiert wird (die typisierten Felder oder das Freitextfeld und die Busadresse, die der Bereich als Vorschau zeigt); die angebotenen Datentypen; die Gerätesuche, wenn der Treiber sie hat; das Schreiben, wenn der Treiber es annimmt; und die Besonderheiten des Treibers (Anmeldedaten, Zertifikate, Zeiten, ein Netzwerkserver, den die Station betreibt, Kopplung).

## Ein Treiber, den das Paket nicht mitbringt {#a-driver-the-package-does-not-carry}

Der Connector führt nie einen Treiber auf und bietet nie einen an, den das laufende Paket nicht mitbringt. Eine Konfiguration, die trotzdem mit solchen Geräten ankommt (eine eingespielte Sicherung, eine Konfiguration von einem anderen Rechner), behält sie: Der Treiber bleibt aufgeführt, im Katalog und unter dem Ordner Treiber, solange es diese Geräte gibt, seine Beschreibung liest sich "Treiber in diesem Paket nicht enthalten.", und die Seite des Treibers sowie jedes Gerät darunter tragen einen Hinweis desselben Inhalts. Diese Geräte bleiben offline und behalten ihre Einstellungen; sie lassen sich löschen, aber nicht kopieren, und unter diesem Treiber lässt sich weder ein neues Gerät anlegen noch ein Suchlauf starten.

Welche Treiber ein Paket mitbringt, wird aus dem Treiberverzeichnis des Connectors gelesen, das es erst gibt, sobald der Connector gestartet ist. Bis dahin gilt jeder Treiber als vorhanden, der Katalog kommt also einige Sekunden nach dem Start zur Ruhe und bleibt dann für die Sitzung stehen, auch wenn der Connector gestoppt und wieder gestartet wird.

Der Code eines Treibers wird einmal geladen, für die Laufzeit der Anwendung. Die Kommunikation zu stoppen und zu starten baut die laufenden Geräte und die Treiberliste aus derselben Ladung neu auf, und genau das hält den Speicherbedarf der Station über einen Tag voller Neustarts flach. Die Folge ist, dass es erst nach einem Neustart der Anwendung selbst wirkt, wenn die Dateien eines Treibers auf dem Datenträger ersetzt werden.
