(57)【要約】【課題】ＣＰＵユニット等の負荷が、単独の通信ユニットで動作しているものとほぼ同等にしながら通信ユニットの二重化を実現することができるプログラマブルコントローラを提供すること【解決手段】第１，第２通信ユニット１３，１４と、ＣＰＵユニット１２を備えている。両通信ユニットは、ノード番号，ユニット番号が同一に設定され、一方の通信ユニットがアクティブとなってデータの送受を行い、他方の通信ユニットがスタンバイとなって、データの送受を行わない。アクティブの通信ユニットがダウンした場合には、スタンバイの通信ユニットがアクティブに切替わって前記データ送受を実行する。両通信ユニットのユニット番号等を同一にしているためＣＰＵユニットやノードはアクティブの通信ユニットを意識することなくデータの送受ができ、しかも、一方とのみ送受すれば足りる。【選択図】　　　　図４
2004054907.tif 000002
【特許請求の範囲】
【請求項１】
同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラであって、
前記２台の通信ユニットは、通信ユニットを特定する情報が同一に設定され、かつ、一方の通信ユニットがアクティブモードで動作するとともに、他方の通信ユニットがスタンバイモードで動作する機能を備え、
前記アクティブモードは、前記ＣＰＵユニットや前記ネットワークに接続される他のノードとの間のデータ送受を行い、
前記スタンバイモードは、前記ネットワークに接続される他のノードとの間のデータ送受を行わず、
前記アクティブモードの通信ユニットがダウンした場合には、前記スタンバイモードの通信ユニットがアクティブモードに切替わって前記データ送受を実行するようにしたことを特徴とするプログラマブルコントローラ。
【請求項２】
前記スタンバイモードと前記アクティブモードの切替は、前記ＣＰＵユニットからの命令に従って実行されることを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記アクティブモードは、データリンクにより前記ＣＰＵユニットとの間並びに前記他のノードとの間でデータ交換する処理を適宜の順で行う機能を持ち、
前記データリンクを行うために必要なメモリ割付などのパラメータは、前記ＣＰＵユニットが記憶保持し、
前記スタンバイモードから前記アクティブモードに切替わる前記通信ユニットは、前記ＣＰＵユニットが記憶保持する前記パラメータを取得することにより、データリンク処理を実行可能になることを特徴とする請求項１または２に記載のプログラマブルコントローラ。
【請求項４】
前記アクティブモードは、データリンクにより前記ＣＰＵユニットとの間並びに前記他のノードとの間でデータ交換する処理を適宜の順で行う機能を持ち、
前記スタンバイモードから前記アクティブモードに切替わった前記通信ユニットは、切替わり後の１回目のデータリンクに伴うデータ交換は、前記他のノードに対してデータを送信する処理を行わないようにしたことを特徴とする請求項１から３の何れか１項に記載のプログラマブルコントローラ。
【請求項５】
同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラに実装される前記ＣＰＵユニットであって、
前記２台の通信ユニットのうち、アクティブモードとなっている通信ユニットを介して前記ネットワークに接続された他のノードとの間でデータ送受を行うとともに、スタンバイモードとなっている通信ユニットを介して前記ネットワークに接続された他のノードとの間ではデータの送受を行わないようにし、
通信ユニットの異常の有無を判断し、アクティブモードが異常でダウンし、スタンバイモードの通信ユニットが正常な場合に、前記アクティブモードの通信ユニットに対してリスタートさせ、前記スタンバイモードの通信ユニットに対してリスタートさせるとともに、アクティブモードで起動させる機能を備えたことを特徴とするＣＰＵユニット。
【請求項６】
同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラに実装される前記通信ユニットであって、
通信ユニットを特定する情報が他の通信ユニットと同一に設定され、
前記ＣＰＵユニットからの動作モード指令を受信する機能を備え、
受信した動作モード指令がアクティブモードの場合は、前記ＣＰＵユニットや前記ネットワークに接続される他のノードとの間のデータ送受を行い、
受信した動作モード指令がスタンバイモードの場合は、前記ネットワークに接続される他のノードとの間のデータ送受を行わないことを特徴とする通信ユニット。
【請求項７】
同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラにおける通信ユニットの制御方法であって、
前記２台の通信ユニットは、通信ユニットを特定する情報が同一に設定され、アクティブモードの通信ユニットは、前記ＣＰＵユニットや前記ネットワーク
に接続される他のノードとの間のデータ送受を行い、
スタンバイモードの通信ユニットは、前記ネットワークに接続される他のノードとの間のデータ送受を行わず、
前記アクティブモードの通信ユニットがダウンした場合には、前記スタンバイモードの通信ユニットがアクティブモードに切替わって前記データ送受を実行することを特徴とする通信ユニットの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラ及びＣＰＵユニット並びに通信ユニット及び通信ユニットの制御方法に関するものである。
【０００２】
【発明の背景】
ファクトリーオートメーション（ＦＡ）の制御装置として、プログラマブルコントローラ（ＰＬＣ）が用いられている。このＰＬＣは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット，ＰＬＣ全体の制御を統率するＣＰＵユニット，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット，アクチュエータなどに制御出力を出す出力ユニット，通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
【０００３】
ＰＬＣのＣＰＵユニットにおける制御は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたユーザプログラム記述言語（例えばラダー言語）で組まれたユーザプログラムに基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、通信ユニットを介して通信ネットワーク上の他のＰＬＣとデータ送受信を行ったり、ＣＰＵユニットに備えられた通信ポートを介して外部の機器とデータ送受信などを行ったりする（周辺処理）ことをサイクリックに繰り返し処理するようになる。なお、ＩＮリフレッシュとＯＵＴリフレッシュと一括して行なう（Ｉ／Ｏリフレッシュ）場合もある。
【０００４】
ところで、システムの安全性，信頼性を向上するため、ネットワークシステムの二重化を図ることがある。このネットワークシステムの二重化の一例としては、例えば特開２００１−１５６８１８号公報に開示された発明がある。この発明は、光ケーブルをリング状に配線した伝送路二重化リング型伝送システムを構成する。これにより、そのリング状の伝送路に接続したＰＬＣ等のノードは、たとえ、伝送路の一箇所が断線したとしても、伝送路を介して各ノード同士が接続された状態を保持できるので、断線による通信途絶を防ぐことができる。これにより、ネットワークの信頼性が向上する。
【０００５】
ＰＬＣは、上記ネットワークに対して通信ユニット（ネットワークユニット）を介して接続され、その通信ユニットを介して他のＰＬＣその他のノードとデータ交換（情報の送受）を行うようになっている。従って、上記した従来の伝送路二重化リング型伝送路システムにより、伝送路断線時の通信途絶を防ぐことは可能であるものの、通信ユニット自体が異常を起こした場合には、係る異常を起こした通信ユニットを介してネットワークに加入しているノード（ＰＬＣ）は通信ができなくなってしまうと言う問題を有している。
【０００６】
そのため、冗長性を要求される二重化コントローラシステム等の通信ユニットの障害発生時も通信処理を継続することが要望されるＰＬＣシステムでは、次のような方法（ユーザプログラムによる同一データ送信）にて通信ユニットの二重化を実現しなければならなかった。
【０００７】
この場合、ＰＬＣ内に異なるノード番号並びに異なるユニット番号の２台の通信ユニットを装着する。この２台の通信ユニットを用いて他のノードとデータリンク方式によるデータ交換を行う場合、かかるデータ交換する際に使用するＣＰＵユニット内のメモリエリア（データリンクエリアと呼ぶ）は、通信ユニット毎に異なる。
【０００８】
そのため、ＣＰＵユニットは、２台の通信ユニットに対してデータ交換やその他の処理を行う必要がある。つまり、ＣＰＵユニットにおけるユーザプログラムは、データリンクエリアをアクセスする場合、各々の通信ユニットに対して割り付けられたそれぞれ別のメモリエリアに同じような処理を二重に実行するように作成される必要があり、そのようなユーザプログラムを実行する演算処理の負担増を招く。
【０００９】
同様のことは、ネットワークに接続される他のノードと通信を行うようなユーザプログラムを作成する場合にも生じる。つまり、他のノードとの間でメッセージを送受するための命令（通信命令）を用いてユーザプログラムを作成する場合、通信命令のオペランドとして記述する送信先を送信先の通信ユニットに設定されたノード番号およびユニット番号を用いて記述するため、異なる２台の通信ユニットに対して送るためには、各々のノード番号とユニット番号を指定し、両方に同じようにメッセージを送信するようにユーザプログラムを作成する必要がある。
【００１０】
そして、ネットワークに接続された全てのノードで上記の方式による通信ユニットの二重化を実現すると、どちらか片方のネットワークで障害が発生しても通信を継続することが可能であるが、ＣＰＵユニットにおけるユーザプログラムは各々のユニットに対して同じような処理を二重に実行する必要があるので煩雑である。
【００１１】
この発明は、ＣＰＵユニット等の負荷は、単独の通信ユニットで動作しているものとほぼ同等にしながら、しかも、ユーザプログラムは単独の通信ユニットで動作する場合と同じ内容で動作可能とする通信ユニットの二重化を実現することができ、システムの高信頼性を図ることのできるプログラマブルコントローラ及びＣＰＵユニット並びに通信ユニット及び通信ユニットの制御方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
この発明によるプログラマブルコントローラは、同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラであって、前記２台の通信ユニットは、通信ユニットを特定する情報が同一に設定され、かつ、一方の通信ユニットがアクティブモードで動作するとともに、他方の通信ユニットがスタンバイモードで動作する機能を備える。そして、前記アクティブモードは、前記ＣＰＵユニットや前記ネットワークに接続される他のノードとの間のデータ送受を行い、前記スタンバイモードは、前記ネットワークに接続される他のノードとの間のデータ送受を行わないモードである。さらに、前記アクティブモードの通信ユニットがダウンした場合には、前記スタンバイモードの通信ユニットがアクティブモードに切替わって前記データ送受を実行するようにした。そして、前記スタンバイモードと前記アクティブモードの切替は、前記ＣＰＵユニットからの命令に従って実行されるように構成することができる。もちろん、通信ユニット同士が互いに通信し、異常を発生したことを相手に通知することにより、適宜切替わるようにしても良い。
【００１３】
通信ユニットを特定する情報は、例えば、ノード番号，ユニット番号などのアドレス情報である。ネットワークが複数存在する場合を想定してネットワークを区別するためのネットワーク番号を含んでも良い。また、これに限ることはなく、例えば、イーサネットユニットにはＩＰアドレスが追加で設定される。要は、データの送受をするためにネットワーク上で当該通信ユニットを特定するための情報で有れば、何でも良い。
【００１４】
この発明によれば、２つの通信ユニットの通信ユニットを特定する情報（例えば、ノード番号、ユニット番号等のアドレス情報）を同じにしたため、データリンク方式によるデータ交換を利用して他のノードとデータ交換を行うユーザプログラムを作成する場合、二重化されていない１台の通信ユニットの場合と同様のユーザプログラムを作成すれば良いことになり、既存のユーザプログラムを変更することなく通信ユニットの二重化に対応することができる。また、２つの通信ユニットのアドレス情報が同じであるため、他のノードから当該プログラマブルコントローラへメッセージを送信するユーザプログラムを作成する場合も二重化されていない１台の通信ユニットの場合と同様のユーザプログラムを作成すれば良く、既存のユーザプログラムを変更することなく利用できる。
【００１５】
通信ユニットを特定する情報が同じなため、他のノード等から送られてきたデータは、両通信ユニットが受信可能であるが、各通信ユニットは自分がアクティブかスタンバイかが分かっているので、アクティブ側のみが受信したデータに伴う正規の処理を実行する。また、アクティブの通信ユニットがダウンした場合には、通信ユニットを特定する情報が同じなので、そのままスタンバイの通信ユニットがアクティブの通信ユニットに切替わっても、そのまま通信・データ交換が行える。
【００１６】
また、上記した各発明を前提とし、前記アクティブモードは、データリンクにより前記ＣＰＵユニットとの間並びに前記他のノードとの間でデータ交換する処理を適宜の順で行う機能を持ち、前記データリンクを行うために必要なメモリ割付などのパラメータは、前記ＣＰＵユニットが記憶保持し、前記スタンバイモードから前記アクティブモードに切替わる前記通信ユニットは、前記ＣＰＵユニットが記憶保持する前記パラメータを取得することにより、データリンク処理を実行可能に構成すると良い。
【００１７】
ここで、データリンクとは、データ共有するメモリエリアを予め定めておくことにより、自ノードの送信エリアにデータを書き込むと、他ノードの受信エリアに自動的にそのデータが反映されるもので、ネットワーク上のノード間で常時データ共有することができる機能である。そして、ネットワークに接続されたノード間の通信は、通信ユニットを介して行われるため、ＣＰＵユニットのデータリンクするための自ノード用の送信エリアに格納されたデータは、一旦通信ユニット内のメモリに転送された後、他のノードに向けて送信され、他のノードからのデータは、一旦通信ユニット内のメモリに格納された後、ＣＰＵユニットの他ノード用の受信エリアに転送される。なお、ＣＰＵユニット内のデータリンクするための自ノード用の送信エリアと他ノード用の受信エリアを総称してデータリンクエリアと呼ぶ。
【００１８】
データリンクに必要なパラメータをＣＰＵユニットに記憶保持させておくと、モードの切替の際に、新たにアクティブモードになる通信ユニットは、その起動時にパラメータをＣＰＵユニットから取得することにより、切替前と同様の状態でデータリンクをすることが可能となる。よって、スタンバイモードの時は、パラメータを取得したり、アクティブモードの通信ユニット等からデータを転送して取得しておく必要が無く、負荷が軽減される。
【００１９】
さらにまた、前記アクティブモードは、データリンクにより前記ＣＰＵユニットとの間並びに前記他のノードとの間でデータ交換する処理を適宜の順で行う機能を持ち、前記スタンバイモードから前記アクティブモードに切替わった前記通信ユニットは、切替わり後の１回目のデータリンクに伴うデータ交換は、前記他のノードに対してデータを送信する処理を行わないようにするとよい。
【００２０】
実施の形態のようにモードの切替の際に、一旦リセットする方式を採ると、メモリクリアされてしまうので、そのままでは、ＣＰＵユニットとのデータ交換前に他のノードへデータの送信を行うと、誤ったデータが送信され、誤動作の原因となる。そこで、少なくとも１回目の処理は係る送信処理を行わないようにすることにより、誤動作を確実に防止することができる。
【００２１】
もちろん係る機能は必須ではなく、ＣＰＵユニットとのデータ交換を先に行うようなシステムにしておけば、１回目から他のノードに向けてのデータ送信を行っても誤動作がないので問題はない。
【００２２】
また、リスタートすることなく、モードの切替ができるようにするとともに、スタンバイモードの際にアクティブモードと同一のメモリ内容を保持しておくように構成することもでき、係る構成を採れば、他のノードへのデータ送信も１回目から行っても問題はない。
【００２３】
また、本発明に係るＣＰＵユニットは、同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラに実装される前記ＣＰＵユニットであって、前記２台の通信ユニットのうち、アクティブモードとなっている通信ユニットを介して前記ネットワークに接続された他のノードとの間でデータ送受を行うとともに、スタンバイモードとなっている通信ユニットを介して前記ネットワークに接続された他のノードとの間ではデータの送受を行わないようにする。そして、通信ユニットの異常の有無を判断し、アクティブモードが異常でダウンし、スタンバイモードの通信ユニットが正常な場合に、前記アクティブモードの通信ユニットに対してリスタートさせ、前記スタンバイモードの通信ユニットに対してリスタートさせるとともに、アクティブモードで起動させる機能を備えた。
【００２４】
なお、アクティブモードの通信ユニットに対してリスタートさせた後は、所定のタイミングでスタンバイモードで起動させると良い。このようにスタンバイモードで起動させることにより、二重化システムが継続する。なお、このスタンバイモードの起動タイミングであるが、リスタート後、任意のタイミングでよいが、好ましくは、スタンバイモードの通信ユニットに対してリスタート後に行うアクティブモードでの起動後に行うことである。また、係るリスタートや各モードでの起動を行うのは、その前提としてそれまでアクティブモードで動作していた通信ユニットに何かしらの異常等があった場合であるので、それが装置的な故障の場合には、起動できない。従って、それまでアクティブモードで動作していた通信ユニットに対しては、リスタートをかけるだけで、その後のスタンバイモードでの起動命令は送らないようにしても良い。
【００２５】
さらに、本発明に係る通信ユニットは、同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラに実装される前記通信ユニットであって、通信ユニットを特定する情報が他の通信ユニットと同一に設定する。そして、前記ＣＰＵユニットからの動作モード指令を受信する機能を備え、受信した動作モード指令がアクティブモードの場合は、前記ＣＰＵユニットや前記ネットワークに接続される他のノードとの間のデータ送受を行い、受信した動作モード指令がスタンバイモードの場合は、前記ネットワークに接続される他のノードとの間のデータ送受を行わないように構成した。
また、同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラに実装される前記通信ユニットであって、通信ユニットを特定する情報が他の通信ユニットと同一に設定され、前記ＣＰＵユニットや前記ネットワークに接続される他のノードとの間のデータ送受を行うアクティブモードと、前記ネットワークに接続される他のノードとの間のデータ送受を行わないスタンバイモードを択一的に取る。そして、スタンバイモードの時に、他のアクティブモードの通信ユニットがダウンした際に、アクティブモードに切替わって前記データ送受を実行するように構成することもできる。
【００２６】
さらにまた、本発明に係る通信ユニットの制御方法では、同一のネットワークに接続する２台の通信ユニットと、ＣＰＵユニットとを備えたプログラマブルコントローラにおける通信ユニットの制御方法であって、前記２台の通信ユニットは、通信ユニットを特定する情報が同一に設定され、アクティブモードの通信ユニットは、前記ＣＰＵユニットや前記ネットワークに接続される他のノードとの間のデータ送受を行い、スタンバイモードの通信ユニットは、前記ネットワークに接続される他のノードとの間のデータ送受を行わず、前記アクティブモードの通信ユニットがダウンした場合には、前記スタンバイモードの通信ユニットがアクティブモードに切替わって前記データ送受を実行するようにした。
【００２７】
【発明の実施の形態】
図１は、本発明に係るプログラマブルコントローラを用いて構築されるネットワークシステムの一例を示している。すなわち、本発明の一実施の形態であるプログラマブルコントローラ１０と、従来からある通常のプログラマブルコントローラ２０が、リング方式で配線された伝送路３０（通信回線）に接続された構成となっている。このリング方式は、例えば特開２００１−１５６８１８号公報に開示された発明の技術を適用することができる。また、本実施の形態では、通信ユニットが二重化された本発明のＰＬＣ１０と、二重化されていない通常のＰＬＣ２０とが混在したネットワークシステム構成としているが、全てのノードが本発明に対応する二重化されたＰＬＣ１０により構成されていてももちろんよい。
【００２８】
まず、従来からあるＰＬＣ２０は、ＰＬＣ２０を構成する各ユニットに対して電源供給をする電源ユニット２１や、ユーザプログラムを演算実行したり、Ｉ／Ｏリフレッシュや周辺処理をサイクリックに実行するＣＰＵユニット２２や、上記伝送路３０に接続し、他のノードと通信を行う通信ユニット２３や、入出力機器を接続するＩ／Ｏユニット２５等がある。これらのユニットは、システムバスを介して接続される。もちろん、これらの他にもユニットは存在し、必要に応じて連結するユニットを増減する。なお、従来と同様のＰＬＣ２０であるので、その詳細な説明を省略する。
【００２９】
一方、本発明に係るＰＬＣ１０は、複数のユニットから構成され、基本的には上記したＰＬＣ２０と同様である。そして、同一のネットワーク（伝送路３０）に接続される通信ユニットを２台設け、係る通信ユニットの二重化を図るようにしている。すなわち、ＰＬＣ１０を構成する各ユニットに対して電源供給をする電源ユニット１１や、ユーザプログラムを演算実行したり、Ｉ／Ｏリフレッシュや周辺処理をサイクリックに実行する機能を持つＣＰＵユニット１２や、上記伝送路３０に接続し、他のノードと通信を行う第１，第２通信ユニット１３，１４や、入出力機器を接続するＩ／Ｏユニット１５を備えている。そして、これらのユニットは、システムバスを介して接続される。もちろん、このＰＬＣ１０において上記したユニットの他にも実装可能なユニットは存在し、必要に応じて連結するユニットを増減する。
【００３０】
第１，第２通信ユニット１３，１４は、同一の内部構成を採り、実際のシステム稼動時には、何れか一方がアクティブとなり、他方がスタンバイとなる。そして、データリンク機能実行時は、アクティブとなった通信ユニットがＣＰＵユニット１２とデータ交換を行ったり、ネットワーク（伝送路３０）に接続された他のノードとデータ交換を行うようになっている。そして、アクティブの通信ユニットに異常が発生した場合には、ＣＰＵユニット１２からの命令に従ってスタンバイの通信ユニットがアクティブに切替わって処理を継続する。これにより、二重化が実現される。
【００３１】
さらに、第１，第２通信ユニット１３，１４を特定する通信ユニットを特定する情報（アドレス情報）、つまり、ノード番号（図１の場合は、ノード１）とユニット番号を同一にしている。このアドレス情報の設定は、通信ユニットに備えられたロータリスイッチなどによるアドレス設定スイッチ（図示せず）を用いて行うことができる。もちろん、設定ツール３１を用いて通信ユニットの所定のメモリエリアにアドレス情報を格納するようにしても良い。
【００３２】
これにより、例えば第１，第２通信ユニット１３，１４は、アクティブになっているものがデータリンク機能実行時にＣＰＵユニット１２との間でデータ交換を行うが、データリンクを行う際のメモリの割り付けはノード番号に基づいてそれぞれ設定されるため、第１，第２通信ユニット１３，１４のノード番号が同一であることから、何れがアクティブになっても同一のメモリエリアに対してアクセスし、データ交換をすることができる。また、ノード番号並びにユニット番号が同一であることから、ネットワーク（伝送路３０）に接続された他のノードとの間のデータ通信（メッセージの送受）も、仮にアクティブの通信ユニットが切替わったとしても、通信相手先は、係る変更の有無にかかわらず同一のあて先に対してメッセージやレスポンスを送ることができる。
【００３３】
よって、第１、第２通信ユニット１３，１４の２つの通信ユニットを区別することなくＣＰＵユニット１２内に設けられたデータリンクエリアにアクセスするユーザプロブラムを作成することができる。さらに、第１、第２通信ユニット１３，１４が実装されたノード１とメッセージの送受信を行う他のノードのＣＰＵユニットで実行されるユーザプログラムは、１台の通信ユニット２３を備えた従来のＰＬＣ２０に対する処理と同様に、通信相手先は１つ（ノード１の第１、第２通信ユニット１３，１４に設定された同一のノード番号とユニット番号）を対象とすれば良く、通信相手先のみを異ならせた同一のプログラムを実行させる必要がなくなる。よって、負荷が増加するのを抑制できる。
【００３４】
また、ノード番号並びにユニット番号が同一であると、例えばネットワーク経由で送られてきた情報は、そのままでは第１，第２通信ユニット１３，１４で共に受信可能となる。そこで、第１，第２通信ユニット１３，１４は、自分がアクティブかスタンバイかはわかっているので、アクティブ／スタンバイに応じた処理を行う。
【００３５】
次に、ＣＰＵユニット１２並びに第１，第２通信ユニット１３，１４の内部構造に付いて、実際の動作・作用を説明しつつ、その構成をさらに詳述する。図２に示すように、ＣＰＵユニット１２には、ユーザプログラムの実行や、Ｉ／Ｏリフレッシュ並びに周辺処理などを行うＭＰＵ１２ａと、ＩＯデータ等を格納するＩＯメモリ１２ｂとを備え、それらＭＰＵ１２ａ並びにＩＯメモリ１２ｂは、バスインタフェース１２ｃを介してシステムバス１０ａに接続され、そのシステムバス１０ａを介して他のユニットとデータの送受が行える。さらに、データリンクするために必要なメモリ割付情報などのパラメータからなるデータリンク設定を記憶保持するパラメータ記憶部１２ｄも備えている。なお、データリンクエリアはＩＯメモリ１２ｂ上の所定のエリアに設けられる。係るハードウェア構成は従来と同様であるので、その詳細な説明を省略する。
【００３６】
第１，第２通信ユニット１３，１４は、同一の構成を採っている。具体的には、ネットワーク（伝送路３０）に接続し、通信の制御を司る通信部インタフェース１３ａ，１４ａと、各種の処理を実行するＭＰＵ１３ｂ，１４ｂと、メモリ１３ｃ，１４ｃを、システムバスに接続され、データの送受を行うインターフェースＡＳＩＣ１３ｄ，１４ｄと備えている。
【００３７】
メモリ１３ｃ，１４ｃには、通信部インタフェース１３ａ，１４ａを介して受信したメッセージを記憶するメッセージ受信メモリエリアと、ＣＰＵユニット１２からシステムバス１０ａを介して取得した送信メッセージを記憶するメッセージ送信メモリエリアと、データリンクするデータを一時的に格納するためのデータリンクメモリエリアと、インタフェースの制御情報を格納するエリアなどを備えている。
【００３８】
インタフェース制御情報エリアは、例えば、メモリ１３ｃ，１４ｃや、データ交換するＩＯメモリ１２ｂ内のメモリアドレスの割り付けデータなどがある。このインタフェース制御情報にしたがって、ＩＯメモリ１２ｂ中の自分用のデータが格納される領域などを知得できる。
【００３９】
ここで、ＭＰＵ１３ｂ，１４ｂの機能について説明すると、アクティブの場合には、通常の通信ユニットとしての動作、つまり、メモリ１３ｃ，１４ｃに適宜アクセスしたり、通信部インタフェース１３ａ，１４ａを制御しながら、データリンク処理やメッセージ送受信処理を行う。つまり、データリンク処理をすることにより、予め設定されたメモリエリア割付に従って、ＣＰＵユニット１２のＩＯメモリ１２ｂのデータリンクエリアとの間でデータ交換をするとともに、他のノードとの間でデータ交換をすることができ、各ノードのＣＰＵユニットは、データの共有をすることができる。また、メッセージ送受信処理は、いわゆるメッセージサービス機能により実行される。すなわち、ユーザプログラムに含まれる通信命令（他のノードとの間でメッセージを送受信するための命令）を実行することにより、必要時に特定のノードとの間でデータ送受信を行う。さらにまた、第１，第２通信ユニット１３，１４はアクティブの場合、自ユニットの異常の有無のチェックを行っており異常を検出した場合はＣＰＵユニット１２へ通知する。
【００４０】
一方、スタンバイの場合には、アクティブのＭＰＵが実行するデータリンク処理やメッセージ送受信処理などは行わない。そして、自ユニット内で故障診断テストを繰返し行う。この故障診断テストで異常を検出した場合は、ＣＰＵユニット１２へ通知する。
【００４１】
アクティブの通信ユニット及びスタンバイの通信ユニットで検出する異常についてさらに説明すると、以下の通りである。すなわち、検出する異常は、アクティブの通信ユニットの異常発生，スタンバイの通信ユニットの異常発生並びにアクティブの通信ユニットのオンライン交換発生（電源ＯＮの状態でユニットが取り外される）の３種類がある。
【００４２】
アクティブの通信ユニットの異常としては、通信ユニットのＷＤＴＵＰ（ウオッチドックタイマアップ）や、通信ユニット送信部の異常や、通信ユニットのハード異常などがある。これらは、バスインタフェース制御情報から認識される。また、スタンバイの通信ユニットの異常としては、通信ユニットのＷＤＴＵＰ（ウオッチドックタイムアップ）や、通信ユニットのハード異常などがある。これらは、バスインタフェース制御情報から認識される。なお、スタンバイの通信ユニットの異常が発生した場合は、アクティブ／スタンバイの切替は当然行わないが、通信二重化状態が保てなくなるので通信二重化異常を通知する。
【００４３】
さらに、アクティブの通信ユニットのオンライン交換は、保守点検や定期交換のために通信ユニットを交換する場合に発生する。アクティブの通信ユニットに対してオンライン交換を実行する場合、ユーザが設定ツール等を使用してオンライン脱着開始をＣＰＵユニット１２へ通知することによりＣＰＵユニット１２は、通信二重化状態を維持できない状態になることを認識する。そして、係る場合、ＣＰＵユニット１２は通信を継続させるためにスタンバイの通信ユニットをアクティブ動作モードへ切替える。さらに、ＣＰＵユニット１２は、電源ＯＮ状態でのユニットの脱着時に発生するバス異常が通信ユニットの脱着時にはバス異常とならないように動作する。
【００４４】
なお、アクティブの通信ユニットで異常が発生しても、スタンバイの通信ユニットがアクティブに切替わることにより、通信を継続できるので、ＰＬＣ１０はそのまま継続して通信をすることができ、制御・運転を継続できる。さらに、ネットワーク（伝送路３０）に接続されているので、係る異常が発生したことを伝送路経由で他のノードやツールなどに通知することができる。なお、異常を検知する処理機能自体は、基本的に従来のものを適用できる。
【００４５】
ＣＰＵユニット１２は、第１，第２通信ユニット１３，１４の異常の有無を監視し、アクティブの通信ユニットが異常となった場合には、切替え処理を行う。そして、具体的には図３，図４に示すフローチャートを実施する機能を有する。なお、以下の説明では、第１通信ユニット１３がアクティブの通信ユニットとなり、第２通信ユニット１４がスタンバイの通信ユニットになっているものとして説明する。
【００４６】
すなわち、アクティブの第１通信ユニット１３の異常のチェックを行った後、スタンバイの第２通信ユニット１４の異常のチェックを行う（ＳＴ１，ＳＴ２）。そして、異常の有無を判断し（ＳＴ３）、異常が無ければ今回の処理は終了する。また、異常があった場合には、通信二重化異常を、設定ツール等から読み出し可能なメモリに登録する（ＳＴ４）。そして、異常が生じたのがアクティブの第１通信ユニット１３のみの場合には、ステップ５でＹｅｓとなるので、係る第１通信ユニット１３にリスタートをかけ（ＳＴ６）、次いでスタンバイの第２通信ユニット１４にリスタートをかける（ＳＴ７）。
【００４７】
係るリスタート命令に伴い、図４に示すように、第１，第２通信ユニット１３，１４は、それぞれリスタート処理を行う（ＳＴ２０，ＳＴ３０）。これによりメモリクリアその他の初期処理を行う。
【００４８】
次いで、今までアクティブであった第１通信ユニット１３に対しては、スタンバイ動作モードで起動をかけ（ＳＴ８）、今までスタンバイであった第２通信ユニット１４に対しては、アクティブ動作モードで起動をかける（ＳＴ９）。
【００４９】
これを受けて、第１通信ユニット１３では、起動モード（スタンバイ）を受け取るので（ＳＴ２１）、ハードウエアチェック（自己診断）を行う（ＳＴ２２）。そして、正常で有れば、スタンバイモードで立ち上げを行い、以後、スタンバイモードで運転を行う（ＳＴ２３）。つまり、自己診断を常時行って異常の有無を判断し、その結果をＣＰＵユニットに通知する。
【００５０】
一方、第２通信ユニット１４では、起動モード（アクティブ）を受け取るので（ＳＴ３１）、ハードウエアチェック（自己診断）を行う（ＳＴ３２）。そして、正常で有れば、アクティブモードで立ち上げを行う。つまり、ＣＰＵユニット１２との間で、初期データの交換を行い（ＳＴ３３）、取得した初期データに基づいて、必要なパラメータ（データリンク設定）を読み出す（ＳＴ３４）。
【００５１】
その後、アクティブモードで運転を行う。つまり、ＣＰＵユニットとのデータ交換や他ノードとのデータ交換を行うデータリンク処理（ＳＴ３５）と、他のノードとの間で行うメッセージ送受信処理（ＳＴ３６）を繰り返し実行する。なお、このフローチャートでは記載していないが、異常の有無の監視ももちろん行い、異常を検出すると、ＣＰＵユニット１２に通知する機能も持つ。
【００５２】
また、ＣＰＵユニット１２は、上記したステップ６から９を実行して第１，第２通信ユニット１３，１４のアクティブ／スタンバイの切替え処理を行ったならば、通常の処理、つまり、アクティブの通信ユニットから取得したメッセージを解析し、それに対する所定の処理を実行したり、レスポンスを返したりするなどの処理を行う（ＳＴ１０）。さらに、アクティブの第２通信ユニット１４との間でデータリンク機能実行にともなうデータ交換処理（ＳＴ１１）や、スタンバイの第１通信ユニット１３から送られてくる自己診断結果の取得処理（ＳＴ１２）を行う。
【００５３】
なお、アクティブに切替わった第２通信ユニット１４におけるデータリンク処理は、図５に示すようなタイミングで行われる。すなわち、（１）まず通信部インタフェース１４ａを介して取得した伝送路３０（ネットワーク）上を流れるデータを取得し、メモリ１４ｃのデータリンクメモリエリアの所定メモリエリアに格納し、（２）次いで、別のエリアに格納されていた送信データを伝送路３０を介して所望の相手先に向けて送信する。
【００５４】
その後、ＣＰＵユニット１２のＩＯリフレッシュ処理時に、第２通信ユニット１４とＣＰＵユニット１２との間で、（３），（４）の順番で、データの交換を行う。そして、上記した（１）から（４）を順番に繰り返し実行する。
【００５５】
ところで、スタンバイ動作モードからアクティブ動作モードに切替えた直後は、リスタートによりアクティブ動作モードに切替わった第２通信ユニット１４は、データリンク設定（ＣＰＵユニット１２内に記憶されている）を読み出すので、これまでアクティブだった第１通信ユニット１３と同じ設定でデータリンク処理を開始することができる。但し、起動に伴う初期処理により、メモリクリアされているので、データリンク処理を開始する前のメモリ１４ｃのメモリ内容は間違ったデータとなっている。従って、その状態で外部にデータを送信すると、誤動作の原因になるので、起動直後の処理に限っては、通常の処理のうち（２）の処理を省略するようにした。
【００５６】
次に、係るＰＬＣのシステム立ち上げ時の概要を説明する。通常は、同一のネットワーク上では、各ユニットに設定するアドレス情報（ノード番号やユニット番号）はユニークに存在する必要があり、異なるユニットに対して同一のユニット番号／ノードアドレスを設定した状態で、電源をＯＮにすると、「ユニット番号・二重使用エラー」が発生する。そこで、本実施の形態では、設定ツール３１を用いて、二重化する通信ユニットのユニット番号をＣＰＵユニット１２内の所定の記憶場所に格納することで、ＣＰＵユニット１２がそのユニット番号に対しては同一違反のチェックを行わないようにした後、ＰＬＣの電源を再度ＯＦＦ／ＯＮする。「ユニット番号・二重使用エラー」を解消する他の方法としては、発生した「ユニット番号・二重使用エラー」を設定ツール等の操作により解消することでＰＬＣの電源を再度ＯＦＦ／ＯＮしない方法も考えられる。これにより、同一のノード番号＆ユニット番号を持つ２台の通信ユニットが存在することになる。
【００５７】
次いで、アクティブモードで動作させる通信ユニットとスタンバイモードで動作させる通信ユニットの設定を行う。二重化する通信ユニットの内、どちらの通信ユニットをアクティブモードで動作させるものに設定するかは任意であり、いずれを設定しても問題ないが、例えば設定ツールにより、通信ユニットの装着位置（ラック番号／スロット番号）が若い通信ユニットをアクティブモードで動作する通信ユニットとしても良い（もちろん、逆にしても良い）。
【００５８】
次に、データリンク機能実行のために必要な通信パラメータ（データリンク設定など）の設定を行うが、設定の方法は従来の通信ユニットに対する方法と同一である。
【００５９】
また、通信二重化異常が発生した状態（アクティブとスタンバイのどちらか一方が正常動作していない状態）から、通信二重化状態に復旧するには故障した通信ユニットを正常なユニットに取り替えるオンラインユニット交換が必要になる。
【００６０】
そこで、アクティブの通信ユニット側で異常が発生した場合には、上記した通り、スタンバイの通信ユニットがアクティブに切替わり通信を継続する。その状態で、通信二重化状態に復旧するには、異常発生したユニットをオンライン交換することで通信二重化状態に復旧させる。なお、交換したユニットはスタンバイ動作モードで起動される。
【００６１】
また、スタンバイの通信ユニット側で異常が発生した場合は、アクティブ／スタンバイの切替えを行わずに、アクティブの通信ユニット側で通信を継続する。その状態で通信二重化状態に復旧するには、異常発生したユニットをオンライン交換することで通信二重化状態に復旧する。もちろん、交換したユニットはスタンバイ動作モードで起動される。
【００６２】
ここで述べた実施の形態において通信ユニットが異常をＣＰＵユニットへ通知する場合の「通知する」とは、例えば通信ユニットが検出したユニット異常情報をＣＰＵユニットとの共有メモリ（図２のメモリ１３ｃ，１４ｃ）に書き込み、その書き込まれたユニット異常情報をＣＰＵユニットが読み出すことで実施できる。
【００６３】
【発明の効果】
以上のように、この発明では、２台の通信ユニットに対して通信ユニットを特定する情報を同一に設定するとともに、アクティブの通信ユニットのみが正規の通信・データ送受処理を実行するようにしたため、ＣＰＵユニット等の負荷は、通信ユニットが１台のときとほぼ同等にしながら、しかも、ユーザプログラムは通信ユニットが１台のときと同じ内容で動作可能とする通信ユニットの二重化を実現することができ、システムの高信頼性を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態を示す図である。
【図２】本発明の一実施の形態の要部を示す図である。
【図３】ＣＰＵユニットの機能を示すフローチャートである。
【図４】アクティブ／スタンバイの切替え時における各ユニットの処理機能を示すフローチャートである。
【図５】アクティブの通信ユニットの作用を説明する図である。
【符号の説明】
１０　ＰＬＣ
１０ａ　システムバス
１１　電源ユニット
１２　ＣＰＵユニット
１２ａ　ＭＰＵ
１２ｂ　ＩＯメモリ
１２ｃ　バスインタフェース
１２ｄ　パラメータ記憶部
１３　第１通信ユニット
１３ａ　通信部インタフェース
１３ｂ　ＭＰＵ
１３ｃ　メモリ
１４　第２通信ユニット
１４ａ　通信部インタフェース
１４ｂ　ＭＰＵ
１４ｃ　メモリ
１５　Ｉ／Ｏユニット
２０　ＰＬＣ
２１　電源ユニット
２２　ＣＰＵユニット
２３　通信ユニット
２５　Ｉ／Ｏユニット
３０　伝送路
３１　設定ツール
【図１】
2004054907.tif 000003
【図２】
2004054907.tif 000004
【図３】
2004054907.tif 000005
【図４】
2004054907.tif 000006
【図５】
2004054907.tif 000007