Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c#modbus tcp

作者:发光男神   发布日期:2025-10-15   浏览:87

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);
            }
        }
    }
}

解释说明

  1. 连接Modbus TCP服务器:

    • 使用TcpClient类连接到指定的IP地址和端口。
  2. 构建Modbus请求报文:

    • 按照Modbus TCP协议格式构建请求报文。这里示例中使用的是读取保持寄存器的功能码03,起始地址为0x0000,读取1个寄存器。
  3. 发送请求并接收响应:

    • 使用NetworkStream对象发送请求报文,并接收服务器的响应报文。
  4. 解析响应报文:

    • 检查响应报文中的功能码是否与请求一致,并解析返回的数据。
  5. 异常处理:

    • 捕获并处理可能发生的异常情况,如网络连接失败等。

希望这段代码能帮助你理解如何在C#中实现Modbus TCP通信。

上一篇:c# 字典排序

下一篇:c# checkbox

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

c# rectangle

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站