在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地址、端口和其他參數。