198 lines
10 KiB
Markdown
198 lines
10 KiB
Markdown
# Anwenderdoku zum I/O Converter (ioconverter) <!-- omit in toc -->
|
|
|
|
- [Zweck des Programms](#zweck-des-programms)
|
|
- [Schnellstart](#schnellstart)
|
|
- [Verwendung per Drag \& Drop](#verwendung-per-drag--drop)
|
|
- [Verwendung per Kommandozeile](#verwendung-per-kommandozeile)
|
|
- [Pipeline und Programmablauf](#pipeline-und-programmablauf)
|
|
- [Ausgabedateien](#ausgabedateien)
|
|
- [EA-Liste (`*_EA.xlsx`)](#ea-liste-_eaxlsx)
|
|
- [TIA-Portal-Export (`*_TIA.xlsx`)](#tia-portal-export-_tiaxlsx)
|
|
- [WSCAD-Export (`*_WSCAD.xlsx`)](#wscad-export-_wscadxlsx)
|
|
- [Konfiguration und Symbolerkennung](#konfiguration-und-symbolerkennung)
|
|
- [Fehlerfälle und Fehlerbehandlung](#fehlerfälle-und-fehlerbehandlung)
|
|
- [Allgemeine Fehler und Warnungen](#allgemeine-fehler-und-warnungen)
|
|
- [Ausgabedateien bei Fehlern](#ausgabedateien-bei-fehlern)
|
|
- [Empfohlene Vorgehensweise](#empfohlene-vorgehensweise)
|
|
- [Erweiterte Optionen](#erweiterte-optionen)
|
|
|
|
## Zweck des Programms
|
|
|
|
Der **I/O Converter** (`ioconverter.bat`) dient der vereinfachten Ableitung von **Ein-/Ausgangslisten (EA-Listen)** sowie der **Eingabedaten für das Siemens TIA Portal** und **WSCAD** aus einer DXF-Layoutzeichnung.
|
|
|
|
Das Programm extrahiert alle relevanten Geräteinformationen (Sensoren, Aktoren, Schaltschrankelemente) aus dem Layout und erzeugt daraus formatierte Excel-Dateien, die direkt in die jeweiligen Zielsysteme importiert werden können. Das Routing und die Kabelberechnung entfallen dabei vollständig - es geht ausschließlich um die **Geräte- und IO-Daten**.
|
|
|
|
## Schnellstart
|
|
|
|
### Verwendung per Drag & Drop
|
|
|
|
Im Desktop-Ordner *Kabeltool* (erstellt via `bin\dropItem_create.bat`) befindet sich die Verknüpfung *io_converter*. Die zu verarbeitende **.dxf-Datei** einfach per **Drag & Drop** auf diese Verknüpfung ziehen.
|
|
|
|
> [!IMPORTANT]
|
|
> Der Dateiname darf **keine Leerzeichen oder Sonderzeichen** enthalten.
|
|
> Verwende z. B. `projekt_123.dxf` statt `mein projekt #1.dxf`.
|
|
|
|
### Verwendung per Kommandozeile
|
|
|
|
```bash
|
|
bin\ioconverter.bat <meine_anlage.dxf>
|
|
```
|
|
|
|
Die Ausgabe schreibt:
|
|
|
|
```text
|
|
=== Fetching Positions ===
|
|
...
|
|
=== Creating Excel Files for TIA, WSCAD, .. ===
|
|
Export 'EA' erfolgreich: ...\work\meine_anlage_EA.xlsx
|
|
Export 'TIA' erfolgreich: ...\work\meine_anlage_TIA.xlsx
|
|
Export 'WSCAD' erfolgreich: ...\work\meine_anlage_WSCAD.xlsx
|
|
```
|
|
|
|
Die erzeugten Dateien werden automatisch in das Ergebnisverzeichnis (`PROJECT_IO_RESULTS`) verschoben.
|
|
|
|
## Pipeline und Programmablauf
|
|
|
|
Der I/O Converter arbeitet in zwei Schritten:
|
|
|
|
```text
|
|
DXF-Datei
|
|
1. getpositions.py --> Positionen und Attribute extrahieren --> *_positionsconv.json
|
|
2. portalexport.py --> Excel-Export erzeugen --> *_EA.xlsx, *_TIA.xlsx, *_WSCAD.xlsx
|
|
```
|
|
|
|
1. **Positionsextraktion** (`getpositions.py`): Liest die DXF-Datei ein und extrahiert alle Blöcke mit ihren Attributen (IO, SPS, KENNZEICHNUNG, BEZEICHNUNG, VERW, TEXT-D/E/ES/F, ARTINR). Das Ergebnis wird als `*_positionsconv.json` gespeichert.
|
|
|
|
2. **Excel-Export** (`portalexport.py`): Liest die JSON-Zwischendatei und erzeugt daraus die Excel-Dateien in den gewünschten Formaten. Die Daten werden dabei nach SPS-Nummer gruppiert - pro SPS entsteht ein eigener Satz Ausgabedateien (z.B. `anlage-SPS1_TIA.xlsx`, `anlage-SPS2_TIA.xlsx`).
|
|
|
|
## Ausgabedateien
|
|
|
|
Standardmäßig werden **drei Excel-Dateien** pro SPS erzeugt:
|
|
|
|
### EA-Liste (`*_EA.xlsx`)
|
|
|
|
Eine einfache Übersicht aller Ein- und Ausgänge. Die Datei enthält folgende Worksheets:
|
|
|
|
**Ein-, Ausgaenge**: Listet alle erkannten Eingänge und Ausgänge mit Name, Kommentar (Bezeichnung) und Bezug (Kennzeichnung) auf. Die Klassifizierung in Ein- oder Ausgang erfolgt automatisch anhand der Identifier aus dem Block (z.B. DI, FDI = Eingang; DQ, K, M = Ausgang).
|
|
|
|
**Duplikate / Errors**: Falls doppelte Namen oder fehlerhafte Einträge erkannt werden, werden diese in separaten Worksheets aufgeführt.
|
|
|
|
### TIA-Portal-Export (`*_TIA.xlsx`)
|
|
|
|
Im TIA-Portal-Importformat mit folgenden Worksheets:
|
|
|
|
**PLC Tags**: Enthält die Spalten `Name`, `Path`, `Data Type`, `Logical Address`, `Comment`, `Hmi Visible`, `Hmi Accessible`, `Hmi Writeable`, `Typeobject ID`, `Version ID`. Diese Datei kann direkt in das Siemens TIA Portal importiert werden.
|
|
|
|
**Constants**: Enthält Konstanten mit `Name`, `Path`, `Data Type`, `Value`, `Comment`.
|
|
|
|
### WSCAD-Export (`*_WSCAD.xlsx`)
|
|
|
|
Im WSCAD-Importformat mit den Spalten `Anschluss`, `Kommentar`, `Symboltext`, `Bezug`, `Sondertext 1-8`. Der Export enthält standardmäßig Bezugsinformationen. Mit der Option `--no_bezug` kann der Export ohne Bezüge erstellt werden.
|
|
|
|
Für Bauteile mit unvollständigen Anschlüssen werden fehlende Anschlüsse automatisch bis zur Standardanzahl (8 pro Bauteil) ergänzt.
|
|
|
|
## Konfiguration und Symbolerkennung
|
|
|
|
Der I/O Converter verwendet folgende Konfigurationsdateien aus `cfg/`:
|
|
|
|
| Datei | Relevanz für I/O Converter |
|
|
|-----------------|---------------------------|
|
|
| `allgemein.cfg` | Layernamen für Sensoren, Aktoren, Unterverteiler etc. - bestimmt, welche Blöcke aus der DXF-Datei extrahiert werden |
|
|
| `BMK.cfg` | Betriebsmittelkennzeichnungen (`[Routing-Include]`, `[Routing-Ignore]`) - bestimmt, welche Gerätetypen berücksichtigt werden |
|
|
|
|
> [!NOTE]
|
|
> Die Konfigurationsdateien `kabel.cfg` und `bezeichner.cfg` werden vom I/O Converter **nicht** benötigt, da keine Kabelberechnung stattfindet.
|
|
|
|
Die Erkennung der Symbole (Blöcke) in der DXF-Datei ist die gemeinsame Basis von I/O Converter und Kabelberechnung. Beide Programme nutzen `getpositions.py` mit denselben Regeln zur Symbolsuche:
|
|
|
|
- Welche **Layer** durchsucht werden, wird in `allgemein.cfg` unter `[GetPos-Layer_Equipment]`, `[GetPos-Layer_Distributors]` etc. festgelegt
|
|
- Welche **Betriebsmittelkennzeichen** (BMK-Präfixe) berücksichtigt werden, regelt `BMK.cfg` unter `[Routing-Include]` und `[Routing-Ignore]`
|
|
- Welche **Block-Attribute** erwartet werden (KENNZEICHNUNG, SPS, IO, ARTINR, etc.) und wie die Blöcke im Layout angelegt sein müssen
|
|
|
|
Eine ausführliche Beschreibung der Konfigurationsdateien sowie der Anforderungen an die Layouterstellung findet sich in der [Anwenderdokumentation zur Kabellängenermittlung](Anwenderdoku.md) in den Abschnitten "Anpassung des Verhaltens des Programms" und "Anwenderhinweise zur Layouterstellung".
|
|
|
|
## Fehlerfälle und Fehlerbehandlung
|
|
|
|
### Allgemeine Fehler und Warnungen
|
|
|
|
Der I/O Converter durchläuft dieselbe Positionsextraktion wie der Cable-Routing-Workflow. Es gelten daher die gleichen Fehler- und Warnungstypen aus `getpositions.py`. Die vollständige Fehlertabelle findet sich in der [Anwenderdoku](Anwenderdoku.md) bzw. [Kurzanleitung](Anwenderdoku_kurz.md) im Abschnitt "Fehlerfälle und Fehlerbehandlung".
|
|
|
|
Die für den I/O Converter relevantesten Fehler sind:
|
|
|
|
| Fehlertyp | Auswirkung |
|
|
|-----------------|------------|
|
|
| `double_ids` | **Abbruch** - Doppelte Geräte-IDs führen zum Programmabbruch. Die `*_errors.json` wird erzeugt, aber keine Excel-Dateien. |
|
|
| `missing_attributes` | Betroffene Elemente fehlen in den Export-Dateien |
|
|
| `mapping_warnings` (keine KENNZEICHNUNG) | Keine korrekte Zuordnung zu Unterverteilern möglich |
|
|
| `missing_sps_prefix` | Gerät kann keiner SPS zugeordnet werden |
|
|
|
|
### Ausgabedateien bei Fehlern
|
|
|
|
- `*_errors.json` - enthält alle Fehler und Warnungen aus der Positionsextraktion
|
|
- `*_positionsconv.json` - Zwischenergebnis mit extrahierten Positionen
|
|
- `*_EA.xlsx`, `*_TIA.xlsx`, `*_WSCAD.xlsx` - werden auch bei Warnungen erzeugt, können aber unvollständig sein
|
|
|
|
> [!IMPORTANT]
|
|
> Bei `double_ids`-Fehlern bricht das Programm nach der Positionsextraktion ab. Es werden **keine** Excel-Dateien erzeugt. Beheben Sie zuerst die doppelten IDs im Layout.
|
|
|
|
### Empfohlene Vorgehensweise
|
|
|
|
1. Programm ausführen
|
|
2. Falls `*_errors.json` erstellt wurde: Fehler prüfen und im Layout korrigieren
|
|
3. Erneut ausführen bis keine Fehler mehr auftreten
|
|
4. Export-Dateien an nachgelagerte Systeme (TIA Portal, WSCAD) übergeben
|
|
|
|
> [!TIP]
|
|
> Beheben Sie alle Warnungen aus `*_errors.json`, bevor Sie die Export-Dateien an nachgelagerte Systeme übergeben, um Vollständigkeit sicherzustellen.
|
|
|
|
## Erweiterte Optionen
|
|
|
|
### Einzelne Exportformate erzeugen
|
|
|
|
Der `portalexport.py` kann auch direkt aufgerufen werden, um nur bestimmte Exportformate zu erzeugen:
|
|
|
|
```bash
|
|
# Nur TIA-Export erzeugen
|
|
bin\portalexport.bat --filename <positionsconv.json> --outname <basename> --mode TIA
|
|
|
|
# Nur WSCAD-Export ohne Bezüge
|
|
bin\portalexport.bat --filename <positionsconv.json> --outname <basename> --mode WSCAD --no_bezug
|
|
|
|
# Nur EA-Liste
|
|
bin\portalexport.bat --filename <positionsconv.json> --outname <basename> --mode EA
|
|
```
|
|
|
|
### Spezialfall: Eingabe über Textdatei (ohne DXF)
|
|
|
|
Für den Fall, dass die IO-Daten **nicht aus einer DXF-Datei** stammen, sondern bereits in aufbereiteter Form vorliegen, kann `portalexport.py` auch direkt mit einer Textdatei als Eingabe arbeiten. Damit wird die gesamte DXF-Verarbeitung (`getpositions.py`) übersprungen.
|
|
|
|
**Anwendungsfälle:**
|
|
|
|
- IO-Listen aus einem **anderen System** (z.B. manuell gepflegte Excel-Listen, Datenbank-Exporte) sollen in das TIA- oder WSCAD-Format konvertiert werden
|
|
- Daten aus der DXF-Extraktion sollen **vorab korrigiert oder ergänzt** werden, bevor der Excel-Export erfolgt
|
|
- **Testen** des Exporters ohne eine DXF-Datei verarbeiten zu müssen
|
|
|
|
**Aufruf:**
|
|
|
|
```bash
|
|
bin\portalexport.bat --input <eingabe.txt> --mode TIA
|
|
```
|
|
|
|
**Format der Textdatei:** Die Datei muss pro Zeile einen Eintrag im folgenden CSV-Format mit einfachen Anführungszeichen enthalten:
|
|
|
|
```text
|
|
'<IO>','<BEZEICHNUNG>','<VERW>','<KENNZEICHNUNG>','<TEXT-D>','<TEXT-E>','<TEXT-ES>','<TEXT-F>'
|
|
```
|
|
|
|
**Beispiel:**
|
|
|
|
```text
|
|
'DI01','Stausensor 1 (ILS-CV M0108)','Jam detector','=A01+UC0101-KF1DI1','','','',''
|
|
'DQ04','Motor MA0062','CV-M0062_0,75','=A01+UH01-KF1DQ04','Motor MA0062','Motor MA0062','',''
|
|
```
|
|
|
|
Die Felder entsprechen den Block-Attributen aus der DXF-Datei. Dieses Format wird auch intern von `portalexport.py` erzeugt, wenn es die JSON-Daten aus `getpositions.py` verarbeitet.
|
|
|
|
> [!NOTE]
|
|
> Bei der Eingabe per Textdatei entfällt die Gruppierung nach SPS-Nummer - alle Einträge werden in einem Satz Ausgabedateien zusammengefasst. Ebenso werden keine `getpositions`-Fehler und -Warnungen in die Excel-Dateien geschrieben, da keine DXF-Validierung stattfindet.
|