본문 바로가기

자동제어

Niagara4-모드버스통신 시작하기

1.모듈선택

 

이 드라이버를 사용하려면 Modbus 기능에 라이선스가 부여된 대상 호스트(원격 컨트롤러) 또는 Modbus 감독자 역할을 하는 PC 호스트가 필요합니다. 감독자 역할을 하는 호스트도 modbus에 대한 라이선스를 보유해야 합니다.

이 드라이버는 네트워크 유형별로 다른 네 개의 Modbus 모듈을 제공합니다

 

나이아가라4 모드버스 통신 드라이버 종류

Palette name Network component name in the Nav tree .jar file names in the modules folder Function
modbusAsync ModbusAsyncNetwork modbuscore.jar ProvidesModbusAsyncNetworks (serial Modbus RTU or ASCII over RS-485 or RS-232)
modbusSlave ModbusSlaveNetwork modbusSlave.jar Provides ModbusSlaveNetworks (serial Modbus RTU or ASCII over RS-485 or RS-232)
modbusTcp ModbusTcpNetwork modbusTcp.jar Provides ModbusTcpNetworks and/or ModbusTcpGateways (Modbus TCP via Ethernet)
modbusTcpSlave ModbusTcpSlaveNetwork modbusTcpSlave.jar Provides ModbusTcpSlaveNetworks (Modbus TCP via Ethernet)

 

 

 

Modbus 드라이버를 성공적으로 설치하고 사용하려면 설치 환경이 특정 요구 사항을 충족해야 합니다. 각 호스트에 대한 Modbus 기능에 대한 Niagara 라이선스가 필요합니다. PC에서 실행되는 선택적 감독자 스테이션이 포함됩니다. 라이선스에는 장치 및 프록시 포인트에 대한 기타 제한 사항이 존재할 수 있습니다.
Niagara 4.9 이상을 실행하는 대상 호스트 컨트롤러가 필요합니다. PC에서 실행되는 Workbench가 필요합니다.
 

Modbus 라이선스가 부과하는 제한 사항에 대한 내용을 문서화한 것입니다. RS-485 제한 사항

<feature name="mstp"
 expiration="never"
 port.limit="5"/>


port.limit은 사용 가능한 MS/TP 트렁크(RS-485 포트)의 수를 정의합니다. 이는 호스트 컨트롤러의 유형에 따라 다르며 구매한 라이선스에 따라 다를 수 있습니다. 1부터 6까지의 범위가 있습니다.

전기적인 고려 사항으로 인해 연결된 MS/TP 장치의 EIA-485(또는 RS-485) 부하 요소가 트렁크가 물리적으로 지원할 수 있는 장치 수를 결정합니다. 이는 31(전체 부하)에서 127(1/4 부하)까지 범위가 있습니다.

라이선스의 modbus 기능에 따른 다른 장치 또는 플랫폼 제한도 적용됩니다.

 

BACnet MS/TP BACnet에서 정의한 여러 데이터 링크 중 하나로, 데이터 통신 프로토콜입니다. MS/TP 물리 계층으로 RS-485를 사용하며, 전기적인 신호 관점에서 보면 Modbus/RTU나 기타 다양한 RS-485 기반 통신과 동일합니다. 2가닥의 Twisted Pair 통신 케이블을 사용하며, 연결된 모든 디바이스들이 같은 통신 버스를 공유합니다. BACnet MS/TP 빌딩 자동화 및 제어 네트워크에서 장치를 연결하는 데 주로 사용됩니다. 이로써 현장 장치 컨트롤러, 라우터, 또는 제어 응용 프로그램에 연결할 수 있습니다

 

Modbus 드라이버를 설치하는 방법에 대한 내용을 문서화한 것입니다. 전제 조건: Workbench 4.9 이상이 설치되어 있고 설치 도구로 사용되도록 구성되어 있어야 합니다 (체크 박스 "이 Workbench 인스턴스는 설치 도구로 사용됩니다"가 활성화되어 있는지 확인). PC에서 원격 호스트 플랫폼의 다양한 모델을 설치하십시오. .dist 파일은 Niagara 설치 디렉토리의 sw 하위 디렉토리 아래에 있습니다. modbusCore 모듈과 필요한 특정 modbus<type> 모듈 (예: modbusAsync, modbusTcp 등)을 설치하십시오. 낡은 버전으로 표시된 모듈을 업그레이드하십시오. 원격 호스트는 실행 중인 스테이션에서 Modbus 구성을 위해 준비되었습니다

 

Modbus 네트워크를 추가하는 절차는 각 네트워크 유형에 대해 동일합니다.

 

전제 조건: 추가하려는 네트워크 유형의 팔레트가 열려 있어야 합니다.
다음 중 하나를 수행하십시오:
단일 네트워크를 추가하려면 팔레트에서 네트워크 구성 요소를 드래그하여 Nav 트리의 Station > Config > Drivers 노드로 이동하고 네트워크에 이름을 입력하거나 기본값을 사용하고 확인을 클릭하십시오.
한 번에 동일한 네트워크 유형을 여러 개 추가하려면 Nav 트리의 스테이션 드라이버 컨테이너를 두 번 클릭하여 새 버튼을 클릭하십시오. 추가할 네트워크 유형을 선택하고 추가할 네트워크 수를 입력하고 확인을 클릭하십시오. 네트워크에 이름을 지정하거나 기본값을 사용하고 확인을 클릭하십시오.
FrameworkNav 트리의 Drivers 폴더 하위에 하나 이상의 네트워크 노드를 생성합니다. 초기에는 네트워크 상태가 {fault}이고 활성화된 상태가 true입니다. 시리얼 포트 및 전송 모드 속성을 구성한 후에는 상태가 {ok}로 변경되어야 합니다.
네트워크 속성을 구성하려면 Nav 트리에서 네트워크 노드를 마우스 오른쪽 단추로 클릭하고 Views > 속성 시트를 클릭하십시오.

 

