modbus programming in c# (tcp/rtu) full example projects

以下是使用C#编写Modbus TCP / RTU通信的示例项目:

  • Modbus TCP通信示例项目:
  • using System;
    using System.Net.Sockets;
    using System.Threading;
    using System.Windows.Forms;
    using EasyModbus;
    namespace ModbusTCPSlaveExample
        public partial class Form1 : Form
            private ModbusServer modbusServer;
            private Thread serverThread;
            public Form1()
                InitializeComponent();
                modbusServer = new ModbusServer();
                modbusServer.Listen();
                serverThread = new Thread(new ThreadStart(UpdateServer));
                serverThread.Start();
            private void UpdateServer()
                while (true)
                        modbusServer.Coils[0] = checkBox1.Checked;
                        modbusServer.Coils[1] = checkBox2.Checked;
                        modbusServer.Coils[2] = checkBox3.Checked;
                        modbusServer.Coils[3] = checkBox4.Checked;
                        modbusServer.HoldingRegisters[0] = Convert.ToInt32(textBox1.Text);
                        modbusServer.HoldingRegisters[1] = Convert.ToInt32(textBox2.Text);
                        modbusServer.HoldingRegisters[2] = Convert.ToInt32(textBox3.Text);
                        modbusServer.HoldingRegisters[3] = Convert.ToInt32(textBox4.Text);
                    catch (Exception ex)
                        Console.WriteLine(ex.Message);
                    Thread.Sleep(50);
    
  • Modbus RTU通信示例项目:
  • using System;
    using System.IO.Ports;
    using System.Threading;
    using System.Windows.Forms;
    using EasyModbus;
    namespace ModbusRTUSlaveExample
        public partial class Form1 : Form
            private ModbusServer modbusServer;
            private Thread serverThread;
            private SerialPort serialPort;
            public Form1()
                InitializeComponent();
                modbusServer = new ModbusServer();
                modbusServer.Listen();
                serverThread = new Thread(new ThreadStart(UpdateServer));
                serverThread.Start();
                serialPort = new SerialPort();
                serialPort.PortName = "COM1";
                serialPort.BaudRate = 9600;
                serialPort.Parity = Parity.None;
                serialPort.StopBits = StopBits.One;
                serialPort.DataBits = 8;
                serialPort.Open();
                modbusServer.SerialPort = serialPort;
            private void UpdateServer()
                while (true)
                        modbusServer.Coils[0] = checkBox1.Checked;
                        modbusServer.Coils[1] = checkBox2.Checked;
                        modbusServer.Coils[2] = checkBox3.Checked;
                        modbusServer.Coils[3] = checkBox4.Checked;
                        modbusServer.HoldingRegisters[0] = Convert.ToInt32(textBox1.Text);
                        modbusServer.HoldingRegisters[1] = Convert.ToInt32(textBox2.Text);
                        modbusServer.HoldingRegisters[2] = Convert.ToInt32(textBox3.Text);
                        modbusServer.HoldingRegisters[3] = Convert.ToInt32(textBox4.Text);
                    catch (Exception ex)
                        Console.WriteLine(ex.Message);
                    Thread.Sleep(50);
    

    这些示例项目使用EasyModbus库来实现Modbus通信。请注意,这些示例项目是基本的示例,您可以按照您的实际需求进行修改。

  •