. 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の最も基本的な要件をカバーしている。
Leave a Reply