はじめに
三菱PLC同士でデータをやり取りしたいとき、候補になる通信方式のひとつが SLMP通信 です。
特にFX5シリーズではEthernetポートを標準搭載している機種が多く、追加ユニットなしでPLC間通信を検討できます。
CC-Link IE Field BasicではPLC間通信できるのか?でも触れていますが、CC-Link IE Field BasicはリモートI/Oやインバータ接続向けであり、PLC間通信の本命として考える通信方式ではありません。基礎的な位置づけの整理はCC-Link IE Field Basicとは?にまとめています。
では、FX5同士で、
- 起動指令を送る
- 運転中信号を共有する
- 異常コードを渡す
- Dレジスタを読み書きする
- MデバイスをON/OFFする
といった通信をしたい場合、どうすればよいのか。
現場目線では、まず SLMP通信 を検討するのが分かりやすいです。
この記事では、FX5実機を想定して、SLMP通信の設定手順と注意点を整理します。
SLMP通信とは
SLMPは、三菱PLCなどの機器とEthernet経由でデータをやり取りするための通信方式です。
ざっくり言うと、
Ethernet経由で、相手PLCのデバイスを読み書きする通信
です。
CC-Link IE Field Basicが、リモートI/Oやインバータなどを周期的に扱うフィールドネットワーク寄りなのに対して、SLMPは相手PLCのDレジスタやMデバイスを読みに行く、または書き込むような使い方に向いています。
三菱電機のSLMP関連マニュアルでは、SLMP対応機器に接続して他局PLCへデータ変更などの制御を行う場合、相手PLC側プログラムにインターロックを構成し、システム全体が常に安全に動作するようにする必要があると注意されています。
つまり、SLMPは便利ですが、通信できることと、安全に使えることは別です。
今回想定する構成
この記事では、次のような構成を想定します。
主PLC:FX5U
従PLC:FX5UC-32MT/D
接続:Ethernetハブ経由
用途:主PLCと従PLC間でDレジスタ・Mデバイスをやり取りする
イメージとしては、主PLCが従PLCの情報を読みに行き、必要に応じて指令を書き込む構成です。
FX5U(主側)
│
│ Ethernet
│
スイッチングハブ
│
│ Ethernet
│
FX5UC(従側)
ここでは説明を分かりやすくするため、以下のようなデータをやり取りする想定にします。
| 用途 | 主PLC側 | 従PLC側 |
|---|---|---|
| 起動指令 | M100 | M1000 |
| 停止指令 | M101 | M1001 |
| 従側運転中 | M200 | M1100 |
| 従側異常 | M201 | M1101 |
| 異常コード | D200 | D1000 |
| 現在ステップ | D201 | D1001 |
※アドレスは例です。実際は既存プログラムと重複しない範囲を使います。
SLMP通信を使う前に決めること
設定に入る前に、次の内容を決めておきます。
| 項目 | 例 |
|---|---|
| 主PLCのIPアドレス | 192.168.3.10 |
| 従PLCのIPアドレス | 192.168.3.20 |
| サブネットマスク | 255.255.255.0 |
| 通信方式 | TCPまたはUDP |
| 読み出すデバイス | D1000、M1100など |
| 書き込むデバイス | M1000、D100など |
| 通信異常時の処理 | 異常停止、出力OFF、リセット待ちなど |
ここを決めずに設定を始めると、あとで何を読んでいるのか、どちらが正なのか分からなくなります。
実務では、先に通信デバイス表を作るのがおすすめです。
手順1:IPアドレスを設定する
まず、各PLCのEthernetポートにIPアドレスを設定します。
GX Works3で、
パラメータ
→ FX5UCPU または FX5UCCPU
→ ユニットパラメータ
→ Ethernetポート
を開き、IPアドレスとサブネットマスクを設定します。
例:
| 機器 | IPアドレス | サブネットマスク |
|---|---|---|
| 主PLC FX5U | 192.168.3.10 | 255.255.255.0 |
| 従PLC FX5UC | 192.168.3.20 | 255.255.255.0 |
| PC | 192.168.3.100 | 255.255.255.0 |
同じネットワーク内で重複しないIPアドレスを設定します。
IPアドレスが重複すると、通信できたりできなかったりする不安定な状態になります。
手順2:通信相手機器を設定する
次に、通信相手機器の設定を行います。
FX5 CPUユニットのバージョンによって、設定の考え方が変わる場合があります。
三菱電機のFAQでは、シンプルCPU通信機能に対応しているFX5 CPUユニットと、対応していないFX5 CPUユニットを接続する場合について、ファームウェアバージョン1.110以降のFX5 CPUユニットでは、GX Works3の「Ethernetポート」→「応用設定」→「シンプルCPU通信設定」から、交信相手の機器種別を「SLMP対応機器(QnA互換3Eフレーム)」に設定すると説明されています。
また、ファームウェアバージョン1.110未満のFX5 CPUユニットでは、GX Works3の「Ethernetポート」→「基本設定」→「相手機器接続構成設定」からSLMP接続機器を設定すると説明されています。
つまり、実機ではまず次を確認します。
- FX5 CPUのファームウェアバージョン
- GX Works3のバージョン
- 使用する通信設定画面
ここを確認せずに手順だけ真似すると、画面構成が違って迷いやすいです。
手順3:通信方式を決める
SLMPでは、TCPまたはUDPを使う構成があります。
どちらを使うかは設備の考え方によります。
| 通信方式 | 特徴 | 現場での考え方 |
|---|---|---|
| TCP | 接続を確立して通信する | 確実性を重視したい場合に使いやすい |
| UDP | 接続確立なしで通信する | 軽い通信に向くが、異常時処理を意識する |
PLC間通信で、起動指令や異常コードのような重要な情報を扱う場合は、個人的にはTCPの方が考えやすいです。
ただし、設備標準や相手機器の仕様がある場合は、それに合わせます。iQ-FシリーズのFX5UCPU、FX5UCCPU、FX5UJCPUでは、CPUユニット上のEthernetポートでUDPとTCPの両方に対応した通信設定が可能です(各社SLMPクライアントドライバの対応状況もあわせて確認してください)。
手順4:読み書きするデバイスを決める
次に、どのデバイスを通信に使うかを決めます。
例として、従PLC側に次の領域を用意します。
従PLC側の送信用デバイス
| デバイス | 内容 |
|---|---|
| M1100 | 従PLC 運転中 |
| M1101 | 従PLC 異常中 |
| M1102 | 従PLC 原点復帰完了 |
| D1000 | 異常コード |
| D1001 | 現在ステップ |
| D1002 | サイクルカウント |
従PLC側の受信用デバイス
| デバイス | 内容 |
|---|---|
| M1000 | 主PLCからの起動指令 |
| M1001 | 主PLCからの停止指令 |
| M1002 | 主PLCからのリセット指令 |
| D1100 | 主PLCからの品種番号 |
| D1101 | 主PLCからの指示値 |
ポイントは、送信用と受信用を分けることです。
同じデバイスを両方のPLCが書き込む設計にすると、どちらの値が正しいのか分からなくなります。
手順5:通信デバイス表を作る
SLMP通信では、通信デバイス表を作っておくと保守が楽になります。
例:
| No. | 方向 | デバイス | 内容 | 備考 |
|---|---|---|---|---|
| 1 | 主→従 | M1000 | 起動指令 | 1ショットまたは保持 |
| 2 | 主→従 | M1001 | 停止指令 | 異常時はOFF |
| 3 | 主→従 | M1002 | 異常リセット | 立上りで処理 |
| 4 | 従→主 | M1100 | 運転中 | 状態監視 |
| 5 | 従→主 | M1101 | 異常中 | 異常停止条件 |
| 6 | 従→主 | D1000 | 異常コード | HMI表示用 |
| 7 | 従→主 | D1001 | 現在ステップ | デバッグ用 |
この表を作っておくと、後からHMI画面やラダーを確認するときにかなり楽です。
手順6:通信確認用の簡単なラダーを作る
いきなり本番の工程信号を通信させるのではなく、まずはテスト用のデバイスで通信確認をします。
例えば、従PLC側で次のようなテストを作ります。
X0がONしたら D1000 に 1234 を入れる
X1がONしたら M1100 をONする
主PLC側から従PLCのD1000やM1100を読めるか確認します。
通信確認では、最初から複雑な制御に入れない方がよいです。
まずは、
- 1ビット読めるか
- 1ワード読めるか
- 1ビット書けるか
- 1ワード書けるか
を順番に確認します。
手順7:パラメータを書き込む
Ethernet設定や通信設定を変更したら、PLCへパラメータを書き込みます。
GX Works3でプログラム入力後に変換し、「オンライン」→「シーケンサへ書込み」から必要な項目にチェックを入れて書き込みます。
実務では、書き込み対象を確認します。
- パラメータ
- プログラム
- デバイス初期値
- コメント
通信設定を変えたのにパラメータを書き込んでいない、というミスはよくあります。
また、設定変更後はPLCの再起動が必要になる場合があります。実機の動作に合わせて確認します。
手順8:通信テストを行う
設定後は、次の順で確認します。
- PCから各PLCへPING確認
- GX Works3で各PLCへ接続確認
- 主PLCから従PLCのテストデバイスを読む
- 主PLCから従PLCのテストデバイスへ書く
- 通信異常時の動作を確認する
ここで大事なのは、正常時だけでなく、通信断も確認することです。
例えば、
- LANケーブルを抜く
- 従PLCの電源を切る
- ハブの電源を切る
- IPアドレスを間違えた状態を確認する
などです。
本番運用では、通信できないときにどう止まるかが重要です。
通信異常時の設計
SLMP通信で一番重要なのは、通信異常時の扱いです。
三菱電機のSLMP関連マニュアルでは、通信障害でリモート他局PLCに問題が起きた場合、即時対応できないことがあるため、通信障害発生時のシステムとしての処理方法を決めること、相手PLC側プログラムにインターロックを構成することが注意されています。
現場では、最低限以下を決めておきます。
| 項目 | 例 |
|---|---|
| 通信異常検出 | 一定時間応答なしで異常 |
| 異常時の出力 | 起動指令OFF、動作許可OFF |
| 復帰条件 | 通信復旧+作業者リセット |
| 自動再開 | 原則しない |
| HMI表示 | 「従PLC通信異常」など具体表示 |
特に、主PLCから従PLCへ起動指令を出す構成では、通信断時に起動指令が保持されたままにならないようにします。通信復旧後にいきなり動き出さないための復帰設計の考え方はPLC異常停止後に安全復帰する設計方法でまとめています。
現場でおすすめの信号設計
PLC間通信では、単純に起動指令だけを送るのではなく、ハンドシェイクを作る方が安全です。
例:
主PLC → 従PLC:起動要求
従PLC → 主PLC:起動要求受信
従PLC → 主PLC:動作中
従PLC → 主PLC:完了
主PLC → 従PLC:完了確認
最低限、次のような信号を用意しておくとトラブル解析しやすいです。
| 信号 | 内容 |
|---|---|
| 通信正常 | 相手PLCと通信できている |
| 起動要求 | 主側から従側へ起動指令 |
| 起動受付 | 従側が起動条件OKで受け付けた |
| 動作中 | 従側が動作中 |
| 完了 | 従側の処理完了 |
| 異常 | 従側異常 |
| 異常コード | 異常内容の数値 |
通信だけでなく、設備の状態遷移が見えるようにするのがポイントです。
よくあるトラブル
1. PINGは通るがSLMP通信できない
IPアドレスは合っていても、通信設定や相手機器設定が合っていない可能性があります。
確認ポイント:
- IPアドレス
- サブネットマスク
- ポート設定
- TCP/UDPの違い
- 相手機器接続構成設定
- シンプルCPU通信設定
- ファームウェアバージョン
特にFX5 CPUのファームウェアバージョンによって設定画面・設定方法が変わる場合があるため、三菱電機のFAQ情報を確認しておくとよいです。
2. 書き込みはできるが読み出しできない
読み出し先デバイスや点数指定が間違っている可能性があります。
確認ポイント:
- デバイス種別
- 先頭番号
- 読み出し点数
- ビット/ワードの扱い
- 相手PLC側で使っているデバイス範囲
DデバイスとMデバイスでは扱いが違うため、最初はDレジスタ1点、Mデバイス1点のように最小構成で確認します。
3. 通信がたまに途切れる
通信が不安定な場合は、ネットワーク構成も確認します。
確認ポイント:
- ハブの電源
- LANケーブル
- ノイズ源との距離
- IPアドレス重複
- 無線区間の有無
- 通信周期が短すぎないか
- 複数機器から同時アクセスしていないか
設備内のEthernetは、事務所LANと違ってノイズや電源環境の影響を受けやすいです。
4. 通信復旧後に設備が勝手に動く
これは危険です。
通信が復旧した瞬間に、前回の起動指令や保持データで設備が動く設計は避けるべきです。
対策:
- 通信復旧後は起動許可をOFFにする
- 作業者リセットを必要にする
- 起動指令は1ショット化する
- 通信異常中に受信データを無条件で信用しない
- 復旧後は状態確認ステップを通す
SLMP通信に限らず、PLC間通信は復帰設計が重要です。
実務でのおすすめ構成
個人的には、FX5同士の簡単なPLC間通信では、次のような構成が扱いやすいです。
主PLC:通信を管理する側
従PLC:状態を公開する側
主PLC → 従PLC
・起動要求
・停止要求
・リセット要求
・品種番号
従PLC → 主PLC
・通信正常
・運転中
・完了
・異常
・異常コード
・現在ステップ
ポイントは、主従関係を明確にすることです。
両方のPLCが同じデバイスを自由に書き換える設計にすると、原因調査が難しくなります。
まとめ
FX5同士でPLC間通信を行う場合、CC-Link IE Field Basicよりも、SLMP通信を検討した方が分かりやすいケースがあります。
ポイントをまとめると、次の通りです。
- SLMPはEthernet経由で相手PLCのデバイスを読み書きする通信
- FX5同士のDレジスタ・Mデバイス共有に使いやすい
- 事前にIPアドレス、通信方式、使用デバイスを決める
- FX5 CPUのファームウェアバージョンにより設定画面が変わる場合がある
- バージョン1.110以降ではシンプルCPU通信設定、1.110未満では相手機器接続構成設定を使うケースがある
- 最初はテストデバイスで読出し・書込みを確認する
- 通信異常時のインターロックと復帰条件を必ず作る
- 通信復旧後に自動再開させない設計が安全
現場で大事なのは、通信を成立させることだけではありません。
本当に重要なのは、
通信が切れたときに安全に止まり、復旧後に勝手に動かないこと
です。
SLMP通信は便利ですが、設備制御に使う以上、必ず異常時の設計とセットで考えるべきです。
関連記事
▼PLC間通信の前提知識・復帰設計もあわせて確認したい方へ