시리얼 통신 요구 사항에 맞추기 위해 ModbusAsyncNetworks ModbusSlaveNetwork에는 연결된 Modbus 장치의 시리얼 통신 요구 사항을 구성해야 합니다. 이는 시리얼 속성을 구성하고 Modbus 전송 모드 (RTU 또는 ASCII)를 식별하는 것을 포함합니다. 전제 조건: 시리얼 네트워크가 요구하는 보레이트, 데이터 비트, 정지 비트, 패리티 및 플로우 제어 설정을 알고 있어야 합니다.
다음 단계를 수행하십시오: 이미 수행하지 않았다면, Nav 트리에서 네트워크 노드를 마우스 오른쪽으로 클릭하고 Views > 속성 시트를 선택하십시오. 속성 시트가 열립니다.
아래로 스크롤하고 시리얼 포트 구성을 확장하고 구성하여 장치 요구 사항과 일치하도록합니다. 네트워크 유형에 따라 Rtu(기본값) 또는 Ascii와 같은 Modbus 데이터 모드 속성 값을 설정하십시오. 저장 단추를 클릭하십시오. 네트워크의 속성 시트에있는 동안 전역 Modbus 설정을 검토하십시오. 관련 링크
이더넷 속성에는 게이트웨이의 IP 주소와 포트가 포함됩니다. 이러한 속성은 ModbusTcpNetwork, ModbusTcpGateway ModbusTcpSlaveNetwork 구성 요소에 적용됩니다. 전제 조건: 네트워크가 Nav 트리에 존재합니다. 이미 수행하지 않았다면, 네트워크 노드로 이동하여 마우스 오른쪽으로 클릭하고 Views > 속성 시트를 클릭하십시오. 속성 시트가 열립니다. IP 주소 속성에서 Modbus 게이트웨이의 고유한 IP 주소를 입력하십시오. ###.###.###.###() 해당 IP 주소로 대체하십시오. ModbusTcpNetwork 아래에 추가하는 각 ModbusTcpDevice는 해당 장치에 사용되는 IP 주소가 필요합니다. 일반적으로 각 Modbus TCP 장치는 이 통신에만이 주소를 사용하며 Modbus 주소 (1-247)는 일반적으로 1로 설정됩니다. 포트 속성에서 기본값으로 502 값을 검토하고 필요에 따라 이 포트 식별자를 변경하십시오. 이것은 Modbus TCP에서 사용하는 표준 포트입니다. 이 네트워크의 속성 시트가 열려 있는 동안 전역 Modbus 설정을 검토하십시오. 저장 단추를 클릭하십시오. 관련 링크 네트워크 구성 (상위 주제)

 

클라이언트 Modbus 네트워크 (ModbusAsyncNetwork, ModbusTcpNetwork, ModbusTcpGateway) 중에서는 Modbus 데이터를 해석하거나 지원하기 위한 네트워크 수준의 기본값을 구성해야 합니다. 이러한 기본값은 네트워크 수준 구성 요소의 속성 시트에 있습니다.
전제 조건: 네트워크가 Nav 트리에 존재합니다.
이미 수행하지 않았다면, 네트워크 노드로 이동하여 마우스 오른쪽으로 클릭하고 Views > 속성 시트를 클릭하십시오.
속성 시트가 열립니다.
Float Byte Order, Long Byte Order, Use Preset Multiple Register, Use Force Multiple Coil을 구성하고 저장 단추를 클릭하십시오.

 

Modbus 통신은 메시지를 중심으로 구축됩니다. 각 메시지는 동일한 구조를 가지고 있습니다. 네트워크의 마스터는 메시지를 사용하여 대화를 시작하며, 이를 쿼리라고 합니다. 특정 주소로 보내진 쿼리에 대해, 마스터는 슬레이브로부터 응답을 기대합니다. 슬레이브는 거래를 시작하지 않으며(미요 메시지를 보내지 않음), 항상 마스터가 쿼리를 시작하고 슬레이브가 응답하는 것이 모든 Modbus 네트워크 통신의 기본입니다. 각 메시지는 네트워크의 유형과는 독립적인 동일한 구조를 가지고 있습니다. 일반적인 시리얼 네트워크에서의 메시지 구조는 TCP/IP(이더넷)를 통해 전송되는 구조와 동일합니다. 메시지는 장치 주소, 기능 코드, 데이터 및 오류 확인으로 구성됩니다.
장치 주소 마스터로부터의 쿼리에서 주소 필드는 메시지에 응답해야 하는 슬레이브 장치를 정의합니다. 다른 네트워크 노드들은 메시지가 자신에게 주소 지정되지 않았다면 메시지를 무시합니다. 슬레이브로부터의 응답에서 주소 필드에는 슬레이브 장치 주소가 포함되어 있으며, 이는 슬레이브가 쿼리에 응답하고 있다는 것을 마스터에게 확인합니다.
장치 주소가 제로(0)인 경우에는 브로드캐스트 메시지를 나타내며, 마스터는 모든 슬레이브에게 보내고 어떤 슬레이브로부터의 응답도 필요로하지 않습니다.
기능 코드 쿼리의 각 주소 필드 다음에는 마스터가 요청한 정보의 유형을 식별하는 기능 코드가 있습니다. 기능 코드는 슬레이브 장치로부터 마스터에게 되돌아오는 응답에서 검증에도 사용됩니다. 예시 코드로는 READ COIL STATUS READ HOLDING REGISTERS가 있습니다.
Modbus 프로토콜은 24개의 기능 코드를 정의합니다. 몇몇 장치는 모든 기능 코드를 지원합니다. Modbus 장치에 대한 공급 업체 문서에서 지원되는 기능 코드가 명시되어야 합니다. 다음 표에는 이 Modbus 드라이버에서 지원하는 기능 코드가 표시되어 있습니다.
Code Function Name Operation in a controller master
01 READ COIL STATUS Provide normal data polling of all read-only and writable proxy points.
02 READ INPUT STATUS
03 READ HOLDING REGISTERS
04 READ INPUT REGISTERS
05 FORCE SINGLE COIL Manage change of values at inputs and/or invoked actions of writable proxy points or client preset components.
06 PRESET SINGLE REGISTER
07 READ EXCEPTION STATUS Poll device for exception status, output values and bits set.
15 FORCE MULTIPLE COILS Manage change of values at inputs and/or invoked actions of writable proxy points or client preset components.
16 PRESET MULTIPLE REGISTERS
20 READ FILE RECORD Use ModbusClientStringRecord to read and write file records in which data are converted to ASCII characters and displayed as a string.
만약 슬레이브가 요청된 기능을 수행할 수 있었다면, 그것은 마스터로부터 원래 전송된 기능 코드의 정확한 사본을 반환합니다. 슬레이브가 요청된 기능을 수행할 수 없었다면, 예외 응답을 반환합니다.
데이터 이 메시지 필드는 기능 코드에 대한 세부 정보를 설명합니다. 예를 들어, 읽을 레지스터 주소(및 범위) 또는 쓸 코일 주소를 포함할 수 있습니다. 데이터 필드는 마스터가 요청한 정보를 반환합니다.
오류 확인 이 필드는 마스터로부터 수신된 메시지의 무결성을 확인합니다. 슬레이브가 쿼리에서 오류를 감지하면, 슬레이브는 쿼리를 무시하고 자신에게 주소가 지정된 다음 쿼리를 기다립니다.
슬레이브로부터의 응답에서, 이 필드는 슬레이브로부터 수신된 메시지의 무결성을 확인합니다. 마스터가 오류를 감지하면, 마스터는 응답을 무시합니다.
오류 확인 방법은 Modbus 전송 모드에 따라 다릅니다. 가장 흔한 모드인 Modbus RTUCRC(순환 중복 검사) 방법을 사용합니다. Modbus TCP/IP 프로토콜은 쿼리 및 응답 메시지에 대해 유사한 메시지 형식을 갖고 있습니다. 그러나 Modbus TCP/IP는 오류 확인 루틴에서 해방됩니다. 대신, 이더넷과 같은 하위 TCP/IP 및 링크 계층에 내장된 오류 확인 메커니즘을 사용합니다.
Modbus 쿼리 및 응답 예제 다음은 ModbusAsyncNetwork에서 Modbus RTU(시리얼) 장치로의 쿼리 및 응답 메시지 쌍의 예입니다:
쿼리 020300030004B43A
장치 02, 기능 코드 03, 시작 주소 0003, 레지스터 수 04, 오류 체크섬 B43A
응답 02030800510052003C003CA387
장치 02로부터, 기능 코드 03, 반환된 바이트 수 08, 데이터(00510052003C003C), 오류 체크섬 A387
 
