모드버스

Modbus

Modbus는 원래 1979년 Modicon(현 Schneider Electric)에서 프로그래머블 로직 컨트롤러(PLC)와 함께 사용하기 위해 발행한 데이터 통신 프로토콜입니다.Modbus는 사실상의 표준 통신 프로토콜이 되었고 현재 산업용 전자 장치를 연결하는 [1]데 일반적으로 이용 가능한 수단이 되었습니다.

Modbus는 공개적으로 출판되고 로열티가 없기 때문에 산업 환경에서 인기가 있습니다.산업용 애플리케이션용으로 개발되었으며, 다른 표준에 비해 배치 및 유지보수가 비교적 용이하며 전송되는 데이터의 형식에 제한이 거의 없습니다.

Modbus 프로토콜은 문자 직렬 통신 회선, 이더넷 또는 인터넷 프로토콜 집합을 전송 계층으로 사용합니다.Modbus는 동일한 케이블 또는 이더넷 네트워크에 연결된 여러 장치와의 통신을 지원합니다.예를 들어, 온도를 측정하는 장치와 동일한 케이블에 연결된 습도를 측정하는 다른 장치가 있을 수 있습니다. 두 장치 모두 Modbus를 통해 동일한 컴퓨터에 측정값을 전달합니다.

Modbus는 플랜트/시스템 감시 컴퓨터와 감시 제어 및 데이터 수집(SCADA) 시스템의 Remote Terminal Unit(RTU; 리모트 터미널 유닛)을 접속하기 위해 자주 사용됩니다.데이터 타입의 대부분은 공장 디바이스의 산업용 제어(드라이더 로직 등)에 의해 명명됩니다.단일 비트의 물리 출력을 코일이라고 하고, 단일 비트의 물리 입력을 이산 입력 또는 접점이라고 합니다.

Modbus 프로토콜의 개발 및 업데이트는 Schneider Electric이 권한을 [3]이양한 2004년 4월부터 Modbus[2] Organization에 의해 관리되어 왔습니다.Modbus Organization은 Modbus 준거 디바이스의 사용자 및 공급업체의 연합체로서,[4] 테크놀로지의 계속적인 사용을 지지합니다.Modbus Organization, Inc.는 Modbus [2]프로토콜의 홍보 및 개발을 위한 무역 협회입니다.

제한 사항

  • Modbus는 1970년대 후반에 프로그램 가능한 로직 컨트롤러와 통신하도록 설계되었기 때문에, 데이터 타입의 수는 당시 PLC에 의해 이해된 것으로 제한됩니다.큰 바이너리 개체는 지원되지 않습니다.
  • 예를 들어 레지스터 값이 30도에서 175도 사이의 온도를 나타내는 것을 학습하는 등 노드가 데이터 객체의 설명을 찾는 표준 방법은 존재하지 않습니다.
  • Modbus는 클라이언트/서버(이전 마스터/슬레이브)[5] 프로토콜이기 때문에 클라이언트노드는 정기적으로 각 필드 디바이스를 폴링하고 데이터 변경을 찾아야 하므로 필드 디바이스가 이벤트핸들러 메커니즘(오픈모버스라고 불리는 이더넷 TCP/IP 경유 제외)에 의해 데이터를 취득할 수 없습니다.이로 인해 저비트레이트 무선 링크 등 대역폭이 비쌀 수 있는 어플리케이션에서는 대역폭과 네트워크 시간이 소비됩니다.
  • Modbus는 1개의 데이터 링크 상의 247개의 디바이스로 제한되어 있습니다.이것에 의해, 부모 스테이션에 접속할 수 있는 필드 디바이스의 수가 제한됩니다(이더넷 TCP/IP 는 예외입니다).
  • Modbus 프로토콜 자체는 [6]승인되지 않은 명령이나 데이터 가로채기에 대한 보안을 제공하지 않습니다.

Modbus 객체 유형

