- Jelina 개요
- CommBridge
- 데이터 수집
Modbus-RTU 수집
1. 노드 생성
섹션 제목: “1. 노드 생성”(1) CommBridge 페이지의 【스마트 트윈】으로 이동한 후 왼쪽에서 【장치 연결】로 전환합니다.

(2) Modbus 클라이언트【마스터】, 데이터 처리 및 MQTT 업로드 플러그인을 차례로 플러그인 작업 영역에 끌어 놓아 세 개의 노드를 생성합니다.

(3) 세 노드를 차례로 연결합니다. 연결 순서는 Modbus 클라이언트【마스터】 → 데이터 처리 → MQTT 업로드입니다.

2. 구성 생성
섹션 제목: “2. 구성 생성”프로토콜로
Modbus-RTU선택
(1) Modbus 클라이언트【마스터】를 두 번 클릭하고 【구성 추가】 버튼을 클릭합니다.

(2) 연결 설정을 입력하고 【다음】을 클릭합니다.

(3) 【그룹 추가】를 클릭하고 그룹 정보를 입력한 후 【확인】을 클릭합니다.

(4) 【데이터 추가】를 클릭하고 데이터 포인트 정보를 입력한 후 【확인】을 클릭합니다.

(5) 【완료】를 클릭하여 수집 구성을 추가합니다.

(6) 구성의 스위치를 켜고 【저장】을 클릭합니다.

3. 결과 확인
섹션 제목: “3. 결과 확인”(1) 【장치 연결】의 【배포】 버튼을 클릭하여 배포합니다.

그림은 공통으로 사용하는 “배포” 위치를 보여 줍니다. 이 페이지의 노드와 구성에는 앞에서 설정한 Modbus-RTU 매개변수를 사용해야 합니다.
(2) 【스마트 트윈】으로 전환한 후 Modbus 클라이언트【마스터】 노드 위로 마우스를 이동하면 노드 정보 목록이 표시됩니다.

(3) 구성을 클릭하여 해당 구성의 각 그룹에 속한 데이터 포인트의 실시간 데이터와 이력 데이터를 확인합니다.

