1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

三菱PLCと最速通信!McpXとMX Componentの性能差を検証

Posted at

はじめに

三菱電機製のPLCとC#で通信を行う場合、一般的には MX Component を使用するのが定番です。
しかし、COMベースのMX ComponentはWindows環境に依存しており、パフォーマンス面での課題も少なくありません。
そこで本記事では、.NETネイティブで開発された軽量ライブラリ McpX を用いて、 MX Component との通信速度を比較し、実用上どの程度の差があるのかを検証します。

検証環境

PC構成

  • Windows 11 Professional
  • CPU Intel(R) Xeon(R) CPU E3-1245 v5 @ 3.50GHz 3.50 GHz
  • メモリ 32GB
  • ストレージ SSD 256GB
  • .Net 9.0.203
  • 使用ライブラリ
    • McpX 0.5.1
    • MX Component 4
  • McpX使用プロトコル
    • 3Eフレーム
    • バイナリ
    • TCP

本環境は、Proxmoxにセットアップした仮想環境を使用しております。

ネットワーク構成

PLC に内蔵された Ethernet ポートと、PC を市販のスイッチングハブ経由で接続しています。

構成図.png

測定方法

PLCのデバイスメモリに対して、連続領域の読み出し、書き込みを行い、その処理速度を比較対象としています。

測定は、読み書きするデバイス点数を 500点から10000点まで1000点刻みで変化させ、それぞれの条件での通信時間を記録しました。

各条件につき、同一処理を 100回連続で実行し、System.Diagnostics.Stopwatch クラスを用いて 実行時間(ms)の平均値を計測しています。

読み出しパフォーマンスの比較

McpX はすべての点数において MX Component よりも高速に読み出し処理を完了しており、特に 1000 点以上ではその差が明確に現れています。例えば 5000 点読み出す場合、McpX は 15.25ms に対し、MX Component は 19.62ms と、約 22% の高速化が見られます。

データ点数が増えるにつれて両者の差は広がっており、10000 点では McpX が約 27% 高速です。

read-performance.png

点数 McpX (ms) MXComponent (ms)
500 2.36 3.02
1000 4.16 6.06
2000 7.05 9.33
3000 10.05 12.85
4000 12.89 16.36
5000 15.25 19.62
6000 18.02 24.65
7000 21.02 31.24
8000 24.03 32.82
9000 27.01 36.95
10000 29.91 40.83

書き込みパフォーマンスの比較

McpX はすべての点数において MX Component よりも高速に書き込み処理を完了しており、特に 1000 点以上ではその差が明確に現れています。例えば 5000 点書き込む場合、McpX は 17.09ms に対し、MX Component は 22.75ms と、約 25% の高速化が見られます。

データ点数が増えるにつれて両者の差は広がっており、10000 点では McpX が約 25% 高速です。

write-performance.png

点数 McpX (ms) MXComponent (ms)
500 2.08 3.08
1000 4.13 6.19
2000 7.92 10.39
3000 11.05 14.16
4000 14.07 18.52
5000 17.09 22.75
6000 20.38 26.96
7000 24.04 30.84
8000 27.03 35.48
9000 30.04 39.10
10000 33.06 43.92

まとめ

本記事では、三菱PLCとの通信において一般的に使用される MX Component と、.NETネイティブで動作する軽量ライブラリ McpX を用いて、読み出し・書き込み処理のパフォーマンスを比較しました。

検証の結果、すべてのデータ点数において McpX は MX Component よりも、平均して約 26% 高速に処理できることが確認できました。

この差は、単なる COM オーバーヘッドの有無だけでなく、使用プロトコルの構造的な違いにも起因しています。

また、McpX は COM に依存しない純粋な .NET 実装であるため、クロスプラットフォームやクラウド実行環境への展開にも適しており、将来的な保守性や移植性の面でも有利ではないかと思います。

参考リンク


💡 気になった方はぜひGitHubのリポジトリをチェックしてみてください。
よければ ⭐スター もよろしくお願いします!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?