콘텐츠로 이동
무료 평가 시작

PDComm Modbus 지원 기능

PDComm Modbus SDK는 SECS/GEM SDK와 독립된 라이브러리(pdcomm_modbus_ffi)와 실행 파일로 제공됩니다. 한 엔드포인트(endpoint)는 클라이언트, 서버, 게이트웨이 중 하나로 동작하며 모든 조작을 JSON 명령으로 합니다.

구성 요소 설명
C ABI include/pdcomm/modbus/pdcomm_modbus.h. pdcomm_modbus_call에 JSON 명령을 넘깁니다.
C++ 래퍼 pdcomm_modbus.hpp의 Endpoint. 헤더만으로 씁니다.
Qt·MFC 어댑터 bindings/qt의 QtEndpoint, bindings/mfc의 MfcEndpoint
.NET 바인딩 bindings/dotnet/PDComm.Modbus의 Endpoint
시뮬레이터 GUI PDComm Modbus Simulator. 6개 작업 탭으로 서버, 클라이언트, 게이트웨이를 시험합니다.
헤드리스 시뮬레이터 pdcomm-modbus-headless. 표준 입출력 JSON과 시나리오 파일로 동작합니다.
MCP 서버 pdcomm-modbus-mcp. AI 도구가 같은 명령을 MCP 도구로 호출합니다.

GUI, 헤드리스, MCP, SDK는 같은 서비스 코드와 같은 명령, 모델, 프로젝트 형식을 씁니다. 다만 프로세스마다 독립된 세션입니다. MCP 서버를 시작해도 이미 켜 둔 GUI에 붙지 않습니다.

영역 지원 내용
전송 Modbus TCP, RTU, ASCII
역할 클라이언트, 서버, TCP→RTU/ASCII 게이트웨이
기능 코드 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 15, 16, 17, 20, 21, 22, 23, 24, 43(MEI 14)
진단 하위 기능 0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20
보안 Modbus/TCP Security: encrypted, authentication_only, 역할 기반 권한, CRL
서버 데이터 모델 네 테이블, 파일 레코드, FIFO 큐, 장치 식별 객체, 서버 ID, 예외 상태
관찰 최근 1000개 요청·프레임 기록(trace), 합성 프레임 해석(fault), 진단 카운터
프로젝트 구성과 데이터 모델을 pdcomm.modbus.project 버전 1 JSON으로 저장·복원
진단 로그 선택형 JSON Lines 로그(PDCOMM_LOG), 기본 꺼짐
항목 값
PDU 253바이트
ADU TCP 260바이트, RTU 256바이트, ASCII 513자
유닛 주소(구성) 1~247
timeout_ms 1~60000
ascii_timeout_ms 1~60000, 기본 1000
turnaround_ms 0~60000, 기본 100
JSON 명령 SDK 호출 최대 16MiB, 헤드리스·MCP 한 줄 최대 1MiB
trace 최근 1000개
fault 입력 4096바이트
TCP 서버 연결 동시 32개, 120초 무통신 시 종료
게이트웨이 대기열 64개, 넘치면 예외 06
항목 동작
TCP 프레임 TCP 전송은 MBAP 헤더를 씁니다.
주소 address에는 IP:포트를 씁니다. 호스트 이름은 애플리케이션이 IP 주소로 바꿔 넘깁니다.
요청 전송 요청은 한 번 보냅니다. 시간이 초과된 요청을 다시 보낼지는 애플리케이션이 정합니다. 쓰기 요청은 장비 상태를 확인한 뒤 다시 보냅니다.
서버 유닛 서버 엔드포인트는 구성의 unit에 응답합니다.
스레드 SDK는 애플리케이션의 스레드에서 동작합니다. 서버와 게이트웨이는 애플리케이션이 poll을 반복하는 동안 응답합니다.
레지스터 값 레지스터는 16비트 정수입니다. 32비트 값은 애플리케이션이 두 레지스터를 묶어 해석합니다.
기본 서버의 예외 응답 MEI 13(CANopen)과 사용자 정의 기능 코드(6572, 100110)에는 예외 01로 응답합니다.
RS-485 방향 제어 송수신 방향 전환은 운영체제와 어댑터가 합니다.

SDK는 제공 프로파일에 따라 TCP, RTU, ASCII, Security 중 일부만 포함할 수 있습니다. 빌드에 없는 전송이나 보안을 구성하면 Protocol is excluded from this build 오류가 납니다. 시작할 때 다음 중 하나로 확인합니다.

  • C: pdcomm_modbus_capabilities가 pdcomm_modbus_capability 비트의 OR를 돌려줍니다. TCP 1, RTU 2, ASCII 4, Security 8이며 전체 빌드는 15입니다.
  • C: pdcomm_modbus_abi_version은 이 헤더 기준 0x00010001을 돌려줍니다. 애플리케이션을 빌드한 헤더와 다르면 멈춥니다.
  • JSON: {"action":"capabilities"}가 전송별 true/false와 기능 코드, 진단 목록을 돌려줍니다.
{"ok":true,"result":{"ascii":true,"canopen":false,"diagnostic_logging":true,"diagnostics":[0,1,2,3,4,10,11,12,13,14,15,16,17,18,20],"functions":[1,2,3,4,5,6,7,8,11,12,15,16,17,20,21,22,23,24,43],"logging_schema_version":1,"mei13":"opaque_extension","project_version":1,"protocol":"modbus","rtu":true,"security":true,"tcp":true}}

연결할 장비가 지원하는 기능 코드와 주소는 장비 매뉴얼에서 확인합니다.