Modbus 서버가 Modbus 클라이언트 디바이스에 [7]제공할 수 있는 오브젝트 유형은 다음과 같습니다.주소는 원래 Modicon 사양을 나타냅니다.현재 표준에서는 코일 또는 레지스터를 읽거나 쓰는 데 사용되는 명령에 의해 식별되는 개체 유형을 사용하여 주소가 0 - 65535일 수 있습니다.

오브젝트 타입 접근 크기 주소 공간
코일 읽기/쓰기 1비트 00001 – 09999
이산 입력 읽기 전용 1비트 10001 – 19999
입력 레지스터 읽기 전용 16비트 30001 – 39999
보유대장 읽기/쓰기 16비트 40001 – 49999

프로토콜 버전

Modbus 프로토콜 버전은 직렬 포트, 이더넷 및 인터넷 프로토콜 스위트를 지원하는 기타 프로토콜용으로 존재합니다.Modbus 프로토콜에는 다음과 같은 다양한 종류가 있습니다.

  • Modbus RTU(원격 단말 장치) – 시리얼 통신에 사용되며 Modbus에서 가장 일반적으로 사용할 수 있는 구현입니다.Modbus RTU는 프로토콜 통신을 위해 데이터의 소형 바이너리 표현을 사용합니다.RTU 형식은 데이터의 신뢰성을 보장하기 위한 오류 검사 메커니즘으로 주기적 용장성 검사 체크섬을 사용하여 명령/데이터를 따릅니다.Modbus RTU 메시지는 문자 간 헤지 없이 계속 전송해야 합니다.Modbus 메시지는 아이돌(사일런트) 기간별로 프레임화(분리)됩니다.
  • Modbus ASCII – 시리얼 통신에 사용되며 프로토콜 통신에 ASCII 문자를 사용합니다.ASCII 형식에서는 세로 용장성 체크섬을 사용합니다.Modbus ASCII 메시지는 선행 콜론(":") 및 후행 줄바꿈(CR/LF)에 의해 프레임화됩니다.
  • Modbus TCP/IP 또는 Modbus TCP – TCP/IP 네트워크를 통한 통신에 사용되는 Modbus 변형으로 포트 502를 [8]통해 연결합니다.하위 계층은 이미 체크섬 보호를 제공하므로 체크섬 계산이 필요하지 않습니다.
  • Modbus over TCP/IP, Modbus over TCP 또는 Modbus RTU/IP: Modbus RTU와 마찬가지로 체크섬이 payload에 포함되어 있다는 점에서 Modbus TCP와는 다른 변종입니다.
  • Modbus over UDP – 일부에서는 IP 네트워크에서 Modbus over UDP를 사용하여 [9]TCP의 오버헤드를 제거하는 실험을 했습니다.
  • Modbus Plus (Modbus+, MB+ 또는 MBP)– Modbus Plus는 Schneider Electric 전용으로 다른 모델과 달리 여러 클라이언트 [10]간의 피어 투 피어 통신을 지원합니다.고속 HDLC와 같은 토큰 순환을 처리하려면 전용 코프로세서가 필요합니다.1Mbit/s의 트위스트 페어를 사용하며 각 노드에 변압기 분리를 포함하므로 전압/레벨 트리거 대신 전환/에지 트리거가 됩니다.Modbus Plus를 컴퓨터에 연결하려면 특수 하드웨어가 필요합니다.일반적으로 ISA, PCI 또는 PCMCIA 버스용 카드입니다.
  • Pemex Modbus – 이력 및 흐름 데이터를 지원하는 표준 Modbus의 확장입니다.Pemex 정유 및 가스 회사에서 프로세스 제어에 사용하도록 설계되었으며 널리 채택된 적은 없습니다.
  • Enron Modbus – 32비트 정수 및 부동소수점 변수, 이력 및 흐름 데이터를 지원하는 Enron이 개발한 표준 Modbus의 또 다른 확장입니다.데이터 유형은 표준 [11]주소를 사용하여 매핑됩니다.과거 데이터는 데이터 [citation needed]저장 방법에 대한 미국석유협회(API) 산업 표준을 충족합니다.

