使用NModBus库实现Modbus Master的Beispiel代码

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

使用NModBus库实现Modbus Master的Beispiel代码缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
using System;
using System.Net.Sockets;
using Modbus.Data;
using Modbus.Device;

namespace ModbusMasterExample
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpClient client = new TcpClient("localhost", 502); // VerbindungzuModbus TCPDer Server
            ModbusIpMaster master = ModbusIpMaster.CreateIp(client); // 创建Modbus Master

            ushort startAddress = 0;
            ushort numRegisters = 10;

            // Lesen Sie den Zustand der Spule
            bool[] coils = master.ReadCoils(1, startAddress, numRegisters);
            Console.WriteLine("Coils: " + String.Join(", ", coils));

            // Lesen von diskreten EingabenStatus
            bool[] inputs = master.ReadInputs(2, startAddress, numRegisters);
            Console.WriteLine("Inputs: " + String.Join(", ", inputs));

            // Lesen und halten Register
            ushort[] holdingRegisters = master.ReadHoldingRegisters(3, startAddress, numRegisters);
            Console.WriteLine("Holding Registers: " + String.Join(", ", holdingRegisters));

            // Eingangsregister lesen
            ushort[] inputRegisters = master.ReadInputRegisters(4, startAddress, numRegisters);
            Console.WriteLine("Input Registers: " + String.Join(", ", inputRegisters));
        }
    }
}

实例2:

private static void Main(string[] args)
        {
            try
            {
                ModbusSerialRtuMasterWriteRegisters();
                ModbusTcpMasterReadInputs();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
 
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
 
        /// <summary>
        /// Simple Modbus serial RTU master write holding registers example.
        /// </summary>
        public static void ModbusSerialRtuMasterWriteRegisters()
        {
            using (SerialPort port = new SerialPort("COM3"))
            {
                // configure serial port
                port.BaudRate = 9600;
                port.DataBits = 8;
                port.Parity = Parity.None;
                port.StopBits = StopBits.One;
                port.Open();
 
                var factory = new ModbusFactory();
                IModbusMaster master = factory.CreateRtuMaster(port);
 
                byte slaveId = 1;
                ushort startAddress = 100;
                ushort[] registers = new ushort[] { 1, 2, 3 };
 
                // write three registers
                master.WriteMultipleRegisters(slaveId, startAddress, registers);
            }
        }
 
        /// <summary>
        ///     Simple Modbus TCP master read inputs example.
        /// </summary>
        public static void ModbusTcpMasterReadInputs()
        {
            using (TcpClient client = new TcpClient("127.0.0.1", 502))
            {
                var factory = new ModbusFactory();
                IModbusMaster master = factory.CreateMaster(client);
 
                // read five input values
                ushort startAddress = 100;
                ushort numInputs = 5;
                bool[] inputs = master.ReadInputs(0, startAddress, numInputs);
 
                for (int i = 0; i < numInputs; i++)
                {
                    Console.WriteLine($"Input {(startAddress + i)}={(inputs[i] ? 1 : 0)}");
                }
            }
 
            // output:
            // Input 100=0
            // Input 101=0
            // Input 102=0
            // Input 103=0
            // Input 104=0
        }

上述Beispiel代码创建了一个Modbus TCP客户端,然后使用Modbus Master对象实现了Lesen Sie den Zustand der Spule、离散Importieren Status、保持Register.和输入Register.的Funktion。当然,实际使用时需要根据实际情况进行修改。

NModbus库在本页面Download

Techniken术语(共 4 个)—— Klick auf展开
Modbus TCP基于Ethernet的ModbusVereinbarung变体,使用TCP/IP传输
Register.Modbus Register.存储Daten单元,Unterteilung线圈/离散输入/保持/输入Register.四类
线圈Modbus位可读Schreiben von Daten,Adresse从00001开始
保持Register.Modbus 16位可读Schreiben von Daten,Adresse从40001开始
来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Modbus Programmierung 字数 2295 字 · 阅读约 6 Unterteilung钟 更新 2023-02-12 永久链接 https://www.modbus.cn/11738.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.