Modbus-Entwicklungs - Ökologie für die. NET-Plattform
In der Entwicklung von Windows - So ftware für industrielle Aut omat isierung ist . NET (C # / V B . NET) eine der wichtig sten Entwick lungs pla tt formen . modbus.org Mod bus - Bib li oth eken werden für mehr ere . NET - P latt formen emp f oh len , die vers chiedene Op tionen von Open - So urce - kosten los en bis hin zu kommer zi ellen Unterstüt z ungen ab de cken . In diesem Artikel werden die Eig ens chaften und die Verwendung dieser Bibli oth eken einzel n besch rieben .
NModbus - die beliebteste C # Modbus-Bibliothek
NModbus ist die bewährteste und am weitesten verwendete Open-Source - Modbus-Bibliothek für die. NET-Plattform. Zuerst gehostet bei Google Code, jetzt auf GitHub:github.com/NModbus/NModbus。NuGet Paket-Name:NModbus。
Funktionsmerkmale
- Unterstützt Modbus RTU, Modbus ASCII, Modbus TCP und Modbus UDP
- Vollständige Unterstützung für alle gängigen Funktionscodes (FC01 - FC06, FC15, FC16)
- Installation von
- mit einem Klick über den NuGet-Paket - Manager Unterstützt. NET Framework und. NET Core /. NET 5 + Open-Source - Lizenzen
- : MIT (verfügbar)
Installation
# NuGet 命令行安装
dotnet add package NModbus
# 或通过 Visual Studio 的 NuGet 包管理器搜索 "NModbus"Modbus TCP-Lese - Schreibbeispiel
using System;
using System.Net.Sockets;
using NModbus;
// 创建 TCP 客户端
using var client = new TcpClient("192.168.1.100", 502);
var factory = new ModbusFactory();
var master = factory.CreateMaster(client);
// 读取从站 1 的保持寄存器 0-9
ushort[] registers = master.ReadHoldingRegisters(1, 0, 10);
Console.WriteLine("读取结果:");
for (int i = 0; i < registers.Length; i++)
Console.WriteLine($" 地址 {i}: {registers[i]}");
// 写入单个寄存器
master.WriteSingleRegister(1, 0, 1234);
// 批量写入多个寄存器
ushort[] writeData = { 100, 200, 300 };
master.WriteMultipleRegisters(1, 10, writeData);Modbus RTU-Serielle Kommunikation
using System.IO.Ports;
using NModbus;
using var port = new SerialPort("COM3")
{
BaudRate = 9600,
DataBits = 8,
Parity = Parity.None,
StopBits = StopBits.One
};
port.Open();
var factory = new ModbusFactory();
var master = factory.CreateRtuMaster(port);
ushort[] data = master.ReadHoldingRegisters(1, 0, 5);
foreach (var val in data)
Console.WriteLine(val);Free. NET Modbus (free-dotnet - modbus)
Free. NET Modbus ist eine weitere Open-Source - Bibliothek für. NET Modbus, die im Google Code Archive gehostet wird.Ähnlich wie NModbus unterstützt es Modbus ASCII, RTU, TCP und UDP. Wenn Sie eine ältere Version von. NET Framework (2.0 / 3.5) verwenden, bietet diese Bibliothek möglicherweise eine bessere Kompatibilität. Für neue Projekte wird es jedoch empfohlen, einen aktiv gepflegten NModbus zu verwenden.
ASComm. NET - Geschäftsmodbus-Treiber für. NET
ASComm. NET ist eine kommerzielle. NET-Komponente von Automated Solutions, offizielle Website:automatedsolutions.com. Es ist eine vollständig verwaltete. NET-Bibliothek, die nicht nur Modbus TCP / RTU / ASCII unterstützt, sondern auch verschiedene industrielle Protokolle wie Allen-Bradley Logix, PLC5, SLC500, MicroLogix und GE SRTP unterstützt.
Kernfunktionen
- Visuelles Design: Konfigurationsmöglichkeit entweder per Code oder visuell über das Eigenschaftenfenster von Visual Studio
- Hintergrund-Scan: Automatisches Scannen von Datenpunkten mit einer angegebenen Rate, Auslöser von Ereignissen, wenn Datenänderungen erkannt werden
- Serialisierungsunterstützung: Konfigurationsserialisierung im XML / JSON-Format
- 30 - tägige kostenlose Testversion: keine Funktionsbeschränkungen, vollständig getestet
- Multi-Protokoll: Unterstützung für Modbus + Allen-Bradley + GE und andere Komponenten in einer Komponente
ASComm. NET-Codebeispiel
using ASComm.NET;
// 创建 Modbus TCP 通信组件
var comm = new ModbusTcpComm();
comm.RemoteAddress = "192.168.1.100";
comm.RemotePort = 502;
// 添加要扫描的数据组
var group = new ModbusScanGroup();
group.SlaveId = 1;
group.StartAddress = 0;
group.Length = 10;
group.ScanRate = 1000; // 每秒扫描一次
// 数据变化事件
group.DataChanged += (s, e) =>
{
Console.WriteLine($"地址 {e.Address} 变为 {e.Value}");
};
comm.ScanGroups.Add(group);
comm.Connect();Delphi ModbusTCP-Komponenten
Für Delphi / Lazarus-Entwickler gibt es eine Open-Source - Sammlung von Modbus TCP-Komponenten, die bei SourceForge gehostet werden:sourceforge.net/projects/delphimodbus。Es basiert auf der Indy (Internet Direct) Netzwerk-Komponenten - Bibliothek und unterstützt sowohl Indy 9 als auch Indy 10.
und️Hinweis: Dieses Projekt ist sehr wenig aktiv, und die neueste Delphi-Version (10.4 Sydney / 11 Alexandria) muss möglicherweise angepasst werden, um direkt verwendet zu werden. Wenn Sie Modbus-Funktionen in einer neuen Version von Delphi entwickeln möchten, können Sie auch den Aufruf von MBServer ActiveX über COM Interoperabilität oder die libmodbus-Dynamic Library (DLL) in der C-Version von Delphi in Betracht ziehen.
ModLink - - Native VCL-Komponenten für Delphi
ModLink ist eine native VCL-Komponente für Borland Delphi, die von Ivo Bauer entwickelt wurde, offizielle Websitewww.ozm.cz/ivobauer/modlink. Es handelt sich um eine Reihe von visuellen Komponenten, die Sie direkt in ein Delphi-Formular ziehen und fallen lassen können, die es Delphi-Entwicklern ermöglichen, die Modbus-Kommunikationsfunktionen zu integrieren, ohne Handschriftcode für Socket-Kommunikation zu schreiben.
ModLink unterstützt verschiedene Netzwerktypen, darunter:
- Modbus TCP (über die TModLinkTCP-Komponente)
- Modbus RTU-Serieller (über die TModLinkRTU-Komponente)
- Modbus ASCII-Serieller
- Modbus Plus-Netzwerk
✍️ ModLink ist ein Produkt aus der Delphi-Zeit, und das Projekt wurde seit Jahren nicht aktualisiert. ModLink ist immer noch wertvoll, wenn Sie ein altes Delphi-ICS - Projekt betreiben; aber für neu erstellte Projekte wird empfohlen, moderne Schema wie NModbus (. NET) oder pymodbus (Python) zu verwenden.
Auswahl einer. NET / Delphi Modbus-Bibliothek
| - Szenario | Empfehlung | Gründe |
|---|---|---|
| C # Neue Projekte | NModbus (NuGet) | MIT-Lizenzierung, aktive Wartung, API-Kleinheit |
| . NET-Business - Projekte | ASComm.NET | Multi-Protokoll - Unterstützung, Visualisierung, kommerzielle Unterstützung |
| Alte Delphi-Projekte | ModLink oder DelphiModbus | Native Delphi-Komponenten, ohne Sprachüberrufe |
| Python-Skripte | pymodbus | Die aktivste Python-Modbus - Bibliothek |
Zusammenfassung
Die Modbus-Entwicklungs - Ökosysteme für die. NET-Plattform sind die reichsten. Für neue Projekte ist der kostenlose Open-Source - NModbus die beste Wahl für die meisten Szenarien - MIT-Lizenz, NuGet mit einem Klick-Installation, Unterstützung für alle gängigen Übertragungsmodi. Wenn Sie eine gleichzeitige Verbindung von Allen-Bradley - oder GE-Geräten benötigen, bietet ASComm.NET eine einheitliche Multi-Protokoll - Lösung. Trotz weniger Auswahl für Delphi-Entwickler decken ModLink und DelphiModbus die grundlegenden Modbus TCP / RTU-Kommunikationsanforderungen ab.
Antwort veröffentlichen