본문으로 건너뛰기

OPC-UA

OPC-UA (OLE for Process Control - Unified Architecture, IEC 62541) 는 산업 자동화 분야의 표준 통신 규약입니다. Kepware, Matrikon, Prosys, Ignition 등 거의 모든 SCADA / 미들웨어 제품이 OPC-UA 서버 기능을 제공합니다.

대부분의 PLC 가 직접 OPC-UA 서버 기능을 갖고 있지 않기 때문에 보통 Kepware 같은 게이트웨이 소프트웨어를 통해 PLC 값을 OPC-UA 로 노출하고, 이 게이트웨이는 그 OPC-UA 서버에 접속해 값을 가져오는 구조입니다.

지원 spec / 보안

이 게이트웨이의 OPC-UA 클라이언트는 OPC UA 1.04 (IEC 62541:2020) 까지 지원 — Eclipse Milo 0.6.16 SDK 기반.

  • Transport: opc.tcp:// (UA Binary encoding)
  • Security: None / Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss 등 표준 정책
  • User token: Anonymous / UserName+Password / X.509 Certificate
  • Subscription: 게이트웨이는 polling 방식 (timecycle 주기) — UA 의 MonitoredItem 구독 미사용

등록 폼 입력값

입력 칸무엇을 적나요예시
IP 주소OPC-UA 서버 PC 의 IP192.168.0.40
포트OPC-UA 서버 포트49320 (Kepware 기본) / 4840 (표준)
사용자 (User)OPC-UA 서버에 등록된 사용자 IDkopens (서버에 따라 다름)
비밀번호그 사용자의 비밀번호***
서버 이름 (servername)엔드포인트 끝의 서버 이름(Kepware 면 비워두기)
Discovery 사용서버의 엔드포인트를 자동 검색할지보통 false. 안 되면 true 시도
Subscription 사용 (subscription-enabled)polling 대신 server-push 모드체크 시 true (대용량 태그 효율적)
Publishing (publishing-interval)서버가 데이터 변경을 publish 하는 간격 (ms)1000 (기본)
Sampling (sampling-interval)서버가 값을 샘플링하는 간격 (ms)1000 (기본)
Queue Size (queue-size)변경값 누적 큐 크기 (notification 손실 방지)10 (기본)

사용자 / 비밀번호 칸을 둘 다 비워두면 익명(Anonymous) 으로 접속을 시도합니다. 서버에서 익명 접속이 허용되어 있어야 합니다.


태그의 PLC 주소 표기

OPC-UA 의 태그 주소는 보통 NodeId 라고 부르는 다음 형식입니다.

표기설명
ns=2;s=Channel1.Device1.Tag1namespace 2, 문자열 식별자 — Kepware 에서 가장 흔함
ns=2;i=1234namespace 2, 숫자 식별자
ns=3;g=09087e75-8e5e-499b-954f-f2a8624db28aGUID 형
  • ns= 는 namespace 번호. 보통 2.
  • s= 다음에 “Channel.Device.Tag” 식의 경로가 들어갑니다 (Kepware 에서 만든 경로 그대로).

NodeId 를 어떻게 알아내나요

  1. PLC 제조사 / Kepware 제조사 매뉴얼 에 매핑표가 있는 경우가 많습니다.
  2. UA Expert 같은 무료 OPC-UA 클라이언트로 직접 연결해 트리에서 노드를 우클릭하면 NodeId 를 복사할 수 있습니다.
  3. Kepware 자체의 OPC Quick Client 도구로도 같은 일을 할 수 있습니다.

Kepware 빠른 설정

자주 쓰는 조합인 Kepware 기준 절차입니다.

  1. Kepware Server → Project → 채널 추가 (예: Simulator)
  2. 디바이스 추가 (예: Simulator) → 모델 = 16 Bit Device
  3. 태그 추가 → 이름 Sine1, type Float, scan rate 100ms
  4. Project Properties → OPC UA → Server Endpoint 에서 포트 49320 활성화
  5. 익명 또는 사용자 계정 활성화

이 게이트웨이의 등록 폼에:

IPKepware 서버 PC 의 IP
포트49320
사용자/비번위에서 만든 계정 (익명이면 비움)
태그 PLC 주소ns=2;s=Simulator.Simulator.Sine1

흔한 문제와 해결

증상 / 메시지가능한 원인해결
“Connection refused” / 연결 안 됨OPC-UA 서버가 꺼져 있거나 포트 차단OPC-UA 서버가 가동 중인지, IP/포트가 맞는지 확인
“User access denied”사용자/비번 오류, 또는 서버에서 익명 접속 비허용서버에서 사용자 등록하거나 익명 허용
“Security checks failed”서버의 보안 정책 미스매치서버 보안 정책을 “None” 또는 “Basic256Sha256” 으로 맞춤
연결은 되는데 값이 항상 0 또는 null태그 NodeId 오타, namespace 번호 다름UA Expert 등으로 같은 NodeId 가 실제로 동작하는지 검증
끊겼다 붙었다 반복네트워크 불안정, 또는 서버 PC 부하서버 PC 자원 / 케이블 / 스위치 점검

자주 쓰는 데이터 형식

PLC 의 값데이터 형식형식 보조PLC 주소 예
켜짐/꺼짐Boolean(비움)ns=2;s=Pump.Status
정수Integer(비움)ns=2;s=Counter
큰 정수Long(비움)ns=2;s=Total
실수 (32-bit)Float(비움)ns=2;s=Pressure
실수 (64-bit, 정밀)Double(비움)ns=2;s=PrecisionTemp
문자열String(비움)ns=2;s=Recipe.Name

OPC-UA 의 경우 format 칸은 보통 비워둡니다 (서버가 데이터 타입을 알려줍니다).


더 자세한 예제 / 자동화 등록

스크립트 / API 로 자동 등록하시려면 고급 — REST API 페이지의 OPC-UA 예제를 참고하세요.