OPC-UA 노드 뷰어 사용하기 (/ui/opcua)
게이트웨이 자체가 OPC-UA 서버 를 내장하고 있어, 수집된 태그값을 외부 OPC-UA 클라이언트(SCADA, HMI) 에게 그대로 노출합니다. 이 페이지는 그 내장 서버의 연결 정보 와 노드 트리(태그 목록 + 실시간 값 + 시계열) 를 한 화면에서 볼 수 있는 뷰어 입니다.
- 구현: Eclipse Milo 0.6.16 (Apache 2.0)
- OPC UA 스펙: 1.04 (IEC 62541:2020)
- Transport: opc.tcp:// (default port 12000) / opc.tcp+TLS (12443)
- Security policies: None / Basic128Rsa15 / Basic256 / Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss
- User token: Anonymous (
opc.ua.server.anonymous=yesdefault) / UserName+Password / X.509 - Encoding: UA Binary
- Profile: Standard 2017 Server
- PubSub MQTT (1.05): 미지원 — 발행 필요 시 Sparkplug B 사용
좌측 메뉴 OPC-UA 뷰어 또는 직접 http://<게이트웨이>/ui/opcua 로 이동합니다.
1. 화면 구성
| 영역 | 내용 |
|---|---|
| 상단 엔드포인트 패널 | 외부 클라이언트가 접속할 TCP / TLS Endpoint URL, Application Name, Namespace Index, 인증 정보 (Username / Anonymous 허용 여부 / Password 토글) |
| 좌측 노드 트리 | 사이트 → OPC → 태그 3 단 트리. 각 OPC 의 연결 상태(CONNECTED/DISCONNECTED/UNKNOWN) 와 태그 수, 각 태그의 최신 값 을 인라인으로 표시 |
| 우측 노드 상세 | 트리에서 선택한 노드의 메타 + 실시간 값 + (수치/불리언 태그라면) 시계열 차트 |
상단의 엔드포인트 URL 옆 복사 아이콘으로 한번에 복사할 수 있고, Password 칸을 클릭하면 (인증된 세션일 때) 평문이 보입니다.
2. NodeId 컨벤션
각 태그는 다음과 같은 OPC-UA NodeId 로 노출됩니다.
ns=2;s=<SITE_ID>.<OPC_ID>.<TAG_ID>
예: ns=2;s=SITE_00001.OPC_00303.TAG_TEST_00042
외부 클라이언트(UaExpert, KEPServerEX, Ignition 등) 에서 이 NodeId 로 직접 구독할 수 있습니다. 상세 패널의 NodeId 우측 복사 버튼이 있어 클립보드로 가져가기 쉽습니다.
3. 노드 트리 — 검색 / 새로고침
- 트리 상단 검색창에 텍스트를 입력하면 트리·OPC·태그 이름을 실시간 부분 일치 로 필터링 합니다. 매칭이 자손에 있으면 부모(OPC, 사이트) 도 자동으로 펼쳐 표시합니다.
- 검색창 우측의 새로고침(↻) 아이콘 — 캐시된 트리/엔드포인트 정보를 다시 가져옵니다. 평소엔 자동으로 갱신되니 거의 누를 일 없습니다.
- 각 행의 ◂/▾ 토글로 서브트리를 접고/펼 수 있습니다. 검색이 활성일 때는 매칭 노출을 위해 자동으로 펼쳐지고, 검색을 비우면 직전 토글 상태로 복원됩니다.
- 긴 값 자동 줄임 (ellipsis) — 트리 노드의 현재 값 이 컬럼 폭을 넘으면
text-overflow: ellipsis로…처리됩니다. 마우스 hover 시 tooltip 으로 전체 평문이 노출 — JSON / 긴 STRING 값이 트리 레이아웃을 깨지 않도록 한 보호 장치입니다.
트리에 표시되는 값은 2 초 주기 로 자동 갱신됩니다 (/ui/opcua/tree). 트리 구조나 펼침 상태, 우측 상세, 차트는 그대로 유지됩니다.
4. 노드 상세 + 시계열 차트
태그 행을 클릭하면 우측에 다음이 표시됩니다.
- NodeId (복사 가능)
- Tag ID / DataType / PLC Address / Alias / Description
- Value (현재값 + 마지막 갱신 시각, ms 까지)
- Status (
OK/ERROR (메시지))
값 타입에 따라 차트 종류가 자동으로 달라집니다.
4.1 수치 / 불리언 (ECharts 라인 차트)
값이 숫자형(Integer/Long/Float/Double 등) 또는 불리언 이면 ECharts 시계열 라인 차트 가 그려집니다.
| 차트 기능 | 설명 |
|---|---|
| 범위 선택 | 차트 우상단 콤보로 1분/5분/10분/30분/1시간(default)/3시간/12시간/24시간 선택 — Cassandra(tm_tag_point) 의 과거 데이터를 즉시 가져와 다시 그립니다 |
| dataZoom 슬라이더 | 차트 하단 회색 톤(연한 그레이) 드래그바 — 가로 zoom / pan |
| 자동 추가 | 2 초 주기 폴링이 새 값을 차트에 추가합니다 |
| Tooltip | 마우스 오버 시 ms 단위 시각 + 값 |
| 불리언 | step end 형태(계단형) 로 0/1 토글을 시각화 |
| 샘플링 | 5,000 점 까지 보유, 그 이상이면 가장 오래된 점부터 제거 (lttb 다운샘플링) |
4.2 STRING (vis-timeline 박스 차트)
값이 STRING 이면 ECharts 라인 대신 vis-timeline 의 range box 차트 가 그려집니다 — 같은 값이 연속되는 구간을 한 박스로 묶어 시각적으로 상태 변화 시점 을 강조하는 형태입니다.
| 항목 | 설명 |
|---|---|
| 박스 = 같은 값 연속 구간 | 예: "RUNNING" 이 12:00~12:35 동안 유지되면 그 구간 하나의 박스 |
| 박스 색 | 값 해시 기반 자동 — 같은 텍스트는 항상 같은 색 |
| 박스 라벨 | 값 평문 (긴 경우 hover 시 전체) |
| 시간축 zoom/pan | vis 기본 인터랙션 (mouse wheel / drag) |
| 갱신 | 폴링 시 history 를 ASC 정렬해서 데이터셋 전체 재구성 (변동이 거의 없으면 깜빡임 없음) |
| 노드 변경 시 | disposeStringTimeline() 으로 인스턴스 destroy + 새 노드의 차트 재생성 |
STRING 차트는 상태 머신 로그(
READY → RUNNING → ERROR → IDLE) 같은 비숫자 시계열을 한눈에 보기에 적합합니다. 같은 톤은 태그 값 추이 보기 (tag-view) 에도 적용됩니다.
5. EDGE 시스템 태그
EDGE_<...> 로 시작하는 가상 OPC 한 개가 자동으로 트리에 보입니다. 이는 게이트웨이 자기자신의 상태를 OPC-UA 노드로 노출하는 시스템 태그 모음 입니다.
대표 태그:
| 태그 이름(Description) | 의미 |
|---|---|
THREAD_COUNT | 자바 스레드 수 |
TAG_COUNT | 등록된 태그 총 개수 |
SERVER_STARTED_TIMESTAMP | 서버 기동 시각(epoch ms) |
OPC_CONNECTED_COUNT | 연결 OK 인 OPC 수 |
HEAP_USED_MB | JVM 힙 사용량(MB) |
EDGE 시스템 OPC 의 연결 상태 는 항상 CONNECTED 로 표시됩니다 (자기자신이라 연결 개념이 없음).
6. 외부 클라이언트와 함께 쓰기 — 흐름
- 이 화면에서 TCP Endpoint 를 복사 (예:
opc.tcp://<게이트웨이>:12000). - UaExpert / KEPServerEX 등 OPC-UA 클라이언트에서 새 서버 추가 → 위 URL 입력.
- 인증 모드:
- Anonymous 가 켜져 있으면(상단 패널에 Anonymous 허용 표시) 그대로 접속.
- 아니면 Username / Password 사용 (Password 는 상단 패널에서 클릭으로 잠시 평문 확인 가능).
- 접속 후 NodeId
ns=2;s=...형식의 태그를 그대로 구독.
7. 트러블슈팅
| 증상 | 점검 포인트 |
|---|---|
| 트리에 OPC 가 안 보임 | 자주 하는 작업 → 새 PLC 연결 추가 가 끝났는지, 게이트웨이가 그 OPC 의 수집 자동 시작 옵션이 켜져 있는지 |
태그 옆 값이 - 로 나옴 | 해당 태그가 한 번도 갱신된 적 없음. 수집 시작 / OPC 연결 / Quality 점검 |
| 트리에는 보이는데 외부 클라이언트가 NodeId 를 못 찾음 | 오타 또는 OPC-UA 서버가 비활성. app.properties 의 opc.ua.server.tcp.enable=true 확인 |
| 차트가 비어있음 | 그 태그의 카산드라 history 가 아직 없음(방금 등록한 태그) — 잠시 기다리면 점이 추가됨 |
| 차트가 들쭉날쭉 보임 | 범위를 24시간 로 키우면 자동 다운샘플링이 들어가 부드러워집니다 |
라이센스/CN 인증서 경고 (TLS 엔드포인트) | 게이트웨이의 자체 서명 인증서 — 클라이언트에서 "Trust" 처리. 사내 인증서 적용은 운영자에게 문의 |
8. 더 알아보기
- Node-RED (
/ui/flow) — 같은 태그값을 흐름으로 가공/외부 발송.자주 하는 작업 → Node-RED 로 자동화 / IIoT 플로우참고. - REST API — 같은 데이터를 HTTP 로 직접 가져올 수 있습니다.
고급 / 통합 파트너용 → REST API참고. - 드라이버 기술 레퍼런스 → OPC-UA — 게이트웨이의 OPC-UA 클라이언트 측 (외부 OPC-UA 서버에 접속해 데이터를 가져오는 경로) 설명.