接続一覧 / タグ一覧 (/ui/connect/list) — カラム / アクション完全ガイド
ゲートウェイが認識しているすべての OPC(接続)一覧 とその中の タグ一覧 を1画面で確認し — 開始 / 停止 / 編集 / 削除 / 値の書き込み / 即時読み取り まですべて処理する運用の中核画面です。
ホームカード 接続された一覧 (N) → クリック、または直接 http://<gateway>/ui/connect/list。
1. 画面構成
┌────────────────────────────────────────────────────────────────┐
│ ⊙ 연결 목록 [←] [↻] [+ 연결 추가] │
├────────────────────────────────────────────────────────────────┤
│ [OPC 목록 테이블 — 14개 컬럼] │
│ PLC | 프로토콜 연결상태 OPC ID ... 수집상태 액션 │
│ ───────────────────────────────────────────────────────── │
│ (행 클릭 → 아래 태그 테이블 채워짐 / 행 하이라이트) │
├────────────────────────────────────────────────────────────────┤
│ 선택된 연결의 TAG 목록을 표시합니다 │
│ [태그 목록 테이블 — 14개 컬럼] │
│ ▣ TAG ID TAG 명 ... 마지막 값 업데이트시간 액션 │
└────────────────────────────────────────────────────────────────┘
MOTOR_SENSE プロトコルの OPC を選択すると、タグテーブルの代わりに HEALTH INDEX / SIGNAL カードコンテナ が表示されます(別節を参照)。
2. 上部バー — ボタン
| ボタン | 動作 |
|---|---|
| ← (バックスペースアイコン) | /ui/main へ移動 |
| ↻ (sync アイコン) | connect.search() — 一覧を再照会(自動更新はデータテーブルが行うため、強制リフレッシュ用) |
| + 接続追加 (青ボタン) | /ui/connect/connect 新規接続追加画面へ移動 |
3. OPC 一覧テーブル (14 カラム)
/connect/opc/list API の結果を DataTables が描画します。
| # | カラム | 意味 / 表示 |
|---|---|---|
| 1 | PLC | プロトコル | プロトコル別ロゴ画像 — 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 | 接続状態 | ラウンドバッジ — 🟢 接続 / 🔴 切断 / ⬜ 不明(一度も開始していない) |
| 3 | OPC ID | 一意の ID (例: OPC_LS_TEST) — ソート基準 (default ASC) |
| 4 | OPC 名 | ユーザー指定の名称 |
| 5 | 説明 | 自由メモ |
| 6 | PLC IP | OPC が接続する PLC の IP |
| 7 | PLC ポート | OPC ポート (LS 2004、S7 102、MODBUS 502 など) |
| 8 | 収集周期 | timecycle (ms) — 右揃え、桁区切りカンマ |
| 9 | 自動開始 | auto_collect=true なら ✓、それ以外は - |
| 10 | 非同期 | async=true なら ✓、それ以外は - |
| 11 | 接続されたタグ数 | この OPC に登録されたタグ数 — 右揃え |
| 12 | 収集件数 | 累積 read 件数 (point_count) — 大きな数値は横スクロールで表示 |
| 13 | 収集状態 | ラウンドバッジ — 🟢 正常 (scan_status=START、回転 sync アイコン) / 🟧 異常 (NOT COLLECT、警告三角) / ⬜ 停止 (STOP、停止アイコン) |
| 14 | アクション | ▶ 開始 / ⏹ 停止 / 🔧 編集 / 🗑 削除 (4 アイコン) |
3.1 アクションアイコン — 詳細
| アイコン | 動作 | 呼び出し |
|---|---|---|
▶ 開始 (fa-play) | 収集開始 | connect.start(opcId) → POST /connect/start |
⏹ 停止 (fa-stop) | 収集停止 (TCP 接続は維持) | connect.stop(opcId) → POST /connect/stop |
🔧 編集 (fa-wrench) | OPC 種別ごとの編集画面へ移動 (例: /ui/connect/ls など opc_type に応じて分岐) | connect.edit(opcId&opcType) |
🗑 削除 (fa-trash) | 確認ダイアログ → OPC + 配下タグを一括削除 | connect.del(opcId&opcType) |
OPC を削除すると、その配下のタグ row も一緒に消えます。時系列データ (Cassandra tm_tag_point) は TTL 満了まで残りますが、新しい read はこれ以降入ってきません。
3.2 接続状態 と 収集状態 の違い
同一 OPC で両者の状態が異なる場合:
| 接続 | 収集 | 意味 |
|---|---|---|
| 🟢 接続 | 🟢 正常 | 正常動作 |
| 🟢 接続 | 🟧 異常 | TCP 接続は生きているが read 応答が一定時間入ってこない — PLC プログラム / アドレスの誤記 / 権限を疑う |
| 🟢 接続 | ⬜ 停止 | ユーザーが ⏹ 停止を押した状態 |
| 🔴 切断 | ⬜ 停止 | 正常な 未開始 状態 |
| 🔴 切断 | 🟧 異常 | 一度は動作したが PLC が切断された — IP/ポート/ファイアウォールを点検 |
| ⬜ 不明 | ⬜ 停止 | 登録のみで一度も開始していない新規 OPC |
4. 行の選択 → タグ一覧
OPC 行をクリックすると:
- その行が selected クラスでハイライト(他の行は解除)
connect.tag_list(opcId)を呼び出し → その OPC のタグを取得して下部の タグ一覧テーブル に描画- その OPC の
opc_typeがMOTOR_SENSEなら、タグテーブルの代わりに HEALTH INDEX / SIGNAL カードコンテナを表示
行の選択結果は
window.__connect_list_selected_opc_idに保存 — タグのインライン書き込み時に opc_id パラメータとして使用。
5. タグ一覧テーブル (14 カラム)
選択された OPC 内のタグを表示します。最終値 / 時刻 / read 状態はページ内で 周期的に 更新されます (writejs.value() — 別途ポーリング)。
| # | カラム | 意味 / 表示 |
|---|---|---|
| 1 | (アイコン) | タグアイコン (fa-tag) |
| 2 | TAG ID | 一意の ID (例: TAG_LS_TEST_1000) |
| 3 | TAG 名 | ユーザー指定の名称 |
| 4 | 説明 | 自由メモ |
| 5 | データ型 | Integer / Boolean / Float / Long / String など |
| 6 | PLC アドレス | PLC プロトコル別のアドレス (例: D1000, ns=2;s=...) |
| 7 | PLC データフォーマット | 形式オプション (X / B / W / DW / Float など — ドライバごとの read/write の詳細分岐に使用) |
| 8 | 計算 | 計算式 (fomula) — ${VALUE} * 10 のように単純な算術を適用 |
| 9 | 収集件数 | 累積 read 件数 — 右揃え |
| 10 | 最終値 | 直近の値 — 緑背景 + 白文字。大きなテキスト(STRING/配列)はセル内で横スクロール |
| 11 | 最終更新時刻 | 濃いグレー背景 + 白文字、ms まで |
| 12 | 読み取り状態 | 🟢 SUCCESS (緑) / 🔴 ERROR (赤) |
| 13 | 読み取りエラーメッセージ | 状態が ERROR のときのみ設定される — 赤背景 + 白文字 |
| 14 | アクション | ✏ 書き込み / 🔄 即時読み取り (2 アイコン) |
5.1 タグアクション — 詳細
✏ 書き込み (fa-pen)
該当タグに一度だけ値を書き込むインラインアクション。
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 후 화면의 마지막 값 셀도 자동 갱신
内部的には ConnectService.tagWriteByTagId() が PLC プロトコルに応じて分岐します (HTTP / OPC-UA / Modbus / MELSEC / S7 / LS / EIP すべて対応)。
実設備のタグに書き込む前に、シミュレータ OPC または テストタグ で検証してください。write 権限は運用チームと合意したタグにのみ。
🔄 即時読み取り (fa-sync-alt)
収集器のキャッシュをバイパスし、PLC から 今 直接 read します。
GET /api/v1/tag/<TAG_ID>/value?fresh=true
→ 성공: toastr.info "지금 읽기: <TAG_ID> = <VALUE>"
→ 값 없음: toastr.warning "읽음 (값 없음): <TAG_ID>"
→ 실패: toastr.error "읽기 실패: ..."
収集周期が長い PLC (例: 30秒) での 手動更新 用。頻繁に使うと PLC の負荷が増えます。
6. MOTOR_SENSE 専用領域
opc_type=MOTOR_SENSE OPC を選択すると、タグテーブルの代わりに以下が表示されます。
6.1 状態情報領域
| 項目 | 意味 |
|---|---|
| 最終更新時刻 | MOTOR_SENSE 資産の最も新しいデータ時点 |
| 読み取り状態 | SUCCESS / ERROR |
6.2 HEALTH INDEX セクション
❤ アイコン + 資産別カード — 横スクロール。各カードに資産 ID + 測定指標 (level、alarm など)。カード色: 淡い青背景 + 濃い青の枠線。
6.3 SIGNAL セクション
📶 アイコン + 資産別カード — 横スクロール。時系列シグナルのメトリック。カード色: 淡いグレー。
両セクションとも資産が多くてもカードが横方向に無限に伸びるよう、縦 スクロールは抑止し 横 スクロールのみ許可。
7. よく陥る落とし穴
| 症状 | 原因 / 対処 |
|---|---|
| 行をクリックしてもタグテーブルが空 | その OPC に登録されたタグがない。編集 に入ってタグを追加 |
| 接続 なのに 収集異常 | アドレス形式 / データ型(format) / PLC Write 権限を点検 |
| 最終値のセルが長時間更新されない | 収集周期(timecycle) が長い、または PLC 側で値が変化していない — 即時読み取り で強制 read |
| ✏ 書き込み後に 読み取り結果が異なる 警告 | PLC プログラムが1秒以内に自ら上書きしている。正常な場合もある (lockout コイルなど) |
| 最終値が長すぎて読みにくい | そのセルに横スクロールバーが自動生成される — セル内で左右スクロール |
| MOTOR_SENSE カードが空 | 資産の検索がまだ完了していない (/connect/motor-sense/asset-list 未応答) — 少し待つか OPC を再起動 |
| 開始直後に 収集状態 が 不明 | scan loop がまだ最初のサイクルを回していない — timecycle + α の分だけ待つ |
| 削除直後に再追加したら 不明 から再スタート | 正常 — auto_collect が on なら自動で 接続 + 正常 に遷移 |
8. さらに詳しく
- 新規接続の追加: 新しい PLC 接続の追加
- タグの登録 / 編集: タグ登録
- 時系列チャートで見る: 収集履歴の表示
- テスト/デモ: 外部
plantpulse-simulatorまたはテストタグを使用 - モーターセンス: モーターセンス (Motor Sense)
- 同じデータをコードで扱う: REST API、フロー (Node-RED)