MX Component で64bit版のDLLを手に入れる

No Image

MX Component は三菱のPLCとPCを通信するときに使うミドルウェアです。
PLC側にネットワーク関連のユニットがなかったり、LANでの接続が難しかったりする場合は、USBでしか接続できません。
そういう場合には MX Component があるとシステム構築が楽です。

Ver.5から64bitに対応していますが、なぜか64bit用のDLLは見つかりません。
普通に使う分には別にどうでもいい話ですが、個人的にはあったほうがいいなと思うのです...

スポンサーリンク

今まで通りに使いたい

そもそもDLLがあるとどう変わるのかと言うと、今まで通りが通用します。
C#であれば、以前は下記のような書き方だでした。

using ActUtlTypeLib;

ActUtlType plc = new ActUtIType();
plc.ActLogicalStationNumber = 1;

Ver.5では32bitと64bitで分けるようになってだいぶインスタンスの記述が変わっています。

#if PLATFORM_x64
    private ActUtlType64Lib.ActUtlType64Class lpcom_ReferencesUtlType;
    private ActProgType64Lib.ActProgType64Class lpcom_ReferencesProgType;
    private ActSupportMsg64Lib.ActSupportMsg64Class lpcom_ReferencesMsg;
#else
    private ActUtlTypeLib.ActUtlTypeClass lpcom_ReferencesUtlType;
    private ActProgTypeLib.ActProgTypeClass lpcom_ReferencesProgType;
    private ActSupportMsgLib.ActSupportMsgClass lpcom_ReferencesMsg;
#endif

#if PLATFORM_x64
    /*Create instance for ACT controls for 64bit*******************/
    lpcom_ReferencesUtlType = new ActUtlType64Lib.ActUtlType64Class();
    lpcom_ReferencesProgType = new ActProgType64Lib.ActProgType64Class();
    lpcom_ReferencesMsg = new ActSupportMsg64Lib.ActSupportMsg64Class();
#else
    /*Create instance for ACT controls for 32bit*******************/
    lpcom_ReferencesUtlType = new ActUtlTypeLib.ActUtlTypeClass();
    lpcom_ReferencesProgType = new ActProgTypeLib.ActProgTypeClass();
    lpcom_ReferencesMsg = new ActSupportMsgLib.ActSupportMsgClass();
#endif

あと、上記の記述は .NET 8 とか新しめのアプリケーションプラットフォームだと動かないので .NET Framework を使う必要がありますが、それもあまりなんか釈然としないんですよ...

サンプルプロジェクトをビルドする

DLLはサンプルサンプルプロジェクトをビルドすることで手に入ります。
なんでもいいのですが、ActUtlTypeが入っていたほうがいいなと思って私は下記のフォルダにあるサンプルをビルドしました。

"C:\Program Files (x86)\MELSOFT\ACT\Samples\Vcs.NET\Act\Act_2022.sln"

スポンサーリンク

ビルドするとDebugやReleaseのフォルダの中に Interop... .dll というファイルが生成されます。
たとえばInterop.ActUtlType64Lib.dllみたいなファイルです。
これらのファイルを拝借して使っちゃえばいいのです。(参照マネージャで追加する)

すると64bit版の記述は下記のようになります。

using ActUtlType64Lib;

ActUtlType plc = new ActUtIType64();
plc.ActLogicalStationNumber = 1;

これですよ、これ。
この記述だと新しい .NET でも使えます。
公式には対応してませんと書いてあるので、自己責任でお願いします。

時代の流れとしてはLAN搭載になってきたので、もう少ししたらUSBがいらなくなるかもしれませんね。
でもUSBだとPCに最初からいくつも付いているので便利だったりするんですよ。
結局FX5SもUSBが付いてますから、せめて最新の仕様には対応して欲しいなと思っています。

MX Component で64bit版のDLLを手に入れる

スポンサーリンク

Leave a Comment