using System;
using System.Net.Sockets;
using System.Text;
namespace ModbusTCPClient
{
class Program
{
static void Main(string[] args)
{
// 定义Modbus TCP服务器的IP地址和端口
string ip = "192.168.1.100";
int port = 502;
try
{
// 创建一个TCP客户端并连接到Modbus TCP服务器
using (TcpClient client = new TcpClient(ip, port))
{
NetworkStream stream = client.GetStream();
// 构建Modbus请求报文
// 这里是一个简单的读取保持寄存器的请求 (功能码03)
byte[] request = new byte[]
{
0x00, 0x01, // 事务标识符 (Transaction Identifier)
0x00, 0x00, // 协议标识符 (Protocol Identifier)
0x00, 0x06, // 长度 (Length)
0x01, // 单元标识符 (Unit Identifier)
0x03, // 功能码 (Function Code) - 读保持寄存器
0x00, 0x00, // 起始地址 (Starting Address)
0x00, 0x01 // 寄存器数量 (Quantity of Registers)
};
// 发送请求报文到服务器
stream.Write(request, 0, request.Length);
// 接收响应报文
byte[] response = new byte[256];
int bytesRead = stream.Read(response, 0, response.Length);
// 解析响应报文
if (response[7] == 0x03) // 确认功能码是否为03
{
int byteCount = response[8]; // 响应数据的字节数
byte[] data = new byte[byteCount];
Array.Copy(response, 9, data, 0, byteCount);
Console.WriteLine("收到的数据: " + BitConverter.ToString(data));
}
else
{
Console.WriteLine("收到错误响应");
}
}
}
catch (Exception ex)
{
Console.WriteLine("发生错误: " + ex.Message);
}
}
}
}
连接Modbus TCP服务器:
TcpClient类连接到指定的IP地址和端口。构建Modbus请求报文:
03,起始地址为0x0000,读取1个寄存器。发送请求并接收响应:
NetworkStream对象发送请求报文,并接收服务器的响应报文。解析响应报文:
异常处理:
希望这段代码能帮助你理解如何在C#中实现Modbus TCP通信。
上一篇:c# 字典排序
下一篇:c# checkbox
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站