Creating a CUWIN Modbus RTU Master with NModbus
NModbus is a free and open source implementation of the Modbus protocol for the .Net Framework and .Net Compact Framework. This blog post will describe how to get started using NModbus with the CUWIN.
After downloading and extracting the NModbus binaries from the repository, there will be two folders inside the "bin" folder: "net" and "netcf". "net" is for the .Net Framework, and "netcf" is for the .Net Compact Framework. The CUWIN is a .Net Compact Framework device, so to use NModbus in a CUWIN project, simply add a reference to the "Modbus.dll" file in the "netcf" folder.
Add a using declaration to the source file to contain the Modbus Master code.
using Modbus.Device;
Initialize a new ModbusSerialMaster:
// Open COM1 with a baud rate of 115200
_serialPort = new SerialPort("COM1", 115200);
_serialPort.Open();
// Create a new Modbus RTU Master using _serialPort as the communication channel
_modbusMaster = ModbusSerialMaster.CreateRtu(_serialPort);
_modbusMaster.Transport.ReadTimeout = 500;
_modbusMaster.Transport.WriteTimeout = 500;
_modbusMaster.Transport.Retries = 0;
Then call any of the given methods to query a Modbus slave:
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);
The following sample project demonstrates creating a Modbus Master using the CUWIN CWV2 that monitors and controls a Modbus slave using a CUBLOC CB280 and the Study Board 2. The CB280's digital output on pin P0 is connected to the Study Board's LED0 on the, and an analog input is connected to the Study Board's knob potentiometer, AD1.

The Analog Input "Read" button will query the CB280 for the value read from its analog input and display it on the form. Turning the knob pot AD1 on the Study Board will change the value read from the analog input.
The Digital Output "Read" button will query the CB280 for the state of the CB280's digital output on pin P0. The Digital Output "On" and "Off" buttons will turn P0 on or off respectively thus turning the Study Board's LED0 on or off.
Recent Posts
-
Comfile Studio: PC-Based HMI/UI Development Overview
Recently, we’ve seen a steady increase in interest and purchases related to Comfile Studio. To bette …Jan 29th 2026 -
The Dark Side of Cheap Industrial PCs: When Recycled Mining CPUs Power Your Panel PC
In the world of industrial computing, reliability is paramount. Yet, a growing trend in the manufact …Jan 27th 2026 -
Sunlight-Readable LCD Now Available
We’re pleased to announce that sunlight-readable LCD displays are now in stock and available as a cu …Jan 27th 2026