はじめに
最近FA界隈で話題のFactory IOを使って、MELSECとの通信を実現する方法を解説します。
Factory IOは自分で機械を組み合わせて工場の設備を作る海外のシミュレーションソフトウェアです。この記事では、Modbus/TCP自動応答機能を使用してMELSECとFactory IOを接続する方法を詳しく説明します。
Factory IOとは
Factory IOは、自分で機械を組み合わせて工場の設備を作る海外のシミュレーションソフトウェアです。
公式サンプル動画
メーカーが用意しているサンプル設備の動画もあります。これがわかりやすいです。
参考資料:Factory IO マニュアル
参考ブログ
Factory IOは3threesさんがブログで丁寧に解説されているので、使い方はこちらが勉強になります。
Factory IO使用可能な通信方法
以下がVer2.5.1で選べる選択肢です。
やはり海外製のソフトなのでMCプロトコルやSLMPには非対応です。ということで、MELSECで通信をするには以下の3択となってしまいます。
1. OPC Client DA/UA
- たけびし DeviceXPlorer OPC Server
- MELSOFT MX OPC Server UA (SW3DND-OPCUAS-E)
- OPC UAサーバユニット (RD81OPC96, FX5-OPC)
OPCは別途サーバのアプリが必要です。
たけびし DeviceXPlorer OPC Serverの32bit版(64bit版はEZSocket非対応)を使うと、EZSocket接続でGX Works2/3のSimulatorと通信が可能です。実機が不要です。
YouTubeで「MELSEC FactoryIO」で検索すると、MELSOFT MX OPC Server UAの接続例が見れますが、このソフトは日本語版がない(たぶん)ので国内で入手可能か謎です。
2. Modbus TCP server
Factory IOを「Modbus TCP/IP Server」に設定した場合、Function CodeはPLCから送ります。(ServerはSlaveと同じ役目)
- MODBUS自動交信機能
- 通信プロトコル支援機能
- シンプルCPU通信[MODBUS/TCP]
3. Modbus TCP client
Factory IOを「Modbus TCP/IP Client」に設定した場合、Function CodeはFactory IOから送ります。(ClientはMasterと同じ役目)
- MODBUS自動応答機能
- シンプルCPU通信[MODBUS/TCP]
自動応答機能での設定例(MELSEC iQ-F FX5U)
今回は自動応答機能での説明をします。設定が一番楽な方法です。
通信プロトコル支援機能が一番対応機種が多いのでサンプルプログラムを作っていたのですが、半日かかってもうまく通信ができなかったので今回はあきらめました。(もしかしたらファイアウォールの設定も必要なのかも)
対応機種
MODBUS自動応答機能を使うには以下のユニットを装着またはCPUを使用している必要があります。
| シリーズ | 型式 |
|---|---|
| MELSEC iQ-Rシリーズ | RJ71EN71 |
| MELSEC iQ-Rシリーズ | RnENCPU |
| MELSEC iQ-Fシリーズ | FX5U, FX5UC, FX5UJ |
| MELSEC Qシリーズ | QJ71MT91 |
こう考えるとiQ-Fシリーズは低価格だけど標準装備の通信機能が充実しているのでIoTとかに向いているように思います。デバイス点数は少ないですが。
設定例
MELSEC iQ-F FX5Uでの設定例となります。家にあるのがこれなので。
参考記事:MELSEC iQ-F FX5Uの設定例
参考マニュアル:JY997D55001 MELSEC iQ-F FX5ユーザーズマニュアル(MODBUS通信編)
1. PLCのIP設定
PLCのIP設定です。Factory IOを実行するPCと同一セグメント内で重複しないIPを割り当ててください。
2. 相手機器接続構成設定
相手機器接続構成設定でMODBUS/TCP接続機器を下の画面のようにドラッグ&ドロップしてください。ポート番号は502。設定を反映して閉じる。
3. 使用設定
2の操作により「使用」が勝手に選択されます。
4. デバイス割り付けの設定
デバイス割り付けの設定です。
デフォルトの状態では勝手に割り付けがされます。使用しない箇所は消してください。
割付1は以下にします:
| コイル | 入力 | 入力レジスタ | 保持レジスタ |
|---|---|---|---|
| M0 | M32 | D0 | D32 |
| 0 | 0 | 0 | 0 |
| 32 | 32 | 32 | 32 |
割付2以降はデバイスは空欄、先頭MODBUSデバイス番号は0、割付点数も0にしてください。
これで完了です。PLCに書き込んでください。
Factory IO設定
シーンの選択
今回の設定例ではOpen-ScenesでAssemblerを選びます。
下のICみたいなアイコンを押します。
Modbus TCP/IP Clientを選択します。この時点でデフォルトで勝手に割り付けがされます。
PLCのアドレス設定
PLCのアドレスを設定します。←で閉じます。
通信開始
CONNECTを押すと通信開始をします。通信開始でDISCONNECTに表記が変わり、チェックマークのアイコンが点灯します。
通信確認
通信開始するとM12とM13が点灯します。
- M12はCoil 12とリンクしています
- M13はCoil 13とリンクしています
Factory IOの状態と一致しますね。
アドレス対応表
つまり以下のようにリンクします。入力と出力の表記は入れ替わるのはFactory IO側から見た入出力だからです。
DI(Factory I/OのDI(ボタン等)はCoil(コイル)に出力)
| PLCアドレス | MODBUSアドレス |
|---|---|
| M0 | Coil 0 |
| M1 | Coil 1 |
| M2 | Coil 2 |
| 省略 | 省略 |
| M29 | Coil 29 |
| M30 | Coil 30 |
| M31 | Coil 31 |
DO(Factory I/OのDO(ランプ等)はInput(入力)から読み出し)
| PLCアドレス | MODBUSアドレス |
|---|---|
| M32 | Input 0 |
| M33 | Input 1 |
| M34 | Input 2 |
| 省略 | 省略 |
| M61 | Input 29 |
| M62 | Input 30 |
| M63 | Input 31 |
AO(Factory I/OのAO(7セグの数値表示等)はInput Reg(入力レジスタ)から読み出し)
| PLCアドレス | MODBUSアドレス |
|---|---|
| D0 | Input Reg 0 |
| D1 | Input Reg 1 |
| D2 | Input Reg 2 |
| 省略 | 省略 |
| D29 | Input Reg 29 |
| D30 | Input Reg 30 |
| D31 | Input Reg 31 |
AI(Factory I/OのAI(流量計等)はHolding Reg(保持レジスタ)に出力)
| PLCアドレス | MODBUSアドレス |
|---|---|
| D32 | Holding Reg 0 |
| D33 | Holding Reg 1 |
| D34 | Holding Reg 2 |
| 省略 | 省略 |
| D61 | Holding Reg 29 |
| D62 | Holding Reg 30 |
| D63 | Holding Reg 31 |
動作確認
三角ボタン(再生マーク)を押してStartボタンを押すとM10(Coil 10)がONします。
これでなんか動きそうですね。次回は動かしてみます。
まとめ
Factory IOとMELSECをModbus/TCP自動応答機能で接続する方法を解説しました。
重要なポイント
- Factory IO: 海外製のシミュレーションソフトウェア
- 通信方法: Modbus/TCP自動応答機能が最も簡単
- 対応機種: iQ-Fシリーズが標準装備で便利
- 設定手順: PLC側とFactory IO側の両方で設定が必要
- アドレス対応: 入出力の表記が入れ替わることに注意
この設定により、実機がなくてもFactory IOでMELSECの動作をシミュレーションできるようになります。













