当前位置: 首页 > news >正文

c#实现Modbus TCP/IP与RS 485数据交换的实例

以下是一个具体的 C# 示例代码,展示如何通过 Modbus TCP 主站 与 Modbus RTU(RS-485)从站设备 通信,实现协议转换的核心逻辑。代码使用 NModbus 库简化协议处理。


1. 环境准备

NuGet 包安装
Install-Package NModbus
Install-Package System.IO.Ports

2. 完整代码示例

using System;
using System.IO.Ports;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Modbus.Device;

public class ModbusTcpToRtuGateway
{
    private const int TCP_PORT = 502;       // Modbus TCP 监听端口
    private const string COM_PORT = "COM3"; // RS-485 串口号
    private const int BAUD_RATE = 9600;     // 波特率
    private const Parity PARITY = Parity.None;
    private const int DATA_BITS = 8;
    private const StopBits STOP_BITS = StopBits.One;

    private TcpListener _tcpListener;
    private SerialPort _serialPort;
    private IModbusSerialMaster _rtuMaster;
    private bool _isRunning;

    public void Start()
    {
        _isRunning = true;
        
        // 初始化串口和Modbus RTU主站
        _serialPort = new SerialPort(COM_PORT, BAUD_RATE, PARITY, DATA_BITS, STOP_BITS);
        _serialPort.Open();
        _rtuMaster = ModbusSerialMaster.CreateRtu(_serialPort);

        // 启动TCP监听
        _tcpListener = new TcpListener(IPAddress.Any, TCP_PORT);
        _tcpListener.Start();
        Console.WriteLine($"Modbus TCP网关已启动,监听端口:{TCP_PORT}");

        // 处理TCP客户端连接
        Task.Run(() =>
        {
            while (_isRunning)
            {
                var tcpClient = _tcpListener.AcceptTcpClient();
           

相关文章:

  • 项目复盘-浏览器插件
  • 微服务拆分-拆分商品服务
  • 深入剖析Java代理模式:静态代理与动态代理的实战应用
  • Java中的 json文件
  • 【DeepSeek问答】访问QStandardItemModel::index(r,c)获取的空索引导致程序崩溃
  • 【奇点时刻】通义千问开源QwQ-32B技术洞察报告(扫盲帖)
  • 用Go的resty库批量下载公开网站视频
  • 基于Python实现的智能旅游推荐系统(Django)
  • 【C++教程】C++中的基本数据类型
  • Amlogic USB Burning Tool v2.2.5_晶晨线刷烧录工具v2.2.5_晶晨S905L3S-S905L3SB芯片_专用线刷烧录工具分享
  • 使用ASIWebPageRequest库编写Objective-C下载器程序
  • python学习笔记-day4(解决实际问题)
  • 我的技术十年
  • SHELL32!CDefView::_OnFSNotify函数是如何被调用的
  • MySQLvs Redis 事务:核心差异详解(简单易懂)
  • 49.日常算法
  • 深入解析MyBatis中一对一与一对多映射的实现方法与区别
  • Golang的代码注释规范指南
  • 计算机毕业设计SpringBoot+Vue.js众筹网站系统(源码+文档+PPT+讲解)
  • JavaScript实现著名的“两数之和”问题
  • 怎么创建网站 免费的/广州日新增51万人
  • 网站制作报价明细表/整合营销策划
  • nat123做视频网站/网络舆情案例分析
  • 乐清开发网站公司/中国没有限制的搜索引擎
  • 方一凡和磊儿做家教的网站/石家庄网站优化
  • 大连网站建设方法/站长工具外链查询