콘텐츠로 이동
공식 웹사이트로 돌아가기

Modbus-RTU 수집

(1) CommBridge 페이지의 【스마트 트윈】으로 이동한 후 왼쪽에서 【장치 연결】로 전환합니다.

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

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

프로토콜로 Modbus-RTU 선택

(1) Modbus 클라이언트【마스터】를 두 번 클릭하고 【구성 추가】 버튼을 클릭합니다.

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

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

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

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

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

(1) 【장치 연결】의 【배포】 버튼을 클릭하여 배포합니다.

CommBridge 배포 버튼과 성공 알림 화면 예

그림은 공통으로 사용하는 “배포” 위치를 보여 줍니다. 이 페이지의 노드와 구성에는 앞에서 설정한 Modbus-RTU 매개변수를 사용해야 합니다.

(2) 【스마트 트윈】으로 전환한 후 Modbus 클라이언트【마스터】 노드 위로 마우스를 이동하면 노드 정보 목록이 표시됩니다.

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

설정은 Modbus-TCP의 데이터 쓰기와 동일합니다.

매개변수 설명 형식 예
구성 이름 사용자가 지정하는 구성 이름 필수 온도 수집
프로토콜 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

동기 수집:

  1. “Yes”는 구성 전체의 그룹에 수집 주기, 제한 시간 및 수집 유효 시간을 통합 설정한다는 의미입니다. 구성 내 모든 데이터 포인트에 적용됩니다.
  2. “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로 설정할 수 있습니다.

  1. 레지스터 유형이 Discrete 또는 Coils이면 기본 데이터 유형은 boolean입니다.
  2. 데이터 유형이 uint16, int16, combine이면 바이트 순서로 AB, BA를 선택할 수 있습니다. uint32, int32, float이면 ABCD, CDAB, BADC, DCBA를 선택할 수 있습니다. 다른 데이터 유형에는 바이트 순서가 없습니다.
  3. 레지스터 유형이 Discrete 또는 Coils이면 기본 레지스터 수는 1입니다. 데이터 유형이 uint16, int16, boolean이면 기본값은 1이고, uint32, int32, float이면 기본값은 2입니다. combine이면 1 또는 2를 선택할 수 있고, string, hex string이면 직접 입력할 수 있습니다.

16비트 순서:

  1. AB: 1워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 상위 바이트가 앞에, 하위 바이트가 뒤에 있습니다(빅 엔디언).
  2. BA: 1워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 하위 바이트가 앞에, 상위 바이트가 뒤에 있습니다(리틀 엔디언).

32비트 순서:

  1. ABCD: 2워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 상위 바이트가 앞에, 하위 바이트가 뒤에 있습니다(빅 엔디언).
  2. BADC: 2워드 레지스터로, 상위 워드가 앞에 있고 하위 워드가 뒤에 있으며 워드 내에서는 하위 바이트가 앞에, 상위 바이트가 뒤에 있습니다(빅 엔디언 바이트 교환).
  3. CDAB: 2워드 레지스터로, 하위 워드가 앞에 있고 상위 워드가 뒤에 있으며 워드 내에서는 상위 바이트가 앞에, 하위 바이트가 뒤에 있습니다(리틀 엔디언 바이트 교환).
  4. DCBA: 2워드 레지스터로, 하위 워드가 앞에 있고 상위 워드가 뒤에 있으며 워드 내에서는 하위 바이트가 앞에, 상위 바이트가 뒤에 있습니다(리틀 엔디언).

6. Modbus 프로토콜 관련 매개변수 설명

섹션 제목: “6. Modbus 프로토콜 관련 매개변수 설명”

Modbus-RTU의 프로토콜 설정은 Modbus-TCP와 동일합니다.