모드버스 통신 드라이버는 범용 통신 드라이버로서 모드버스 프로토콜을 사용하는 디바이스와 연결할 때 사용합니다. 지원하는 모드버스 프로토콜은 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 종류

  • 1: Coil
  • 2: Discreate Input
  • 3: Holding Register
  • 4: Input Register

C(O)

사용 안 함

D(O)

사용 안 함


출력 주소 설정 (M: 필수, O: 선택)

 장치를 제어하기 위해서는 출력 주소에 제어하려는 장치의 주소 정보를 입력합니다. 입력하는 항목은 주소 필드와 펄스 제어 필드입니다.

주소 필드

설명

A(M)

데이터 주소


B(M)

Coil 인 경우: 1

Holding Register 인 경우 -> 3/Function Code

Function Code

  • 6: Write Single Register
  • 16: Write Multiple Register

 예) 3/6, 3/16

C(O)

사용 안 함

D(O)

제어 값(십진수)

제어 시 특정 값을 전송할 경우에 사용합니다. 일반적으로 Holding Register 일 경우 사용되며 0/1이 아닌 값으로 제어를 해야 할 경우 사용

  • 미 입력 시 Object B가 Coil 인 경우 아래와 같이 명령이 디바이스로 전송
    • HMI 에서 Off 명령 시 -> 0x0000
    • HMI 에서 On 명령 시 -> 0xFF00
  • 미 입력 시 Holding Register 인 경우 아래와 같이 명령이 디바이스로 전송
    • HMI 에서 Off 명령 시 -> 0x0000
    • HMI 에서 On 명령 시 -> 0x0001


펄스 제어 체크 시 On 제어 후 펄스 시간 이후에 자동으로 Off 명령이 전송됩니다.


아날로그 포인트 주소 설정

 아날로그 포인트에 디바이스의 주소를 설정해 다음과 같은 작업을 할 수 있습니다.

  • Input Register 와 Holding Register 의 데이터를 읽어 올 수 있습니다.
  • Holding Register 에 데이터를 쓸 수 있습니다.


 장치의 아날로그 데이터를 읽거나 쓸 때 입력하는 항목은 다음과 같습니다.

데이터 형식 및 아이템 구분 설정

 


항목

설명

데이터 형식

읽어올 디바이스의 레지스터 크기와 데이터 종류에 맞게 선택하며 장비의 매뉴얼을 참고해서 입력해야 합니다. 데이터 형식에 따른 설명은 다음과 같습니다.

데이터 형식

레지스터 크기

데이터 포맷 설명

Int16/UInt16

1 (2 Byte)

장치의 데이터 값을 빅 에디안 형식으로 처리합니다.

예) 0x0001 -> 0x0001

Int16/UInt16

(리틀 에디안)

1 (2 Byte)

장치의 데이터 값을 리틀 에디안 형식으로 처리합니다.

예) 0x0100 -> 0x0001

Int32/UInt32

2 (4 Byte)

장치의 데이터 값을 빅 에디안 형식으로 처리합니다.

예) 0x0000 0001 -> 0x0000 0001

Int32/UInt32

(Low-Hi)

2 (4 Byte)

장치에서 읽어온 2개의 레지스터의 상.하위 레지스터의 순서를 다음과 같이 변경해 처리합니다.

예) 0x0001 0000 -> 0x0000 0001

Int32/UInt32

(리틀 에디안)

2 (4 Byte)

장치에서 읽어온 2개의 레지스터를 리틀 에디안 형식으로 처리합니다.

예) 0x0100 0000 -> 0x0000 0001

Int64/UInt64

4 (8 Byte)

장치에서 읽어온 4개의 레지스터를 빅 에디안 형식으로 처리합니다.

예) 0x0000 0000 0000 0001 -> 0x0000 0000 0000 0001

Float32

2 (2 Byte)

장치에서 읽어온 2개의 레지스터를 실수형(IEEE 754 Short float)으로 변환해 빅 에디안 형식으로 처리합니다.

예) 0x0000 0001 -> 0x0000 0001

Float32

(Low-Hi)

2 (2 Byte)

장치에서 읽어온 2개의 레지스터를 실수형(IEEE 754 Short float)으로 변환해 상.하위 레지스터의 순서를 다음과 같이 변경해 처리합니다.

예) 0x0001 0000 -> 0x0000 0001

Float32

(리틀 에디안)

