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

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

. 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シリアル通信

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 通信コンポーネントの作成
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開発者はソケット通信コードを手書きすることなく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 通信の最も基本的な要件をカバーしている。

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注