Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 15 Next »

OPC UA Taglet

OPC UA Taglet은 OPC UA Client 역할을 하며 OPC UA Server와 통신한다.

1) Taglet 등록

① taglet 등록 창에서 'OPCUA-CLIENT'을 선택한다

② Settings에서 아래의 값들을 입력한다.

항목설명비고
Connection Address

엔드포인트라고도 불리며 이 엔드포인트에는 클라이언트와 서버 간의 연결을 설정하는 데 필요한 모든 정보가 저장된다.

서버는 각각 다음을 포함하는 여러 엔드포인트를 제공한다.

  • 엔드 포인트 URL (프로토콜 및 네트워크 주소)
  • 보안 정책 (보안 알고리즘 세트 이름 및 키 길이)
  • 메시지 보안 모드 (교환 된 메시지에 대한 보안 수준)
  • 사용자 토큰 유형 (서버에서 지원하는 사용자 인증 유형)

NodeIDs

데이터를 읽어 오고자 하는 node의 ID를 입력한다.

  • 여러 node를 읽어올 때는 Separator 값(기본값 : ",")으로 각 node를 구분해 준다.
    예) ns=3;s=Counter,ns=3;s=Sawtooth,ns=3;s=Square
  • 여러 node들을 담고 있는 상위 node가 있다.
    상위 node를 root node라고 부르며 root node를 통해 하위 node 전부를 가져올 수 있다.

use root node상위 node를 입력하면 하위 node 전부를 가져올 수 있다.기본값 : , (comma)
Separator여러개의 node를 입력할 때 구분자를 설정할 수 있다.
use subscription

subscription 기능을 사용할 수 있다.

해당 subscription 기능을 사용하지 않으면 read 기능만 사용한다.


read period

read 기능을 수행하는 주기를 설정한다.

millisecond 단위이며 주기를 설정하지 않으면 subscription 기능만 수행한다.


use time adjustment

read 주기값을 활용하여 정확한 시간에 값을 읽는다.

예) read 주기값이 10s 이라면 00:00:10, 00:00:20, 00:00:30, 00:00:40 주기값 10의 배수가 되는 시점에서 read를 시작한다.


  • None : 보안 기능을 사용하지 않는다.
  • Sign : 모든 메시지는 서명되지만 암호화되지는 않는다.
  • SignAndEncrypt : 모든 메시지는 서명되고 암호화된다.

Security Policy

사용할 보안 알고리즘 선택

Basic128Rsa15, Basic256, Basic256Sha256, Aes128Sha256RsaOaep, Aes256Sha256RsaPss


인증 방식을 선택한다. 인증이 미리 안되어 있을 경우 인증을 진행할 수 있으며 Server에서 신뢰할 수 있는 기기 등록은 직접해야 한다.

  • None : 이미 Client와 Server와 인증이 완료된 상태이며 인증 시 사용한 인증서와 개인키로 보안연결을 한다.
  • UserName : Server의 고유 username과 password 이용해 식별하여 인증한다.
  • Certificate : Server의 인증서로 식별하여 인증한다.

Certificate인증서 텍스트를 입력한다.
개인키 인증서 텍스트를 입력한다.
user ID or passwordServer의 user 정보와 password 정보를 입력한다.

③ Tags에 저장할 tag를 입력한다. Settings에서 입력한 nodeID와 1:1 매칭이 되기 때문에 nodeID와 tag의 갯수가 같아야 한다. 

2) 사용시 주의사항

① machbase에 저장되는 시간 값은 OPC UA Server의 시간 값이다.

② rootNode를 사용할 경우 nodeID의 string 혹은 int 값이 tag name으로 사용된다.
     nodeID가 'ns=3;s=Sawtooth'라면 'Sawtooth'가 tag name으로 사용되고 tag 추가시 name 설정도 'Sawtooth'로 해주어야 한다.

③ 보안 연결 시 필요한 인증서와 개인키는 사용자가 소유하고 있어야 한다.

④ value의 경우 숫자형 데이터여야 한다. ( int, float )


Modbus Taglet

modbusTCP taglet은 modbus TCP /IP 연결을 지원하고 modbus client 역할을 하며 modbus server와 통신한다. 

