산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

PLCnext Control에서 OPC UA 클라이언트 구성 단계별 가이드

펌웨어 버전 2023.0에는 오랫동안 기다려온 OPC UA 클라이언트 구성 요소가 포함되어 있습니다. PLCnext Info Center에는 이 기능에 대한 좋은 기술 참조가 있습니다.

이 튜토리얼은 PLCnext Control 장치에서 OPC UA 클라이언트를 구성해 OPC UA 서버와 데이터를 교환하는 방법을 단계별로 보여줍니다.

필요한 것:

OPC UA 통신 구성 시 기억해야 할 핵심 사항 중 하나는 보안상의 이유로 OPC UA 클라이언트와 OPC UA 서버가 서로를 신뢰해야 한다는 것입니다. 따라서 클라이언트와 서버 장치 간에 보안 인증서가 교환되어야 합니다. 이 절차는 클라이언트 장치와 서버 장치 사이를 오가야 하므로 다소 혼란스러울 수 있습니다. 보안 검사를 비활성화하지 않고 절차를 단순화하는 제안이 있으면 댓글로 자유롭게 추가해 주세요.

절차

OPC UA 서버 장치

  1. PLC의 IP 주소로 브라우징해 웹 기반 관리(WBM) 사이트를 엽니다.

  2. 구성 메뉴에서 System Services 항목을 선택합니다.

  3. 이미 활성화되어 있지 않다면 OPC UA Server 서비스를 활성화합니다.

  4. 필요한 경우 Apply and reboot 버튼을 누릅니다.

  5. PLCnext Engineer를 엽니다.

  6. PLCnext Control 장치용 템플릿을 사용해 새 PLCnext Engineer 프로젝트를 생성합니다.

  7. PLCnext Engineer 프로젝트에서 PLC의 IP 주소를 설정합니다.

  8. OPC UA Server 구성 페이지에서:

    • DNS name / IP address를 클라이언트가 서버에 접근할 때 사용할 DNS 이름이나 서버의 IP 주소로 설정합니다. 이 정보는 OPC UA 서버 보안 인증서에 포함됩니다. 많은 OPC UA 클라이언트는 인증서의 이 정보가 서버 URL과 일치하지 않으면 서버 인증서를 거부합니다.

    • Visibility of variables를 Marked로 설정합니다. 이는 OPC 속성으로 표시된 모든 변수가 OPC UA 서버를 통해 접근 가능함을 의미합니다.

  9. OPC UA 서버가 노출할 변수를 생성합니다. 해당 변수에 OPC 체크박스가 체크되어 있는지 확인하세요. 아래 예제에서는 Main 프로그램에 두 개의 변수가 생성되었습니다.

  10. 새 Input 값 수신 시 Output 변수가 변경되도록 로직을 추가합니다. 이 예제에서 Main 프로그램은 다음 코드를 실행합니다:

    Server_Data_Out := Server_Data_In + 1;

  11. 프로젝트를 작성하고 시작합니다.

    참고: PLCnext Engineer 버전 2025.0 이상에는 OPC UA 클라이언트에서 변수 항목을 생성하는 데 사용할 수 있는 "browse" 기능이 포함되어 있습니다. 이 탐색 기능을 사용하면 UaExpert를 사용해 서버 변수 정보를 얻을 필요가 없으며, 다음 세 단계를 건너뛸 수 있습니다.

  12. UaExpert를 사용해 PLC 사용자명과 암호로 OPC UA 서버에 연결합니다. 인증서가 "Untrusted"라는 경고가 표시되지만 다른 경고는 없어야 합니다.

  13. 서버 인증서를 영구적으로 또는 이번 세션만 신뢰합니다.

  14. 각 서버 변수에 대해 Node ID 이름과 Namespace를 기록합니다.

  15. 서버 PLC의 WBM 사이트를 다시 엽니다.

  16. 보안 메뉴에서 Certificate Authentication 항목을 선택합니다.

  17. Identity Stores 탭을 선택합니다.

  18. OPC UA-self-signed [서버] Identity Store에서 인증서를 다운로드합니다. 키 쌍은 다운로드할 필요가 없습니다.

OPC UA 클라이언트 장치

  1. PLC의 IP 주소로 브라우징해 웹 기반 관리(WBM) 사이트를 엽니다.

  2. 구성 메뉴에서 System Services 항목을 선택합니다.

  3. 이미 활성화되어 있지 않다면 OPC UA Client 서비스를 활성화합니다.

  4. 필요한 경우 Apply and reboot 버튼을 누릅니다.

  5. 재부팅 완료 후 WBM 사이트에 다시 로그인하고 보안 메뉴에서 Certificate Authentication 항목을 선택합니다.

  6. Trust Stores 탭을 선택합니다.

  7. 앞서 다운로드한 OPC UA-self-signed [서버] 인증서를 OPC UA Client라는 Trust Store에 추가합니다. 이제 OPC UA 클라이언트는 OPC UA 서버가 신원을 확인하는 데 사용하는 보안 인증서를 신뢰합니다. 이 단계는 서버 인증서가 변경될 때마다 반복해야 합니다.

  8. Identity Stores 탭을 선택합니다.

  9. OPC UA Client self-signed Identity Store에서 인증서를 다운로드합니다. 키 쌍은 다운로드할 필요가 없습니다.

