新設Windowsアプリケーションと既設FA500でデータの受け渡しを行うために、FA-M3をゲートウェイPLCとして間に入れ、情報を中継させることでリプレースを実現しました。(図2)
 |
| 図 2 新システム構成 |
ゲートウェイPLCは図 3に示すように、シーケンスCPU(F3SP58)とMLバスCPU(F3MP30)のマルチCPU構成としました。
シーケンスCPUが、Ethernetインタフェースモジュール(F3LE12)の上位通信機能を利用してPCと情報の受け渡しを行い、MLバスCPUがFA500との情報の受け渡しを行ないます。
 |
| 図 3 ゲートウェイPLCの構成 |
ゲートウェイPLC内のシーケンスCPUとMLバスCPUは、マルチCPU間の構成としています。
データ受け渡し方法には以下の2種類存在します。
1) 共有デバイス(E, R)を使用する方法
2) MLバスCPUのENTER, OUTPUT命令(YM-BASIC)を使用する方法
本事例では、2)を採用していますが、その理由は、特別な処理を組まなくてもシーケンスCPUとMLバスCPU間で同期が取れる点にあります。
MLバスCPUによるデータ更新がシーケンスCPUに伝わるまでの間、MLバスCPUのプログラム内では、そのステートメントで止まっていることを意味しますので、MLバスCPUが異なるデータ更新をシーケンスCPUに通知することによるデータの取りこぼしは発生しません。
1)の場合には、MLバスCPU側の処理に関係なく、シーケンスCPUのタイミングでデバイスのリフレッシュが行なわれますので、MLバスCPUとシーケンスCPU間では非同期となります。
MLバスCPUは、データ更新がシーケンスCPUに伝わっているかどうかに関係なく自身の処理を続けますので、シーケンスCPUがデータ更新を検知する前に、異なるデータ更新をシーケンスCPUに通知する可能性があります。
結果として、ソフトウェアの設計によってはデータ更新の通知を取りこぼす可能性があります。
これを回避するためには、双方のアプリケーションで考慮した設計を行う必要があります。
いずれにしても、FA500側アプリケーションの作りも意識する必要がありますので、
FA500から通知されるシグナルの間隔や、各PLCの処理速度も考慮してどちらを採用すべきか決定する必要があります。
FA-M3とFA500との間で情報共有を行うためには、MLバス上のコモンレジスタにアクセスする必要があります。
そのために、まずは、ゲートウェイPLCのMLバスCPUを既設MLバスネットワークに参加させました。
そして、既設システムでFA500からYEWMAC500へシグナルを通知していたところを、ゲートウェイPLCへ通知するように変更することで実現しました。
PCとFA500間のデータの流れは以下の通りです。
[PC→FA-M3→FA500]
| 1. |
シーケンスCPUから、取り決めたデバイスにデータを書き込む。 |
| 2. |
シーケンスCPUから、SIGNAL命令を使用してMLバスCPUへ割り込みを発生させる。 |
| 3. |
MLバスCPUは、発生した割り込みルーチンの中で、ENTER命令を用いてシーケンスCPUから該当データを読み込む。 |
| 4. |
MLバスCPUは、シーケンスCPUから読み取ったデータを、MLバスのコモンレジスタ上に書き込む。 |
| 5. |
MLバスCPUは、該当ノードへデータ更新を表すシグナルを通知する。 |
[FA500→FA-M3→PC]
| 1. |
FA500からMLバスCPUへシグナルが通知される。 |
| 2. |
MLバスCPUは、コモンレジスタのデータをOUTPUT命令でシーケンスCPUのデバイスに書き込む。 |
| 3. |
情報が更新されたことを、ハンドシェイク用のデバイスにOUTPUT命令を用いて通知を表す値(例: ‘1’)に書き換える。 |
| 4. |
シーケンスCPUは、ハンドシェイク用デバイスにより通知を検知し、MLバスCPUにて書き込まれたデータをPCに通知する。 |
| 5. |
シーケンスCPUは、PCへの通知が完了したらハンドシェイク用のレジスタを0クリアする。 |