장치 추가
이 절차는 모든 유형의 Modbus 네트워크에 단일 장치 또는 여러 장치를 추가하는 방법을 문서화한 것입니다. 일반적인 장치 관리자 정보에 대해서는 드라이버 가이드를 참조하십시오.
전제 조건: 각 장치에 대한 주소 정보와 데이터 구성 (코일, 입력, 입력 레지스터 및 보유 레지스터)가 있어야 합니다. 장치 공급 업체의 문서가 있어야 합니다.
Nav 트리 또는 드라이버 관리자 보기에서 클라이언트 네트워크를 두 번 클릭하십시오.
적절한 장치 관리자가 열립니다 (Modbus Async 장치 관리자, Modbus Tcp 장치 관리자 또는 Modbus Tcp 게이트웨이 장치 관리자).
참고: 장치 유형은 특정 상위 네트워크 유형에 특정합니다. 예를 들어, ModbusTcpSlaveNetwork 하위에 ModbusSlaveDevice를 복사하거나 ModbusSlaveNetworkModbusTcpSlaveDevice를 복사할 수 없습니다. 이는 슬레이브 네트워크의 장치 관리자에서 작업할 때 문제가 되지 않습니다. 왜냐하면 새로 추가할 때 (장치를 추가하기 위해) 적절한 하위 장치 구성 요소가 자동으로 선택됩니다.
새 단추를 클릭하십시오.
새 창이 열립니다. 드라이버는 네트워크 유형 (ModbusAsyncDevice, ModbusTcpDevice 또는 ModbusTcpGatewayDevice)에 따라 추가할 유형을 미리 선택합니다.
추가할 번호를 입력하고 OK를 클릭하십시오: 1 (또는 다수, 다중).
추가 속성을 구성할 추가 창이 열립니다. 기본값은 적어도 시작하려면 충분하지만, 다음을 제외한 경우:
Async, TCP/IP 게이트웨이 및 슬레이브 장치는 1-247 사이의 고유한 Modbus 주소가 필요합니다. 이 주소는 해당 네트워크의 다른 물리적 장치와 중복되지 않아야 합니다.
TCP/IP 장치는 고유한 IP 주소가 필요합니다 (장치의 Modbus 주소는 1로 유지될 수 있음).
표준 502 포트 이외의 TCP/IP 장치는 포트 정의가 필요합니다.
이러한 속성을 기본값으로 둘 수 있습니다. 특히 서로 다른 장치가 동일한 설정을 사용하는 경우에는 네트워크 수준에서 조정할 수 있습니다.
시작 주소 속성에 장치 주소를 입력하고 OK를 클릭하십시오.
Modbus 장치 관리자 보기에서 장치가 {ok} 상태이고 활성화된 상태가 true로 설정되어 있는지 확인할 수 있습니다.
장치가 {down}으로 나타나면, 네트워크 구성 및/또는 장치 주소를 확인하십시오.
장치 속성을 확인 또는 수정하려면 장치 관리자 보기에서 장치 행을 두 번 클릭하십시오.
모든 변경 사항을 적용한 후에 저장을 클릭하십시오.
장치 관리자에서 장치 행을 마우스 오른쪽으로 클릭하고 동작 > 핑을 클릭하십시오.
장치로부터의 응답을 수신하면, 예외 응답을 포함하여 모든 응답은 통신의 증명으로 간주됩니다. 시스템이 장치가 이전에 {down}으로 보고했다면, 모든 핑 응답은 좋은 소식입니다.
클라이언트 Modbus 장치의 기본 핑 주소는 첫 번째 (40001 Modbus) 보유 레지스터 값 (정수)입니다. 종종 이 주소는 예외 응답 없이 잘 작동합니다. 그러나 이 핑 주소를 확인하고 필요한 경우
 