OPC UA 서버 장치

  1. PLC의 IP 주소로 브라우징해 웹 기반 관리(WBM) 사이트를 엽니다.

  2. 보안 메뉴에서 Certificate Authentication 항목을 선택합니다.

  3. Trust Stores 탭을 선택합니다.

  4. 앞서 다운로드한 OPC UA Client self-signed 인증서를 OPC UA-configurable이라는 Trust Store에 추가합니다. 이제 OPC UA 서버는 OPC UA 클라이언트가 신원을 확인하는 데 사용하는 보안 인증서를 신뢰합니다. 이 단계는 클라이언트 인증서가 변경될 때마다 반복해야 합니다.

OPC UA 클라이언트 장치

  1. PLCnext Engineer를 엽니다.

  2. PLCnext Control 장치용 템플릿을 사용해 새 PLCnext Engineer 프로젝트를 생성합니다. OPC UA 클라이언트와 서버에 같은 장치를 사용하는 경우 같은 PLCnext Engineer 프로젝트가 사용됩니다.

  3. PLCnext Engineer 프로젝트에서 PLC의 IP 주소를 설정합니다.

  4. 펌웨어 버전 2023.6 이전 PLC만 해당: OPC UA Server 구성 페이지에서 Visibility of variables를 Marked로 설정합니다. OPC UA 클라이언트를 위해 이 OPC UA 서버 설정이 필요해 이상해 보이지만, 펌웨어 버전 2023.6 이상에서 수정되었습니다.

  5. OPC UA 서버의 변수와 연결될 변수를 생성합니다. 펌웨어 버전 2023.6 이전 PLC만 해당: 해당 변수에 OPC 체크박스가 체크되어 있는지 확인하세요(펌웨어 버전 2023.6 이상에서는 체크박스가 필요하지 않습니다).

    아래 예제에서는 Main 프로그램에 두 개의 변수가 생성되었습니다.

  6. OPC UA Client Connections 탭에서 아래와 같이 서버 1개와 변수 그룹 2개를 추가합니다.

    서버 URL, 사용자명, 암호는 사용하는 OPC UA 서버에 맞게 변경해야 합니다.

  7. "Subscribe" 변수 그룹에 아래와 같이 변수 매핑 1개를 추가합니다.

    이렇게 하면 원격 변수( OPC UA 서버 상)의 값이 PLCnext Engineer 프로젝트의 로컬 변수로 자동 전송됩니다.

  8. "Write" 변수 그룹에 아래와 같이 변수 매핑 1개를 추가합니다.

    이렇게 하면 PLCnext Engineer 프로젝트의 로컬 변수 값이 원격 변수( OPC UA 서버 상)로 자동 전송됩니다.

  9. PLCnext Engineer 프로젝트를 작성하고 시작합니다.

  10. 디버그 모드에서 변수 Client_Data_out의 값을 변경합니다. 이 값은 OPC UA 서버의 변수 Server_Data_In에 기록됩니다. 서버에서 이 값이 증가해 변수 Server_Data_Out에 기록됩니다. 해당 변수 값이 클라이언트의 변수 Client_Data_In로 전송됩니다.

작동하지 않나요?

PLCnext Info Center(페이지 하단)의 Troubleshooting Guide를 확인하세요.

자주 묻는 질문

Q: 클라이언트가 인증서/키 인증을 사용해 OPC UA 서버에 연결할 수 있나요?

A: 현재는 불가능합니다.

Q: OPC UA 클라이언트는 서버 암호를 어떻게 저장하나요?

A: 현재 OPC UA 서버 암호는 클라이언트 구성 파일에 평문으로 저장되지만, PLCnext Runtime 개발자들이 더 안전한 암호 저장 방법을 개발 중입니다.

Q: OPC UA 서버에서 읽은 데이터에 대한 품질 정보(예: 상태 코드, 타임스탬프)를 얻을 수 있나요?

A: 현재는 불가능합니다. 죄송합니다.

이 기사는 2025.03.24에 업데이트되어 PLCnext Engineer에서 이제 사용 가능한 Server Browse 기능에 대한 정보를 포함합니다.

부록: 파일 기반 구성

PLCnext Engineer의 OPC UA 클라이언트 구성은 컨트롤러에서 XML 형식으로 저장됩니다. PLCnext Engineer를 사용하지 않는 애플리케이션의 경우 컨트롤러에서 XML 구성을 직접 작성해 OPC UA 클라이언트를 구성할 수 있습니다.

