This is an old revision of the document!


NModbus4 사용법

본 문서에서는 산업 현장에서 널리 사용되는 MODBUS 프로토콜을 ComfilePi에서 구현하는 방법을 설명합니다. NModbus4 라이브러리를 사용하면 MODBUS 통신을 비교적 간단하게 구성할 수 있습니다.

ComfilePi와 PLC 결선

ComfilePi의 RS232 COM0 포트와 PLC의 RS232 포트를 아래와 같이 연결합니다.

  • TX ↔ RX
  • RX ↔ TX
  • GND ↔ GND

※ 본 예제에서 사용된 PLC는 컴파일테크놀로지의 MSB612RA-DC 입니다.

NModbus4 라이브러리 추가

Visual Studio에서 NModbus4 라이브러리를 추가하는 방법입니다.

  • 1. 프로젝트 생성 후 솔루션 탐색기 → 프로젝트 우클릭 → NuGet 패키지 관리

  • 2. 찾아보기 → “NModbus” 검색 → NModbus4 선택 → 설치

  • 3. 출력 창에서 설치 완료 여부 확인

Modbus 프로그래밍

NModbus4 사용 시 필요한 기본 설정과 주요 함수입니다.

Serial Port 설정

ComfilePi와 Windows 환경에서 포트 이름이 다르므로 아래와 같이 분기 처리합니다.

  • COM0 → `/dev/serial0`
  • COM1 → `/dev/serial1`
string portName = Environment.OSVersion.Platform == PlatformID.Win32NT ? "COM0" : "/dev/serial0";
SerialPort port = new SerialPort(portName, 115200);
port.ReadTimeout = 100;
port.WriteTimeout = 100;
port.Open();

Master 주요 함수

Modbus RTU Master는 ModbusSerialMaster 클래스를 사용합니다.

bool[] ReadCoils(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
ushort[] ReadHoldingRegisters(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
ushort[] ReadInputRegisters(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
bool[] ReadInputs(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
ushort[] ReadWriteMultipleRegisters(byte slaveAddress, ushort startReadAddress, ushort numberOfPointsToRead, ushort startWriteAddress, ushort[] writeData);
void WriteMultipleCoils(byte slaveAddress, ushort startAddress, bool[] data);
void WriteMultipleRegisters(byte slaveAddress, ushort startAddress, ushort[] data);
void WriteSingleCoil(byte slaveAddress, ushort coilAddress, bool value);
void WriteSingleRegister(byte slaveAddress, ushort registerAddress, ushort value);

실행 파일 배포

빌드 후 생성된

  • 실행 파일 (.exe)
  • NModbus4.dll

을 ComfilePi의 `/home/pi` 경로에 복사하여 실행합니다.


예제 프로그램

본 예제는

  • ComfilePi → Master
  • PLC(MSB612RA-DC) → Slave

구성으로 작성되었습니다.

Example 1

소스 다운로드 ☞ simple_modbus_example.zip

소스 보기


Example 2

소스 다운로드 ☞ modbus_example.zip

소스 보기

.NET (닷넷) 개발환경