데이터 모델과 함수 호출은 위의 첫 번째 4가지 변형에서 동일합니다.캡슐화만 다릅니다.단, 배리언트는 상호 운용이 불가능하며 프레임 형식도 사용할 수 없습니다.

통신 및 장치

Modbus 상에서 통신(즉, 데이터 전송)하는 각 디바이스에는, 일의의 주소가 부여된다.

Modbus RTU, Modbus ASCII 및 Modbus Plus(모두 RS-485 싱글케이블 멀티드롭 네트워크)에서는 클라이언트로 할당된 노드만 명령을 시작할 수 있습니다.다른 디바이스는 모두 서버이며 요구 및 명령에 응답합니다.

Modbus TCP와 같은 이더넷을 사용하는 프로토콜의 경우, 모든 장치가 Modbus 명령을 전송할 수 있으며, 따라서 일반적으로 하나의 장치만 클라이언트 역할을 합니다.

Modbus는 단순하고 자주 복사되는 프로토콜이기 때문에 많은 모뎀과 게이트웨이가 Modbus를 지원합니다.그 중 일부는 이 프로토콜을 위해 특별히 고안되었습니다.ISM 무선 대역 등 다양한 실장에서는 유선 또는 무선 통신을 사용하고 있습니다.또, Short Message Service(SMS; 단문 메시지서비스)나 General Packet Radio Service(GPRS; 일반 패킷무선 서비스)도 사용합니다.무선 네트워크의 일반적인 설계에서는, 메쉬 네트워크를 사용하고 있습니다.설계자가 극복해야 하는 일반적인 문제에는 지연 시간이 긴 문제와 타이밍 문제가 있습니다.

명령어

Modbus 명령은 Modbus 장치에 다음을 지시할 수 있습니다.

  • 코일 및 홀딩 레지스터에 기록된 레지스터 중 하나의 값을 변경합니다.
  • I/O 포트 읽기: 이산 입력 또는 코일에서 데이터 읽기
  • 장치에 코일 및 홀딩 레지스터에 포함된 하나 이상의 값을 반환하도록 명령합니다.

Modbus 명령에는 대상 장치(1~247)의 Modbus 주소가 포함됩니다.다른 디바이스가 수신해도, 주소 지정된 디바이스만이 응답해 커맨드로 동작합니다(노드0 에 송신되는 브로드캐스트 가능한 커맨드는 예외입니다).이 커맨드는, 동작은 행해지지만, 응답은 행해지지 않습니다.

모든 Modbus 명령에는 수신자가 전송 오류를 검출할 수 있도록 체크섬 정보가 포함되어 있습니다.

프레임 형식

Modbus "프레임"은 Protocol Data Unit(PDU)[8]를 캡슐화하는 Application Data Unit(ADU)로 구성됩니다.

  • ADU = Address + PDU + Error Check(주소 + PDU + 오류 검사).
  • PDU = 기능 코드 + 데이터.

Modbus 데이터 프레임에서는 멀티바이트 값의 최상위 바이트가 다른 바이트보다 먼저 전송됩니다.

모든 Modbus 바리안트는 다음 프레임 형식 [1]중 하나를 사용합니다.

Modbus RTU 프레임 형식

이 형식은 주로 RS-485/EIA-485 등의 비동기 시리얼 데이터 회선에서 사용됩니다.그 이름은 리모트 단말 유닛을 나타냅니다.

이름. 길이(비트) 기능.
시작 3.5 x 8 적어도3+1µ2 문자의 무음 회수(28비트) (마크 조건)
주소. 8 스테이션 어드레스
기능. 8 기능 코드(예: "코일 읽기")를 나타냅니다.
데이터. n × 8 메시지 유형에 따라 데이터 + 길이가 채워집니다.
CRC 16 주기적 용장성 검사
끝. 3.5 x 8 프레임간 무음(28비트)의 최소 3+1µ2 문자 회수(마크 조건)