이 예제에서 준비된 구성은 다음 XML 파일로 표현됩니다:

  1. 기본 OPC UA 클라이언트 설정에 필요한 변경 사항은 파일 /opt/plcnext/projects/current/Services/OpcUA/Modules/Client/client.module.config에 정의됩니다:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?> <OpcUAClientModuleConfigurationDocument schemaVersion="1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig"> <Application> <CertificateStore> <SelfSignedIdentityStoreName>OPC UA Client self-signed</SelfSignedIdentityStoreName> <GivenIdentityStoreName>OPC UA Client</GivenIdentityStoreName> <TrustStoreName>OPC UA Client</TrustStoreName> </CertificateStore> <SessionSecurity> <ApplicationAuthentication>false</ApplicationAuthentication> <ApplicationUriCheck>true</ApplicationUriCheck> <CertificateHostnameCheck>true</CertificateHostnameCheck> <CertificateTimeCheck>true</CertificateTimeCheck> <CertificateIssuerTimeCheck>true</CertificateIssuerTimeCheck> <PasswordEncryptionCheck>true</PasswordEncryptionCheck> </SessionSecurity> <Timeouts> <SessionTimeout>1200000</SessionTimeout> <ConnectTimeout>5000</ConnectTimeout> <WatchdogTimeout>5000</WatchdogTimeout> <CallTimeout>10000</CallTimeout> </Timeouts> </Application> </OpcUAClientModuleConfigurationDocument> 
  2. OPC UA 클라이언트 연결은 파일 /opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/ clientconnections.xml에 정의됩니다:

    <?xml version="1.0" encoding="utf-8"?> <eUAClientConfigurationDocument xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:uax="https://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="https://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd"> <eUAClientConfiguration> <Name>ClientConnectionsConfiguration</Name> <NamespaceArray> <uax:String>https://phoenixcontact.com/OpcUA/PLCnext/GlobalDataSpace/</uax:String> </NamespaceArray> ServerConnections <eUAClientServerConnection> <EncodingMask>3</EncodingMask> <Endpoint> <uax:EndpointUrl>opc.tcp://192.168.1.10:4840</uax:EndpointUrl> <uax:SecurityMode>Sign_2</uax:SecurityMode> <uax:SecurityPolicyUri>https://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</uax:SecurityPolicyUri> </Endpoint> <UserTokenType>UserName_1</UserTokenType> <UserName>admin</UserName> <Password>xxxxxxxx</Password> </eUAClientServerConnection> </ServerConnections> <VariableGroups> <eUAClientVariableGroup> <GroupType>Write_1</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_Out</uax:Identifier> </LocalVariable> RemoteVariableDescriptor <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_In</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> <eUAClientVariableGroup> <GroupType>Subscribe_0</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_In</uax:Identifier> </LocalVariable> RemoteVariableDescriptor <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_Out</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> </VariableGroups> </eUAClientConfiguration> </eUAClientConfigurationDocument> 

    이 파일은 앞서 UaExpert로 기록한 Namespace와 Node ID 정보를 사용해 클라이언트가 접근할 서버 변수를 지정합니다.

  3. 위 파일에서 다음을 애플리케이션에 맞게 변경하세요:

    • 요소 uax:EndpointUrl에는 OPC UA 서버의 IP 주소(또는 DNS 이름)가 포함되어야 합니다.

    • Username과 Password 요소에는 OPC UA 서버에 필요한 자격 증명이 포함되어야 합니다.

    중요: 이 예제에서 UaExpert의 Node ID 문자열에 ns=6 텍스트가 포함되어 있었습니다. 위 XML 파일에서는 이것이 ns=1로 변경되었습니다. "namespace" 매개변수(ns)는 로컬 클라이언트의 네임스페이스 목록 인덱스이기 때문입니다. 이 예제에서 UaExpert에서 복사한 Namespace 이름이 우리 clientconfig.xml 파일의 네임스페이스 목록에서 첫 번째(유일한) 네임스페이스입니다.

OPC UA 클라이언트 구성 파일을 변경한 후 PLCnext Runtime을 재시작해야 합니다.

산업기술

  1. 판금 작업 안전 수칙 6대 필수: 절상·화상·분진 예방 가이드
  2. 유리 가공에 워터젯이 최고인 3가지 이유: 두께 자유·무버·초정밀
  3. 항공우주·방산 OEM 산업을 형성하는 4대 핵심 과제
  4. Sark 110 안테나 분석기: 전체 기능 가이드
  5. 퓨전 360으로 스티어링 휠 몰드 가공하기: 단계별 가이드
  6. 맞춤형 바지선 안정장치로 1500톤 크레인 지지, 멕시코만 교량 프로젝트
  7. 화이트칼라, 블루칼라, 뉴칼라: 기술이 주도하는 미국 노동시장의 변화
  8. 금속 에칭 이해: 전문가 가이드
  9. 혁신적 창문 코팅, 단열과 발전을 동시에
  10. 툴 선정과 파라미터 최적화: 가공 우수성의 초석