This is an old revision of the document!
Table of Contents
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
구성으로 작성되었습니다.