장치 복제 여러 장치를 한 번에 구성하는 것은 모든 장치가 다른 프록시 포인트 집합이 필요한 경우에 유용합니다. 그러나 비슷한 장치가 있는 경우에는 먼저 단일 장치를 만들고 해당 장치의 프록시 포인트 및 기타 구성 요소를 구성한 다음 필요한만큼 복제할 수 있습니다. 각 복제본의 장치 주소를 고유한 번호로 변경할 수 있습니다. 전제 조건: 이미 단일 장치에 대한 장치 속성을 추가하고 구성했습니다. 각 프록시 포인트에는 고유한 주소가 필요합니다. 새 장치에서 기본 주소를 구성하면 한 번에 프록시 포인트 주소를 사용자 정의할 수 있는 방법을 제공합니다.
다음 단계를 수행하십시오: Nav 트리에서 장치를 마우스 오른쪽으로 클릭하고 복제를 클릭하십시오. 이름 창이 열립니다. 장치의 이름을 정의하고 확인을 클릭하십시오. 각 프록시 포인트에는 고유한 주소가 필요합니다. 새 장치에서 기본 주소를 구성하면 한 번에 프록시 포인트 주소를 사용자 정의할 수 있는 방법을 제공합니다. 기본 주소 속성을 찾으려면 Nav 트리에서 새 장치 노드를 두 번 클릭하고 기본 주소 속성(입력 레지스터 기본 주소, 보유 레지스터 기본 주소, 코일 상태 기본 주소 및 입력 상태 기본 주소)을 확장하십시오. 장치의 모든 기본 주소 속성은 16진수 0 (16진수: 0)으로 기본 설정됩니다. 그러나 고유한 프록시 포인트 주소를 빠르게 구성하는 공학 방법으로 사용할 수 있습니다. 이 방법은 Modbus 장치가 반복되는 주소 패턴을 가진 여러 영역으로 데이터가 분할되어 있을 때 작동합니다. 이렇게하면 동일한 장치(및 하위 프록시 포인트)가 복제되고 기본 주소에서만 주소 변경이 이루어집니다.
주소 형식에 대해 16진수 또는 10진수를 선택하십시오. 이 응용 프로그램에서는 기본 주소 및 하위 프록시 포인트 주소에 Modbus 옵션을 사용할 수 없습니다. 기본 주소를 정의하십시오. 예를 들어, 장치의 보유 레지스터 기본 주소가 10진수로 설정되어 있고 주소가 100으로 설정되어 있는 경우, 보유 레지스터 주소 형식이 10진수이고 주소가 13인 각 하위 Modbus 프록시 포인트는 10진수 113(절대 주소)로 효과적으로 주소가 지정됩니다. 속성 구성을 마치면 저장을 클릭하십시오
 
프록시 포인트 생성 다른 드라이버의 장치 객체와 마찬가지로 각 클라이언트 Modbus 장치는 프록시 포인트의 컨테이너 역할을하는 포인트 확장을 갖습니다. 모든 포인트 확장의 기본 뷰는 포인트 관리자입니다. Modbus 장치에 적절한 Modbus 클라이언트 및 슬레이브 프록시 포인트를 추가하려면이 관리자를 사용합니다. 전제 조건: 서버 (슬레이브) 프록시 포인트를 만드는 경우 포인트에 대한 레지스터를 이미 만들었습니다.
참고: 다른 많은 드라이버의 포인트 관리자와 달리 Modbus 포인트 관리자에는 배우기 모드가 없으며 발견 단추, 발견된 항목 및 데이터베이스 패널이 없습니다. Modbus 프로토콜의 단순함으로 인해이 기능이 필요하지 않습니다. 대신, 새로운 버튼을 사용하여 프록시 포인트를 만들고 각 Modbus 장치의 데이터 항목 주소를 참조하여 벤더 문서를 참조합니다.
다음 단계를 수행하십시오: Nav 트리에서 네트워크 노드를 두 번 클릭하고 Exts 열에서 포인트 아이콘(Image)을 두 번 클릭하십시오. 포인트 관리자 뷰가 열립니다.
(선택 사항) 포인트를 구성하는 데 도움이되도록 새 폴더 버튼을 클릭하여 새 포인트 폴더를 만들고 응용 프로그램에 적합한 짧은 이름을 지정한 다음 해당 포인트 관리자를 엽니다. 이 단계를 반복하여 여러 포인트 폴더를 만들거나 모든 프록시 포인트를 루트 테이블에 만드는 것을 선택할 수 있습니다. 각 포인트 폴더에는 고유한 포인트 관리자 뷰가 있습니다.
포인트를 만들려면 다음 중 하나를 수행하십시오: 팔레트에서 적절한 포인트를 장치로 끌어오거나 복사하십시오. 새로 만들기 버튼을 클릭하고 추가 할 포인트 유형(Type To Add)을 선택하십시오. 연속으로 주소 지정할 수있는 경우 일반적으로 이 방법이 가장 빠릅니다. 새로운 포인트 창이 열립니다.
이미지 추가 할 포인트 유형을 선택하십시오. 연속 레지스터 번호를 구성하려면 추가 할 포인트 수를 숫자로 입력하십시오(Number To Add). 이미지 화면 캡처는 여덟 개의 추가된 포인트를 보여줍니다. 1 개 이상의 포인트를 지정하면 추가 포인트가 자동으로 시작 주소를 기준으로 연속 주소로 할당됩니다. 첫 번째 포인트에 대한 시작 주소에 대해서는 주소 형식으로 Modbus 주소 지정을 일반적으로 선택하십시오. 이렇게하면 기본 주소로부터 40001을 빼지 않고도 장치 설명서에서 대상 데이터 주소를 직접 입력할 수 있습니다. 이미지 또한 읽기 전용 클라이언트 포인트의 경우 Modbus 주소 형식을 사용하면 전체 Modbus 주소의 선행 숫자에 따라 자동으로 레지스터 유형 속성(Reg Type)을 설정하지 않아도됩니다(입력 레지스터에 대한 3 및 보유 레지스터에 대한 4).
이미지
참고: 코일에 Modbus 형식의 주소를 입력 할 때 드라이버는 선행 0을 무시합니다. 예를 들어 Modbus 주소 00109를 입력하면 Modbus 109를 입력한 것과 동일합니다. 10 진수 또는 16 진수 주소 형식 (제로 기반 형식)과 달리 Modbus 주소 형식은 1 기반 형식입니다. 따라서 Modbus 109로 주소가 지정된 코일의 10 진수 주소는 108이고 16 진수 주소는 6D입니다.
포인트가 숫자인 경우 데이터 형식을 선택한 다음 확인을 클릭하십시오. 이렇게하면 또 다른 새 창이 열립니다.
포인트에 이름을 지정하고 데이터 주소를 입력하고 포인트 특성 및 변환과 같은 기타 정보를 입력한 다음 확인을 클릭하십시오. 드라이버는 프록시 포인트를 포인트 확장 (또는 현재 포인트 폴더)에 추가하여 각 포인트가 포인트 관리자의 행으로 표시됩니다. 올바르게 주소가 지정된 경우 각 포인트는 폴링 값이 표시되는 {ok} 상태를 보고해야합니다. 포인트가 {fault} 상태를보고하는 경우 프록시 확장 오류 원인 속성 값을 확인하십시오. 이 값에는 일반적으로 Modbus 예외 코드 문자열 (: 읽기 오류 : 잘못된 데이터 주소)이 포함됩니다
 

 

