▶ すぐに試せます: https://kajiyajp.github.io/app_j5_sim/ (インストール不要、ブラウザで開くだけ)
非公式の学習用ツールです。 三菱電機株式会社とは関係がなく、同社が作ったり、認めたり、サポートしたりしているものではありません。
数値は実機の値ではない簡易モデルで、割り付けや状態遷移には実機で確かめていない例を含みます。ここのラダーや設定値を、実機の PLC・サーボに書き込まないでください。
はじめに
PLC とサーボの勉強をしたいと思っても、実機(PLC・サーボアンプ・モータ・機械)をそろえるのは、個人ではなかなか難しいです。私も FX5UC や MR-J5 の実機を触ったことがありません。
ただ、PLC やサーボのおおまかな知識はあったので、AI のコーディング支援(Claude Code)に作らせてみました。 私は「こういう構成で、こう動いてほしい」と伝えて、できあがったものを動かして確かめる、という役割です。
できあがったのは、
- GX Works3 のようにニーモニックでラダーを書いて
- 書き込むと、コントロールワードとステータスワードのやり取りが変わり
- ボールねじの機械が実際に動く
という様子を、ブラウザだけで試せるシミュレータです。
想定している構成
| 機器 | 想定 |
|---|---|
| PLC | FX5UC-64MT/D(内蔵 Ethernet) |
| ネットワーク | CC-Link IE フィールドネットワーク Basic(直結) |
| サーボアンプ | MR-J5-40G(位置決めモード・ポイントテーブル方式) |
| 機械 | リード 10 mm のボールねじ、指令単位 1 µm |
PLC が RWw(D2000〜)にコントロールワード・制御モード・ポイントテーブル No. を書き、サーボが RWr(D1000〜)でステータスワードや位置を返す、という形です。
できること
ラダーを書いて、書き込むと動きが変わる
ニーモニックを書いて「変換+書込み」(F4)を押すと、RUN 中書込みとして、そのまま動作が変わります。ラダー図はモニタ表示になっていて、導通している接点・コイルが青く光ります。
CiA402 の状態遷移を、1 段ずつ体験できる
コントロールワード(6040h)を 6 → 7 → 15 と段階を踏んで書かないと、サーボ ON になりません。いきなり 15 を書く「誤り例」のサンプルも入れてあります。
ラダー図には、今のコントロールワード・ステータスワード・制御モードの意味も表示されます(例 D2000=15 Enable operation(15)、D1000 の接点の下に「運転有効」)。
操作盤で動かす
押しボタン(起動・停止・原点復帰・JOG±・異常リセット)と切替スイッチ(サーボ ON・非常停止)があり、ランプやアンプの表示も変わります。
上のバーで、次の 2 つを切り替えられます。
| 切り替え | 内容 |
|---|---|
| No. 指定: ラダー / セレクタ | セレクタにすると、デジタルスイッチ(BCD)でポイントテーブル No.1〜4 を選べる |
| オーバーライド: OFF / ON | ON にすると、ロータリースイッチ(16 進)で速度を 50〜150 % に変えられる。運転中でもすぐ効く |
切り替えると、その組み合わせのサンプルラダーが書き込まれます。BIN K1X10 D10 のように、桁指定と BIN 命令でスイッチを読むラダーも見られます。
波形とブロック図で「なぜ」を見る
- タイミングチャート: ビットとワードの波形。トリガとカーソルで、始動(b4)と始動受付(b12)のずれなどを測れます。
- トレース: 速度・偏差・トルク。
- 構成ブロック図: スイッチ → ラダー → RWw → リンク → サーボ → モータ → RWr と、信号が流れている経路が動きます。ラダー図のデバイスにマウスを乗せると、ブロック図の同じデバイスが点滅します。
学べること(の例)
- コントロールワードを、なぜ段階を踏んで書くのか(CiA402 の状態遷移)
- 始動ビットは、制御モードの表示(6061h)が切り替わったのを確かめてから立てる
- 始動受付(ステータス b12)を見たら始動ビットを下げ、到達(b10)で完了と判断する
- RWw・RWr はリンク周期(初期 5 ms)ごとにしか届かないので、書いた次のスキャンではまだ結果が返っていない
作り方
- HTML ファイル 1 つ(
index.html)で、ライブラリは使っていません(素の JavaScript・Canvas・SVG)。 - PLC のスキャンは 1 ms、サーボの制御周期は 50 µs の簡易モデルです。位置ループ → 速度ループ → トルクフィルタ → 電流制御、と順に計算しています。
- コードは、ほぼすべて Claude Code が書いています。私は、機能の要望を出し、画面で動きを見て「ここがおかしい」「こうしてほしい」と直してもらう、を繰り返しました(操作盤の JOG±の向き、モード切り替えでラダーが変わらない不具合、など)。
- そのため、PLC・サーボの細かい仕様が実機どおりかは、私自身も確かめられていません。 下の「お願い」につながります。
お願い: 実機をご存じの方へ
冒頭のとおり、私は実機を触ったことがありません。そのため、
- RWw・RWr とオブジェクトの割り付け
- JOG やオーバーライドの指定方法
- 原点復帰やアラームの細かい動き
などに、実機と違うところが残っているはずです。
「ここは実際と違う」という一言が、いちばん助かります。 コードを書かなくても大丈夫です。GitHub の Issue に「実機確認」のフォームを用意しているので、分かる範囲で教えてもらえるとうれしいです。
- 参加のしかた: https://github.com/kajiyajp/app_j5_sim/blob/main/CONTRIBUTING.md
- Issue(実機確認・不具合・要望): https://github.com/kajiyajp/app_j5_sim/issues/new/choose
機能の要望や、「こういう学び方がしたい」という感想も歓迎です。
リンク
- 公開ページ: https://kajiyajp.github.io/app_j5_sim/
- GitHub: https://github.com/kajiyajp/app_j5_sim
- ライセンス: MIT License
MELSEC、MELSERVO、GX Works3、CC-Link、CC-Link IE などの名称は、三菱電機株式会社またはそれぞれの権利者の商標または登録商標です。CiA は CAN in Automation e.V. の登録商標です。この記事では、対応する機種や規格を説明するためにだけ、これらの名称を使っています。
