Konfiguration
FileType-Objekte werden in einem separaten Namensraum mit der Bezeichnung „FileTransfer” erstellt. Zur Konfiguration des Namensraums und zur Auswahl der über OPC UA verfügbaren Dateien und Ordner dient eine XML-Datei (files.xml), die in demselben Verzeichnis wie die ausführbare Datei des OPC UA Servers sein muss. Um die Konfiguration zu aktivieren, muss das System neu gestartet werden. Die XML-Datei enthält Informationen über den Ordnerpfad und eine Suchmaske, die definiert, welche Dateien im OPC‑UA‑Namensraum veröffentlicht werden:
<Files>
<FolderObject DisplayName="TwinCAT">
<FolderObject DisplayName="3.1">
<FolderObject DisplayName="Boot" Path="c:/TwinCAT/3.1/Boot" Search="*.*" >
<FolderObject DisplayName="Plc" Path="c:/TwinCAT/3.1/Boot/Plc" Search="*.*" ></FolderObject>
<FolderObject DisplayName="Tmi" Path="c:/TwinCAT/3.1/Boot/Tmi" Search="*.*" ></FolderObject>
</FolderObject>
</FolderObject>
</FolderObject>
</Files>
Lesen einer Datei mit einem OPC UA Client
Der allgemeine Umgang mit Dateien ist in Anhang C der OPC-UA-Spezifikation beschrieben.
Das Lesen einer Datei via OPC UA kann somit in folgende Schritte unterteilt werden:
- Aufruf der Open-Methode einer Datei. Diese Methode gibt ein Dateihandle zurück, das für den späteren Zugriff gespeichert werden muss. Der Modus legt fest, ob die Datei gelesen oder ob in sie geschrieben wird (siehe Dateimodi).
- Bestimmen der Größe der Datei mit der Eigenschaft „Size“. So kann die ganze Datei bei Aufruf der Read-Methode gelesen werden.
- Aufruf der Read-Methode. Dateihandle und Dateigröße als Eingaben einfügen. Zielordner wählen, in den der Dateiinhalt NACH dem Aufruf der Methode zu speichern ist.
- Aufruf der Close-Methode zur Freigabe des Dateihandles.
Dateimodi
Die folgende Tabelle zeigt alle verfügbaren Dateimodi:
Feld | Bit | Beschreibung |
---|---|---|
Lesen | 1 | Die Datei wird zum Lesen geöffnet. Wenn dieses Bit nicht gesetzt ist, kann Read nicht ausgeführt werden. |
Schreiben | 4 | Die Datei wird zum Schreiben geöffnet. Wenn dieses Bit nicht gesetzt ist, kann Write nicht ausgeführt werden. |
EraseExisting | 6 | Der vorhandene Dateiinhalt wird gelöscht und es wird eine leere Datei zur Verfügung gestellt. |
Append | 10 | Die Datei wird geöffnet und ans Ende positioniert, sonst auf den Anfang. Diese Position kann mit SetPosition geändert werden. |
Generelles Verhalten
Die Anzahl an parallel geöffneten Dateien ist prinzipiell unlimitiert und unterliegt ggf. nur etwaigen Einschränkungen des zugrunde liegenden Betriebssystems. Dateien unterliegen jedoch einem 60-Sekunden Timeout. Nach diesem Timeout werden offene Dateien nicht sofort automatisch geschlossen. Anstelle dessen werden sie als „zu-schließend“ markiert. Wenn während dieser Zeit das entsprechende FileHandle für eine Read-/Write-Operation verwendet wird, wird der Timeout zurückgesetzt und das FileHandle bleibt gültig. Wenn während dieser Zeit eine Open-Operation auf derselben Datei durchgeführt wird, wird das alte FileHandle freigegeben. Wenn ein OPC UA Client seine Verbindung zum Server trennt und noch Dateien geöffnet hat, werden alle FileHandles, die zu dieser Sitzung gehören, automatisch geschlossen.