-
Notifications
You must be signed in to change notification settings - Fork 317
Modbus Slave Register Scanner
rquackenbush edited this page May 24, 2017
·
1 revision
Here is a simple command line application that looks at every holding register on a given device.
using System;
using System.Diagnostics;
using System.IO.Ports;
using System.Linq;
using NModbus;
using NModbus.Serial;
namespace ModbusRegisterScanner
{
class Program
{
static void Main(string[] args)
{
string serialPortName = SerialPort.GetPortNames().First();
var modbusFactory = new ModbusFactory();
using (var serialPort = new SerialPort(serialPortName, 19200, Parity.Even, 8, StopBits.One))
{
serialPort.Open();
using (var adapter = new SerialPortAdapter(serialPort))
{
adapter.ReadTimeout = 500;
adapter.WriteTimeout = 500;
using (var master = modbusFactory.CreateRtuMaster(adapter))
{
for (ushort address = 0; address < ushort.MaxValue; address++)
{
try
{
master.ReadHoldingRegisters(11, address, 1);
Console.WriteLine($"Register found at: {address}");
}
catch (Exception e)
{
Debug.WriteLine(e);
}
}
}
}
}
}
}
}