C#01功能码读输出线圈modbustcp代码
时间: 2024-12-08 11:25:08 浏览: 13
C# Modbus TCP 源代码
5星 · 资源好评率100%
在C#中,如果你想要通过Modbus TCP协议读取输出线圈的状态(通常表示设备的继电器状态),你可以使用第三方库如`NModbus`或者`Modbus.NET`。以下是一个基本的例子,假设你已经设置了连接并配置了设备地址:
```csharp
using NModbus;
// 创建ModbusTcpClient实例
ModbusTcpClient client = new ModbusTcpClient("your_host", your_port);
try
{
// 连接到Modbus服务器
client.Connect();
// 获取功能码,01代表读线圈状态(ReadCoils)
byte functionCode = 0x01;
// 设备的开始地址和数量,这里假设你要读取1个线圈
ushort startAddress = 0; // 要读取的第一个线圈地址
ushort quantityToRead = 1;
// 发送请求并获取响应
ModbusResponse response = client.ReadCoilsAsync(startAddress, quantityToRead).Result;
// 检查是否成功读取
if (response.IsSuccess)
{
// 线圈数据是以二进制形式存储的,转换为bool数组
bool[] coilStates = response.CollectReplyDataAsBools();
// 输出第一条线圈的状态
bool outputState = coilStates[0];
Console.WriteLine($"Output Line Coil State: {outputState}");
}
else
{
Console.WriteLine($"Failed to read coils with error code: {response.StatusCode}");
}
// 关闭连接
client.Close();
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred: {ex.Message}");
}
阅读全文