/
범용 Taglet 사용 방법

범용 Taglet 사용 방법

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를 구분해 준다.
    ex) 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 전체를 가져와서 사용한다.
Separator여러개의 node를 입력할 때 사용할 구분자를 입력한다.기본값 : 콤마(,)
use subscription

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


read period

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


use time adjustment

read 주기값을 활용하여 정확한 시간에 값을 읽는다.
ex) read 주기값이 10s 이라면 00:00:10, 00:00:20, 00:00:30, 00:00:40 주기값 10의 배수가 되는 시점에서 read를 시작한다.


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

Security Policy

사용할 보안 알고리즘 선택


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

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

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

③ Tags에 저장할 tag를 입력한다.

2) 사용시 주의사항

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

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

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

④ Tags에 입력된 Tag는 Settings에서 입력한 nodeID와 1:1 매칭이 되기 때문에 nodeID와 tag의 갯수가 같아야 한다. 

⑤ 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 입력

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


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

③ Tags에 저장할 tag를 입력한다.

2) 사용시 주의사항

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

② Tags에 입력된 Tag는 Settings에서 입력한 modbus tag와 1:1 매칭이 되기 때문에 modbus tag와 tag의 갯수가 같아야 한다.

MQTT Taglet

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

1) Taglet 등록

① taglet 등록 창에서 'mqtt'를 선택한다.

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

항목설명비고
Broker Address

broker의 주소를 입력한다.

ex) 보안 옵션 없이 통신 : 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 이다.

2) 사용시 주의사항

① Subscribe 기능만 제공한다.

② All Tag를 선택하면 MQTT 설정탭에서 설정한 또는 설정된 tag name을 사용한다.
     단, Event(warnging, error)를 사용하려면 tag name을 Tags에 입력해야 한다.

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
        }
    ]
}

3) 사용시 주의사항

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

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

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

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

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

CSV TCP Taglet

CSV TCP taglet은 EMC에 보낼 Data를 CSV 형식으로 처리하는 Taglet으로 TCP 통신을 통해 처리한다.

1) Taglet 등록

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

② General의 input을 작성

항목설명비고
SeparatorCSV Data의 구분자를 입력한다.기본값 : 콤마(,)
Time Column

Data에 Time Data가 들어있는 위치를 입력 (1부터 시작).

Time의 Data가 맨 처음 column에 있다면 1, Time Data가 없으면 0을 입력한다.

기본값 : 0
Date Format

Data에 Time Data가 있을 경우, Time Data에 맞도록 format을 작성한다.

ex) YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn

입력하지 않는 경우 Data 도착 시간 사용.

기본값 : ""

(Nano Timestamp로 인식)

CSV Header

CSV Data의 Header 입력. 각 column의 구분자는 ,로 작성한다.

Data에 Header가 없어도 무조건 작성해야한다.

ex) name,time,value


Use First Line Header

Data에 Header 값이 포함될 것인지를 선택.

전송되는 Data의 첫 줄이 Header면 체크, 아니면 체크를 해제한다.

기본값 : N

③ Settings의 input을 작성

항목설명비고
Ip센서와 TCP 통신을 할 때 사용하는 IP
Port센서와 TCP 통신을 할 때 사용하는 PORT

④ Machbase에 저장할 Tag 정보를 입력

2) 사용시 주의사항

CSVTCP를 사용하기 위한 CSV Data는 다음과 같은 형식이어야 한다.

timeZ1Z2Z3Z4Z5
2020-01-01 01:01:011020304050
2020-01-01 01:01:021121314151
2020-01-01 01:01:031222324252

① CSV Header가 들어있는 첫번째 row를 제외하면 모든 데이터는 값이어야 한다. (시간값 or 해당 tag의 value)

② CSV Header는 time 혹은 Tag Name으로 이루어져야 한다.

③ Tag를 입력할 때 Machbase에 저장할 Tag만 등록하면 된다.

④ 위 데이터를 통한 Taglet 등록 예시 (Machbase에 저장할 Tag는 Z1,Z3,Z5로 가정)

항목입력 값
Separator,
Time Column1
Date FormatYYYY-MM-DD HH24:MI:SS
CSV Headertime,Z1,Z2,Z3,Z4,Z5
Use First Line Header체크
TagsZ1, Z3, Z5만 등록

CSV FILE Taglet

CSV TCP taglet은 EMC에 보낼 Data를 CSV 형식으로 처리하는 Taglet으로 특정 디렉터리에 저장된 CSV File을 읽어서 처리한다.

1) Taglet 등록

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

② General의 input을 작성

항목설명비고
SeparatorCSV Data의 구분자를 입력한다.기본값 : 콤마(,)
Time Column

Data에 Time Data가 들어있는 위치를 입력 (1부터 시작).

Time의 Data가 맨 처음 column에 있다면 1, Time Data가 없으면 0을 입력한다.

기본값 : 0
Date Format

Data에 Time Data가 있을 경우, Time Data에 맞도록 format을 작성한다.

ex) YYYY-MM-DD HH24:MI:SS mmm:uuu:nnn

입력하지 않는 경우 Data 도착 시간 사용.

기본값 : ""

(Nano Timestamp로 인식)

CSV Header

CSV Data의 Header 입력. 각 column의 구분자는 ,로 작성한다.

Data에 Header가 없어도 무조건 작성해야한다.

ex) name,time,value


Use First Line Header

Data에 Header 값이 포함될 것인지를 선택.

전송되는 Data의 첫 줄이 Header면 체크, 아니면 체크를 해제한다.

기본값 : N

③ Settings의 input을 작성

항목설명비고
Directory Full PathFile이 저장되는 경로를 작성한다.
File Name Rule

파일 이름 규칙을 작성한다. 반복되는 문자 외에 변경되는 부분은 *로 표기한다.

ex) fileName_*


④ Machbase에 저장할 Tag 정보를 입력

2) 사용시 주의사항

① 기본적인 주의사항은 CSVTCP와 동일하다.

② Directory Full Path의 경우 /home/machbase/savefile 과 같이 전체 경로를 입력해야한다.

③ File Name Rule은 규칙있는 이름을 가진 파일만 읽어 데이터를 전송할 때 사용한다.
     지정한 디렉터리 내에 저장된 모든 파일을 읽어서 저장해야하는 경우는 규칙을 작성하지 않는다.


Related content