0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#で三菱PLCと通信する方法(第2弾)McpXの通信設定

Last updated at Posted at 2025-04-19

はじめに

前回の記事では、三菱電機製PLC(MELSEC)と通信する最短コードを紹介しました。

🔗 第1弾はこちら

今回は、通信設定について紹介します。

使用ライブラリ

McpXの通信設定

以下は、McpXクラスのコンストラクタのパラメータです。
各パラメータは、PLCの設定内容に合わせて適切に指定する必要があります。

McpX(
    string ip,
    int port,
    string? password = null,
    bool isAscii = false,
    bool isUdp = false,
    RequestFrame requestFrame = RequestFrame.E3
)

パラメータの説明

パラメータ デフォルト 説明
ip string - PLCのIPアドレスを指定します。
port int - PLCのポートを指定します。
password string null リモートパスワードを設定している場合に限り、パスワードを指定します。
isAscii bool false
(バイナリ)
ASCIIコードによる交信を行う場合にtrueを指定します。
isUdp bool false
(TCP)
UDPによる交信を行う場合にtrueを指定します。
requestFrame RequestFrame RequestFrame.E3
(3Eフレーム)
フレーム(電文フォーマット)の種類を指定します。

ipportは、必須項目です。
ipportのみを指定した場合のデフォルト設定は、下記になります。

  • バイナリ交信
  • TCP
  • 3Eフレーム

バイナリとASCIIどっちを選択するべきか?

結論から申し上げると、バイナリになります。
バイナリは、ASCIIに比べてパケットサイズが約半分で済むため、高速に通信できます。
また、McpXの内部処理は、バイナリベースで実装しており、内部処理でバイナリ、ASCIIを相互変換しています。
このため、ASCII通信はバイナリ通信に比べて変換処理が多く、通信速度・処理速度の両面でやや劣る傾向があります。

ただし、既存のPLCでパラメータ変更ができない場合や、上記の点を理解したうえでASCIIを選ぶのであれば、使用しても問題ありません。

TCPとUDPどっちを選択するべきか?

速度だけの観点で言うとUDPです。
TCPには、UDPにはない信頼性を確保するための処理が含まれているため、UDPと比べてどうしても通信速度は低下します。
しかし、UDPでは通信の特性上、信頼性が担保されないので使い分けて使用するのがいいと思います。
例えば、データの書き込みなど信頼性が求められる処理にはTCPを、周期的にデータを読み取るような処理にはUDPを使うなど、用途に応じて使い分けることで、信頼性とパフォーマンスの両立が可能です。

3Eフレームと4Eフレームどっちを選択するべきか?

使用するPLCが対応している電文フォーマットを選択してください。
近年のPLC(iQ-R)などは、どちらのフォーマットにも対応していますが、
少し前のQ**UDEなどのCPU内蔵Ethernetポートを持つPLCでは、3Eフレームのみに対応している場合があります。

4Eフレームは3Eフレームにシリアル番号を追加した拡張フレームです。
要求電文にシリアル番号を付加することで、複数送信した場合などに応答電文の識別ができます。

インスタンスの生成

McpXクラスは IDisposable インターフェースを実装しており、using句を使うことで、インスタンスが不要になったタイミングで自動的にPLCとの接続を切断し、リソースを解放します。その為、using句を使ったインスタンスの生成を推奨します。

推奨

using (var mcpx = new McpX("192.168.12.88", 10000)){
   ...
}

非推奨

var mcpx = new McpX("192.168.12.88", 10000);
   ...
mcpx.Dispose()

まとめ

今回は、三菱PLCと通信する際に必要な McpXの基本設定について紹介しました。

  • ipportは必須、その他の通信方式(ASCII/バイナリ、TCP/UDP、3E/4E)は用途やPLCの仕様に応じて選択する
  • デフォルトは「バイナリ + TCP + 3Eフレーム」が基本構成
  • McpXのインスタンスの生成は、using句を使うことで、確実に接続を閉じることができる

次回は、McpXが対応している各種コマンドとその使い方を具体的なサンプルコードとともに紹介していきます!

参考リンク


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

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?