NEW v0.11 — リモート RUN/STOP と複数ブロック読み書きを追加 →
MITSUBISHI PLC — MELSEC

三菱電機PLCとの通信を数行で実装。

McpX は、MCプロトコルで三菱電機PLC(MELSEC)と通信する .NET ライブラリです。TCP/UDP でデバイスメモリを読み書きできます。パケットの組み立てや応答の解析はライブラリが引き受けるので、書くのは読み書きしたい型とアドレスだけです。

NUGET
16k+
LICENSE
MIT
PLATFORM
Win · Linux · macOS
PLC
Q · iQ-R · iQ-F

// USE CASES

採用事例

realvirtual
realvirtual

realvirtual GmbH の産業用シミュレーション/デジタルツイン基盤「realvirtual Professional」で採用されています。三菱 PLC との通信インターフェースに McpX が使われています。

EnvisionSCADA

EnvisionSCADA

Omnicon Automation の産業用 SCADA プラットフォーム「EnvisionSCADA」で利用されています。

McpX をお使いの方へ:採用事例として掲載させていただけませんか? 掲載を相談する →

// WHY McpX

シンプルで、安全な PLC 通信

型とアドレスを渡すだけで PLC を読み書きでき、その通信電文はバイト単位のテストで検証しています。

直感的で型安全な API

指定するのは型と点数だけです。ジェネリックなので bool は bool、short は short のまま扱えます。進数の誤りなど不正なアドレスは、送信前に例外で検知します。

テストとアーキテクチャで守る安全性

MCプロトコルの要求/応答パケットをバイト単位で検証する MSTest 群(カバレッジ約79%)。インターフェース駆動のレイヤード設計と型付き例外が、不正な入力を早期に検知します。

無償・OSS で、環境を選ばない

MIT ライセンスの OSS で、ライセンス費用は不要。もちろん商用利用可。.NET ネイティブなので Windows に縛られず、Linux・macOS・Raspberry Pi でもそのまま動作します。

MX Component との違い

項目McpXMX Component
ライセンス費用無償(MIT・OSS)有償
対応 OSLinux / Windows / macOSWindows のみ
実装方式.NET ネイティブWindows コンポーネント依存
導入NuGet で追加インストーラ / ライセンス手続き
ソースコード公開(GitHub)非公開

※ 公開情報に基づく一般的な比較です。

// CAPABILITIES

PLC 通信に必要な機能を過不足なく

機能を PLC 通信に絞り、アプリの設計には口を出しません。監視・制御・ロギングなど、手元のアプリに部品としてそのまま組み込めます。

01 COMBINED READ / WRITE NEW

連続もランダムも、ひとつのビルダーで

点数を付ければ一括アクセス、付けなければランダムアクセス。連続する範囲と散在するデバイスを同じビルダーに並べるだけで、McpX がコマンドを使い分けて読み書きします。アクセスの形に合わせてメソッドを選ぶ必要はもうありません。接続先が対応していれば、複数の範囲を複数ブロック一括読み書きで 1 回の交信にまとめることもできます。

Example.cs
short[] block = [];
int  total   = 0;
bool running = false;

// 点数あり → 一括アクセス、点数なし → ランダムアクセス
mcpx.Read(b => b
    .Add<short>(Prefix.D, "400", 100, v => block = v)
    .Add<int>(Prefix.D, "2000", v => total = v)
    .Add<bool>(Prefix.M, "10", v => running = v));

mcpx.Write(b => b
    .Add<short>(Prefix.D, "500", [1, 2, 3])
    .Add<bool>(Prefix.M, "20", true));
02 GX SIMULATOR3 NEW

実機がなくても、シミュレータで動作確認

McpXSimulator なら、システムNo.と号機No.を指定するだけで GX Simulator3 に接続できます。読み書きの API は実機と同じなので、PLC が手元になくても開発やテストを進められます。実機に移るときは、接続先を McpX に替えるだけです。

Example.cs
// システム1・号機1(127.0.0.1:5511)に接続
using var sim = new McpXSimulator();

// 読み書きの API は実機用の McpX と同じ
sim.Write(b => b
    .Add<short>(Prefix.D, "100", 123)
    .Add<bool>(Prefix.M, "0", true));

short d100 = sim.Read<short>(Prefix.D, "100");

// 別のシミュレータにも同時に接続(ポート 5521)
using var sim2 = new McpXSimulator(systemNo: 2);

そのほかのコマンド

コマンド説明メソッド
単一読み書き 型を指定して、1 つのデバイスをそのまま読み書きします。Read<T>/Write<T>
一括読み書き 連続するデバイスを数千点でも 1 回の呼び出しで読み書きします。点数の上限を超えると自動で分割します。BatchRead<T>/BatchWrite<T>
ランダム読み書き 散在するデバイスを型からビット/ワード/ダブルワードに振り分けて、まとめて読み書きします。RandomRead(build)/RandomWrite(build)
複数ブロック読み書き NEW離れた場所にある連続範囲を複数まとめて、1 回の交信で読み書きします。BlockRead(build)/BlockWrite(build)
モニタ デバイスを一度登録すれば、あとは Read() を呼ぶだけで最新値を取得できます。MonitorRegist(build)/MonitorSession.Read()
リモート操作 NEWCPU ユニットの RUN/STOP/PAUSE、ラッチクリア、リセットをコードから実行します。RemoteRun/RemoteStop/RemotePause/RemoteLatchClear/RemoteReset
文字列読み書き デバイスの値を Shift_JIS の文字列として読み書きします。ReadString/WriteString

すべてのコマンドに、async/await に対応した ~Async 版があります。

NO LIMITS

点数の上限も、ワード数計算も自動

