모드버스 통신 드라이버
모드버스 통신 드라이버는 범용 통신 드라이버로서 모드버스 프로토콜을 사용하는 디바이스와 연결할 때 사용합니다. 지원하는 모드버스 프로토콜은 Modbus RTU, Modbus TCP 를 지원합니다.
모드버스 디바이스의 경우 장치에 따라 데이터 포맷이 다양하기 때문에 장치 추가 시 연결하려는 장치의 매뉴얼을 반드시 참고하셔서 입력하셔야 합니다.
통신채널 설정
① 통신 채널 항목을 선택 후 추가합니다.
② 연결하려는 장치의 프로토콜 따라 프로토콜 항목에 'Modbus TCP' 혹은 'Modbus RTU'를 선택합니다.
③ 통신 탭을 선택해 연결하려는 장치에 맞는 통신 설정 정보를 입력합니다.
④ 통신 옵션 탭을 선택해 통신 옵션 정보를 입력합니다.
통신 옵션 탭에 대한 항목 설명은 다음과 같습니다.
항목 이름 |
설명 |
계측 지연시간 |
계측 지연시간 설정 시 여러 개의 통신 블록을 읽어 올 경우 하나의 통신 블록을 읽은 후 계측지연 시간만큼 대기한 후 다음 블록을 읽어옵니다. 데이터 처리 속도가 느린 디바이스와 연결 시 통신 블록을 읽은 후 지연 없이 바로 다음 블록을 요청하는 경우 응답을 주지 않는 경우가 있습니다. 이때 지연 시간을 설정해서 설정 시간만큼 대기한 후 다음 블록을 읽어오는데 사용합니다. |
통신 무응답 시 재시도 횟수 |
재시도 횟수 설정 시 설정한 횟수를 초과할 때 통신오류로 처리합니다. 미 설정 시에는 통신 오류가 발생할 경우 디바이스의 상태를 통신 오프라인으로 처리합니다. |
디바이스 설정
① 디바이스 항목을 선택 후 추가합니다.
② 일반 탭의 통신 채널 항목에서 통신 채널 설정에서 입력했던 통신 채널을 선택합니다.
③ 계측 탭에서 계측 주기를 선택합니다.
계측 탭에 대한 항목 설명은 다음과 같습니다.
항목 이름 |
설명 |
전체 계측주기 |
설정한 주기에 따라 상태 포인트와 아날로그 포인트에 설정된 주소의 데이터를 읽어 옵니다. |
상태 계측주기 |
설정한 주기에 따라 상태 포인트에 설정된 주소의 데이터를 읽어옵니다. |
아날로그 계측 주기 |
설정한 주기에 따라 아날로그 포인트에 설정된 주소의 데이터를 읽어옵니다. |
시각 동기 주기 |
사용하지 않습니다. |
제한 시간 |
데이터 요청 후 데이터 응답 대기 시간입니다. |
④ 프로토콜 탭을 선택해 항목을 입력합니다.
프로토콜 탭의 입력 항목은 다음과 같습니다.
항목 이름 |
설명 |
슬레이브 주소 |
디바이스의 주소를 입력합니다. ※ 입력한 정보가 디바이스 주소와 일치하지 않을 경우 통신이 되지 않습니다. |
주소 테이블
모드버스 프로토콜은 네 개의 오브젝트(영역)이 있으며 오브젝트 별 데이터 크기가 다릅니다. 또한 오브젝트 별로 Read/Write 할 수 있는 작업이 구분되어 있습니다. 모드버스의 주소 체계는 다음과 같이 구분됩니다.
오브젝트 |
데이터 크기 |
데이터 속성 |
Discreate Input |
Bit |
Read |
Coil |
Bit |
Read/Write |
Input Register |
16Bit word |
Read |
Holding Register |
16Bit word |
Read/Write |
디바이스의 데이터 종류에 따라 상태 포인트와 아날로그 포인트에 설정할 수 있는 디바이스의 데이터는 다음과 같습니다.
포인트 종류 |
연결 항목 |
상태 포인트 |
Discreate Input/Coil 의 데이터 읽기 |
Input/Holding Register 의 비트 값 혹은 비트 범위 읽기 |
|
Coil 에 데이터 쓰기 |
|
Holding Register 에 데이터 쓰기 |
|
아날로그 포인트 |
Input/Holding Register 의 데이터 읽기 |
Input/Holding Register 의 비트 값 혹은 비트 범위 읽기 |
|
Holding Register 에 데이터 쓰기 |
모드버스 디바이스의 경우 장치에 따라 데이터 포맷이 다양하기 때문에 장치 추가 시 연결하려는 장치의 매뉴얼을 반드시 참고하셔서 입력해야 합니다.
상태 포인트 주소 설정
상태 포인트에 디바이스의 주소를 설정해 아래와 같은 작업을 할 수 있습니다.
- 입력주소에 Discreate Input/Coil 의 주소를 입력해 해당 주소의 데이터 읽기
- 입력주소에 Input/Holding Register 의 주소를 입력해 비트 값 혹은 비트 범위 읽기
- 출력주소에 Coil 의 주소를 입력해 해당 주소에 데이터 쓰기
- 출력주소에 Holding Register 의 주소를 입력해 해당 주소에 데이터 쓰기
디바이스의 데이터를 읽거나 쓰기 위해서는 주소 필드에 올바른 정보를 입력해야 하며, 설정할 수 있는 정보는 다음과 같습니다.
입력 주소 설정 (M: 필수, O: 선택)
주소 필드 |
설명 |
A(M) |
데이터 주소 : B 필드의 Object 종류가 Discreate Input 혹은 Coil 인 경우 예) 0 -> B 필드의 값이 0인 경우 Coil 의 0번 주소 |
데이터 주소.비트 번호 : B 필드의 Object 종류가 Input Register 혹은 Holding Register 인 경우 예) 30.0 -> 30번 레지스터의 0번 비트 00000000 00000000 30.15 -> 30번 레지스터의 15번 비트 00000000 00000000 |
|
데이터 주소.시작 비트 - 끝 비트 : B 필드의 Object 종류가 Input Register 혹은 Holding Register 인 경우 예) 30.0-7 -> 30번 레지스터의 0~7번째 비트 00000000 00000000 30.8-15 -> 30번 주소의 15번 비트 00000000 00000000 |
|
B(M) |
Object 종류
|
C(O) |
사용 안 함 |
D(O) |
사용 안 함 |
출력 주소 설정 (M: 필수, O: 선택)
장치를 제어하기 위해서는 출력 주소에 제어하려는 장치의 주소 정보를 입력합니다. 입력하는 항목은 주소 필드와 펄스 제어 필드입니다.
주소 필드 |
설명 |
A(M) |
데이터 주소 |
B(M) |
Coil 인 경우: 1 |
Holding Register 인 경우 -> 3/Function Code Function Code
예) 3/6, 3/16 |
|
C(O) |
사용 안 함 |
D(O) |
제어 값(십진수) 제어 시 특정 값을 전송할 경우에 사용합니다. 일반적으로 Holding Register 일 경우 사용되며 0/1이 아닌 값으로 제어를 해야 할 경우 사용
|
펄스 제어 체크 시 On 제어 후 펄스 시간 이후에 자동으로 Off 명령이 전송됩니다.
아날로그 포인트 주소 설정
아날로그 포인트에 디바이스의 주소를 설정해 다음과 같은 작업을 할 수 있습니다.
- Input Register 와 Holding Register 의 데이터를 읽어 올 수 있습니다.
- Holding Register 에 데이터를 쓸 수 있습니다.
장치의 아날로그 데이터를 읽거나 쓸 때 입력하는 항목은 다음과 같습니다.
데이터 형식 및 아이템 구분 설정
항목 |
설명 |
|||||||||||||||||||||||||||||||||
데이터 형식 |
읽어올 디바이스의 레지스터 크기와 데이터 종류에 맞게 선택하며 장비의 매뉴얼을 참고해서 입력해야 합니다. 데이터 형식에 따른 설명은 다음과 같습니다.
|
|||||||||||||||||||||||||||||||||
아이템 구분 |
읽어올 데이터의 속성에 따라 다음과 같이 선택합니다.
|
데이터 주소 설정
계측/경보 탭을 선택 후 주소 필드에 읽어오거나 설정할 데이터의 주소 필드를 입력합니다. 입력하는 항목은 일반 탭에서 선택한 '아이템 구분'에 따라 달라집니다.
Analog Input 인 경우
주소 필드 |
설명 |
A(M) |
데이터 주소 예) 0 -> B 에 입력한 레지스터의 0번 주소 |
데이터 주소.비트 번호 예) 30.0 -> 30번 레지스터의 0번 비트 00000000 00000000 30.15 -> 30번 레지스터의 15번 비트 00000000 00000000 ※ 비트 읽기 시에는 데이터 일반 탭의 데이터 타입 설정을 Int16이나 UInt16으로 선택해야 합니다. |
|
데이터 주소.시작 비트 - 끝 비트 예) 30.0-7 -> 30번 레지스터의 0~7번째 비트 00000000 00000000 30.8-15 -> 30번 주소의 15번 비트 00000000 00000000 ※ 비트 읽기 시에는 데이터 일반 탭의 데이터 타입 설정을 Int16이나 UInt16으로 선택해야 합니다. |
|
B(M) |
Object 종류
|
C |
사용 안 함 |
D |
사용 안 함 |
SetPoint(AO)인 경우
주소 필드 |
설명 |
A(M) |
데이터 주소 |
B(M) |
Object 종류
※ 데이터의 속성이 쓰기 전용(Write Only)인 경우 아무것도 입력하지 않습니다. |
C(O) |
쓰기 명령 코드
※ 미 입력시 기본 값은 6(Write Single Register) 입니다. |
D |
사용 안 함 |
텍스트 포인트 설정(옵션)
텍스트 포인트는 일반적으로 디바이스의 레지스터 영역에 장치의 버전 정보와 같은 텍스트 형태로 저장되어 있는 정보를 읽을 때 사용합니다. 텍스트 포인트의 설정 항목은 다음과 같습니다.
데이터 형식
데이터 형식은 장치의 데이터 맵을 참고하셔서 알맞은 형식을 선택해야 합니다. 데이터 형식의 설명은 다음과 같습니다.
데이터 형식 |
설명 |
ASCII |
ASCII 형식으로 저장된 데이터를 읽어 올 때 사용합니다. |
UTF-8 |
UTF-8 형식으로 저장된 데이터를 읽어 올 때 사용합니다. |
UTF-16 |
UTF-16 형식으로 저장된 데이터를 읽어 올 때 사용합니다. |
Raw |
Binary 형식으로 저장된 데이터를 읽어 올 때 사용합니다. |
데이터 주소 설정 (M: 필수, O: 선택)
주소 필드 |
설명 |
A(M) |
데이터 주소 |
B(M) |
Object 종류
|
C(O) |
사용 안 함 |
D(O) |
데이터 주소로부터 읽어올 레지스터 개수 예) A:30, B:3, D:2 -> 홀딩 레지스터의 30~31번 레지스터 |
계측 설정 (옵션)
모드버스 드라이버의 경우 포인트에 입력한 주소 정보와 데이터 타입을 바탕으로 계측해야 할 데이터 그룹을 자동으로 생성합니다. 그리고 디바이스의 계측 탭에서 설정한 주기에 따라 계측을 실행합니다.
하지만 모드버스 프로토콜을 지원하느 제품에 따라 제한적인 요소(계측을 해야 하는 주소의 범위 혹은 한 번에 읽을 수 있는 레지스터 개수가 고정 등)가 있을 수 있으며 이런 경우 파워씬 드라이버에서 자동으로 계측 그룹을 이용하면 계측 및 통신이 되지 않을 수 있습니다.
이러한 경우 자동으로 생성된 계측 그룹을 사용하지 않고 사용자가 장비의 매뉴얼을 참고해서 스캔 그룹을 입력해야합니다.
스캔 그룹을 입력하는 방법은 다음과 같습니다.
① 디바이스의 계측 탭에서 계측 주기 설정을 0으로 설정(계측 주기를 0으로 입력하면 계측이 실행되지 않습니다.) 후 [편집] 버튼을 클릭한 후에 새 계측 그룹을 추가합니다.
② 계측 창에서 이름, 계측 주기, 읽어올 데이터의 범위를 장비의 데이터 맵을 참고해 알맞게 계측 범위를 입력합니다.