. NETおよびDelphiプラットフォーム向けModbus開発ライブラリ:NModbus、Free Modbus. NET、Delphiコンポーネント

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

. NETおよびDelphiプラットフォーム向けModbus開発ライブラリ:NModbus、Free Modbus. NET、Delphiコンポーネント

. NETプラットフォームのModbus開発エコシステム

Windows産業オートメーションソフトウェア開発において、. NET(C#/VB.NET)は最も主流の開発プラットフォームの1つです。modbus.orgは、オープンソースから商用サポートまで、複数の. NETプラットフォーム用のModbusライブラリを推奨しています。この記事では、これらのライブラリの機能と使用方法を1つずつ紹介する。

NModbus -最も人気のあるC#Modbusライブラリ

NModbusは、. NETプラットフォームで最も成熟し、広く使用されているModbusオープンソースライブラリです。当初はGoogle Codeでホストされ、現在はGitHubに移行している。github.com/NModbus/NModbus。NuGetパッケージ名:NModbus

機能性の特徴

  • Modbus RTU(シリアルポート)、Modbus ASCII、Modbus TCP、Modbus UDPの4つのトランスポートモードをサポート
  • すべての共通機能コード(FC01-FC06、FC15、FC16)を完全にサポートします。
  • NuGet Package Managerからのインストール
  • . NET Frameworkおよび. NET Core /. NET 5+のサポート
  • オープンソースライセンス:MIT(商用利用可能)

インストールする。

# NuGetコマンドラインインストール
dotnet add package NModbus

Visual StudioのNuGetパッケージマネージャから“NModbus”を検索する

Modbus TCP読み書きの例

システムの使用;
System.Net.Socketsの使用
NModbusの使用

//TCPクライアントの作成
using var = new TClient "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.; i++
    Console.WriteLine $"アドレス{i}{registers[i]}";

//単一レジスタへの書き込み
master.WriteSingleRegister 1 0 1234;

//複数のレジスタへの一括書き込み
ushort[] writeData = { 100 200 300 };
master.WriteMultipleRegisters 1 10 writeData;

Modbus RTUシリアルCommunication

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は、Google Code Archiveでホストされているオープンソースの. NET Modbusライブラリである。NModbusと同様に、Modbus ASCII、RTU、TCP、UDPをサポートしている。古いバージョンの. NET Framework(2.0/3.5)を使用している場合は、このライブラリの方が互換性が高いかもしれません。しかし、新しいプロジェクトでは、アクティブメンテナンスのNModbusを推奨します。

ASComm. Net-商用グレードの. NET Modbusドライバ

ASComm. NETはAutomated Solutionsの商用. NETコンポーネントです。automatedsolutions.com。Modbus TCP/RTU/ASCI Iだけでなく、Allen-Bradley Logix、PLC5、SLC500、MicroLogix、GE SRTPなどのさまざまな産業用プロトコルもサポートしている、フルマネージドの. NETライブラリです。

主な特徴

  • ビジュアルデザイン:コードまたはVisual Studioのプロパティウィンドウから視覚的に構成できます。
  • バックグラウンドスキャン:指定したレートでデータポイントを自動スキャンし、データの変化を検出するとイベントをトリガーします。
  • シリアル化サポートXML/JSON形式にシリアライズ可能な構成
  • 30日間無料トライアル機能制限なし、フルバージョンは完全にテスト可能
  • 複数のプロトコル1つのコンポーネントでModbus + Allen-Bradley + GEなどをサポート

ASComm. NETコード·サンプル

ASComm.NETを使用する。

Modbus TCP Communicationコンポーネントの作成
var comm = new ModbusTComm;
comm.RemoteAddress = "192.168.1.100";
comm. Port = 502;

//スキャンするデータセットの追加
var group = new ModbusScanGroup;
グループ.SlaveId = 1
グループ.StartAddress = 0;
グループの長さ= 10;
group.ScanRate = 1000; //毎秒スキャン

//データ変更イベント
group.DataChanged += s e =>
{
    Console.WriteLine $"アドレス{e.Address}が{e.Value}"になります;
};

comm.ScanGroups.Add group;
comm.Connect;

Delphi Modbus TCPコンポーネント

Delphi/Lazarus開発者向けには、SourceForgeでホストされているModbus TCPコンポーネントのオープンソースセットがあります。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は、Ivo Bauerが開発したBorland Delphi用のネイティブVCLコンポーネントセットです。www.ozm.cz/ivobauer/modlink。Delphiのフォームに直接ドラッグアンドドロップできるビジュアルコンポーネントのセットで、Delphi開発者はソケットCommunicationコードを手書きすることなくModbus 通信機能を統合できます。

ModLinkは、以下を含む複数のネットワークタイプをサポートします。

  • Modbus TCP(TModLink TCPコンポーネント経由)
  • Modbus RTUシリアルポート(TModLink RTUコンポーネント経由)
  • 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スクリプト#Pythonスクリプト#pymodbus最もアクティブなPython Modbusライブラリ

概要まとめ

. NETプラットフォームのModbus開発エコシステムは、最も豊富です。新しいプロジェクトでは、オープンソースの無料NModbusが、MITライセンス、NuGetワンクリックインストール、すべての主要なトランスポートモードのサポートなど、ほとんどのシナリオに最適です。Allen-BradleyまたはGEデバイスに同時に接続する必要がある場合、ASComm. NETは統合されたマルチプロトコルソリューションを提供します。Delphi開発者は選択肢が少ないが、ModLinkとDelphi ModbusはModbus TCP/RTU Communicationの最も基本的な要件をカバーしている。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.