Posting

Machbase의 최신 소식을 지금 만나보세요

Edge Master에 OPC UA 데이터를 입력하기

개요

PLC는 업체 및 모델별로 다른 통신 프로토콜을 가지고 있다. 이 PLC들로 부터 data를 받거나 제어를 하려면 해당 통신 프로토콜을 사용해서 제어를 해야 한다. 그런데 여러 종류의 PLC를 사용하는 경우 각각의 통신 프로토콜을 사용해서 통신을 해야하는 경우가 생기게 된다. 이런 이유 때문에 표준 통신 프로토콜을 사용하게 되었고 그 중에 가장 유명한 것이 OPC UA 프로토콜이다. 이 OPC UA 프로토콜을 사용해서 Edge Master로 data를 읽어오는 것을 설명해 보도록 하겠다.

OPC-UA 소개

OPC의 등장

OPC협회는 1996년에 PLC 특정 프로토콜(Modbus, Profibus 등)을 추상화해 HMI/SCADA와 상호작용할 수 있도록 표준 인터페이스(OPC)를 발표하였다. OPC는 Microsoft사의 OLE 기술을 기반으로 개발되었고, OLE for Process Control의 약자이다. 발표 후 OPC는 제조 분야는 물론 건물 자동화, 에너지, 유틸리티 등 여러 산업에 광범위하게 채택되었다.

하지만 OLE 기술에 기반한 OPC는 초기에 Windows OS에 제한되었고, 보안 설정의 어려움과 성능의 문제로 확산에 어려움이 있었다. 아직 제조현장의 대부분이 PLC인 상황에서 OPC를 지원하는 PLC는 거의 없었으며, 기존 PLC와 OPC 통신을 구축하기 위해 별도의 미들웨어를 구축해야 하는 비용부담도 가지게 되었다.

OPC Server란

OPC 서버는 산업용 자동화 및 loT를 위한 연결 플랫폼으로 제조업에서 일반적 널리 사용되는 약150개 이상의 드라이버를 제공하는 소프트 웨어이다.

  1. 산업제어시스템 고유의 통신 요구사항에 맞추었으며
  2. 장비를 자동으로 연결하고,
  3. 장비의 데이타를 읽고 쓸 수 있으며,
  4. 해당 데이터를 HMI, SCADA, MES, Historion 또는 ERP 시스템에 완벽하게 통합할 수 있고,
  5. 높은 신뢰성과 사용자 편의성으로 신속하게 설치하여 완벽하게 작동할 수 있도록 한다.

새로운 OPC UA

2006년 협회는 기존 OPC의 문제를 개선하고, 시스템에 독립적인 OPC UA(Unified Architecture) version 1.0을 발표한다. 가장 큰 변화는 Microsoft에 종속적인 기술(OLE)에서 벗어나 표준기술을 적용한 것이다. 이로써 소프트웨어 측면에서 독립성만이 아니라 하드웨어에 대해서도 독립적인 플랫폼을 구성할 수 있게 되었다.

이제 많은 자동화 제조사들이 자사의 PLC에 OPC UA를 기본적으로 지원하고 있다. 사용자는 PLC와 통신을 위해 별도의 미들웨어를 구성하지 않아도 되며, PLC에 종속적인 기술로 네트워크를 구성하지 않아도 되게 되었다.

OPC UA의 구조

기본적으로 Client, Server 구조를 가진다. 센서 및 제어기 같은 정보 제공자가 Server의 역할을 하고, 측정 시스템이나 HMI/SCADA 시스템과 같은 정보 소비자가 Client 역할을 한다.

OPC-UA Simulator

OPC UA Client(Taglet)가 OPC UA Server에서 데이터를 받아오려고 한다면 OPC UA Server의 데이터 구성이 어떻게 이루어 졌는지 알아야 한다.

PLC와 같은 장비가 없이 OPC UA Server를 접하기는 어렵지만 이것을 해결해 줄 수 있는 OPC UA Simulation Server가 있다.

Prosys OPC UA Simulation Server : Download Page

Prosys OPC UA Simulation Server 실행

Prosys OPC UA Simulation Server를 실행하면 Status 탭에서 Connection address를 확인할 수 있다. Edge Master OPCUA-CLIENT Taglet은 TCP 주소를 사용한다.

Simulation main

Simulation탭에서 Simulation할 데이터를 설정한다. 각 Node 별로 발생시킬 Signal의 파라미터를 설정한다.

Simulation tab

Simulation을 실행하면 Address Space에서 Node의 구성을 확인할 수 있다.

Address Space tab

OPC UA Server의 Address Space을 통해 클라이언트 응용 프로그램은 Server에 대한 사전 지식이 없이도 모든 관련 데이터를 찾을 수 있다.

OPC UA 클라이언트 응용 프로그램은 노드 식별자 (NodeId)를 사용하여 OPC UA 서버의 데이터를 식별한다.(우측 창의 Attribute에서 NodeId를 확인할 수 있다.)
NodeId는 서버의 모든 정보(객체, 변수 또는 다양한 유형일 수있는 노드)를 고유하게 식별하는 데 사용된다.

Address Space의 구성

Address Space에는 OPC UA 폴더로 제공되는 세 가지 주요 부분이 있다.

  • Objects
  • Types
  • Views

