본문으로 건너뛰기

연결 목록 / 태그 목록 (/ui/connect/list) — 컬럼 / 액션 완전 가이드

게이트웨이가 알고 있는 모든 OPC(연결) 목록 과 그 안의 태그 목록 을 한 화면에서 보고 — 시작 / 중지 / 편집 / 삭제 / 값 쓰기 / 즉시 읽기 까지 모두 처리하는 운영 핵심 화면 입니다.

홈 카드 연결된 목록 (N) → 클릭, 또는 직접 http://<게이트웨이>/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 가 그립니다.

#컬럼의미 / 표시
1PLC | 프로토콜프로토콜 별 로고 이미지 — 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연결 상태라운드 뱃지 — 🟢 연결 / 🔴 끊김 / ⬜ 알수없음(시작 한 번도 안 함)
3OPC ID고유 ID (예: OPC_LS_TEST) — 정렬 기준 (default ASC)
4OPC 명사용자 지정 이름
5설명자유 메모
6PLC IPOPC 가 접속하는 PLC IP
7PLC 포트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/lsopc_type 따라 분기)connect.edit(opcId&opcType)
🗑 삭제 (fa-trash)확인 다이얼로그 → OPC + 하위 태그 일괄 삭제connect.del(opcId&opcType)
삭제는 되돌릴 수 없습니다

OPC 삭제 시 그 아래 태그 row 와 함께 사라집니다. 시계열 데이터 (Cassandra tm_tag_point) 는 TTL 만료 전까지 그대로 남지만, 새 read 는 더이상 들어오지 않습니다.

3.2 연결 상태 vs 수집 상태 의 차이

같은 OPC 에 대해 두 상태가 다른 경우:

연결수집의미
🟢 연결🟢 정상정상 동작
🟢 연결🟧 이상TCP 연결은 살아있지만 read 응답이 일정 시간 안 들어옴 — PLC 프로그램 / 주소 오타 / 권한 의심
🟢 연결⬜ 중지사용자가 ⏹ 중지 누른 상태
🔴 끊김⬜ 중지정상적인 시작 안 함 상태
🔴 끊김🟧 이상한 번 동작했었으나 PLC 가 끊어짐 — IP/포트/방화벽 점검
⬜ 알수없음⬜ 중지등록만 하고 한 번도 시작 안 한 신규 OPC

4. 행 선택 → 태그 목록

OPC 행 클릭 시:

  1. 그 행이 selected 클래스로 하이라이트 (다른 행 해제)
  2. connect.tag_list(opcId) 호출 → 그 OPC 의 태그를 가져와 아래 태그 목록 테이블 에 그림
  3. 그 OPC 의 opc_typeMOTOR_SENSE 면 태그 테이블 대신 HEALTH INDEX / SIGNAL 카드 컨테이너 표시

행 선택 결과는 window.__connect_list_selected_opc_id 에 저장 — 태그 인라인 쓰기 시 opc_id 파라미터로 사용.


5. 태그 목록 테이블 (14 컬럼)

선택된 OPC 안의 태그들을 표시. 마지막 값 / 시간 / read 상태가 페이지 안에서 주기적으로 갱신됩니다 (writejs.value() — 별도 폴링).

#컬럼의미 / 표시
1(아이콘)태그 아이콘 (fa-tag)
2TAG ID고유 ID (예: TAG_LS_TEST_1000)
3TAG 명사용자 지정 이름
4설명자유 메모
5데이터 타입Integer / Boolean / Float / Long / String
6PLC 주소PLC 프로토콜별 주소 (예: D1000, ns=2;s=...)
7PLC 데이터 포맷형식 옵션 (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. 더 알아보기