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 입력 예) 4개의 Function Code 지원 | |
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 등록 창에서 'modbusTCPmqtt'을 선택한다.
② Settings에서 아래의 값들을 입력한다.
항목 | 설명 | 비고 | |||
---|---|---|---|---|---|
Broker Address | broker의 주소를 입력한다. 예) 보안 옵션 없이 통신 : tcp://192.168.0.1:1883 | ||||
Security | 보안 옵션
| ||||
Topic |
| ||||
use "#" wildcard | use "+" wildcard | use not wildcard | |||
JSON |
|
|
| ||
raw |
|
|
|
③ 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 형식
Code Block |
---|
{ "date_format" : date Format ( ex. "YYYY-MM-DD HH24:MI:SS" ), "data" : [ { "name": Tag명, "time": datetime ( timestamp의 경우 문자열로 변환 ), "value": value }, ... {} ] } |
Json 예시
Code Block | ||||
---|---|---|---|---|
| ||||
{ "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 } ] } |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "date_format": "", "data": [ { "name": "X2", "time": "1599199851564", "value": 3631 }, { "name": "X2", "time": "1599199851565", "value": 3778 }, { "name": "X2", "time": "1599199851566", "value": 2453 } ] } |
Code Block | ||||
---|---|---|---|---|
| ||||
{ "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 )