장치 폴링 구성 클라이언트 장치에서의 데이터 폴링은 연속적으로 주소 지정된 값에 대한 폴링을 위해 단일 메시지를 사용하도록 구성하여 개선 할 수 있습니다. 이렇게하면 네트워크 메시징 트래픽이 줄어듭니다. 장치 하위에 모든 프록시 포인트를 추가 한 후에는 장치를 폴링하도록 구성하십시오. 일반적으로 동일한 양의 데이터를 가져 오기 위해 더 적은 메시지를 사용하기 때문에 폴링 응답이 개선됩니다. 전제 조건: 장치를 생성하고 프록시 포인트를 추가했습니다. 장치 폴링은 프록시 포인트가 생성 될 때까지 구성해야하며 일반적으로 (개별) 포인트 폴링에서 이미 값이 수신됩니다.
다음 단계를 수행하십시오: Nav 트리에서 ModbusAsyncDevice, ModbusTcpDevice 또는 ModbusTcpGatewayDevice를 두 번 클릭하고 Device Poll Config 속성을 확장하십시오. 장치 속성 시트가 열립니다. 이미지 시작 주소와 연속적으로 폴링 할 포인트를 구성하십시오. 포인트를 구성하려면이 컨테이너에 수동으로 자식 DevicePollConfigEntry 개체를 추가하거나 (선택 사항으로) 컨테이너의 마우스 오른쪽 단추 작업을 사용하십시오. Learn Optimum Device Poll Config.
 
Modbus 드라이버는 세 가지 유형의 클라이언트 장치를 지원합니다: ModbusAsyncDevice, ModbusTcpDevice ModbusTcpGatewayDevice. 각 클라이언트 장치 구성 요소는 원격 Modbus 슬레이브를 나타냅니다. Modbus 마스터 네트워크의 호스트 스테이션은 정기적으로 이러한 슬레이브 장치를 폴링하여 Modbus 데이터를 제공하는 요청을 보냅니다. 원격 클라이언트 장치는 마스터 (호스트 스테이션)에서의 이러한 Modbus 쿼리를 수신하고 응답을 보냅니다. 각 유형의 클라이언트는 프록시 포인트를 지원합니다. 데이터 교환은 쓰기 가능 및 읽기 전용 프록시 포인트, 클라이언트 프리셋 개체 및 (필요한 경우) 파일 레코드에 대한 읽기 및 쓰기를 통해 이루어집니다. 각 클라이언트 장치 유형은 특정 유형의 상위 네트워크에 대해 구체적입니다. 예를 들어 팔레트에서 ModbusAsyncDeviceModbusTcpGateway로 끌거나 ModbusTcpGatewayDeviceModbusTcpNetwork로 끌 수 없습니다. 이는 세 클라이언트 네트워크 중 하나의 장치 관리자에서 작업 할 때 문제가되지 않습니다. 왜냐하면 장치를 추가하는 데 사용되는 새 창이 자동으로 올바른 하위 장치 구성 요소를 선택하기 때문입니다.
Modbus 클라이언트 장치의 세 가지 유형은 각각 기본 Modbus Client Point Manager 뷰에서 관리되는 하나의 고정된 Points 장치 확장을 가지고 있습니다. Points 장치 확장은 동일한 유형의 프록시 포인트뿐만 아니라 프리셋 및 파일 레코드 개체도 지원합니다.

세 가지 유형의 Modbus 클라이언트 장치는 공통 포인트 슬롯 외에도 유사한 속성을 제공합니다. 이에는 네트워크 수준의 Modbus Config 설정 재정의, 부모 네트워크의 Monitor 핑을위한 핑 주소 설정, Modbus 데이터 항목의 장치 기본 주소 구성 및 장치 수준 폴링을 구성하는 슬롯이 포함됩니다

 

