Verbindungsliste und Tag-Liste
Dies ist der zentrale Betriebsbildschirm, auf dem Sie alle OPC-Verbindungen, die dem Gateway bekannt sind, und die darin enthaltenen Tag-Listen auf einen Blick sehen und gleichzeitig starten / stoppen / bearbeiten / löschen / Werte schreiben / sofort lesen können.

Home-Karte Verbundene Liste (N) → klicken oder direkt http://<gateway>/ui/connect/list.
1. Bildschirmaufbau
┌────────────────────────────────────────────────────────────────┐
│ ⊙ 연결 목록 [←] [↻] [+ 연결 추가] │
├────────────────────────────────────────────────────────────────┤
│ [OPC 목록 테이블 — 14개 컬럼] │
│ PLC | 프로토콜 연결상태 OPC ID ... 수집상태 액션 │
│ ───────────────────────────────────────────────────────── │
│ (행 클릭 → 아래 태그 테이블 채워짐 / 행 하이라이트) │
├────────────────────────────────────────────────────────────────┤
│ 선택된 연결의 TAG 목록을 표시합니다 │
│ [태그 목록 테이블 — 14개 컬럼] │
│ ▣ TAG ID TAG 명 ... 마지막 값 업데이트시간 액션 │
└────────────────────────────────────────────────────────────────┘
Wenn Sie die OPC des MOTOR_SENSE-Protokolls auswählen, wird anstelle der Tag-Tabelle ein HEALTH INDEX / SIGNAL Karten-Container angezeigt (siehe separater Abschnitt).
2. Obere Leiste – Schaltflächen
| Schaltfläche | Aktion |
|---|---|
| ← (Backspace-Symbol) | Navigation zu /ui/main |
| ↻ (Sync-Symbol) | connect.search() – Liste erneut abrufen (automatische Aktualisierung übernimmt die Datentabelle – dient nur zum erzwungenen Neuladen) |
| + Verbindung hinzufügen (blaue Schaltfläche) | /ui/connect/connect Wechsel zum Bildschirm zum Hinzufügen einer neuen Verbindung |
3. OPC-Listentabelle (14 Spalten)
/connect/opc/list API-Ergebnis wird von DataTables gezeichnet.
| # | Spalte | Bedeutung / Anzeige |
|---|---|---|
| 1 | PLC | Protokoll | Logo-Bild je Protokoll – MELSEC=mitsubishi.png / S7=siemens.png / MODBUS=modbus.svg / OPCUA=opcua.png / EIP=eip.png / LS=ls.png / GE=ge.png / PROFINET=profinet.png / FINS=fins.png / LOGIX=rockwell.png / CANOPEN=canopen.png / HTTP=http.png / OP=op.png / MOTOR_SENSE=MotorSense_Logo.svg |
| 2 | Verbindungsstatus | Rundes Badge – 🟢 Verbunden / 🔴 Getrennt / ⬜ Unbekannt (noch nie gestartet) |
| 3 | OPC-ID | Eindeutige ID (z. B. OPC_LS_TEST) – Sortierkriterium (Standard ASC) |
| 4 | OPC-Name | Benutzerdefinierter Name |
| 5 | Beschreibung | Freier Kommentar |
| 6 | PLC-IP | PLC-IP, mit der die OPC verbunden ist |
| 7 | PLC-Port | OPC-Port (z. B. LS 2004, S7 102, MODBUS 502) |
| 8 | Erfassungszyklus | timecycle (ms) – rechtsbündig, Tausendertrennzeichen |
| 9 | Autostart | Bei auto_collect=true ✓, sonst - |
| 10 | Asynchron | Bei async=true ✓, sonst - |
| 11 | Anzahl verbundener Tags | Anzahl der in dieser OPC registrierten Tags – rechtsbündig |
| 12 | Erfassungsanzahl | Kumulierte Anzahl der Reads (point_count) – große Zahlen werden horizontal scrollbar angezeigt |
| 13 | Erfassungsstatus | Rundes Badge – 🟢 Normal (scan_status=START, rotierendes Sync-Symbol) / 🟧 Störung (NOT COLLECT, Warndreieck) / ⬜ Gestoppt (STOP, Stopp-Symbol) |
| 14 | Aktion | ▶ Start / ⏹ Stopp / 🔧 Bearbeiten / 🗑 Löschen (4 Symbole) |
3.1 Aktionssymbole – im Detail
| Symbol | Aktion | Aufruf |
|---|---|---|
▶ Start (fa-play) | Erfassung starten | connect.start(opcId) → POST /connect/start |
⏹ Stopp (fa-stop) | Erfassung stoppen (TCP-Verbindung bleibt bestehen) | connect.stop(opcId) → POST /connect/stop |
🔧 Bearbeiten (fa-wrench) | Wechsel zum Bearbeitungsbildschirm je OPC-Typ (z. B. /ui/connect/ls etc., Verzweigung je opc_type) | connect.edit(opcId&opcType) |
🗑 Löschen (fa-trash) | Bestätigungsdialog → OPC und zugehörige Tags werden gemeinsam gelöscht. | connect.del(opcId&opcType) |
Beim Löschen einer OPC verschwinden auch die darunterliegenden Tag-Zeilen. Die Zeitreihendaten (Cassandra tm_tag_point) bleiben bis zum Ablauf der TTL erhalten, aber es werden keine neuen Reads mehr entgegengenommen.
3.2 Unterschied zwischen Verbindungsstatus und Erfassungsstatus
Wenn sich die beiden Status für dieselbe OPC unterscheiden:
| Verbindung | Erfassung | Bedeutung |
|---|---|---|
| 🟢 Verbunden | 🟢 Normal | Normalbetrieb |
| 🟢 Verbunden | 🟧 Störung | TCP-Verbindung besteht, aber die Read-Antwort bleibt innerhalb einer bestimmten Zeit aus – Verdacht auf PLC-Programm / Adressfehler / Berechtigungen |
| 🟢 Verbunden | ⬜ Gestoppt | Benutzer hat ⏹ Stopp gedrückt |
| 🔴 Getrennt | ⬜ Gestoppt | Normaler Nicht gestartet-Zustand |
| 🔴 Getrennt | 🟧 Störung | War in Betrieb, aber PLC hat Verbindung verloren – IP/Port/Firewall prüfen |
| ⬜ Unbekannt | ⬜ Gestoppt | Nur registriert, noch nie gestartet – neue OPC |
4. Zeilenauswahl → Tag-Liste
Beim Klick auf eine OPC-Zeile:
- Diese Zeile wird mit der Klasse selected hervorgehoben (andere Zeilen werden abgewählt)
connect.tag_list(opcId)wird aufgerufen → ruft die Tags dieser OPC ab und zeichnet sie in die untere Tag-Listentabelle- Wenn die
opc_typedieser OPCMOTOR_SENSEist, wird anstelle der Tag-Tabelle der HEALTH INDEX / SIGNAL Karten-Container angezeigt
Das Ergebnis der Zeilenauswahl wird in
window.__connect_list_selected_opc_idgespeichert – wird als opc_id-Parameter beim Inline-Schreiben von Tags verwendet.
5. Tag-Listentabelle (14 Spalten)
Zeigt die Tags innerhalb der ausgewählten OPC. Letzter Wert / Zeitpunkt / Read-Status werden periodisch innerhalb der Seite aktualisiert (writejs.value() – separates Polling).
| # | Spalte | Bedeutung / Anzeige |
|---|---|---|
| 1 | (Symbol) | Tag-Symbol (fa-tag) |
| 2 | TAG-ID | Eindeutige ID (z. B. TAG_LS_TEST_1000) |
| 3 | TAG-Name | Benutzerdefinierter Name |
| 4 | Beschreibung | Freier Kommentar |
| 5 | Datentyp | Integer / Boolean / Float / Long / String usw. |
| 6 | PLC-Adresse | Adresse je PLC-Protokoll (z. B. D1000, ns=2;s=...) |
| 7 | PLC-Datenformat | Formatoptionen (X / B / W / DW / Float usw. – verwendet für die präzise Verzweigung von Read/Write je Treiber) |
| 8 | Berechnung | Formel (fomula) – z. B. einfache Arithmetik wie ${VALUE} * 10 |
| 9 | Erfassungsanzahl | Kumulierte Anzahl der Reads – rechtsbündig |
| 10 | Letzter Wert | Neuester Wert – grüner Hintergrund + weiße Schrift. Große Texte (STRING/Array) werden horizontal scrollbar in der Zelle |
| 11 | Zeitpunkt der letzten Aktualisierung | Dunkelgrauer Hintergrund + weiße Schrift, bis ms |
| 12 | Lesestatus | 🟢 SUCCESS (grün) / 🔴 ERROR (rot) |
| 13 | Fehlermeldung beim Lesen | Nur bei Status ERROR gefüllt – roter Hintergrund + weiße Schrift |
| 14 | Aktion | ✏ Schreiben / 🔄 Sofort lesen (2 Symbole) |
5.1 Tag-Aktionen – im Detail
✏ Schreiben (fa-pen)
Inline-Aktion, um einmalig einen Wert an dieses Tag zu schreiben.
1. 클릭 → prompt 창: "태그 [<TAG_ID>] 에 쓸 값을 입력하세요"
2. 값 입력 후 OK → confirm: "<OPC_ID> / <TAG_ID> 에 [<VALUE>] 쓰기?"
3. POST /connect/write { tag_id, opc_id, value }
4. 성공 시 toastr: "쓰기 완료: <TAG_ID> = <VALUE>"
5. 서버가 write 직후 같은 connection 으로 즉시 read 한 결과를 함께 반환:
- 동일 ↔ 동일하지 않음 비교 후 추가 안내
"읽기 확인" (info) — 같음 → 정상
"읽기 결과 다름" (warning) — PLC 자체 프로그램이 즉시 덮어쓴 가능성
6. 약 800ms 후 화면의 마지막 값 셀도 자동 갱신
Intern verzweigt ConnectService.tagWriteByTagId() je PLC-Protokoll (HTTP / OPC-UA / Modbus / MELSEC / S7 / LS / EIP werden alle unterstützt).
Bevor Sie auf reale Anlagen-Tags schreiben, testen Sie mit einer Simulator-OPC oder Test-Tags. Schreibrechte nur für Tags, die mit dem Betriebsteam vereinbart wurden.
🔄 Sofort lesen (fa-sync-alt)
Umgeht den Collector-Cache und liest jetzt direkt von der PLC.
GET /api/v1/tag/<TAG_ID>/value?fresh=true
→ 성공: toastr.info "지금 읽기: <TAG_ID> = <VALUE>"
→ 값 없음: toastr.warning "읽음 (값 없음): <TAG_ID>"
→ 실패: toastr.error "읽기 실패: ..."
Für die manuelle Aktualisierung bei PLCs mit langem Erfassungszyklus (z. B. 30 Sekunden). Häufiges Verwenden erhöht die PLC-Last.
6. Bereich für MOTOR_SENSE
Bei Auswahl einer opc_type=MOTOR_SENSE OPC wird anstelle der Tag-Tabelle Folgendes angezeigt.
6.1 Statusinformationsbereich
| Element | Bedeutung |
|---|---|
| Zeitpunkt der letzten Aktualisierung | Zeitpunkt der neuesten Daten des MOTOR_SENSE-Assets |
| Lesestatus | SUCCESS / ERROR |
6.2 HEALTH INDEX-Bereich
❤ Symbol + Karten je Asset – horizontal scrollbar. Jede Karte enthält Asset-ID + Messmetriken (Level, Alarm usw.). Kartenfarbe: hellblauer Hintergrund + dunkelblaue Umrandung.
6.3 SIGNAL-Bereich
📶 Symbol + Karten je Asset – horizontal scrollbar. Zeitreihen-Signalmetriken. Kartenfarbe: hellgrau.
Beide Bereiche: Auch bei vielen Assets sollen sich die Karten seitlich unbegrenzt ausdehnen – vertikales Scrollen wird verhindert, nur horizontales Scrollen ist erlaubt.
7. Häufige Stolperfallen
| Symptom | Ursache / Lösung |
|---|---|
| Tag-Tabelle bleibt leer beim Klick auf eine Zeile | Keine Tags in dieser OPC registriert. Über Bearbeiten Tags hinzufügen |
| Verbunden, aber Erfassung gestört | Adressformat / Datentyp (Format) / PLC-Schreibberechtigung prüfen |
| Zelle "Letzter Wert" wird lange nicht aktualisiert | Erfassungszyklus (timecycle) ist lang oder PLC liefert unveränderte Werte – mit Sofort lesen erzwingen |
| Warnung "Leseergebnis weicht ab" nach ✏ Schreiben | PLC-Programm überschreibt den Wert innerhalb von 1 Sekunde selbst. Kann normal sein (z. B. Lockout-Spule) |
| Letzter Wert ist zu lang zum Lesen | Horizontaler Scrollbalken erscheint automatisch in der Zelle – innerhalb der Zelle links/rechts scrollen |
| MOTOR_SENSE-Karten sind leer | Asset-Suche hat noch nicht stattgefunden (/connect/motor-sense/asset-list keine Antwort) – kurz warten oder OPC neu starten |
| Erfassungsstatus direkt nach Start Unbekannt | Scan-Loop hat noch keinen ersten Zyklus durchlaufen – timecycle + α warten |
| Nach Löschen und erneutem Hinzufügen startet es wieder mit Unbekannt | Normal – wenn auto_collect aktiv ist, wechselt es automatisch zu Verbunden + Normal |
8. Weiterführende Informationen
- Neue Verbindung hinzufügen: Neue PLC-Verbindung hinzufügen
- Tags registrieren / bearbeiten: Tag-Registrierung
- Als Zeitreihendiagramm anzeigen: Erfassungsverlauf anzeigen
- Test/Demo: Externe
plantpulse-simulatoroder Test-Tags verwenden - Motor Sense: Motor Sense (Motor Sense)
- Dieselben Daten im Code verarbeiten: REST API, Flow (Node-RED)