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

c#实现modbus rtu定时采集数据

以下是使用C#实现Modbus RTU定时采集数据的完整代码示例,包含定时任务、数据采集和异常处理:

csharp

复制

using System;
using System.IO.Ports;
using System.Timers;

public class ModbusRtuCollector : IDisposable
{
    private readonly SerialPort _serialPort;
    private readonly Timer _timer;
    private readonly object _portLock = new object();

    // 配置参数
    public string PortName { get; }
    public int BaudRate { get; }
    public int PollingInterval { get; set; } = 1000; // 默认1秒采集间隔

    public ModbusRtuCollector(string portName, int baudRate)
    {
        PortName = portName;
        BaudRate = baudRate;
        
        // 初始化串口
        _serialPort = new SerialPort(portName, baudRate, Parity.None, 8, StopBits.One)
        {
            ReadTimeout = 500,
            WriteTimeout = 500,
            Handshake = Handshake.RequestToSend // RTS控制收发
        };

        // 初始化定时器
        _timer = new Timer(PollingInterval);
        _timer.Elapsed += async (s, e) => await PollDataAsync();
    }

    public void Start()
    {
        if (!_serialPort.IsOpen)
        {
            _serialPort.Open();
            _timer.Start();
            Console.WriteLine($"已启动数据采集,端口:{PortName}");
        }
    }

    public void Stop()
    {
        _timer.Stop();
        if (_serialPort.IsOpen) _serialPort.Close();
        Console.WriteLine("已停止数据采集");
    }

    private async Task PollDataAsync()
    {
        try
        {
            // 示例:读取设备地址1的保持寄存器40001-40004
            var result = await ReadHoldingRegistersAsync(0x01, 0x0000, 4);
            var timestamp = DateTime.Now.ToString("HH:mm:ss.fff");
            
            Con

http://www.kler.cn/a/567391.html

相关文章:

  • 基于SSM实现的bbs论坛系统功能实现八
  • VSCode 中使用 GitHub Copilot最新版本详解
  • 数据结构课程设计(java实现)---九宫格游戏,也称幻方
  • MCU的GPIO 八种模式
  • java使用word模板填充内容,再生成pdf
  • 低空经济火热,校企合作无人机低空产业技术详解
  • huffman压缩
  • 在idea中使用spring boot devtools开发工具的问题
  • 智能图像处理平台:图像处理配置类
  • 基于机器学习的结构MRI分析:预测轻度认知障碍向阿尔茨海默病的转化
  • 易错点abc
  • 分享一套适合做课设的SpringBoot商城系统
  • Kotlin协变与逆变区别
  • yolov12 部署瑞芯微 rk3588、RKNN 部署工程难度小、模型推理速度快
  • 大模型应用案例 | 大模型+金融运维,擎创携手某证券创新运维能力新范式
  • Proser:新增CRC计算辅助功能
  • 从UNIX到Linux:操作系统进化史与开源革命
  • 加油站小程序实战05地图加载
  • 计算机毕业设计SpringBoot+Vue.js社团管理系统(源码+文档+PPT+讲解)
  • 如何在工控机上实现机器视觉检测?