MCプロトコルの一括読み書きには点数の上限がありますが、上限を超えても McpX が自動でパケットを分割して送信します。 また、型に応じた必要ワード数も内部で計算するため、プロトコルの制限を意識する必要はありません。

SECURITY

リモートパスワードを自動処理

コンストラクタにパスワードを渡すだけ。McpX がセッションの前後でリモートパスワードの解除・ロックを自動的に行います。

// USE CASES

McpXでできること

McpX が活躍する、代表的なユースケースを紹介します。

ユースケース

設備稼働監視

リアルタイム監視ダッシュボード

監視対象デバイスを登録し、現在値を周期取得。Web ダッシュボードに稼働状況やアラームをリアルタイム表示します。

ASP.NET監視非同期
SCADA 連携

SCADA ソフトの通信基盤

SCADA アプリと PLC 間の通信レイヤーを McpX で実装。型安全な読み書きで、タグ収集や制御指令の土台を安定して構築できます。

通信基盤SCADA型安全
通信ゲートウェイ

PLC ↔ サーバーの MQTT 連携

PLC から読み出したデバイス値を MQTT でサーバーへ publish する通信ゲートウェイを構築。現場データをブローカー経由でクラウドへ軽量に配信します。

MQTTゲートウェイIoT
テスト自動化 / CI

PLC ソフトの自動テスト・CI

PLC プログラムの入出力をコードから検証。デバイス値の書き込み→期待値の読み出しを自動化し、CI パイプラインに組み込めます。GX Simulator3 に接続すれば、実機がなくてもテストを回せます。

CI自動テストクロスプラットフォーム

// PLATFORMS

幅広いプラットフォーム & プロトコル対応

最新の .NET から .NET Framework まで主要な OS で動作。9 種のデータ型と 28 種のデバイスにジェネリックで対応します。

フレームワーク

.NET 7.0+.NET 8.0+.NET 9.0+.NET Core 2.0+.NET Framework 4.6.1+

オペレーティングシステム

LinuxWindowsmacOS

対応PLC

MELSEC-QMELSEC iQ-RMELSEC iQ-FGX Simulator3

プロトコル & フレーム

TCPUDP3E Frame4E FrameBinaryASCII

データ型

boolshortushortintuintlongulongfloatdouble

デバイス種別

XYMLFVBDWTSTCTNSSSCSNCSCCCNSBSWSDXDYSMSDZRZR

// QUICK START

2 ステップで動かせます

1 · パッケージを追加

terminal
dotnet add package McpX

2 · デバイスメモリを読み書き

Program.cs
using McpXLib;
using McpXLib.Enums;

// password を指定すると、生成時にリモートパスワードを解除し、破棄時にロックします
using (var mcpx = new McpX("192.168.12.88", 10000, password: "1234"))
{
    short[] block = [];
    int total = 0;

    // 範囲(点数あり)と単一デバイスを 1 回でまとめて読み込み
    mcpx.Read(b => b
        .Add<short>(Prefix.D, "400", 100, v => block = v)
        .Add<int>(Prefix.D, "2000", v => total = v));

    // 配列は一括、単一の値はランダムアクセスでまとめて書き込み
    mcpx.Write(b => b
        .Add<short>(Prefix.D, "500", [1, 2, 3])
        .Add<bool>(Prefix.M, "20", true));
}

MCプロトコルの仕組みから知りたい方は MCプロトコル入門 →

// AI SKILLS

公開中

AIで開発をブースト

McpX 向けの AI スキルを公開しました。Claude などの生成AIに McpX の正確な API を教え込むことで、PLC 通信の実装からレビューまでを加速します。

スキルを見る

プロンプトから実装

「McpX で PLC と通信するコードを書いて」、「三菱PLCからDレジスタを読みたい」といった自然な指示から、接続設定や using 文、型指定まで含めた実装を生成します。

正確な API を AI が把握

接続設定・デバイス指定(Prefix +アドレス)・読み書き・例外処理まで、McpX の正しい仕様をスキルが渡します。存在しないメソッドを AI が推測で書くのを防げます。

関連エコシステム MCP サーバー Python (mcpxpy)

// PROJECT HEALTH

安心して採用できる理由

オープンに開発・保守され、本番投入に必要な足回りが整っています。

活発にメンテナンス

継続的にアップデートし、変更は CHANGELOG で公開。不具合や要望には GitHub で対応します。

CI で自動検証

すべての変更をビルド & テスト。バイトレベルのテストで通信電文を検証します。

幅広い実行環境 & AOT

.NET Framework 対応から最新 .NET 9、Native AOT まで幅広くターゲット。

2024 年から着実にリリースを重ね、機能追加はマイナー・修正はパッチで管理しています。

// ROADMAP

今後の予定

現場での使いやすさを高める機能を継続的に追加していきます。

  • 実装済み · v0.10

    GX Simulator3 対応

    McpXSimulator を追加し、シミュレータに接続して PLC 実機がなくても動作確認ができるようになりました。

  • 実装済み · v0.9

    インターフェースの改善

    ランダムアクセスと連続アドレスを統合した Read / Write を追加。アクセスに応じてメソッドを切り替える必要がなくなりました。

  • 計画中

    ラベル対応

    iQ-R / iQ-F シリーズのグローバルラベルへのアクセスに対応。

  • 計画中

    テストカバレッジの向上

    継続的にテストを拡充し、カバレッジをさらに引き上げます。

// GET STARTED

さっそく始めよう

パッケージを追加して IP を指定するだけ。 数行のコードで、最初の読み書きがすぐ動きます。 無償・商用利用可の MIT ライセンス。

$ dotnet add package McpX