今回の記事では、三菱電機のPLCとRJ51AW12AL(MELSEC)、Anywire省配線システムを使用して、リモートI/O接続を実践します。基本的なデジタル入力の取得から、ハードウェア設定、プログラムからAnyWireデバイスのパラメータ読み書き、自動アドレス検知をゼロから構築していきます。
本記事では以下のデバイスを使用しています。
- BL296PB-16F-V50
- BL296PB-08F-4-20
- BS-H0317-1K
さ、FAを楽しもう!

前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
Reference Link
http://soup01.com/ja/category/protocol/anywire/
概要データ
プロジェクトを展開するまえに、今回記事で使用した部分を説明します。
Bit出力エリア
下記の赤枠ではBit出力のBuffer Memoryアドレスになります。


モジュール接続数
こちらのBuffer Memoryは現在RJ51AW12ALとAnyWireで接続されているノード数を確認できます。

パラメータアクセス読む
1. アクセス方法を設定する。 「パラメータアクセス設定」(Un\G10320)に0000H(読み出し)を格納します。
2. アクセス対象IDを設定する。 「パラメータアクセス対象モジュールID指定」(Un\G10321)にアクセス対象IDを格納します。
ID | 説明 |
|---|---|
0000H~00FEH | ビット出力リモートモジュールのID |
0200H~02FEH | ビット入力リモートモジュール、またはビットI/O複合リモートモジュールのID |
0400H~05FEH | ワード出力リモートモジュールのID |
0600H~07FEH | ワード入力リモートモジュール、またはワードI/O複合リモートモジュールのID |
3. リモートモジュールの「パラメータアクセス要求コマンド」(Y10)をOFF→ONする。 このとき、「パラメータアクセス完了フラグ」(X11)がOFFになる。また、「パラメータアクセス中フラグ(ハンドシェイク付き)」(XB)がONになる。
4. パラメータアクセスが完了すると、「パラメータアクセス完了フラグ」(X11)が自動的にONになる。
5. リモートモジュールの「パラメータアクセス要求コマンド」(Y10)をON→OFFする。
6. 「パラメータアクセス完了フラグ」(X11)がONになり、以下の信号がすべてOFFになると、「パラメータアクセス中フラグ(ハンドシェイク付き)」(XB)がOFFになる。
- リモートモジュールの「パラメータ一括読み出しコマンド」(Y11)
7. 読み出したパラメータは、各IDの以下の場所に格納される。
(Un\G12288~Un\G12335)
パラメータアクセス読む
1. アクセス方法を設定する。 「パラメータアクセス設定」(Un\G10320)に0001H(書き込み)を格納します。
2. アクセス対象IDを設定する。 「パラメータアクセス対象モジュールID指定」(Un\G10321)にアクセス対象IDを格納します。
ID | 説明 |
|---|---|
0000H~00FEH | ビット出力リモートモジュールのID |
0200H~02FEH | ビット入力リモートモジュール、またはビットI/O複合リモートモジュールのID |
0400H~05FEH | ワード出力リモートモジュールのID |
0600H~07FEH | ワード入力リモートモジュール、またはワードI/O複合リモートモジュールのID |
3. リモートモジュールの「パラメータアクセス要求コマンド」(Y10)をOFF→ONする。 このとき、「パラメータアクセス完了フラグ」(X11)がOFFになる。また、「パラメータアクセス中フラグ(ハンドシェイク付き)」(XB)がONになる。
4. パラメータアクセスが完了すると、「パラメータアクセス完了フラグ」(X11)が自動的にONになる。
5. リモートモジュールの「パラメータアクセス要求コマンド」(Y10)をON→OFFする。
6. 「パラメータアクセス完了フラグ」(X11)がONになり、以下の信号がすべてOFFになると、「パラメータアクセス中フラグ(ハンドシェイク付き)」(XB)がOFFになる。
- リモートモジュールの「パラメータ一括書き込みコマンド」(Y12)
7. 読み出したパラメータは、各IDの以下の場所に格納される。
(Un\G12288~Un\G12335)
自動アドレス検出コマンド(Y1)
1. すべてのリモートモジュールが正常に動作していることを確認する。
2. 「自動アドレス検出コマンド」(Y1)をOFF→ONする。 このとき、「自動アドレス検出フラグ」(X14)がONになる。
3. SET LEDがしばらく点滅した後に消灯すると、ID(アドレス)が格納されたことを示す。
4. 「自動アドレス検出フラグ」(X14)がOFFになると、自動アドレス検出が完了する。

Implementation
それでは実際にプログラムを作成しましょう。
GXWORKS 側
次は三菱のGXWORKS3プロジェクトを構築します。

Program
次はプログラムを作成します。


Rung1-4
このプログラムは RJ51AW124L(AnyWireASLINK マスタモジュール)のステータス・エラー情報をHMI用内部リレー(M)へ転送するロジックです。
ラング | 出力コイル | 内容 |
|---|---|---|
0 | M10 / HMI用コイル | モジュール正常動作中フラグ |
1 | M10 / HMI: RJ51A W124L READY | 準備完了フラグのHMI転送 |
2 | M11 / HMI: DP/DN short error | DP/DN線間短絡エラー |
3 | M12 / HMI: 24V/DP short error | 24V-DP間短絡エラー |
4 | M14 / HMI: DP/DN disconnection error | DP/DN断線エラー |