클라이언트 장치의 폴링을 위한 구성 점수 수준에서의 폴링 효율성을 높일 수 있습니다. 장치 수준의 폴링은 점수 수준의 폴링이 필요한 폴 수를 줄임으로써 전반적인 폴링 효율성을 높일 수 있습니다. ModbusAsyncDevice ModbusTcpGatewayDevice의 고정 슬롯 아래에있는 장치 폴 구성 항목 테이블은 폴링 속성을 지정합니다. 전제 조건: 장치 아래에 필요한 모든 프록시 포인트가 있습니다. 참고: 몇 가지 경우에는 장치 수준의 폴링이 폴링 효율성을 향상시키지 않았습니다. 대상 Modbus 장치가 긴 데이터 응답을 구성하는 데 걸리는 시간이 동등한 데이터에 대한 여러 개의 별도 응답을 처리하는 데 필요한 시간보다 길었습니다 (장치 폴 없이 점수 수준의 폴링). 전형적이지 않지만 Modbus 장치의 성능이 다양할 수 있음을 알아야합니다. 아래의 단계를 수행하십시오. 네브 사이드 바에서 Modbus 장치를 확장하여 장치 폴 구성 슬롯을 볼 수 있습니다 (또는 Modbus 장치의 속성 시트를 열어이 동일한 슬롯을 다른 속성 및 슬롯과 함께 나열 할 수 있습니다). 기존 폴링 항목을 지우려면 작업> 지우기를 클릭하십시오. 단계별로 폴링을 구성하려면 Device Poll Config를 마우스 오른쪽 버튼으로 클릭하고 작업> 최적 장치 폴 구성 학습을 선택하십시오. 그림 6. 작업 최적 장치 폴 구성 학습 알고리즘이 두 개 이상의 연속되는 주소를 가진 Modbus 프록시 포인트를 찾을 때 DevicePollConfigEntry를 만듭니다. 연속되는 Modbus 프록시 포인트 사이에 작은 갭이 있으면 만들어진 DevicePollConfigEntries를 조정하여 작은 갭을 통해 폴을 수행 할 수 있습니다. 최적의 장치 폴링 체계를 찾을 때까지 DevicePollConfigEntries를 만들고 구성하고 제거 할 수 있습니다. 이 작업 학습은 폴링 속성을 설정하는 가장 일반적인 방법입니다. 기존 장치 폴 항목을 교체하거나 기존 장치 폴에 추가 할 수 있습니다. 수동으로 폴링 속성을 편집하려면 폴링 속성을 복제하거나 복사하고 복사본을 편집하십시오.
 
프리셋을 사용하면 목표로 하는 주소화된 데이터 항목에 사전 정의된 값들을 오른쪽 클릭 작업 (명령)을 통해 쓸 수 있습니다. 필요한 경우, 어떤 프리셋 컨테이너의 쓰기 작업을 다른 제어 논리에 연결할 수 있습니다. 예를 들어, 트리거 스케줄의 트리거 슬롯을 ModbusClientPresetRegisters 컨테이너 구성 요소로 연결하여 일정한 스케줄에 따라 자식 프리셋 레지스터에 주기적으로 쓰기를 할 수 있습니다. Modbus 장치의 지정된 코일 및/또는 홀딩 레지스터에 프리셋 값을 쓰려면 링크 가능한 쓰기 작업을 사용하면 됩니다. 이를 위해 장치 하위에 특수 프리셋 구성 요소를 추가할 수 있습니다. 이러한 구성 요소는 실제로 프록시 포인트가 아닙니다. 당신은 modbusAsync 또는 modbusTcp 팔레트에서 그것들을 복사해야 합니다. 드물게, 문자열 데이터를 Modbus 파일에서 읽거나 쓰고 싶을 수도 있습니다. 팔레트에는 이러한 응용 프로그램에 대한 컴포넌트가 있습니다. 이것도 Modbus 장치 하위에 복사할 수 있습니다.
다음 단계를 수행하십시오. Palette 사이드 바에서 modbusAsync 또는 modbusTcp 팔레트를 엽니다. 네브 사이드 바에서 관심있는 클라이언트 Modbus 네트워크를 펼치어 Modbus 장치를 표시합니다. 다음 중 하나를 수행하십시오. 코일 또는 홀딩 레지스터를 구성하려면 프리셋 컨테이너 구성 요소 중 하나를 Nav 사이드 바의 Modbus 장치로 드래그하거나 복사하십시오(또는 열려있는 경우 해당 장치의 속성 시트보기). 코일 및 홀딩 레지스터 모두에 대한 프리셋을 구성하려면 팔레트에서 전체 프리셋 폴더를 복사하십시오. 프리셋 구성 요소는 프록시 포인트가 아니기 때문에, 당신은 그것들을 장치 아래 다른 곳에 두어야 합니다.
참고: 클라이언트 Modbus 장치 하위에 여러 프리셋 컨테이너를 사용하는 경우 프리셋 주소가 겹치지 않도록 주의하십시오. , 특정 프리셋 주소는 하나의 프리셋 컨테이너에만 있어야합니다.
이름 창에서 기본 이름을 허용하거나 대체 이름을 입력하고 확인을 클릭하십시오. 이 폴더는 기본적으로 두 개의 프리셋 컨테이너를 포함하며, 각각 하나의 프리셋 엔트리를 가지고 있습니다. 프리셋 컨테이너를 삭제하거나 복제하고 추가 프리셋 엔트리를 추가 할 수 있습니다.
프리셋 컨테이너에서 시작 주소 및 기타 속성 값을 구성하고 해당 자식 프리셋 엔트리 (코일 또는 레지스터 유형)에 실제 프리셋 값을 입력하십시오.
참고: 팔레트에서 전체 프리셋 폴더를 복사할 필요는 없습니다. 이는 각각 단일 프리셋 엔트리 자식을 가진 두 개의 프리셋 컨테이너를 추가하는 가장 쉬운 방
기본적으로 추가된 클라이언트 프리셋 구성 요소는 슬롯 순서의 맨 아래에 추가됩니다. 프리셋 컨테이너에서 절대 주소에 상대적인 자식 프리셋의 주소 순서를 변경하려면, 프리셋 컨테이너를 마우스 오른쪽 버튼으로 클릭하고 재정렬을 선택하십시오.

 

모드버스 클라이언트 문자열 레코드는 모드버스 파일 레코드의 읽기 및 쓰기를 제공합니다 (모드버스 기능 코드 2021에 대한 클라이언트 측 지원). 입력 및 출력은 바이트 배열로 변환된 문자열입니다. 링크 가능한 쓰기 동작이 활성화되면 쓰기가 수행되고, 링크 가능한 읽기 동작이 활성화되면 읽기가 수행됩니다. Palette 사이드 바에서 modbusAsync 또는 modbusTcp 팔레트를 엽니다. Nav 사이드 바에서 클라이언트 모드버스 네트워크를 확장하여 관심 있는 모드버스 장치를 표시합니다. 팔레트에서 Modbus File Records 폴더를 Nav 사이드 바의 모드버스 장치로 끌어 놓습니다 (또는 해당 장치의 속성 시트 뷰로 끌어 놓습니다). 팝업 이름 창에서 기본적으로 Modbus File Records 이름을 수락하거나 대체 이름을 입력하고 확인을 클릭합니다. 이 폴더가 장치 하위에 추가됩니다. 기본적으로 단일 ModbusClientStringRecord 구성 요소가 포함되어 있습니다. 필요한 경우 여러 파일 레코드 객체를 복제할 수 있습니다.

 