CRC 계산:

  • 다항식: x16 + x152 + x + 1 (CRC-16-ANSI라고도 함, 정규 16진수 대수 다항식 존재)8005반전된A001).
  • 초기값: 65,535.
  • 16진수 프레임의 예:01 04 02 FF FF B8 80(CRC-16-ANSI 계산에서는 5바이트의 경우,01로.FF주다80B8최하위 바이트가 먼저 전송됩니다).

Modbus ASCII 프레임 형식

주로 7비트 또는8비트의 비동기 시리얼 회선에서 사용됩니다.

이름. 길이(바이트) 기능.
시작 1 콜론:(ASCII 값 3A16)
주소. 2 스테이션 어드레스
기능. 2 기능 코드(예: "코일 읽기")를 나타냅니다.
데이터. n × 2 메시지 유형에 따라 데이터 + 길이가 채워집니다.
LRC 2 체크섬(종방향 용장성 검사)
끝. 2 캐리지 리턴 + 라인 피드(CR/LF) 쌍(ASCII 값 0D16 및 0A16)

Address, Function, Data 및 LRC는 ASCII 16진수 부호화 값입니다.여기서 8비트 값(0~255)은 0~9 및 A~F 범위의 2개의 인간이 판독 가능한 ASCII 문자로 부호화됩니다.예를 들어, 122(7A16)의 값은 2개의 ASCII 문자 「7」과 「A」로 부호화되어 2바이트로 송신됩니다.55(3716, "7"의 ASCII 값) 및65(4116, "A"의 ASCII 값).

LRC는 8비트 값의 합계(시작 문자와 끝 문자 제외)로 계산되며, 부정(2의 보완 문자) 및 8비트 값으로 인코딩됩니다.예를 들어 Address, Function 및 Data가 247, 3, 19, 137, 0 및 10인 경우 두 합계의 합(416)은 -416입니다. 이 합계는 8비트로 트리밍되어 96(256 × 2 - 41616 = 60)이며, 다음과 같은 17 ASCII 문자 프레임을 제공합니다.:F7031389000A60␍␊. LRC는 체크섬으로만 사용하도록 지정됩니다. 전송되는 문자가 아닌 인코딩된 데이터에 따라 계산되기 때문에 LRC의 '종방향' 특성은 패리티 비트와 함께 사용하여 단일 비트 오류를 찾을 수 없습니다.

Modbus TCP 프레임 형식

주로 이더넷네트워크에서 사용됩니다.

이름. 길이(바이트) 기능.
트랜잭션 식별자 2 서버와 클라이언트 메시지 간의 동기화
프로토콜 식별자 2 Modbus/TCP의 경우 0
[ Length ]필드 2 이 프레임의 나머지 바이트 수
유닛 식별자 1 서버 주소(미사용시 255)
기능코드 1 다른 모델과 마찬가지로 기능 코드
데이터 바이트 n 응답 또는 명령으로서의 데이터

장치 식별자는 Modbus/TCP와 Modbus RTU 게이트웨이 등 여러 Modbus 디바이스의 컴포지트인 Modbus/TCP 디바이스와 함께 사용됩니다.이 경우 유닛 ID는 게이트웨이 배후에 있는 디바이스의 Server Address 입니다.Modbus/TCP 지원 디바이스는 일반적으로 장치 식별자를 무시합니다.

기능 및 명령어

Modbus 서버의 주요 개념 엔티티는 다음과 같습니다.

  • 코일: 판독 및 쓰기 가능, 1비트(오프/온)
  • 전용 입력: 읽기 전용, 1비트(오프/온)
  • 입력 레지스터: 읽기 전용 측정 및 상태, 16비트(0~65,535)
  • Holding Registers: 판독 및 쓰기 가능한 구성값, 16비트(0~65,535)

이러한 엔티티를 읽고 쓰는 명령어가 다음 [7]표에 요약되어 있습니다.가장 기본적인 읽기 및 쓰기는 굵은 글씨로 표시됩니다.

일부 소스는 표준과 다른 용어를 사용합니다(: 쓰기 단일 코일 대신 Force Single Coil).[12]