1) Taglet 등록

① taglet 등록 창에서 'modbusTCP'을 선택한다.

② Settings에서 아래의 값들을 입력한다.

항목설명비고
IP & PortModbus server의 IP 주소와 Port 번호
server IDModbus server의 고유 아이디
Device NameModbus server의 장치 이름
readPeriod데이터를 읽어오는 주기(second)
timeoutModbus server와 연결 시도 제한 시간
ByteOrder바이트 배열 방법 (BIG Endian or LITTLE Endian)
use EMC time데이터 발생 시간을 Modbus register에 저장된 값으로 사용할 것인지 EMC의 시간을 사용할 것인지 선택한다.
Address데이터가 저장되어 있는 server의 주소
size입력한 주소에서부터 몇 개의 word(2byte) 혹은 몇 개의 bit를 가져올 것인지 입력
Function Code

값을 읽어오기위해 사용하는 Function Code 입력

예) 4개의 Function Code 지원
01 readCoils
02 readDiscreateInputs
03 readHoldingRegisters
04 readInputRegisters


value type데이터 type 선택
예) int16, uint16, int32, uint32, int64, uint64, float32, float64

③ Tags에 저장할 tag를 입력한다. Settings에서 입력한 modbus tag와 1:1 매칭이 되기 때문에 modbus tag와 tag의 갯수가 같아야 한다.

2) 사용시 주의사항

① modbus register에 저장된 시간값을 사용하는 경우 시간값의 type은 int64이고 nano timestamp로 저장되어야 한다.

MQTT Taglet

MQTT taglet은 MQTT Client 역할을 하며 MQTT broker 와 통신한다.

1) Taglet 등록

① taglet 등록 창에서 'modbusTCP'을 선택한다.

② Settings에서 아래의 값들을 입력한다.

항목설명비고
Broker Address

broker의 주소를 입력한다.

예) 보안 옵션 없이 통신 : tcp://192.168.0.1:1883
      보안 통신 : ssl://192.168.0.1:1883


Security

보안 옵션

  • Anonymous : 보안옵션을 사용하지 않음
  • User : broker에서 설정한 UserID와 password로 보안 접속
    • User ID
    • password
  • Certificate : broker에서 설정한 인증서 정보로 보안 접속
    • CaCert : CA 인증서 경로
    • Cert : 위의 CA로 만들어진 인증서 경로
    • Private Key : 위 인증서의 개인키 경로

Topic
  • MQTT topic 설정.
    • 2개의 data type 사용 가능
    • 2개의 wildcard 사용 가능
  • QoS설정 : 서비스의 질을 보장해주는 레벨 (0, 1, 2)
  • Tag Name or Json Value Name


use "#" wildcarduse "+" wildcarduse not wildcard
JSON
  • topic 설정 값이 /seoul/series/# 이고 발행되는 topic이 /seoul/series/sensor-1 일 때, 저장되는 tag name은 topic 설정시 입력한 tagName 유무에 따라 다르다.
    tagName 미입력 : _seoul_series_sensor-1
    tagName "S1" 입력 : S1_sensor-1
  • 값이 {"tagName" : "s1", "value" : 123} 일 때, "Json Value Name" 입력칸에 "${value}" 을 입력하여 해당 키의 값을 가져올 수 있다.
  • topic 설정 값이 /seoul/+/series 이고 발행되는 topic이 /seoul/seonsor-1/series 일 때, 저장되는 tag name은 "seonsor-1" 이다.
    "+" wildcard 에 들어오는 하나의 문자열이 tag name이 된다.
  • 값이 {"tagName" : "s1", "value" : 123} 일 때, "Json Value Name" 입력칸에 "${value}" 을 입력하여 해당 키의 값을 가져올
    수 있다.
  • topic 설정 값이 /seoul/sensor-1 이고 발행되는 topic이 /seoul/sensor-1 이고 설정한 tagName이 sensor1 일 때, tag name 은 sensor1 이다.
  • 값이 {"tagName" : "s1", "value" : 123} 일 때, "Json Value Name" 입력칸에 "${value}" 을 입력하여 해당 키의 값을 가져올 수 있다.
    "tagName" 입력칸에 "${tagName}" 을 입력하여 해당 키의 값을 tag name으로 사용할 수 있다.