추가된 구성 요소를 더블 클릭하여 속성 시트를 열고, 모드버스 장치 공급 업체 문서에 따라 적절한 구성 값을 입력합니다.
참고: 모든 Modbus File Records 폴더를 복사할 필요는 없습니다. 이것은 필요한 구성 요소를 설명하는 부모 폴더와 함께 추가하는 가장 쉬운 방법일 뿐입니다. ModbusClientStringRecord 구성 요소를 모드버스 장치의 어디에나 배치할 수 있습니다. 그러나 이러한 구성 요소를 Points 컨테이너 아래에 복사하면 Modbus 클라이언트 포인트 관리자 뷰에 표시되지 않습니다.
 
역할은 연결된 모드버스 마스터 장치로부터 수신된 쿼리에 대한 모드버스 슬레이브(서버)로 작동합니다. 각각 고유하게 주소 지정된 ModbusSlaveDevice에서 사용 가능한 모드버스 데이터 항목 (코일, 입력, 입력 레지스터 및 보유 레지스터)의 범위를 지정합니다. 일부 경우에는 하나의 단일 자식 ModbusSlaveDevice만 있으면 역할을 나타냅니다. Modbus 서버 (슬레이브) 장치에는 ModbusSlaveDevice ModbusTcpSlaveDevice가 포함됩니다. 두 장치 모두 역할을 가상 모드버스 슬레이브로 나타냅니다. , 역할은 원격 모드버스 마스터로부터 모드버스 쿼리를 수신하고 응답을 보냅니다. 두 모드버스 서버 장치 모두 하나의 고정된 포인트 장치 확장을 가지고 있으며, 기본적으로 모드버스 서버 포인트 관리자 보기가 있습니다. 포인트 장치 확장 아래에서는 동일한 유형의 모드버스 서버 프록시 포인트가 사용됩니다. 일반적인 장치 슬롯 외에도 두 유형의 모드버스 서버 장치에는 모드버스 구성을위한 유사한 속성이 있습니다. 이것은 모드버스 데이터 항목 및 레지스터 범위 구성의 네트워크 수준 장치 데이터 설정의 재정의를 포함합니다.
 
 
모드버스 장치는 주소 지정 가능한 레지스터에 일시적 (실시간) 데이터와 종종 지속적 (구성) 데이터를 저장합니다. 용어 "레지스터"는 모든 주소 지정 가능한 데이터를 의미하지만, 이는 느슨한 해석입니다. 모드버스 용어를 사용하면, 네 가지 사용 가능한 데이터 플래그 및 레지스터 그룹이 모드버스 서버의 모든 접근 가능한 데이터를 포함합니다. 이것은 모드버스 마스터 접근을 포함합니다.
코일 상태 또는 간단히 코일은 서버 (슬레이브)의 디지털 (부울) 출력의 상태를 나타내는 단일 비트 플래그입니다. , 켜짐/끄기 출력 상태입니다. 모드버스 마스터는 코일을 읽고 쓸 수 있습니다. 입력 상태 또는 간단히 입력은 서버 (슬레이브)의 디지털 (부울) 입력의 상태를 나타내는 단일 비트 플래그입니다. , 켜짐/끄기 입력 상태입니다. 모드버스 마스터는 입력을 읽기만 할 수 있습니다. 입력 레지스터는 모드버스 서버 (슬레이브)에 의해 수집 된 데이터를 저장하는 16비트 레지스터입니다. 모드버스 마스터는 입력 레지스터를 읽기만 할 수 있습니다. 홀딩 레지스터는 모드버스 서버 (슬레이브)에 일반적인 목적의 데이터를 저장하는 16비트 레지스터입니다. 모드버스 마스터는 홀딩 레지스터를 읽고 쓸 수 있습니다. 데이터 주소 모드버스 장치에는 네 가지 데이터 그룹이 포함되어 있지 않을 수 있습니다. 예를 들어, 측정 장치에는 홀딩 레지스터만 포함될 수 있습니다. 그러나 구현된 각 데이터 그룹에 대해 주소 규칙이 사용됩니다. 데이터에 대한 요청 (장치로 전송 됨)은 관심있는 데이터 주소 (및 범위)를 지정해야 합니다.

 

데이터 주소 지정(최소한 10진수 및 16진수 형식에서)0을 기준으로 합니다. 예를 들어, 코일 1의 첫 번째 인스턴스는 항목 번호 0으로 주소 지정됩니다. 또 다른 예로, 홀딩 레지스터 108107(decimal) 또는 006B(hex)으로 주소 지정됩니다. 그러나 공급 업체가 장치의 데이터 항목을 나열할 때 일반적으로 5자리 모드버스 주소를 사용하는 것이 일반적입니다. 예를 들어, 40001로 시작하는 홀딩 레지스터입니다.

 

Group Address convention
Coils 00000 - 0nnnn decimal, or 0x
Inputs 10000 - 1nnnn decimal, or 1x
Input Registers 30000 - 3nnnn decimal, or 3x
Holding Registers 40000 - 4nnnn decimal, or 4x

 

 

