OPC UA 로컬 검색 서버(LDS)로 효율적인 서버 등록 및 클라이언트 연결하기
검색 서버를 사용하면 OPC UA 클라이언트가 단일 지점에서 하나 이상의 OPC UA 서버에 대한 세부 정보를 얻을 수 있습니다.
OPC UA 검색 서버에는 두 가지 유형이 있습니다:
- 로컬 검색 서버 (LDS)
- 글로벌 검색 서버 (GDS)
이 문서에서는 OPC UA 서버를 LDS에 등록하는 방법과 OPC UA 클라이언트가 해당 LDS를 사용하여 OPC UA 서버에 연결하는 방법을 보여줍니다.
소개
이름에서 알 수 있듯이 로컬 검색 서버(LDS)는 하나 이상의 OPC UA 서버와 같은 장치에서 실행될 수 있습니다. 예를 들어, PLCnext Control 장치에 PLCnext 런타임에 포함된 OPC UA 서버와 함께 하나 이상의 OPC UA 서버를 설치할 수 있습니다. 해당 PLCnext Control 장치에 LDS도 설치되어 있다면, 그 장치의 모든 OPC UA 서버가 LDS에 등록할 수 있습니다. 그러면 원격 OPC UA 클라이언트가 해당 PLCnext Control 장치에서 실행 중인 모든 OPC UA 서버의 세부 정보를 LDS에 쿼리하고, 해당 세부 정보를 사용하여 해당 OPC UA 서버 중 하나 이상에 직접 연결할 수 있습니다.
다소 혼란스럽게도, OPC UA 서버가 원격 머신에서 실행 중인 LDS에 등록하는 것도 가능합니다. 이렇게 하면 단일 LDS를 사용하여 OPC UA 클라이언트가 전체 네트워크의 장치에서 실행 중인 모든 OPC UA 서버를 검색할 수 있습니다.
OPC UA 검색 서버에 대한 좋은 소개는 Unified Automation의 이 문서에 있습니다:
https://documentation.unified-automation.com/uasdkdotnet/2.5.2/html/L2UaDiscoveryConnect.html
배경
이 문서의 단계를 따르기 전에 다음을 이해해야 합니다:
- 기본 OPC UA 서버 구성
- PLCnext Control 장치의 OPC UA 서버에 클라이언트 연결 방법
- PLCnext Control 장치에서 보안 인증서 저장 및 관리 방법
절차
이 예제의 네트워크 설정은 다음과 같습니다:
OPC UA 서버: AXC F 2152 FW 2020.6.1 IP 주소: 192.168.1.10 DNS 이름: axc-f-2152-1
로컬 검색 서버: Windows 10 PC IP 주소: 192.168.1.42 DNS 이름: mypc.mycompany.com
OPC UA 클라이언트: Debian 10 PC IP 주소: 192.168.1.3
이 IP 주소와 DNS 이름은 이 문서 전체에서 사용되지만, 당연히 자신의 애플리케이션에 맞게 수정해야 합니다.
DNS 이름 설정
네트워크에 DNS 서버가 포함되어 있지 않다면 각 장치의 hosts 파일을 편집하세요.
hosts 파일은 다음 디렉토리에 있습니다:
- Windows:
C:\Windows\System32\drivers\etc\
- Linux:
/etc/
다음 새 DNS 항목을 추가하세요 (자신의 애플리케이션에 맞게 IP 주소와 DNS 이름 대체):
PLC에 LDS 추가:
192.168.1.42 mypc.mycompany.com
LDS 머신에 PLC 추가:
192.168.1.10 axc-f-2152-1
OPC UA 클라이언트 머신에 LDS와 PLC 모두 추가:
192.168.1.42 mypc.mycompany.com
192.168.1.10 axc-f-2152-1
각 장치에서 설정한 DNS 이름을 핑하여(IP 주소가 아닌) 모든 항목이 올바른지 확인하세요.
로컬 검색 서버 설치
OPC 재단은 Windows 기반 실행 파일 형태의 로컬 검색 서버를 제공합니다. 등록 후 이 페이지에서 무료로 다운로드할 수 있습니다:
https://opcfoundation.org/developer-tools/samples-and-tools-unified-architecture/local-discovery-server-lds/
이 LDS를 Windows 머신에 다운로드하여 설치하세요.
OPC UA 클라이언트 설치
이 예제에서는 Unified Automation의 UaExpert를 사용합니다:
https://www.unified-automation.com/products/development-tools/uaexpert.html
OPC UA 클라이언트 머신에 UaExpert를 다운로드하여 설치하세요.
인증서 위치 확인
다양한 OPC UA 구성 요소(서버, 클라이언트, LDS)는 안전한 통신을 보장하기 위해 서로를 신뢰해야 합니다. 신뢰는 공개 인증서를 교환함으로써 달성됩니다. 즉, 각 구성 요소의 공개 인증서를 이를 신뢰해야 하는 구성 요소의 '신뢰 저장소'에 넣는 것입니다.
각 구성 요소의 공개 인증서는 다음과 같이 찾을 수 있습니다:
OPC UA 서버
기본적으로 장치 인증서는 'OPC UA-self-signed' Identity Store에서 찾을 수 있습니다. 자체 인증서를 사용하는 경우 다를 수 있습니다.
OPC UA 서버 인증서는 PLC의 웹 기반 관리 페이지에서 다운로드할 수 있습니다. 다른 구성 요소에서 사용하려면 인증서를 PEM 형식에서 DER 형식으로 변환해야 합니다. 이 변환에 사용할 수 있는 무료 도구가 많이 있으며, openssl 리눅스 명령줄 도구도 포함됩니다. 사용할 수 있는 bash 명령어 예시는 다음과 같습니다:
openssl x509 -outform der -in OPC\ UA-self-signed_certificate.crt -out uaserver.der
LDS 서버
기본적으로 LDS 인증서는 여기에 있습니다:
C:\ProgramData\OPC Foundation\UA\pki\own\certs\ualdscert.der
OPC UA 클라이언트
- UaExpert에서 설정 -> 인증서 관리 메뉴 항목을 선택하세요.
- '애플리케이션 인증서 복사...' 버튼을 클릭하세요.
- 인증서를 편리한 곳에 저장하세요.
신뢰 저장소에 인증서 복사
각 인증서(.der 형식)를 다른 두 구성 요소의 신뢰 저장소에 복사하세요.
각 구성 요소의 신뢰 저장소는 다음과 같이 찾을 수 있습니다:
OPC UA 서버 (PLC)
신뢰 저장소는 /opt/plcnext/Security/TrustStores/Empty/trusted 폴더입니다.
LDS
신뢰 저장소는 C:\ProgramData\OPC Foundation\UA\pki\trusted\certs 폴더입니다.
OPC UA 클라이언트 (UaExpert)
- UaExpert에서 설정 -> 인증서 관리 메뉴 항목을 선택하세요.
- '인증서 위치 열기' 버튼을 클릭하세요. 이것이 UaExpert의 신뢰 저장소입니다.
모든 방화벽 확인
최소한 LDS 서버의 방화벽이 포트 4840에서 트래픽을 허용하는지 확인하세요.
PLCnext Engineer에서 OPC UA 서버 구성
PLCnext Engineer의 OPC UA 구성 창에서:
- 다음을 확인하세요:
- DNS 이름이 앞서 구성한 것과 동일한지
- "변수 가시성"이 "None"이 아닌지
- 검색 등록 활성화
- 서버 URL을
opc.tcp://mypc.mycompany.com:4840로 설정 (자신의 LDS 머신 DNS 이름으로 대체)
PLCnext Engineer 프로젝트를 PLC에 작성합니다.
PLC는 이제 자동으로 OPC UA 서버를 LDS에 등록하려고 시도합니다.
OPC UA 서버 검색 및 연결
- UaExpert에서 툴바의 + (더하기) 버튼을 클릭하세요.
- 트리 뷰의 '로컬' 분기를 마우스 오른쪽 버튼으로 클릭하고 '검색 URL 편집'을 선택하세요.
- 텍스트 상자에
opc.tcp://mypc.mycompany.com:4840을 입력하고(자신의 LDS 머신 DNS 이름으로 대체) 확인을 클릭하세요.
OPC UA 서버가 트리의 로컬 분기에 나타나야 합니다. 이제 이 세부 정보를 사용하여 평소 방식으로 OPC UA 서버에 연결할 수 있습니다.
문제 해결
- LDS 로그 파일은 여기에 있습니다:
C:\ProgramData\OPC Foundation\UA\Discovery\opcualds.log. C:\ProgramData\OPC Foundation\UA\Discovery\ualds.ini 파일에서 LogLevel(및 기타 많은 매개변수)을 변경할 수 있습니다. LogLevel = debug는 가장 자세한 로깅 정보를 제공합니다. LDS 설정을 변경한 후 Windows '서비스' 콘솔을 통해 LDS를 재시작해야 할 수 있습니다. LDS의 표시 이름은 'OPC UA Local Discovery Server'입니다.
- LDS가 OPC UA 서버의 URL을 DNS 이름에
.local.을 붙여 반환할 수 있습니다. 이 DNS 이름은 멀티캐스트 mDNS 서버로 해결 가능해야 합니다. .local. 접미사가 있는 DNS 이름을 해결할 수 없으면 UaExpert 로그 창에 URL이 포함된 오류 메시지가 나타납니다. .local. 접미사가 있는 DNS 이름을 해결하기 위해 멀티캐스트 DNS 서버를 설치하고 구성하는 방법은 이 튜토리얼의 범위를 벗어납니다.
결론
네트워크에 OPC UA 서버가 하나만 있는 경우 LDS 사용의 이점은 크지 않습니다. 하지만 수많은 OPC UA 서버가 포함된 네트워크의 경우, LDS는 해당 서버들을 탐색하고 연결하는 편리한 방법을 제공합니다.