raw
  • topic 설정 값이 /seoul/series/# 이고 발행되는 topic이 /seoul/series/sensor-1 일 때, 저장되는 tag name은 topic 설정시 입력한 tagName 유무에 따라 다르다.
    tagName 미입력 : _seoul_series_sensor-1
    tagName "S1" 입력 : S1_sensor-1
  • topic 설정 값이 /seoul/+/series 이고 발행되는 topic이 /seoul/seonsor-1/series 일 때, 저장되는 tag name은 "seonsor-1" 이다.
    "+" wildcard 에 들어오는 하나의 문자열이 tag name이 된다.
  • topic 설정 값이 /seoul/sensor-1 이고 발행되는 topic이 /seoul/sensor-1 이고 설정한 tagName이 sensor1 일 때, tag name 은 sensor1 이다.

③ ALL TAG 선택 시 MQTT 설정탭에서 설정한 또는 설정된 tag name을 사용한다.

④ Warning 또는 Error Range 사용 시 MQTT 설정탭에서 설정한 또는 설정된 tag name을 Tags 탭에 설정해줘야 한다.

2) 사용시 주의사항

① Subscribe 기능만 제공한다.

RestAPI Taglet

RestAPI는 Taglet을 사용하지 않고 EMC에 API를 이용하여 Data를 전송하여 Machbase에 저장하는 방법이다.

1) Taglet 등록

① taglet 등록 창에서 'directAPI' 선택

② Date Format 입력. 입력하지 않으면 nano second timestamp를 사용하는 것으로 판단한다.

③ Tags에 저장할 Tag 입력. 등록되지 않은 Tag는 데이터를 전송해도 저장되지 않는다.

2) 사용 방법

  • URL : 등록한 EMC의 host + "/api/v1/edge/direct" ( ex. http://192.168.0.1:50001/api/v1/edge/direct )
  • Method : POST
  • Data Format : json 형식
{
	"date_format" : date Format ( ex. "YYYY-MM-DD HH24:MI:SS" ),
	"data" : [
			   {
				"name": Tag명,
				"time": datetime ( timestamp의 경우 문자열로 변환 ),
				"value": value
			   },
			...
			   {}
		    ]
}

Json 예시

Date Format 지정
{
    "date_format": "YYYY-MM-DD HH24:MI:SS",
    "data": [
        {
            "name": "X1",
            "time": "2020-09-23 18:28:30",
            "value": 3125.5
        },
        {
            "name": "X1",
            "time": "2020-09-23 18:28:31",
            "value": 3125.3
        },
        {
            "name": "X1",
            "time": "2020-09-23 18:28:32",
            "value": 3126.1
        }
    ]
}
Date Format 미지정 (nano timestamp 사용)
{
    "date_format": "",
    "data": [
        {
            "name": "X2",
            "time": "1599199851564",
            "value": 3631
        },
        {
            "name": "X2",
            "time": "1599199851565",
            "value": 3778
        },
        {
            "name": "X2",
            "time": "1599199851566",
            "value": 2453
        }
    ]
}
Time 값 미 포함 (API 도착시간 일괄 사용)
{
    "date_format": "",
    "data": [
        {
            "name": "X3",
            "value": 3125
        },
        {
            "name": "X3",
            "value": 3126
        },
        {
            "name": "X3",
            "value": 3127
        }
    ]
}

2) 사용시 주의사항

① RestAPI Taglet은 하나의 EMC 당 1개씩만 사용 가능하다.

② name, value은 값이 반드시 존재해야 한다.

③ time의 경우는 없으면 등록할 때 저장한 Date Format에 맞춰 API가 도착한 시간으로 저장한다.

④ time 값은 반드시 문자열이어야 한다. timestamp 의 경우에도 문자열로 변환하여 전송해야 정상적으로 저장이 가능하다.

⑤ value의 경우 숫자형 데이터여야 한다. ( int, float )


  • No labels