以下是使用C#编写Modbus TCP / RTU通信的示例项目:
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通信。请注意,这些示例项目是基本的示例,您可以按照您的实际需求进行修改。