在C#中,使用NModbus库可以方便地与Modbus设备进行通信。以下是一个简单的示例,展示了如何使用NModbus库实现与Modbus设备的读写操作。
首先,确保已经安装了NModbus库。可以通过NuGet包管理器安装:
Install-Package NModbus
接下来,创建一个C#控制台应用程序,并编写以下代码:
using System;
using NModbus;
namespace NModbusExample
{
class Program
{
static void Main(string[] args)
{
// 创建一个Modbus工业控制器实例
var controller = new ModbusTcp工业控制器("127.0.0.1", 502);
// 设置协议类型为Modbus协议
controller.Protocol = ModbusProtocol.ModbusTcp;
// 设置数据访问模式为离散量I/O(DI/DO)
controller.DataAccessMode = DataAccessMode.DiscreteInputAndOutput;
// 读取一组离散量输入(DI)寄存器
var diAddress = 0;
var diQuantity = 5;
var diValues = controller.ReadDiscreteInputs(diAddress, diQuantity);
Console.WriteLine("离散量输入寄存器值:");
for (int i = 0; i < diValues.Length; i++)
{
Console.Write($"{diAddress + i}: {diValues[i]} ");
}
Console.WriteLine();
// 写入一组离散量输出(DO)寄存器
var doAddress = 0;
var doQuantity = 5;
var doValues = new[] { true, false, true, false, true };
controller.WriteDiscreteOutputs(doAddress, doQuantity, doValues);
Console.WriteLine("写入离散量输出寄存器后的值:");
var doValuesAfterWrite = controller.ReadDiscreteInputs(diAddress, diQuantity);
for (int i = 0; i < doValuesAfterWrite.Length; i++)
{
Console.Write($"{diAddress + i}: {doValuesAfterWrite[i]} ");
}
Console.WriteLine();
}
}
}
在这个示例中,我们创建了一个Modbus工业控制器实例,连接到本地主机的502端口。然后,我们读取了一组离散量输入寄存器(DI),并将其值打印到控制台。接下来,我们写入了一组离散量输出寄存器(DO),并在写入后再次读取这些寄存器的值以验证写入操作是否成功。
请注意,这个示例假设Modbus设备已经正确配置并连接到指定的IP地址和端口。在实际应用中,你可能需要根据实际情况调整IP地址、端口和其他参数。