4. 데이터 쓰기
섹션 제목: “4. 데이터 쓰기”설정은 Modbus-TCP의 데이터 쓰기와 동일합니다.
5. 설정 설명
섹션 제목: “5. 설정 설명”연결 설정
섹션 제목: “연결 설정”| 매개변수 | 설명 | 형식 | 예 |
|---|---|---|---|
| 구성 이름 | 사용자가 지정하는 구성 이름 | 필수 | 온도 수집 |
| 프로토콜 | Modbus 프로토콜 | Modbus TCP, Modbus RTU | Modbus RTU |
| 동기 수집 | 동기 수집 여부, Yes 또는 No | Yes, No | YES |
| 수집 주기 | 데이터 읽기 폴링 주기로, 구성 내 각 그룹이 레지스터를 읽는 시간 간격 | 숫자, 범위: (100,2147483647] | 2000 |
| 수집 유효 시간 | 그룹의 모든 데이터 포인트를 지정 시간 내에 수집해야 하며, 그렇지 않으면 해당 그룹 데이터를 버립니다. 이 시간에는 프레임 지연이 포함됩니다. | 숫자, 범위: (0, 수집 주기] | 1000 |
| 제한 시간 | 구성 내 각 그룹의 개별 데이터 수집에 허용되는 시간으로, 초과하면 해당 읽기 데이터를 버림 | 숫자, 범위: (0, 수집 주기] | 1000 |
| 최대 일괄 레지스터 수 | 연속 데이터 포인트를 일괄 수집할 때의 최대 레지스터 수 | 자연수, 범위: [1,120] | 120 |
| 인터페이스 | 실제 장치의 시리얼 포트에 따라 결정하며, 일반적으로 RS485를 사용합니다. USB를 연결하면 해당 인터페이스 이름이 추가됩니다. | ttyS0, ttyS1 | ttyO4 |
| 데이터 비트 | 데이터 묶음에 실제로 포함된 데이터 비트 수 | 7, 8 | 8 |
| 정지 비트 | 개별 패킷의 마지막 비트를 표시하는 데 사용 | 1, 2 | 1 |
| 패리티 | 시리얼 통신의 간단한 오류 검출 방식 | Odd, Even 또는 None | None |
| 전송 속도 | 초당 전송되는 심벌 수로 심벌 전송률을 나타내는 매개변수 | 115200, 57600, 38400, 19200, 9600 또는 4800 | 9600 |
| 프레임 지연 | 두 수집 사이의 최소 간격이며 기본값은 0입니다. 수집 제한 시간 초과가 자주 발생하면 적절히 늘리고, 그렇지 않으면 변경할 필요가 없습니다. | 단위: 밀리초, 숫자, 범위: [0, 2147483647] | 0 |
| 쓰기 프레임 지연 | 데이터 쓰기 시 추가 대기 시간입니다. 쓰기 작업이 느린 일부 장치에서 설정하며, 0은 추가 지연이 없음을 의미합니다. | 단위: 밀리초, 숫자, 범위: [0, 2147483647] | 0 |
| 레지스터 쓰기 기능 코드 | 홀딩 레지스터 쓰기에 사용할 기능 코드 설정 | Auto, 06, 10, 아래 설명 참조 | Auto |
| 변경 기반 수집 | 데이터 수집 방식입니다. No: 변경 기반 수집을 사용하지 않음, SingleData: 변경된 데이터 포인트만 전송, WholeGroup: 그룹 내 데이터가 하나라도 변경되면 그룹 전체 전송 | No, SingleData, WholeGroup | SingleData |
| 변경 기반 수집 재설정 시간 | 데이터가 이 시간 이상 변경되지 않으면 데이터 제출을 강제로 한 번 트리거합니다. 0이면 트리거하지 않습니다. | 단위: 초, 숫자, 범위: (0, 2147483647] | 0 |
| 실패 시 백오프 | 수집 실패 후 백오프 비율에 따라 다음 수집까지의 시간을 늘리며, 최대 수집 주기 × 최대 백오프 비율을 넘지 않음 | Yes, No, 아래 설명 참조 | Yes |
| 백오프 비율 | 실패 시 시간 증가 비율로, 0보다 크고 1이 아니어야 함 | 숫자 | 2 |
| 최대 백오프 비율 | 최대 대기 시간 비율로, 이 비율에 도달하면 더 이상 증가하지 않음 | 숫자 | 16 |
동기 수집:
- “Yes”는 구성 전체의 그룹에 수집 주기, 제한 시간 및 수집 유효 시간을 통합 설정한다는 의미입니다. 구성 내 모든 데이터 포인트에 적용됩니다.
- “No”는 각 그룹이 수집 주기, 제한 시간 및 수집 유효 시간을 개별 설정한다는 의미입니다.
레지스터 쓰기 기능 코드: Auto는 레지스터 하나를 쓸 때 06, 여러 개를 쓸 때 10을 사용합니다. 06은 모든 레지스터 쓰기에 06을, 10은 모든 레지스터 쓰기에 10을 사용합니다.
실패 시 백오프: 예를 들어 수집 주기가 1초, 백오프 비율이 2, 최대 백오프 비율이 16이면 계속 실패할 때 대기 시간은 1s, 2s, 4s, 8s, 16s가 됩니다. 마찬가지로 수집 주기가 10초, 백오프 비율이 0.5, 최대 백오프 비율이 0.1이면 대기 시간은 10s, 5s, 2.5s, 1.25s가 됩니다. 수집에 한 번 성공하면 초기 기본 수집 주기로 복귀합니다.
백오프 비율이 1보다 크면 최대 백오프 비율은 백오프 비율보다 커야 하며, 1보다 작으면 최대 백오프 비율은 백오프 비율보다 작아야 합니다.
그룹 추가
섹션 제목: “그룹 추가”| 매개변수 | 설명 | 형식 | 예 |
|---|---|---|---|
| 그룹 이름 | 사용자가 지정하는 그룹 이름 | 필수 | 온도 그룹 1 |
| Slave ID | Modbus 장치 주소로, 수집 대상 장치의 슬레이브 주소 | 숫자, 범위: (0,255] | 1 |
| 수집 주기 | 데이터 읽기 폴링 주기로, 개별 그룹이 레지스터를 읽는 시간 간격 | 숫자, 범위: (100,2147483647] | 1000 |
| 수집 유효 시간 | 개별 그룹의 모든 데이터 포인트를 수집해야 하는 유효 시간입니다. 이 시간 내에 그룹의 모든 데이터 포인트를 읽지 못하면 그룹 전체 데이터를 버립니다. | 숫자, 범위: (0, 수집 주기] | 500 |
| 제한 시간 | 개별 그룹의 각 데이터 수집에 허용되는 시간으로, 초과하면 해당 읽기 데이터를 버림 | 숫자, 범위: (0, 수집 주기] | 500 |
참고: 연결 설정의 동기 수집이 No인 경우, 그룹 내 모든 데이터 포인트에 적용됩니다. Modbus는 한 번에 읽을 수 있는 레지스터 수가 제한됩니다. Holding Register와 Input Register는 연속된 레지스터 포인트를 한 번에 최대 120개, Discrete와 Coils는 최대 2000개 읽을 수 있습니다.
데이터 추가
섹션 제목: “데이터 추가”| 매개변수 | 조건 | 설명 | 형식 | 예 |
|---|---|---|---|---|
| 데이터 별칭 | 동일 그룹 내에서 고유한 데이터 포인트 이름 | 필수, 숫자나 밑줄로 시작할 수 없고 공백을 포함할 수 없음 | T | |
| 주소 | 레지스터 주소로, 동일 그룹 내에서 중복될 수 없음 | 숫자, 범위: (0,2147483647) | 0 | |
| 레지스터 유형 | Modbus 연산 코드 | Holding Register, Input Register, Discrete, Coils, 아래 설명 참조 | Holding Register | |
| 데이터 유형 | 레지스터 유형에 따라 결정 | 레지스터 데이터의 원본 유형 | uint16, int16, uint32, int32, float, boolean, combine, string, hex string, 아래 설명 참조 | uint16 |
| 바이트 순서 | 레지스터 유형과 데이터 유형에 따라 결정 | 1바이트를 초과하는 데이터 유형의 메모리 저장 순서 | AB, BA, ABCD, CDAB, BADC, DCBA, 아래 설명 참조 | AB |
| 레지스터 수 | 레지스터 유형과 데이터 유형에 따라 결정 | 해당 데이터 유형에 사용하는 레지스터 수 | 아래 설명 참조 | 1 |
| 읽기/쓰기 모드 | 레지스터 유형에 따라 결정 | r(읽기 전용), rw(읽기/쓰기) 지원 | r, rw | r |
| 계산 | 사용자가 데이터 별칭을 기반으로 정의하는 수식 | T/10 | ||
| 오프셋 | 데이터 유형이 bit | 바이트 순서를 조정한 후 상위 비트에서 하위 비트 방향으로 계산한 bit 오프셋 | 숫자, 범위: [0,15] |
예를 들어 온도 속성을 디버깅할 때 장치의 온도 속성 주소가 1이면 레지스터 주소를 1로 설정할 수 있습니다.
- 레지스터 유형이 Discrete 또는 Coils이면 기본 데이터 유형은 boolean입니다.
- 데이터 유형이 uint16, int16, combine이면 바이트 순서로 AB, BA를 선택할 수 있습니다. uint32, int32, float이면 ABCD, CDAB, BADC, DCBA를 선택할 수 있습니다. 다른 데이터 유형에는 바이트 순서가 없습니다.
- 레지스터 유형이 Discrete 또는 Coils이면 기본 레지스터 수는 1입니다. 데이터 유형이 uint16, int16, boolean이면 기본값은 1이고, uint32, int32, float이면 기본값은 2입니다. combine이면 1 또는 2를 선택할 수 있고, string, hex string이면 직접 입력할 수 있습니다.
16비트 순서:
- AB: 1워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 상위 바이트가 앞에, 하위 바이트가 뒤에 있습니다(빅 엔디언).
- BA: 1워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 하위 바이트가 앞에, 상위 바이트가 뒤에 있습니다(리틀 엔디언).
32비트 순서:
- ABCD: 2워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 상위 바이트가 앞에, 하위 바이트가 뒤에 있습니다(빅 엔디언).
- BADC: 2워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 하위 바이트가 앞에, 상위 바이트가 뒤에 있습니다(빅 엔디언 바이트 교환).
- CDAB: 2워드 레지스터로, 하위 워드가 앞에 있고 상위 워드가 뒤에 있으며 워드 내에서는 상위 바이트가 앞에, 하위 바이트가 뒤에 있습니다(리틀 엔디언 바이트 교환).
- DCBA: 2워드 레지스터로, 하위 워드가 앞에 있고 상위 워드가 뒤에 있으며 워드 내에서는 하위 바이트가 앞에, 상위 바이트가 뒤에 있습니다(리틀 엔디언).
6. Modbus 프로토콜 관련 매개변수 설명
섹션 제목: “6. Modbus 프로토콜 관련 매개변수 설명”Modbus-RTU의 프로토콜 설정은 Modbus-TCP와 동일합니다.