CSV-Massen-Upload (/ui/connect/csv)
Bildschirm zur Registrierung mehrerer OPC + Tags auf einmal. Ein in Excel oder externen Werkzeugen definierter Tag-Katalog lässt sich unverändert importieren. Bei Standorten mit 50+ Tags die schnellste Methode.
Startseite → Protokollverbindung herstellen → oben rechts 📥 CSV-Massen-Upload, oder direkt /ui/connect/csv.
1. Aufbau des Bildschirms
📥 CSV 일괄 업로드 [← 뒤로] [💾 업로드]
⚠ 주의사항 패널 (빨강)
- CSV 형식 [,로 구분]
- 빈 공백 금지
- 1행 = 헤더 (절대 삭제 금지)
- OPC: 드라이버명/IP/포트 정확히
- TAG: PLC_ADDRESS 정확히 (잘못 입력 시 수집 실패)
- 이미 등록된 TAG_ID → 업데이트 안 함 (중복 무시)
📊 OPC
────────────────
[CodeMirror 에디터 — 150px]
헤더: OPC_ID,OPC_NAME,OPC_TYPE,OPC_AGENT_IP,OPC_AGENT_PORT,TIMECYCLE,ASYNC,AUTO_COLLECT,DESCRIPTION
🏷 TAG
────────────────
[CodeMirror 에디터 — 400px]
헤더: OPC_ID,TAG_ID,TAG_NAME,DATA_TYPE,PLC_ADDRESS,FORMAT,LINKED_ASSET_ID,ALIAS_NAME,DESCRIPTION
2. OPC-CSV-Spalten (9 Stück)
| Reihenfolge | Spalte | Bedeutung | Beispiel |
|---|---|---|---|
| 1 | OPC_ID | Eindeutige Kennung (Buchstaben/Ziffern/_) | OPC_LS_LINE1 |
| 2 | OPC_NAME | Anzeigename für Benutzer | 라인1 LS PLC |
| 3 | OPC_TYPE | Gateway-Code (LS / MELSEC / S7 / MODBUS / OPCUA / EIP / LOGIX / HTTP usw.) | LS |
| 4 | OPC_AGENT_IP | IP der PLC | 192.168.100.50 |
| 5 | OPC_AGENT_PORT | TCP-Port | 2004 |
| 6 | TIMECYCLE | Erfassungsintervall (ms) | 1000 |
| 7 | ASYNC | Asynchroner Read | true / false |
| 8 | AUTO_COLLECT | Automatischer Erfassungsstart nach dem Booten | true / false |
| 9 | DESCRIPTION | Freie Notiz | 라인1 메인 PLC |
Die Tabelle der Ports/IPs je OPC_TYPE finden Sie im Vergleich des Leitfadens nach PLC-Typ.
3. TAG-CSV-Spalten (9 Stück)
| Reihenfolge | Spalte | Bedeutung | Beispiel |
|---|---|---|---|
| 1 | OPC_ID | Zuordnung zu OPC_ID aus der obigen OPC-Tabelle | OPC_LS_LINE1 |
| 2 | TAG_ID | Eindeutige ID (Buchstaben/Ziffern/_) | TAG_LINE1_TEMP |
| 3 | TAG_NAME | Anzeigename für Benutzer | 라인1 온도 |
| 4 | DATA_TYPE | Integer / Long / Float / Double / String / Boolean | Integer |
| 5 | PLC_ADDRESS | Adresse je Treiber (z. B. D00309 LS, DB1.DBW0 S7, holding-register:1 Modbus) | D00309 |
| 6 | FORMAT | Formatzusatz (DW / REAL / STR[10] / BIN[3] usw.) | DW |
| 7 | LINKED_ASSET_ID | (Optional) Asset-Zuordnung | ASSET_PUMP_01 |
| 8 | ALIAS_NAME | (Optional) Alias für externe Systeme | temp_01 |
| 9 | DESCRIPTION | Freie Notiz | 라인1 메인 펌프 온도(℃) |
Zur korrekten Eingabe von PLC_ADDRESS und FORMAT siehe PLC-Adresseingabe (vollständiger Leitfaden zu 44 Treibern).
4. Beispiele (Praxis)
4.1 2 OPC + 5 TAG
OPC-Bereich (Kopfzeile + 2 Zeilen):
OPC_ID,OPC_NAME,OPC_TYPE,OPC_AGENT_IP,OPC_AGENT_PORT,TIMECYCLE,ASYNC,AUTO_COLLECT,DESCRIPTION
OPC_LS_LINE1,라인1 LS PLC,LS,192.168.100.50,2004,1000,false,true,라인1 메인 PLC
OPC_S7_LINE2,라인2 S7 PLC,S7,192.168.100.60,102,1000,false,true,라인2 메인 PLC
TAG-Bereich (Kopfzeile + 5 Zeilen):
OPC_ID,TAG_ID,TAG_NAME,DATA_TYPE,PLC_ADDRESS,FORMAT,LINKED_ASSET_ID,ALIAS_NAME,DESCRIPTION
OPC_LS_LINE1,TAG_LINE1_TEMP,라인1 온도,Float,D00450,REAL,,,라인1 메인 펌프 온도(℃)
OPC_LS_LINE1,TAG_LINE1_QTY,라인1 누적생산량,Integer,D00600,DW,,,32-bit 누적
OPC_LS_LINE1,TAG_LINE1_RUN,라인1 가동상태,Boolean,M02704,,,,
OPC_S7_LINE2,TAG_LINE2_PRESS,라인2 압력,Float,DB1.DBD0,REAL,,,bar
OPC_S7_LINE2,TAG_LINE2_FAULT,라인2 알람,Boolean,DB1.DBX2.0,,,,
,,, ist eine leere Spalte — LINKED_ASSET_ID, ALIAS_NAME nicht verwendet.
4.2 Erstellung in Excel
- Obige Tabelle unverändert in Excel einfügen (1 Kopfzeile + Daten)
- Speichern unter → Format CSV UTF-8 (durch Trennzeichen getrennt) (Achtung: bei default
cp949werden Umlaute/koreanische Zeichen zerstört) - CSV-Datei in einem Texteditor öffnen und prüfen, ob Kommata innerhalb einer Zelle automatisch in Anführungszeichen (
"...") gesetzt wurden - CSV-Inhalt unverändert in den Bereich OPC bzw. TAG einfügen
5. Upload-Ablauf
| Schritt | Aktion |
|---|---|
| 1. Klick auf 💾 Upload | POST /connect/csv-upload (Body: die beiden Texte {opcs, tags}) |
| 2. Serverseitige Prüfung | Prüfung von Kopfzeile / Spaltenanzahl / Typ / OPC_ID-Zuordnung |
| 3. DB-Registrierung | pe.app_opc + pe.app_tag Upsert (bereits vorhandene TAG_ID wird nicht aktualisiert — skip) |
| 4. Toast | „Nach einem Neustart des Servers beginnt der Aufbau der registrierten OPC-Verbindungen und die Tag-Erzeugung." |
Nach dem Upload — damit der Gateway-Cache (OPCAndTagsCache) die neuen OPC/Tags einliest, wird ein Neustart empfohlen (bin/restart.sh, ~6 Sekunden). Mit Autostart (AUTO_COLLECT=true) registrierte OPC beginnen unmittelbar nach dem Neustart mit der Erfassung.
6. Häufige Stolperfallen
| Symptom | Ursache / Lösung |
|---|---|
| Nach dem Upload 0 Einträge | Fehlende Kopfzeile / abweichende Spaltenanzahl / Kodierung (UTF-8 BOM) |
| Zeichen werden falsch dargestellt | Excel speichert mit default cp949. UTF-8 erzwingen — Speichern unter → CSV UTF-8 |
| Gleiche TAG_ID wird nicht aktualisiert | Normales Verhalten — doppelte TAG_ID wird übersprungen. Für Änderungen den Bildschirm Tag-Registrierung oder REST PUT /api/v1/tag/{tagId} verwenden |
| OPC registriert, aber TAG nicht sichtbar | OPC_ID in der TAG-CSV stimmt nicht exakt mit OPC_ID der OPC-CSV überein. Groß-/Kleinschreibung / Leerzeichen |
ASYNC, AUTO_COLLECT werden als false verarbeitet | True / TRUE sind beide zulässig, bei leerer Zelle jedoch false. Explizit true eintragen |
| Spalte PLC_ADDRESS wird leer registriert | Ein Komma innerhalb einer Zelle der CSV teilt die Zeile. Bei Kommata in der Zelle mit "..." quotieren |
| Leerzeichen am Zeilenende (trailing space) → Spalten-Mismatch | Bei der Konvertierung Excel → CSV können trailing spaces entstehen. Im Texteditor pauschal trimmen |
| Upload erfolgreich, aber keine Werte im Diagramm | OPC wurde mit AUTO_COLLECT=false registriert, nach dem Neustart aber Start nicht gedrückt. ▶ Start in /ui/connect/list |
7. Weiterführende Informationen
- Einzelregistrierung (dialoggeführt): Tag-Registrierung
- Adressnotation: PLC-Adresseingabe (vollständiger Leitfaden zu 44 Treibern)
- Echtzeitüberwachung nach der Registrierung: Verbindungsliste / Tag-Liste
- Massenänderung (REST):
PUT /api/v1/tag/{tagId}der REST API wiederholt aufrufen