범용 Taglet 사용 방법
Modbus Taglet
modbusTCP taglet은 modbus TCP /IP 연결을 지원하고 modbus client 역할을 하며 modbus server와 통신한다.
1) Taglet 등록
① taglet 등록 창에서 'modbusTCP'을 선택한다.
② Settings에서 아래의 값들을 입력한다.
항목 | 설명 | 비고 |
---|---|---|
IP & Port | Modbus server의 IP 주소와 Port 번호 | |
server ID | Modbus server의 고유 아이디 | |
Device Name | Modbus server의 장치 이름 | |
readPeriod | 데이터를 읽어오는 주기(second) | |
timeout | Modbus 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 지원 | |
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 | ||||
Security | 보안 옵션
| ||||
Topic |
| ||||
use "#" wildcard | use "+" wildcard | use not wildcard | |||
JSON |
|
|
| ||
raw |
|
|
|
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 예시
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을 작성
항목 | 설명 | 비고 |
---|---|---|
Separator | CSV 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는 다음과 같은 형식이어야 한다.
time | Z1 | Z2 | Z3 | Z4 | Z5 |
---|---|---|---|---|---|
2020-01-01 01:01:01 | 10 | 20 | 30 | 40 | 50 |
2020-01-01 01:01:02 | 11 | 21 | 31 | 41 | 51 |
2020-01-01 01:01:03 | 12 | 22 | 32 | 42 | 52 |
① CSV Header가 들어있는 첫번째 row를 제외하면 모든 데이터는 값이어야 한다. (시간값 or 해당 tag의 value)
② CSV Header는 time 혹은 Tag Name으로 이루어져야 한다.
③ Tag를 입력할 때 Machbase에 저장할 Tag만 등록하면 된다.
④ 위 데이터를 통한 Taglet 등록 예시 (Machbase에 저장할 Tag는 Z1,Z3,Z5로 가정)
항목 | 입력 값 |
---|---|
Separator | , |
Time Column | 1 |
Date Format | YYYY-MM-DD HH24:MI:SS |
CSV Header | time,Z1,Z2,Z3,Z4,Z5 |
Use First Line Header | 체크 |
Tags | Z1, Z3, Z5만 등록 |
CSV FILE Taglet
CSV TCP taglet은 EMC에 보낼 Data를 CSV 형식으로 처리하는 Taglet으로 특정 디렉터리에 저장된 CSV File을 읽어서 처리한다.
1) Taglet 등록
① taglet 등록 창에서 'csvtcp' 선택
② General의 input을 작성
항목 | 설명 | 비고 |
---|---|---|
Separator | CSV 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 Path | File이 저장되는 경로를 작성한다. | |
File Name Rule | 파일 이름 규칙을 작성한다. 반복되는 문자 외에 변경되는 부분은 *로 표기한다. ex) fileName_* |
④ Machbase에 저장할 Tag 정보를 입력
2) 사용시 주의사항
① 기본적인 주의사항은 CSVTCP와 동일하다.
② Directory Full Path의 경우 /home/machbase/savefile 과 같이 전체 경로를 입력해야한다.
③ File Name Rule은 규칙있는 이름을 가진 파일만 읽어 데이터를 전송할 때 사용한다.
지정한 디렉터리 내에 저장된 모든 파일을 읽어서 저장해야하는 경우는 규칙을 작성하지 않는다.