2 (2 Byte)

장치에서 읽어온 2개의 레지스터를 실수형(IEEE 754 Short float)으로 변환해 리틀 에디안 형식으로 처리합니다.

예) 0x0100 0000 -> 0x0000 0001

Float64

4 (8 Byte)

장치에서 읽어온 4개의 레지스터를 실수형(IEEE 754 Long float)으로 변환해 빅 에디안 형식으로 처리합니다.

예) 0x0000 0000 0000 0001 -> 0x0000 0000 0000 0001

아이템 구분

읽어올 데이터의 속성에 따라 다음과 같이 선택합니다.

  • Analog Input : Input Register 혹은 Holding Register 의 값을 읽어 올 때 (Read Only)
  • SetPoint(AO) : Holding Register 의 값을 Read/Write 혹은 Write Only 시

데이터 주소 설정

계측/경보 탭을 선택 후 주소 필드에 읽어오거나 설정할 데이터의 주소 필드를 입력합니다. 입력하는 항목은 일반 탭에서 선택한 '아이템 구분'에 따라 달라집니다.

 

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 종류

  • 3: Holding Register
  • 4: Input Register

C

사용 안 함

D

사용 안 함

SetPoint(AO)인 경우

주소 필드

설명

A(M)

데이터 주소

B(M)

Object 종류

  • 3: Holding Register

※ 데이터의 속성이 쓰기 전용(Write Only)인 경우 아무것도 입력하지 않습니다.

C(O)

쓰기 명령 코드

  • 6: Write Single Register
  • 16: Write Multiple Register

※ 미 입력시 기본 값은 6(Write Single Register) 입니다.

D

사용 안 함


텍스트 포인트 설정(옵션)

 텍스트 포인트는 일반적으로 디바이스의 레지스터 영역에 장치의 버전 정보와 같은 텍스트 형태로 저장되어 있는 정보를 읽을 때 사용합니다. 텍스트 포인트의 설정 항목은 다음과 같습니다.


데이터 형식

 데이터 형식은 장치의 데이터 맵을 참고하셔서 알맞은 형식을 선택해야 합니다. 데이터 형식의 설명은 다음과 같습니다.

데이터 형식

설명

ASCII

ASCII 형식으로 저장된 데이터를 읽어 올 때 사용합니다.

UTF-8

UTF-8 형식으로 저장된 데이터를 읽어 올 때 사용합니다.

UTF-16

UTF-16 형식으로 저장된 데이터를 읽어 올 때 사용합니다.

Raw

Binary 형식으로 저장된 데이터를 읽어 올 때 사용합니다.

데이터 주소 설정 (M: 필수, O: 선택)

주소 필드

설명

A(M)

데이터 주소

B(M)

Object 종류

  • 3: Holding Register
  • 4: Input Register

C(O)

사용 안 함

D(O)

데이터 주소로부터 읽어올 레지스터 개수

예) A:30, B:3, D:2 -> 홀딩 레지스터의 30~31번 레지스터


계측 설정 (옵션)

 모드버스 드라이버의 경우 포인트에 입력한 주소 정보와 데이터 타입을 바탕으로 계측해야 할 데이터 그룹을 자동으로 생성합니다. 그리고 디바이스의 계측 탭에서 설정한 주기에 따라 계측을 실행합니다.

 하지만 모드버스 프로토콜을 지원하느 제품에 따라 제한적인 요소(계측을 해야 하는 주소의 범위 혹은 한 번에 읽을 수 있는 레지스터 개수가 고정 등)가 있을 수 있으며 이런 경우 파워씬 드라이버에서 자동으로 계측 그룹을 이용하면 계측 및 통신이 되지 않을 수 있습니다.

 이러한 경우 자동으로 생성된 계측 그룹을 사용하지 않고 사용자가 장비의 매뉴얼을 참고해서 스캔 그룹을 입력해야합니다.

 스캔 그룹을 입력하는 방법은 다음과 같습니다.


① 디바이스의 계측 탭에서 계측 주기 설정을 0으로 설정(계측 주기를 0으로 입력하면 계측이 실행되지 않습니다.) 후 [편집] 버튼을 클릭한 후에 새 계측 그룹을 추가합니다.

 

 


② 계측 창에서 이름, 계측 주기, 읽어올 데이터의 범위를 장비의 데이터 맵을 참고해 알맞게 계측 범위를 입력합니다.