Modbus 기능 코드
기능 유형 기능명 기능코드 댓글
데이터 액세스 비트 액세스 물리적인 개별 입력 개별 입력 읽기 2
내부 비트 또는 물리 코일 코일을 읽다 1
단일 코일 쓰기 5
여러 코일의 쓰기 15
16비트 액세스 물리 입력 레지스터 입력 레지스터 읽기 4
내부 레지스터 또는 물리 출력 레지스터 여러 개의 보류 레지스터 읽기 3
단일 보류 레지스터 쓰기 6
여러 개의 보류 레지스터 쓰기 16
여러 레지스터 읽기/쓰기 23
마스크 쓰기 레지스터 22
FIFO 큐 읽기 24
파일 레코드 액세스 파일 레코드 읽기 20
파일 레코드 쓰기 21
진단 예외 상태 확인 7 시리얼만
진단 8 시리얼만
COM 이벤트 카운터 가져오기 11 시리얼만
COM 이벤트 로그 가져오기 12 시리얼만
보고서 서버 ID 17 시리얼만
디바이스 식별 확인. 43
다른. 캡슐화 인터페이스 전송 43

요청 및 응답 형식

요구 및 응답은 위에서 설명한 프레임 형식을 따릅니다.이 섹션에서는 가장 자주 사용되는 기능 코드의 데이터 형식에 대해 자세히 설명합니다.

기능 코드 1(코일 읽기) 및 2( 이산 입력 읽기)

요청:

  • 읽을 첫 번째 코일/분리 입력 주소(16비트)
  • 읽을 코일/분리 입력 수(16비트)

일반 응답:

  • 이어지는 코일/이산 입력 값의 바이트 수(8비트)
  • 코일/이산 입력 값(바이트당 코일/이산 입력 8개)

각 코일/콘크리트 입력의 값은 이진수입니다(꺼지면 0, 켜지면 1).첫 번째 요청된 코일/콘크리트 입력은 응답에 첫 번째 바이트의 최소 유의 비트로 기억된다.코일/분리 입력 수가 8의 배수가 아닐 경우 마지막 바이트의 가장 중요한 비트가 0으로 채워집니다.

예를 들어, 11개의 코일이 요청된 경우 2바이트의 값이 필요합니다.이러한 연속 코일의 상태가 켜짐, 꺼짐, 꺼짐, 꺼짐, 켜짐, 켜짐, 꺼짐, 켜짐, 켜짐, 켜짐, 켜짐이라고 가정하면 반응은 다음과 같습니다.02 E5 0616진수로 표시됩니다.

응답 메시지에서 반환되는 바이트 수는 8비트 폭에 불과하고 프로토콜 오버헤드는 5바이트이므로 최대 2008(251 x 8)의 이산 입력 또는 코일을 한 번에 읽을 수 있습니다.

기능 코드 5(단일 코일 강제/쓰기)

요청:

  • 코일 주소(16비트)
  • 강제/기입할 값: 꺼짐의 경우 0, 켜짐의 경우 65,280(16진수의 경우 FF00)

일반 응답: 요청과 동일합니다.

기능 코드 15(복수의 코일을 강제/기입)

요청:

  • 강제/기입하는 첫 번째 코일의 주소(16비트)
  • 강제/기입할 코일 수(16비트)
  • 이어지는 코일 값의 바이트 수(8비트)
  • 코일 값(바이트당 8 코일 값)

각 코일의 값은 이진수입니다(꺼지면 0, 켜지면 1).첫 번째 요구 코일은 요구 시 첫 번째 바이트의 최하위 비트로 기억된다.코일 수가 8의 배수가 아닐 경우 마지막 바이트의 가장 중요한 비트는 0으로 채워야 합니다.기능 코드 1과 2에 대해서는, 예를 참조해 주세요.

일반 응답:

  • 첫 번째 코일 주소(16비트)
  • 코일 수(16비트)

기능 코드 4(입력 레지스터 읽기) 및 3(유지 레지스터 읽기)