Modbus Addr. Units Description Data Type
40001 kWH Energy Consumption, LSW Integer (multiplication required)
40002 kWH Energy Consumption, MSW Integer (multiplication required)
40003 kW Demand (power) Integer (multiplication required)
40004 VAR Reactive Power Integer (multiplication required)
40005 VA Apparent Power Integer (multiplication required)
40006   Integer (multiplication required)
40007 Volts Voltage, line to line Integer (multiplication required)
40008 Volts Voltage, line to neutral Integer (multiplication required)
40009 Amps Current Integer (multiplication required)
40010 kW Demand (power), phase A Integer (multiplication required)
40011 kW Demand (power), phase B Integer (multiplication required)
40012   Demand (power), phase B Integer (multiplication required)
40013 Power Factor, phase A Integer (multiplication required)
40014 Power Factor, phase B Integer (multiplication required)
40015 Power Factor, phase C Integer (multiplication required)
40259 kWH Energy Consumption Float, upper 16 bits
40260 kWH Energy Consumption Float, lower 16 bits
40261 kW Demand (power) Float, upper 16 bits
40262 kW Demand (power) Float, lower 16 bits
연속된 주소 번호매우 일반적으로 모드버스 장치는 특히 관련된 데이터의 경우 연속된 주소를 사용합니다. 예를 들어, 예시에서는 홀딩 레지스터 40001-40015가 각각 별도의 정수 데이터 포인트인 정수 데이터를 위해 연속적으로 사용됩니다.
레지스터 40259는 연속된 부동 소수점 데이터 값을 액세스하기 위해 사용되는 홀딩 레지스터의 연속 시리즈를 시작합니다. 그러나 이 경우에는 주소 간격이 존재합니다. 주소 간격은 필수는 아니지만 장치 공급 업체가 명확성을 위해 구현한 것으로 추정됩니다.
또한, 부동 소수점 데이터 값(32비트 기반)은 각 데이터 포인트마다 두 개의 연속된 레지스터를 사용해야 합니다.
모드버스 메시징은 데이터를 시작 주소와 범위를 사용하여 장치에 대한 쿼리를 지원하며, 이는 데이터 항목이 연속적으로 주소 지정되어 있어야 합니다. 이렇게 하면 여러 데이터 포인트를 검색하는 데 하나의 메시지 응답으로 처리할 수 있어 메시지 효율성이 향상됩니다.
쿼리에서 수신된 모든 데이터 그룹(coils, inputs, input registers, holding registers)의 주소 범위는 수신 장치에서 구현되어야 합니다. 그렇지 않으면 장치는 예외 응답을 생성합니다. 예를 들어, 테이블에 나와 있는 장치에 대한 홀딩 레지스터 40003-40015의 읽기 요청은 정상 응답(데이터 값)을 받지만, 레지스터 40003-40017에 대한 유사한 요청은 잘못된 데이터 주소 응답을 생성합니다(홀딩 레지스터 40016 17이 구현되어 있지 않기 때문).
모드버스 드라이버 통합은 두 가지 방식으로 연속적으로 주소 지정된 데이터를 사용합니다:
New point 창은 Number to Add 속성을 제공하여 포인트 레지스터 번호를 연속적으로 할당합니다.
클라이언트 장치의 데이터 폴링은 하나의 메시지에서 연속적으로 주소 지정된 항목의 데이터 값을 요청함으로써 개선될 수 있습니다. 이는 네트워크 메시지 트래픽을 줄입니다
Consecutive address numbering
Within any particular data group (coils, inputs, input registers, holding registers), it is typical for a Modbus device to use consecutive addresses, particularly for related data. For example, in the example, holding registers 40001-40015 are used consecutively for integer data, where each is a separate, integer, data point.
Register 40259 begins a consecutive series of holding registers used to access floating point data values. However, an address gap exists in this case. The address gap (while not necessary), was probably implemented by the device vendor for clarity.
Also, floating-point data values (being 32-bit based) require the use of two consecutive registers for each data point.
Modbus messaging supports device queries for data using both a starting address and range, which is dependent on data items being consecutively addressed. This allows for message efficiency when retrieving multiple data points, as it can be handled in one message response.
The address range for data in any data group (coils, inputs, input registers, holding registers) received in a query must be implemented by the receiving device—otherwise, it will generate an exception response. For example, a read request of holding registers 40003—40015 to the device represented by in the table receives a normal response (data values), while a similar request to registers 40003-40017 results in an illegal data address response (as holding registers 40016 and 17 are not implemented).
A Modbus driver integration makes use of consecutively addressed data in two ways:
The New point window provides a Number to Add property, which assigns point register numbers in consecutive order.
Data polling in a client device may be improved by using device polls, where data values in consecutively addressed items are requested in a single message. This reduces network messaging traffic.
ChatGPT

 

 

Modules

To use this driver, you must have a target host (remote controller) that is licensed for the feature modbus, or a PC host, which acts as a Modbus Supervisor. The Supervisor must also be licensed for modbus).

The driver provides four Modbus modules. Each supports a different type of network.

 

 

NOTE: Device types are specific to a particular parent network type—for example, you cannot copy a ModbusSlaveDevice under a ModbusTcpSlaveNetwork, or a ModbusTcpSlaveDeviceunder a ModbusSlaveNetwork. This is not a problem when working in the device manager for either of the slave networks, as the New function (to add devices) automatically selects the proper child device component.
Click the New button.
The New window opens. The driver preselects the Type to Add based on the network type (ModbusAsyncDevice, ModbusTcpDevice, or ModbusTcpGatewayDevice).
Enter for number to add: 1 (or more, if multiple) and click OK.
A second New window opens with additional properties to configure the Modbus. The default values should be sufficient at least to start with, except that:
Async, TCP/IP Gateway and slave devices require a unique Modbus address between 1-247. This address must be unique from any other physical device on that network.
TCP/IP devices require a unique IP address (the device’s Modbus address can remain at 1).
TCP/IP devices that use a TCP port other than the standard 502 port require port definition.
You might leave these properties at their defaults, particularly if different devices use the same settings—in which case you could adjust them (globally) at the network level.
Enter the device address in the Starting Address property, and click OK.
You should see the device(s) listed in the Modbus device manager view with a status of {ok} and enabled set to true.
If a device shows {down}, check the configuration of the network and/or the device addresses.
To confirm or modify device properties, double-click the device row in the device manager view.
After making any changes, click Save.
Right-click the device row in the device manager and click Actions > Ping
Receiving any response from the device, including an exception response, is considered proof of communication. If the system reported that the device was previously {down}, any ping response is good news.
The default ping address for a client Modbus device is for the first (40001 Modbus) holding register value (integer). Often this address works well without an exception response. However, it is recommended that you confirm this ping address, and, if necessary, change in the device’s property sheet