Rung5-9
このプログラムはパラメータアクセス関連ビットのHMI転送ロジックです。
ラング | 出力コイル | 内容 |
|---|---|---|
5 | M15 / HMI: Module Ready | モジュール準備完了フラグのHMI転送 |
6 | M21 / HMI: Parameter Access OK | パラメータアクセス完了フラグのHMI転送 |
7 | M16 / HMI: Parameter batch read Command | パラメータ一括読み出しコマンドのHMI転送 |
8 | M17 / HMI: Parameter batch Write Command | パラメータ一括書き込みコマンドのHMI転送 |
9 | M18 / HMI: Parameter accessing flag (with handshake) | パラメータアクセス中フラグ(ハンドシェイク付き)のHMI転送 |

Rung10-13
このプログラムはM15(Module Ready)がONの間、バッファメモリから各種情報をDレジスタへ継続転送します。
- D300 ← U0\G4096:Node1のビット出力状態
- D301 ← U0\G4097:Node2のビット出力状態
- D1050 ← U0\G38960:現在の接続モジュール台数
- D200に0を書き込み、パラメータ読み出し制御用DMを初期化します

Rung14-18
このプログラムはパラメータ読み出し処理の起動シーケンスを実装しています。処理の流れとしては:
M15 ON かつ M00 ON
|
|---|

Rung19-20
こちらはD200.0(Control DM: Read Parameters のビット0)がONで実行するプログラムです。
- ラング19:U0\G9212に格納されているモジュールIDを読み出し対象として、パラメータアクセス対象ID指定レジスタ(U0\G10321)へセットする
- ラング20:D200を2に更新することで、制御ステートマシンを次のステップ(ステップ2)へ遷移させる

Rung21-24
こちらはD200.1(Control DM: Read Parameters のビット1)がONで実行するプログラムです。
- ラング21: Y11 OUTパラメータ一括読み出しコマンド(Y11)をON
- ラング22:タイマT1を起動(設定値K50 = 5秒)。タイムアウト監視用
- ラング23:X0B ON → MOV H4, D200パラメータアクセス中フラグ(ハンドシェイク付き)(X0B)がONになったら D200 ← 4(次ステップへ遷移)
- ラング24:T1 ON → SET M90タイマT1がタイムアウトしたら Error Read Parameters(M90)をセットします

Rung25-28
こちらはD200.2(Control DM: Read Parameters のビット2)がONで実行するプログラムです。
- ラング25:パラメータ格納エリア(G12384)から読み出した値(544)をD1249へ保存
- ラング26:G12385以降19ワードのパラメータデータをD1200〜D1218へブロック転送
- ラング27:HMIからの読み出し要求フラグM30をリセット(要求処理完了)
- ラング28:D200を0に戻してステートマシンをアイドルへ復帰

Rung29-33
このプログラムはパラメータ書き出し処理の起動シーケンスを実装しています。処理の流れとしては:
M15 ON かつ M31 ON
|
|---|

Rung34-35
こちらはD210.0(Control DM: Write Parameters のビット0)がONで実行するプログラムです。流れとしては:
D210.0 ON(=1)
|
|---|

Rung36-38
こちらはD210.1(Control DM: Write Parameters のビット1)がONで実行するプログラムです。流れとしては:
D210.1 ON(=2)
|
|---|

Rung39-42
こちらはD210.2(Control DM: Write Parameters のビット2)がONで実行するプログラムです。流れとしては:
D210.2 ON(=4)
|
|---|

Rung43-44
こちらはBS-H0317-1Kの測定値を別のDMに格納します。
- ラング43:SM400(常時ONの特殊リレー)により、D220を常時0でリフレッシュ
- ラング44:M15がONの間、G12424(Node3のセンシングレベル格納アドレス)の実値をD220へ上書き転送

Rung45-48
こちらは自動アドレス検出シーケンス起動のプログラムです。流れとしては:
M32 ↑(立ち上がり)
|
|---|

Rung49-52
こちらは自動アドレス検出の監視・完了処理のプログラムです。流れとしては:
M32 ↑ → Y1 SET(検出開始)
|
|---|

結果
プログラムからノード3(BS-H0317-1K)の測定値を確認できました。

最初はM32をONして自動アドレス検出シーケンス起動します。

D1400から各ノードのIDが表示されます。

次はM30をONにし、ノード3(BS-H0317-1K)のパラメータを取得します。

D1200からノード3(BS-H0317-1K)のパラメータが取得しできました。

今度はパラメータをノード3(BS-H0317-1K)に書き込みます。

M31をONにし、パラメータ書込みシーケンスを起動します。

パラメータが更新されました。

ダウンロード
こちらのLinkから今回の記事のプログラムをDownloadしてください。
https://github.com/soup01Threes/GXWROKS/blob/main/AnyWire_Tutorial_ProgramReadWriteParameters.gx3