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

c# easymodbus

作者:冷视天下   发布日期:2025-05-29   浏览:64

using EasyModbus;
using System;

namespace ModbusExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个Modbus客户端实例,连接到指定的IP地址和端口
            ModbusClient modbusClient = new ModbusClient("192.168.0.100", 502);

            try
            {
                // 打开连接
                modbusClient.Connect();

                // 读取保持寄存器 (例如:从地址40001开始读取10个寄存器)
                int[] readHoldingRegisters = modbusClient.ReadHoldingRegisters(0, 10);
                Console.WriteLine("Read Holding Registers:");
                foreach (var register in readHoldingRegisters)
                {
                    Console.WriteLine(register);
                }

                // 写入单个寄存器 (例如:将值123写入地址40001)
                modbusClient.WriteSingleRegister(0, 123);
                Console.WriteLine("Wrote 123 to Holding Register at address 0");

                // 读取输入寄存器 (例如:从地址30001开始读取5个寄存器)
                int[] readInputRegisters = modbusClient.ReadInputRegisters(0, 5);
                Console.WriteLine("Read Input Registers:");
                foreach (var register in readInputRegisters)
                {
                    Console.WriteLine(register);
                }

                // 写入多个线圈 (例如:从地址0开始写入5个线圈的状态)
                bool[] coilValues = { true, false, true, false, true };
                modbusClient.WriteMultipleCoils(0, coilValues);
                Console.WriteLine("Wrote multiple coils starting from address 0");

                // 读取离散输入 (例如:从地址10001开始读取3个离散输入)
                bool[] readDiscreteInputs = modbusClient.ReadDiscreteInputs(0, 3);
                Console.WriteLine("Read Discrete Inputs:");
                foreach (var input in readDiscreteInputs)
                {
                    Console.WriteLine(input);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.Message}");
            }
            finally
            {
                // 关闭连接
                if (modbusClient.Connected)
                {
                    modbusClient.Disconnect();
                }
            }
        }
    }
}

解释说明

  1. 引入命名空间:

    • using EasyModbus; 引入了EasyModbus库,用于处理Modbus通信。
    • using System; 引入了基本的系统命名空间。
  2. 创建Modbus客户端:

    • ModbusClient modbusClient = new ModbusClient("192.168.0.100", 502); 创建了一个Modbus客户端实例,并指定了目标设备的IP地址和端口号(通常是502)。
  3. 连接和断开:

    • modbusClient.Connect(); 打开与Modbus服务器的连接。
    • modbusClient.Disconnect(); 断开与Modbus服务器的连接。
  4. 读取保持寄存器:

    • modbusClient.ReadHoldingRegisters(0, 10); 读取从地址0开始的10个保持寄存器的值。
  5. 写入单个寄存器:

    • modbusClient.WriteSingleRegister(0, 123); 将值123写入地址为0的保持寄存器。
  6. 读取输入寄存器:

    • modbusClient.ReadInputRegisters(0, 5); 读取从地址0开始的5个输入寄存器的值。
  7. 写入多个线圈:

    • modbusClient.WriteMultipleCoils(0, coilValues); 将布尔数组coilValues中的值写入从地址0开始的多个线圈。
  8. 读取离散输入:

    • modbusClient.ReadDiscreteInputs(0, 3); 读取从地址0开始的3个离散输入的值。
  9. 异常处理:

    • 使用try-catch-finally块来捕获可能发生的异常,并确保在任何情况下都关闭连接。

上一篇:c# 字符串转时间

下一篇:c#foreach

大家都在看

c# 二进制

c# tcp client

c# type.gettype

c# sqlconnection

.net和c#

c#游戏开发

c#网络编程

c# rectangle

c# if else

c# rtsp

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

Laravel 中文站