Miscellaneous
Im letzten Tab der Basis-Einstellungen geht es diverse Einstellungen. Der erste Teil geht um die Treiber Versionen, die verwendet werden. Die hier ausgewählte Version (Default: Latest) wird beim Aktivieren der TwinCAT Konfiguration automatisch auf das Zielsystem (Steuerung) heruntergeladen. Das gilt für alle Betriebssysteme unter 4026, wodurch eine zusätzliche Installation in Form von Paketen auf dem Zielsystem selbst entfällt.

Zusätzlich kann hier der Log für die Analytics Logger System Manager Extension eingesehen werden. Der Beckhoff Support könnte Sie im Supportfall auch dazu auffordern diese Datei zur Verfügung zu stellen.
Copy Deployment
Ebenfalls kann eine Art Patch Mechanismus mit dem Copy Deployment aktiviert und konfiguriert werden.
Hinweis | |
TwinCAT Restart Verwenden Sie diese Option nur, wenn zukünftiges Aktivieren der Konfiguration (TwinCAT Activate Configuration) nicht mehr möglich ist und trotzdem Änderungen gemacht werden sollen! Ein TwinCAT Restart bleibt notwendig! |
Das Copy Deployment bietet die Möglichkeit, mittels Patch-Dateien, in einem Target Verzeichnis, Änderungen vorzunehmen und nach einem TwinCAT Restart auszuführen. Der folgende Workflow beschreibt die Funktionsweise des Copy Deployments:
Workflow:
- 1. Copy Deployment aktivieren — Setzen Sie den Haken bei „Download configuration to target“ im Abschnitt Deployment.
- 2. Target-Directory wählen — TwinCAT speichert diesen Pfad in den Treibereinstellungen. Nach Schritt 3 liest der Treiber die Patch-Dateien aus diesem Ordner aus.
- 3. Activate Configuration – Aktivieren Sie die Konfiguration mit dem Target-Directory mit einem TwinCAT Activate Configuration auf dem Zielsystem. Erst danach weiß der Treiber an welcher Stelle die Patch-Dateien zu finden sind.
- 4. Änderungen vornehmen - Daraufhin besteht die Möglichkeit Änderungen an der Logger-Konfiguration zu tätigen. Wenn Sie nur eine Anpassung nach Schritt 6 vornehmen, bleibt die Konfiguration unverändert.
- 5. Patch-Dateien exportieren – Exportieren Sie über den Button „Local export“ die geänderte Konfiguration als JSON-Patch-Datei. Der Export erstellt pro Stream ein Ordner mit einer Patch-Datei. Die Export-Struktur besitzt folgendes Format: <Export-Ordner>/<StreamName>_<ID>/Config.json. Der nachfolgende Abschnitt beschreibt das Format einer Patch-Datei genauer.
- 6. Hinzufügen und/oder Entfernen von Symbolen (Optional) – Erweitern Sie die JSON-Strukturen der Patch-Dateien können durch ein Symbols-Array. Dies bietet die Möglichkeit Symbole zum Loggen hinzuzufügen beziehungsweise zu entfernen. (Siehe Beispiele im nachfolgenden Abschnitt)
- 7. Ablegen der Patch-Dateien: Legen Sie die Patch-Dateien wie in der Export-Ordnerstruktur auf dem Zielsystem unter dem Target Directory (siehe Schritt 2) ab.
- 8. Starten Sie TwinCAT neu.
- Danach liest der Treiber die Patch-Dateien ein und läuft mit dieser Konfiguration.
Hinweis | |
Konfiguration aktivieren Aktivieren Sie die Konfiguration mit dem Target Directory einmalig, damit der Treiber die Patch-Dateien aus dem Target Directory einlesen kann! |
Patch-Datei-Format
Jede Config.json enthält:
Ebene | Feld | Beschreibung |
|---|---|---|
1 | InitData | Die vollständigen Stream-Initialisierungsdaten (kodiert). Immer vorhanden. |
1 | InitParameters | Dieses Objekt enthält die Konfiguration des Analytics Logger Streams. Diese Parameter sollen nicht verändert werden und dienen nur der Transparenz innerhalb der Patch-Datei. |
1 | Symbols | Optionale Liste von Symboländerungen (hinzufügen oder deaktivieren). |
2 | Name | Vollständiger Name des Symbols (Notwendig) |
2 | TypeName | Typ-Name des Symbols (Notwendig beim Hinzufügen eines Symbols) |
2 | Flags | Zusatzinformation. Optional. Flags = 2 bedeutet, dass die Size von Byte auf Bit umgestellt ist. |
2 | Size | Größe des Symbols (Notwendig beim Hinzufügen eines Symbols) |
2 | IdxGrp | IndexGroup des Symbols (Dezimal) (Notwendig beim Hinzufügen eines Symbols, wenn Symbolic Mapping deaktiviert ist. Zum Beispiel bei Device Streams) |
2 | IdxOffs | IndexOffset des Symbols (Dezimal) (Notwendig beim Hinzufügen eines Symbols, wenn Symbolic Mapping deaktiviert ist. Zum Beispiel bei Device Streams) |
2 | Properties | Array aus mehreren Schlüssel-Wert-Paaren. (Notwendig beim Hinzufügen eines Pointers oder einer Referenz oder beim Deaktivieren eines Symbols) (Siehe Beispiele im nachfolgenden Abschnitt) |
Symbol hinzufügen
Um ein neues Symbol in den Stream aufzunehmen, einen Eintrag mit Namen, Datentyp und Größe hinzufügen.
Beispiel — MAIN.VarInt64 (8-Byte-Integer) hinzufügen:
{
"InitData": "...",
"Symbols": [
{
"Name": "MAIN.VarInt64",
"TypeName": "LINT",
"Size": 8
}
]
}Beispiel — Inputs.Frm0State of a Device (2-Byte-Integer) hinzufügen:
{
"InitData": "...",
"Symbols": [
{
"Name": "Inputs.Frm0State",
"TypeName": "UINT",
"Size": 2
"IdxGrp": 61488,
"IdxOffs": 1520,
}
]
}Beispiel — Symbole mit BIT-Datentypen hinzufügen:
{
"InitData": "...",
"Symbols": [
{
"Name": "MAIN.VarBit1",
"TypeName": "BIT",
"Flags": 2,
"Size": 1
},
{
"Name": "MAIN.VarBit4",
"TypeName": "BIT",
"Flags": 2,
"Size": 4
}
]
}Beispiel — Pointer hinzufügen:
{
"InitData": "...",
"Symbols": [
{
"Name": "MAIN.PtrToInt^",
"TypeName": "UINT",
"Size": 2
"Properties": [
{
"Name": "DataAccess",
"Value": "Handle"
}
]
}
]
}Beispiel — Referenzen hinzufügen:
{
"InitData": "...",
"Symbols": [
{
"Name": "MAIN.RefToInt",
"TypeName": "UINT",
"Size": 2
"Properties": [
{
"Name": "DataAccess",
"Value": "Handle"
}
]
}
]
}Symbol deaktivieren
Um ein vorhandenes Symbol zu deaktivieren, wird es per Name referenziert und mit einer Disable-Eigenschaft versehen.
Beispiel — MAIN.VarInt32 deaktivieren:
{
"InitData": "...",
"Symbols": [
{
"Name": "MAIN.VarInt32",
"Properties": [
{ "Name": "Disable" }
]
}
]
}Kombiniert (Hinzufügen + Deaktivieren)
Beide Operationen können in einer einzigen Patch-Datei kombiniert werden.
Stream-Konfiguration editieren
Einige Einstellungen der Stream-Konfiguration lassen sich auch über die Patch-Datei editieren. Die Einstellungen sind im Folgenden beschrieben und mit Beispielen erklärt.
Ebene | Feld | Beschreibung |
|---|---|---|
1 | Mqtt | Der Abschnitt Mqtt definiert ein MQTT-Ziel, an das die aufgezeichneten Daten gesendet werden. |
2 | SamplesPerBuffer | Anzahl der Samples pro gesendetem Puffer. |
2 | CompressionWidth | Breite der Kompression in Bytes (0 = keine Kompression). |
2 | SamplingDivider | Teiler der Abtastrate (0/1 = jedes Sample). |
2 | SystemIdAlias | Optionaler Alias der System-ID. |
2 | MqttConfig | Eingebettete MQTT-Verbindungsparameter (siehe unten). |
3 | QoS | MQTT Quality of Service (0, 1 oder 2). |
3 | TcpPort | TCP-Port des Brokers (Standard 1883) |
3 | ClientId | MQTT-Client-ID |
3 | Host | Hostname oder IP-Adresse des Brokers. |
3 | Topic | Basis-Topic, unter dem veröffentlicht wird. |
3 | UserName | Benutzername für die Authentifizierung. |
3 | UserPwd | Passwort für die Authentifizierung. |
3 | Tls | TLS-/Zertifikatsparameter (siehe Abschnitt „TLS-Parameter“). |
4 | Version | TLS-Version, z. B. "tlsv1.2" oder "tlsv1.3" |
4 | CaFile | Pfad zur CA-Zertifikatsdatei. |
4 | CertFile | Pfad zur Client-Zertifikatsdatei. |
4 | KeyFile | Pfad zur Datei mit dem privaten Schlüssel des Clients. |
4 | KeyPwd | Passwort/Passphrase für den privaten Schlüssel. |
Beispiel — MQTT-Ziel aktivieren:
{
"InitData": "...",
"Mqtt": {
"SamplesPerBuffer": 32,
"CompressionWidth": 8,
"MqttConfig": {
"TcpPort": 1883,
"Host": "127.0.0.1",
"Topic": "Analytics/Stream1"
}
}
}Beispiel — MQTT-Ziel mit TLS-Verschlüsselung (Zertifikate als Dateipfade):
{
"InitData": "...",
"Mqtt": {
"MqttConfig": {
"TcpPort": 8883,
"Host": "broker.example.com",
"Topic": "Analytics/Stream1",
"Tls": {
"Version": "tlsv1.2",
"CaFile": "C:\\Certs\\ca.crt",
"CertFile": "C:\\Certs\\client.crt",
"KeyFile": "C:\\Certs\\client.key",
"KeyPwd": "secret"
}
}
}
}Datei-Zielkonfiguration
Ebene | Feld | Beschreibung |
|---|---|---|
1 | File | Der Abschnitt File definiert einen Ordner, in den die aufgezeichneten Daten geschrieben werden. |
2 | BuffersPerFile | Anzahl der Puffer pro Datei |
2 | SamplesPerBuffer | Anzahl der Samples pro Puffer. |
2 | CompressionWidth | Breite der Kompression in Bytes (0 = keine Kompression). |
2 | FilesInRingBuffer | Anzahl der Dateien im Ringpuffer (0 = kein Ringpuffer). |
2 | SamplingDivider | Teiler der Abtastrate (0/1 = jedes Sample). |
2 | FilePath | Zielpfad bzw. Dateiname für die Aufzeichnung. |
2 | SystemIdAlias | Optionaler Alias der System-ID. |
Beispiel — Datei-Ziel mit Ringpuffer aktivieren:
{
"InitData": "...",
"File": {
"SamplesPerBuffer": 64,
"BuffersPerFile": 100,
"FilesInRingBuffer": 10,
"FilePath": "C:\\DataStore\\FileStreamTarget"
}
}