using EasyModbus;
using System;
namespace ModbusExample
{
class Program
{
static void Main(string[] args)
{
// 创建一个Modbus客户端实例,连接到指定的IP地址和端口
ModbusClient modbusClient = new ModbusClient("192.168.0.100", 502);
try
{
// 打开连接
modbusClient.Connect();
// 读取保持寄存器 (例如:从地址40001开始读取10个寄存器)
int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(0, 10);
Console.WriteLine("Read Holding Registers:");
foreach (var register in readHoldingRegisters)
{
Console.WriteLine(register);
}
// 写入单个寄存器 (例如:将值123写入地址40001)
modbusClient.WriteSingleRegister(0, 123);
Console.WriteLine("Wrote 123 to Holding Register at address 0");
// 读取输入寄存器 (例如:从地址30001开始读取5个寄存器)
int[] readInputRegisters = modbusClient.ReadInputRegisters(0, 5);
Console.WriteLine("Read Input Registers:");
foreach (var register in readInputRegisters)
{
Console.WriteLine(register);
}
// 写入多个线圈 (例如:从地址0开始写入5个线圈的状态)
bool[] coilValues = { true, false, true, false, true };
modbusClient.WriteMultipleCoils(0, coilValues);
Console.WriteLine("Wrote multiple coils starting from address 0");
// 读取离散输入 (例如:从地址10001开始读取3个离散输入)
bool[] readDiscreteInputs = modbusClient.ReadDiscreteInputs(0, 3);
Console.WriteLine("Read Discrete Inputs:");
foreach (var input in readDiscreteInputs)
{
Console.WriteLine(input);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
finally
{
// 关闭连接
if (modbusClient.Connected)
{
modbusClient.Disconnect();
}
}
}
}
}
引入命名空间:
using EasyModbus;
引入了EasyModbus库,用于处理Modbus通信。using System;
引入了基本的系统命名空间。创建Modbus客户端:
ModbusClient modbusClient = new ModbusClient("192.168.0.100", 502);
创建了一个Modbus客户端实例,并指定了目标设备的IP地址和端口号(通常是502)。连接和断开:
modbusClient.Connect();
打开与Modbus服务器的连接。modbusClient.Disconnect();
断开与Modbus服务器的连接。读取保持寄存器:
modbusClient.ReadHoldingRegisters(0, 10);
读取从地址0开始的10个保持寄存器的值。写入单个寄存器:
modbusClient.WriteSingleRegister(0, 123);
将值123写入地址为0的保持寄存器。读取输入寄存器:
modbusClient.ReadInputRegisters(0, 5);
读取从地址0开始的5个输入寄存器的值。写入多个线圈:
modbusClient.WriteMultipleCoils(0, coilValues);
将布尔数组coilValues
中的值写入从地址0开始的多个线圈。读取离散输入:
modbusClient.ReadDiscreteInputs(0, 3);
读取从地址0开始的3个离散输入的值。异常处理:
try-catch-finally
块来捕获可能发生的异常,并确保在任何情况下都关闭连接。上一篇:c# 字符串转时间
下一篇:c#foreach
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站