요청:

  • 읽을 첫 번째 레지스터 주소(16비트)
  • 읽을 레지스터 수(16비트)

일반 응답:

  • 이어지는 레지스터 값의 바이트 수(8비트)
  • 레지스터 값(레지스터당 16비트)

Modbus PDU의 최대 길이는 253(RS485의 최대 Modbus ADU 길이 256에서 유도)이므로 RTU 형식을 사용할 경우 한 번에 최대 125개의 레지스터를 요구할 수 있으며 [7]TCP를 통해 최대 123개의 레지스터를 요구할 수 있습니다.

기능 코드 6(단일 홀딩 레지스터 사전 설정/쓰기)

요청:

  • 사전 설정/기입에 대한 보류 레지스터 주소(16비트)
  • 홀딩 레지스터의 새 값(16비트)

일반 응답: 요청과 동일합니다.

기능 코드 16(복수의 보류 레지스터를 사전 설정/쓰기)

요청:

  • 사전 설정/기입에 대한 첫 번째 홀딩 레지스터 주소(16비트)
  • 사전 설정/기입할 보류 레지스터 수(16비트)
  • 이어지는 레지스터 값의 바이트 수(8비트)
  • 보류 레지스터의 새로운 값(레지스터당 16비트)

Modbus PDU의 최대 길이는 253(RS485의 최대 Modbus ADU 길이 256에서 유도)이므로 한 [7]번에 최대 123개의 레지스터를 쓸 수 있습니다.

일반 응답:

  • 첫 번째 사전 설정/쓰기 홀딩 레지스터 주소(16비트)
  • 사전 설정/쓰기된 보류 레지스터 수(16비트)

예외 응답

통상의 응답에서는, 서버는 기능 코드를 반복합니다.서버가 오류를 보고할 경우 요청된 기능 코드와 128(16진수)을 더한 응답을 합니다.0x80) (3은 131 = 16진수)0x83예외 코드라고 불리는 1바이트의 데이터만 포함합니다.

주 Modbus 예외 코드

코드 본문 세부 사항
1 부정한 기능 쿼리에서 받은 함수 코드가 인식되지 않거나 서버에서 허용되지 않습니다.
2 잘못된 데이터 주소 일부 또는 모든 필수 엔티티의 데이터 주소가 허용되지 않거나 서버에 없습니다.
3 잘못된 데이터 값 값이 서버에서 수락되지 않았습니다.
4 서버 디바이스 장애 서버가 요청된 작업을 수행하는 동안 복구할 수 없는 오류가 발생했습니다.
5 인정하다 서버가 요청을 수락하고 처리 중이지만 오랜 시간이 필요합니다.이 응답은 클라이언트에서 타임아웃 오류가 발생하는 것을 방지하기 위해 반환됩니다.다음으로 클라이언트는 Poll Program Complete 메시지를 발행하여 처리가 완료되었는지 여부를 판단할 수 있습니다.
6 서버 디바이스 사용 중 서버가 long-duration 명령어 처리에 관여하고 있습니다.클라이언트는 나중에 재시도해야 합니다.
7 부정 확인 서버가 프로그래밍 기능을 수행할 수 없습니다.클라이언트는 서버에 진단 정보 또는 오류 정보를 요구합니다.
8 메모리 패리티 오류 서버가 메모리에서 패리티 오류를 검출했습니다.클라이언트는 요청을 재시도할 수 있지만 서버 디바이스에 서비스가 필요할 수 있습니다.
10 게이트웨이 경로를 사용할 수 없음 Modbus 게이트웨이 전용입니다.잘못 설정된 게이트웨이를 나타냅니다.
11 게이트웨이 타깃디바이스가 응답하지 않음 Modbus 게이트웨이 전용입니다.서버가 응답하지 않을 때 전송됩니다.

엔티티 번호 및 주소