Objects

  • Server Object는 Server에 대한 상태 및 기능 정보를 제공하는 standard Object 이다.
  • MyObjects 폴더에는 5 개의 구성 요소로 간단한 장치를 시뮬레이션하는 샘플 Object 인 MyDevice가 있다.
    • MyEnumObject는 MyEnumType이라는 custom enumeration data type을 사용하는 enumeration value를 포함한 간단한 변수다.
    • MyLevel은 시뮬레이션 레벨 측정을위한 변수 (DataType = Double)이다.
    • MyLevelAlarm은 MyLevel에 해당하는 경보 객체이다. MyLevel의 값이 경보 객체에 정의 된 경보 한계를 초과하면 서버에서 새 이벤트가 전송된다.
    • MyMethod는 클라이언트 응용 프로그램에서 호출 할 수있는 샘플 방법이다.
    • MySwitch는 켜고 끌 수있는 간단한 스위치 변수 (DataType = Boolean)이다.
  • StaticData 폴더에는 다양한 데이터 유형의 변수가 포함된다.
  • Simulation 에는 기본 사용자 구성 객체(default user configured objects) 및 변수가 포함된다. 이 폴더의 내용은 Simulation View 에서 수정할 수 있다.

Types

Types 폴더에서 찾을 수 있으며, 다음의 Type들이 포함된다.

  • DataTypes는 서버 주소 공간에서 사용되는 모든 데이터 type을 정의한다.
  • EventTypes는 서버 주소 공간에 나타나는 모든 이벤트를 정의한다.
  • ObjectType에는 서버 주소 공간의 모든 Objects에 대한 type 정의가 포함된다.
  • ReferenceTypes는 노드 사이에 나타나는 모든 참조 type을 정의한다.
  • VariableTypes는 서버 주소 공간의 모든 변수에 대한 type 정의를 포함한다.

Views

Prosys OPC UA Simulation Server는 Views의 정보는 제공하지 않는다.

OPC-UA Taglet 등록

EdgeMaster의 설치와 Edge 등록에 관한 내용은 이전 글인 ‘EdgeMaster와 Raspberry pi 4를 이용해서 온습도 감시 시스템을 구축해 보자‘를 참조하기 바란다.

먼저 EdgeList에서 Edge를 선택한 다음 Taglet List 우측에 있는 [+] 버튼을 누른다. (이전 글의 온습도 Taglet 추가하는 것과 같다.)

이어 나타나는 Taglet Information 설정화면에서 OPCUA-CLIENT를 선택한다.

OPC UA Taglet을 위한 정보를 입력한다.

add Taglet

입력항목은 아래와 같다.

항목내용비고
Connection AddressOPC UA Server에 접속하기 위한 주소이다.
Simuation Server는 Status 탭에서 확인할 수 있다.
위의 그림처럼 IP를 사용해도 된다.
UA TCP를 사용한다.
NodeIDs읽어올 NodeID들을 입력한다.
복수의 NodeID를 사용하는 경우 Seperator에 입력한 값으로 구분하면 된다.
Seperator 기본값 : ,
root node를 사용할 경우 root NodeID만 입력한다.
use root node입력한 NodeID 하부의 모든 node를 읽는다. 
use subscriptionsubscription 기능을 사용한다.(값이 변경되는 경우 변경된 값을 보내준다.) 
read periodnode에서 값을 읽어오는 주기를 second 단위로 입력한다. 
use time adjustment0초에서 시작하는 시간에 data를 읽어오도록 한다.

예를 들어 5초 주기로 설정이 되었다면 0, 5, 10, 15초의 시간에 data를 읽는다.
체크되지 않았다면 Taglet이 시작하는 시간부터 읽기를 시작한다.
 
Security ModeOPCUA의 보안모드에 관한 설정인데 이 부분은 나중에 따로 글을 하나 쓰겠다. None, Sign, SignAndEncrypt

Taglet을 선택할 때 use All Tag 항목을 체크했다면 별도로 사용할 Tag를 등록할 필요가 없다.

add Tag

하지만 이 경우 오류처리를 할 수가 없다. 값 입력시 한계값을 체크해서 오류 처리를 하려면 use All Tag 항목을 체크하지 않고 아래와 같이 모든 Tag를 등록해 주어야 한다.

add Tag

등록을 완료하고 Home으로 돌아오면 아래와 같이 data가 수집되고 있는 것을 확인할 수 있다.

Home

Home화면에서 특정 Edge의 우상단에 있는 Edge chart 아이콘을 클릭하면 Edge에 저장되고 있는 값들을 실시간 chart로 확인할 수 있다.

chart

마무리

최근에 출시되고 있는 대부분의 PLC는 OPC UA를 지원한다. 이런 경우 OPC UA Taglet을 사용한다면 PLC의 종류를 불문하고 data를 읽어올 수 있다.

따라서 PLC에서 data를 수집하고자 할 때, 그 PLC가 OPC UA를 지원한다면 Edge Master에서 data를 읽어올 수 있다고 생각하면 된다.

참고로 위에서 설명한 대로 만든 시스템에서 수집된 data를 활용해서 Edge Master에서 Dashboard를 구성해보면 아래와 같이 나타난다.

Dashboard

연관 포스트

C언어로 Binary data를 Machbase에 넣기

1.개요 Data를 다루다 보면 numeric, varchar 형 데이터뿐만 아니라 JPG, PNG, MP3와 같은 Binary data도 database에 저장해야 할 때가 존재한다. 그러나 일반 data들과는 달리 Binary

[MACHBASE 연동] Android studio에서 JDBC 연결하기

마크베이스 기술지원본부 이현민 1. 개요 수많은 데이터들이 많은 환경에서 생성되고 있는 오늘날, 우리 현대인들의 동반자인 스마트폰 또한 데이터생성의 주체로써 또는 전달자로서 알게 모르게 그 구실을