.NET和Delphi平台Modbus개발库大全:NModbus、FreeModbus.NET与Delphi组件

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

.NET和Delphi平台Modbus开发库大全:NModbus、FreeModbus.NET与Delphi组件

.NET 平台的 Modbus 개발生态

在 Windows 산업 자동화软件개발中,.NET(C#/VB.NET)是最主流的개발平台之一。modbus.org 推荐了多个 .NET 平台的 Modbus 库,涵盖了从오픈소스무료到商业支持的不同选择。本文将逐一介绍这些库的特点和使用方法。

NModbus —— 最流行的 C# Modbus 库

NModbus 是 .NET 平台上最成熟、使用最广泛的 Modbus 오픈소스库。最早托管在 Google Code,现已迁移至 GitHub:github.com/NModbus/NModbus。NuGet 包名:NModbus

功能特性

  • 支持 Modbus RTU(시리얼 포트)、Modbus ASCII、Modbus TCP 和 Modbus UDP 四种传输모드
  • 完整支持所有常用기능 코드(FC01-FC06, FC15, FC16)
  • 通过 NuGet 包管理器一键安装
  • 支持 .NET Framework 和 .NET Core / .NET 5+
  • 오픈소스许可证:MIT(可商用)

安装

# NuGet 命令行安装
dotnet add package NModbus

# 或通过 Visual Studio 的 NuGet 包管理器검색 "NModbus"

Modbus TCP 读写예제

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.ReadHolding회원가입s(1, 0, 10);
Console.WriteLine("읽기结果:");
for (int i = 0; i < registers.Length; i++)
    Console.WriteLine($"  주소 {i}: {registers[i]}");

// 단일 레지스터 쓰기 (FC06)
master.WriteSingle회원가입(1, 0, 1234);

// 批量다중 레지스터 쓰기 (FC16)
ushort[] write데이터 = { 100, 200, 300 };
master.WriteMultiple회원가입s(1, 10, write데이터);

Modbus RTU 시리얼 포트통신

using System.IO.Ports;
using NModbus;

using var port = new SerialPort("COM3")
{
    BaudRate = 9600,
    데이터Bits = 8,
    Parity = Parity.None,
    StopBits = StopBits.One
};
port.Open();

var factory = new ModbusFactory();
var master = factory.CreateRtuMaster(port);

ushort[] 데이터 = master.ReadHolding회원가입s(1, 0, 5);
foreach (var val in 데이터)
    Console.WriteLine(val);

Free .NET Modbus(free-dotnet-modbus)

Free .NET Modbus 是另一个오픈소스的 .NET Modbus 库,托管在 Google Code Archive。与 NModbus 类似,它也支持 Modbus ASCII、RTU、TCP 和 UDP。如果你使用的是旧版 .NET Framework(2.0/3.5),这个库可能有更好的兼容性。但对于新项目,推荐使用活跃维护的 NModbus。

ASComm.NET —— 商业级 .NET Modbus 驱动

ASComm.NET 是 Automated Solutions 公司的商业 .NET 组件,官网:automatedsolutions.com。它是完全托管的 .NET 库,不仅支持 Modbus TCP/RTU/ASCII,还支持 Allen-Bradley Logix、PLC5、SLC500、MicroLogix 和 GE SRTP 等多种工业프로토콜。

核心特性

  • 可视化设计:既可以通过代码설정,也可以通过 Visual Studio 的属性窗口可视化설정
  • 后台扫描:以指定速率自动扫描데이터点,检测到데이터变化时触发事件
  • 시퀀스化支持:설정可시퀀스化为 XML/JSON 형식
  • 30 天무료试用:无功能限制,完整版可充分测试
  • 多프로토콜:一个组件支持 Modbus + Allen-Bradley + GE 等

ASComm.NET 코드 예제

using ASComm.NET;

// 创建 Modbus TCP 통신组件
var comm = new ModbusTcpComm();
comm.Remote주소 = "192.168.1.100";
comm.RemotePort = 502;

// 추가要扫描的데이터组
var group = new ModbusScanGroup();
group.SlaveId = 1;
group.Start주소 = 0;
group.Length = 10;
group.ScanRate = 1000; // 每秒扫描一次

// 데이터变化事件
group.데이터Changed += (s, e) =>
{
    Console.WriteLine($"주소 {e.주소} 变为 {e.Value}");
};

comm.ScanGroups.Add(group);
comm.Connect();

Delphi ModbusTCP 组件

对于 Delphi/Lazarus 개발者,有一个오픈소스的 Modbus TCP 组件集,托管在 SourceForge:sourceforge.net/projects/delphimodbus。它基于 Indy(Internet Direct)네트워크组件库,支持 Indy 9 和 Indy 10 两个버전。

⚠️ 注意:这个项目活跃度较低,最近的 Delphi 버전(10.4 Sydney / 11 Alexandria)可能需要调整才能直接使用。如果需要在신버전 Delphi 上개발 Modbus 功能,也可以考虑通过 COM 互操作调用 MBServer ActiveX、或者用 Delphi 调用 C 언어版的 libmodbus 动态库(DLL)。

ModLink —— Delphi VCL 原生组件

ModLink 是一套用于 Borland Delphi 的原生 VCL 组件,由 Ivo Bauer 개발,官网 www.ozm.cz/ivobauer/modlink。它是一组可直接拖放到 Delphi 窗体上的可视化组件,让 Delphi 개발者无需手写 Socket 통신代码即可통합 Modbus 통신能力。

ModLink 支持多种네트워크유형,包括:

  • Modbus TCP(通过 TModLinkTCP 组件)
  • Modbus RTU 시리얼 포트(通过 TModLinkRTU 组件)
  • Modbus ASCII 시리얼 포트
  • Modbus Plus 네트워크

⚠️ ModLink 是 Delphi 时代的产物,项目已多年未更新。如果你在维护旧的 Delphi 산업 제어项目,ModLink 仍然有价值;但新建项目建议使用 NModbus(.NET)或 pymodbus(Python)等更现代的方案。

如何选择 .NET/Delphi Modbus 库

시나리오推荐理由
C# 新项目NModbus(NuGet)MIT 许可,活跃维护,API 简洁
.NET 商业项目ASComm.NET多프로토콜支持,可视化설정,商业支持
旧 Delphi 项目ModLink 或 DelphiModbus原生 Delphi 组件,免去跨언어调用
Python 스크립트pymodbus最活跃的 Python Modbus 库

总结

.NET 平台的 Modbus 개발生态是最丰富的。对于新项目,오픈소스무료的 NModbus 是大多数시나리오的最佳选择——MIT 许可、NuGet 一键安装、支持所有主流传输모드。如果需要同时연결 Allen-Bradley 或 GE 设备,ASComm.NET 提供了统一的多프로토콜方案。而 Delphi 개발者虽然选择较少,但 ModLink 和 DelphiModbus 两个组件覆盖了最基础的 Modbus TCP/RTU 통신需求。

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注