Modbus 조직은 Modbus Application Protocol v1.1b에서 [7]다음을 언급합니다.

  • Modbus 애플리케이션 프로토콜은 PDU 주소 지정 규칙을 정의합니다.PDU 에서는, 각 데이터 항목은 0 ~65535 의 범위에서 행선지 지정됩니다.
  • 또한 1부터 n까지 번호가 매겨진 여러 요소로 구성된 4개의 블록으로 구성된 MODBUS 데이터 모델을 정의합니다.
  • 그 Modbus 데이터 모델에서 데이터 블록 이내에 각 요소 1 위한 딱딱한까지의 수로 되어 있

어떤 규칙(코일, 불연속 입력 입력 레지스터를 유지해 등록)참조하는 어떻게Modbus 실체를 지배한다.

그것은 실체 번호와 법인 주소의 구분을 만드는 중요하다.

  • 엔티티 수는 기술 테이블 내에서 엔티티 유형과 실체 위치가 결합되어 있다.
  • 엔티티 주소는 시작 주소 Modbus 프레임의 데이터 부분에서 16비트 값 065,535(0000FFFF는 패킷에)에 이르기까지.

전통적인 convention[표창 필요한]에서, 주체 번호 숫자의 형식을 나타내는, 4자리는 실체 위치를 대표하는 등 다음으로:시작한다.

  • Coils 숫자 0과 00001 09999,까지 걸쳐지기 시작한다.
  • 불연속 입력 숫자를 1로 그리고 10001 19999,까지 걸쳐지기 시작한다.
  • 보류 레지스터 번호 4로 깨끗합니다 40001 49999에서 시작한다.

데이터 통신을 위해 회사 위치(19,999에)를0-based 기관 주소로 1를 빼면(0으로 9,998)번역되었습니다.위해 등록 번호 40001에서 시작하여를 들고 읽기 예를 들어 데이터 프레임 기능 부호 3(로 위)과 주소 0이 포함됩니다.등록 번호 40100, 주소가 될 것이다 99에서 시작하여 들고 있는 권한입니다.

이 9,999에 각 사업체에 대한 주소의 수를 제한하다.A사실상의 표준 65,536[13]는 종전의 목록에 한 자릿수를 첨가하여:이 연장한다.

  • 코일 숫자 000001 065536,까지 광범위합니다.
  • 불연속 입력 숫자를 100001 165536,까지 광범위합니다.
  • 입력 레지스터 번호는 300001 ~365536 입니다.
  • 보류 레지스터 번호는 400001 ~465536 범위입니다

확장 참조를 사용할 경우 코일과 다른 개체 간의 혼동을 방지하기 위해 모든 번호 참조에 정확히 6자리가 있어야 합니다.예를 들어 홀딩 레지스터 #40001과 코일 #40001을 구별하려면 코일 #40001이 대상인 경우 #040001로 나타나야 합니다.

데이터 주소를 메모하는 또 다른 방법은 16진수 값을 사용하는 것입니다.이 값을 사용하면 앞서 설명한 기존 표기법에서4 자리수의 사용이 명확하게 됩니다.

  • 코일 번호 범위는 0x0000 ~0xFF입니다FF
  • 1x0000 ~1xFFF 범위의 개별 입력 번호
  • 입력 레지스터 번호는 3x0000 ~3xFFF 범위입니다.
  • 보류 레지스터 번호의 범위는 4x0000 ~4xFFF입니다

이 표기법의 장점은 Modbus 패킷을 디코딩할 때 동일한 번호가 검출된다는 것입니다.

JBUS 매핑

Modbus와 밀접하게 관련된 또 다른 사실상의 프로토콜은 1985년 프랑스 회사 르노 오토메이션과 Merlin Gerin et Cie의 협업 노력의 결과인 PLC 제조업체 April Automatics에 의해 정의되었습니다.이 프로토콜은 1994년 AEG Schneider Automation이 사들인 후 폐지된 4월 PLC 시리즈와 함께 거의 사라졌기 때문에 당시 Modbus와 JBUS의 차이(엔티티 수, 서버 스테이션)는 이제 관계가 없습니다.그러나 JBUS라는 이름은 어느 정도 남아 있습니다.

