メインコンテンツまでスキップ

CSV一括アップロード (/ui/connect/csv)

複数のOPC + タグを一度に登録する画面。Excelや外部ツールで定義したタグカタログをそのままimportできます。50タグ以上のサイトでは最速の方法です。

ホーム → プロトコル接続する → 右上の 📥 CSV一括アップロード、または直接 /ui/connect/csv


1. 画面構成

📥 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カラム (9個)

順序カラム意味
1OPC_ID一意の識別子 (英字/数字/_)OPC_LS_LINE1
2OPC_NAMEユーザー表示名라인1 LS PLC
3OPC_TYPEゲートウェイコード (LS / MELSEC / S7 / MODBUS / OPCUA / EIP / LOGIX / HTTP など)LS
4OPC_AGENT_IPPLCのIP192.168.100.50
5OPC_AGENT_PORTTCPポート2004
6TIMECYCLE収集周期(ms)1000
7ASYNC非同期readtrue / false
8AUTO_COLLECT起動後の自動収集開始true / false
9DESCRIPTION自由メモ라인1 메인 PLC

OPC_TYPE別のポート / IP一覧は PLC種類別ガイド比較表を参照してください。


3. TAG CSVカラム (9個)

順序カラム意味
1OPC_ID上記OPC表の OPC_ID とマッチングOPC_LS_LINE1
2TAG_ID一意のID (英字/数字/_)TAG_LINE1_TEMP
3TAG_NAMEユーザー表示名라인1 온도
4DATA_TYPEInteger / Long / Float / Double / String / BooleanInteger
5PLC_ADDRESSドライバ別のアドレス (例: D00309 LS、DB1.DBW0 S7、holding-register:1 Modbus)D00309
6FORMAT形式の補助 (DW / REAL / STR[10] / BIN[3] など)DW
7LINKED_ASSET_ID(任意) 資産マッピングASSET_PUMP_01
8ALIAS_NAME(任意) 外部システム用エイリアスtemp_01
9DESCRIPTION自由メモ라인1 메인 펌프 온도(℃)

PLC_ADDRESS と FORMAT の正確な入力については PLCアドレス入力 (44ドライバ完全ガイド) を参照してください。


4. 作成例 (実践)

4.1 OPC 2個 + TAG 5個

OPC領域 (ヘッダー + 2行):

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領域 (ヘッダー + 5行):

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,,,,

,,, は空のカラム — LINKED_ASSET_IDALIAS_NAME は未使用です。

4.2 Excelで作成する

  1. Excelに上記の表をそのまま貼り付け (ヘッダー1行 + データ)
  2. 名前を付けて保存CSV UTF-8 (カンマ区切り) 形式 (default cp949 では日本語/韓国語が文字化けするので注意)
  3. CSVファイルをテキストエディタで開き、セル内のカンマが自動で引用符( "...")で囲まれているかを確認
  4. CSV本文をそのまま OPC 領域または TAG 領域に貼り付け

5. アップロードの流れ

ステップ動作
1. 💾 アップロード をクリックPOST /connect/csv-upload (body: {opcs, tags} の2つのテキスト)
2. サーバー検証ヘッダー / カラム数 / 型 / OPC_IDマッチングの検証
3. DB登録pe.app_opc + pe.app_tag upsert (既存のTAG_IDは更新しない — skip)
4. トースト「サーバーを再起動すると、登録したOPC接続およびタグ生成を開始します。」

アップロード後 — ゲートウェイキャッシュ (OPCAndTagsCache) が新しいOPC/タグを読み込むよう 再起動を推奨 (bin/restart.sh、約6秒)。自動開始 (AUTO_COLLECT=true) で登録したOPCは再起動後すぐに収集を開始します。


6. よく陥る落とし穴

症状原因 / 対処
アップロード後0件ヘッダー欠落 / カラム数の不一致 / エンコーディング (UTF-8 BOM)
文字化けExcelのdefault cp949 で保存している。UTF-8 を強制 — 名前を付けて保存 → CSV UTF-8
同じTAG_IDが更新されない正常動作 — 重複TAG_IDはskip。変更する場合は タグ登録 画面またはREST PUT /api/v1/tag/{tagId} から
OPCは登録されたのにTAGが表示されないTAG CSVの OPC_ID がOPC CSVの OPC_ID と完全に一致していない。大文字小文字 / 空白を確認
ASYNCAUTO_COLLECT がfalseとして処理されるTrue / TRUE はどちらもOKだが、空セルの場合は false になる。明示的に true を入力
PLC_ADDRESSカラムが空で登録されるCSVのセル内カンマが行を分割している。セル内にカンマがある場合は "..." で引用
行末に空白 (trailing space) → カラムmismatchExcel → CSV変換時にtrailing spaceが追加されることがある。テキストエディタで一括trim
アップロードは成功するがチャートに値が入らないOPCを AUTO_COLLECT=false で登録したが、再起動後に開始を押していない。/ui/connect/list の ▶ 開始を実行

7. さらに詳しく