JBUS는 기능 코드 1, 2, 3, 4, 5, 6, 15 및 16을 지원합니다.다만, 번호는 다릅니다만, 상기의 모든 엔티티를 서포트합니다.

  • 번호와 주소가 일치: 엔티티 #x의 데이터 프레임에 주소 x가 있습니다.
  • 따라서 기업번호는 기업유형을 포함하지 않는다.예를 들어 Modbus의 Holding 레지스터 #40010은 JBUS의 주소 9에서 레지스터 #9를 유지합니다.
  • 번호 0(따라서 주소 0)은 지원되지 않습니다.서버는 이 번호와 주소로 실제 데이터를 구현하지 않아야 하며, 요구 시 늘 값을 반환하거나 오류를 발생시킬 수 있습니다.

실장

거의 모든 구현에는 공식 표준과 다른 종류가 있습니다.다른 공급업체의 장비 간에 서로 다른 종류가 올바르게 전달되지 않을 수 있습니다.가장 일반적인 변형은 다음과 같습니다.

  • 데이터형
    • IEEE 754 부동 소수점 번호
    • 32비트 정수
    • 8비트 데이터
    • 혼합 데이터 유형
    • 정수 비트 필드
    • 정수로/정수로 데이터를 변경하는 승수. 10, 100, 1000, 256, ...
  • 프로토콜 확장
    • 16비트 서버 주소
    • 32비트 데이터 크기(1주소 = 32비트 데이터 반환)
    • 워드 스왑 데이터

모드버스 플러스

이름에도 불구하고[14] Modbus Plus는 Modbus의 변종이 아닙니다.토큰 전달과 관련다른 프로토콜입니다.이는 Schneider Electric의 특허 사양이지만 특허가 아닌 미공개 사양입니다.일반적으로 Schneider 파트너만 사용할 수 있는 커스텀 칩셋을 사용하여 구현됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Drury, Bill (2009). Control Techniques Drives and Controls Handbook (PDF) (2nd ed.). Institution of Engineering and Technology. pp. 508–.
  2. ^ a b "Modbus home page". Modbus. Modbus Organization, Inc. Retrieved 2 August 2013.
  3. ^ "Modbus FAQ". Modbus. Modbus Organization, Inc. Retrieved 1 November 2012.
  4. ^ "About Modbus Organization". Modbus. Modbus Organization, Inc. Retrieved 8 November 2012.
  5. ^ Modbus Organization, 마스터 슬레이브를 클라이언트 서버로 대체(프레스 릴리즈)
  6. ^ Palmer; Shenoi, Sujeet, eds. (23–25 March 2009). Critical Infrastructure Protection III. Third IFIP WG 11. 10 International Conference. Hanover, New Hampshire: Springer. p. 87. ISBN 978-3-642-04797-8.
  7. ^ a b c d e "Modbus Application Protocol V1.1b3" (PDF). Modbus. Modbus Organization, Inc. Retrieved 2 August 2013.
  8. ^ a b Modbus Messaging on TCP/IP Implementation Guide V1.0b (PDF), Modbus Organization, Inc., October 24, 2006, retrieved 2017-01-07
  9. ^ "Java Modbus Library - About". 2010. Retrieved 2017-02-07.
  10. ^ "What is the difference between Modbus and Modbus Plus?". Schneider Electric. Retrieved 2017-02-07.
  11. ^ "Simply Modbus - About Enron Modbus". Simply Modbus. Retrieved 2017-02-07.
  12. ^ Clarke, Gordon; Reynders, Deon (2004). Practical Modern Scada Protocols: Dnp3, 60870.5 and Related Systems. Newnes. pp. 47–51. ISBN 0-7506-5799-5.
  13. ^ "Modbus 101 – Introduction to Modbus". Control Solutions, Inc.
  14. ^ "Modbus Plus - Modbus Plus Network - Products overview - Schneider Electric United States". Schneider-electric.com. Retrieved 2014-01-03.

외부 링크

사양

다른.