(57)【要約】【課題】二重化したＣＰＵユニットでも、ＣＰＵユニットが１台のときと同様のシリアル通信プログラムで通信を行うことが可能なプログラマブルコントローラを提供すること【解決手段】二重化された第１，第２ＣＰＵユニット１１，１２は、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、シリアル通信系の１：Ｎ通信インタフェースに対応する通信ケーブル２１を介しツール等の接続機器２０と通信を可能とする。両ＣＰＵユニットのシリアル通信ポートＮｏを同一にしているため、接続機器は実行系のＣＰＵユニットを意識することなく通信できる。両ＣＰＵユニットは、実行系か否かがわかっているので、実行系のＣＰＵのみが接続機器と通信を行う。【選択図】　　　　図４
2004013647.tif 000002
【特許請求の範囲】
【請求項１】
二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラであって、
前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とし、
前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一にし、
前記接続機器から前記シリアル回線を介して送られてきた通信コマンドは、前記両ＣＰＵユニットが受信するが、その受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスは、実行系のＣＰＵユニットのみが実行する機能と、
前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラであって、
前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とし、
前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一にし、
前記接続機器から前記シリアル回線を介して送られてきた通信コマンドは、前記両ＣＰＵユニットが受信するが、その受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスは、実行系のＣＰＵユニットのみが実行する機能と、
前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備え、
前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって前記通信コマンドに対する処理並びにレスポンスを返すようにしたことを特徴とするプログラマブルコントローラ。
【請求項３】
二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラであって、
前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とし、
前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一にし、
前記２つのＣＰＵユニットのうち実行系のＣＰＵユニットのみが通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力する機能と、
前記通信コマンドに対する前記接続機器からのレスポンスは、前記両ＣＰＵユニットが受信するが、その受信したレスポンスに対する処理は前記実行系のＣＰＵユニットのみが実行する機能と、
前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えたことを特徴とするプログラマブルコントローラ。
【請求項４】
二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラであって、
前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とし、
前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一にし、
前記２つのＣＰＵユニットのうち実行系のＣＰＵユニットのみが通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力する機能と、
前記通信コマンドに対する前記接続機器からのレスポンスは、前記両ＣＰＵユニットが受信するが、その受信したレスポンスに対する処理は前記実行系のＣＰＵユニットのみが実行する機能と、
前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備え、
前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わるようにしたことを特徴とするプログラマブルコントローラ。
【請求項５】
前記待機系のＣＰＵユニットが、前記実行系のＣＰＵの通信内容を取得し、
実行系と待機系のＣＰＵユニットで現在通信している内容が一致するか否かを前記バスにて比較することにより、通信系統の故障の有無を判断する機能を備えたことを特徴とする請求項１から４の何れか１項に記載のプログラマブルコントローラ。
【請求項６】
二重化対応のＣＰＵユニットであって、
１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備えるとともに、前記シリアル回線に接続された接続機器と通信を可能とし、
シリアル通信ポートＮｏは、相手方のＣＰＵユニットと同一に設定され、
前記接続機器から前記シリアル回線を介して送られてきた通信コマンドを受信すると、自己が実行系の場合にのみの受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスを行う機能と、
前記待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えたことを特徴とするＣＰＵユニット。
【請求項７】
二重化対応のＣＰＵユニットであって、
１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備えるとともに、前記シリアル回線に接続された接続機器と通信を可能とし、
シリアル通信ポートＮｏは、相手方のＣＰＵユニットと同一に設定され、
自己が前記実行系の場合に通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力する機能と、
前記通信コマンドに対する前記接続機器からのレスポンスは、受信するものの、その受信したレスポンスに対する処理は前記実行系の場合にのみ行う機能と、
前記待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えたことを特徴とするＣＰＵユニット。
【請求項８】
二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラにおける処理方法であって、
前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とするものであり、
前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一に設定し、
前記接続機器から前記シリアル回線を介して送られてきた通信コマンドは、前記両ＣＰＵユニットが受信し、その受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスは、実行系のＣＰＵユニットのみが行い、
前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する処理を行うことを特徴とするプログラマブルコントローラにおける処理方法。
【請求項９】
二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラにおける処理方法であって、
前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とするものであり、
前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一に設定し、
前記２つのＣＰＵユニットのうち実行系のＣＰＵユニットのみが通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力し、
前記通信コマンドに対する前記接続機器からのレスポンスは、前記両ＣＰＵユニットが受信し、その受信したレスポンスに対する処理は前記実行系のＣＰＵユニットのみが行い、
前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する処理を行うことを特徴とするプログラマブルコントローラの処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、プログラマブルコントローラ及びＣＰＵユニット並びにプログラマブルコントローラの処理方法に関するものである。
【０００２】
【従来の技術】
ファクトリーオートメーション（ＦＡ）の制御装置として、プログラマブルコントローラ（ＰＬＣ）が用いられている。このＰＬＣは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット，ＰＬＣ全体の制御を統率するＣＰＵユニット，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット，アクチュエータなどに制御出力を出す出力ユニット，通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
【０００３】
ＰＬＣのＣＰＵユニットにおける制御は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたラダー言語で組まれたユーザプログラムに基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、いわゆる周辺処理を行うと言うことをサイクリックに繰り返し処理するようになる。
【０００４】
ところで、システムの安全性，信頼性を向上するため、ＰＬＣを構成する各ユニットを二重化することが行われる。例えばＣＰＵユニットを二重化する場合、従来のＣＰＵユニットを２個設けるとともに、それら２つのＣＰＵユニットをＣＰＵ間バスにより接続する。そして、それら２個のＣＰＵユニットは、基本的に同一の機能を持ったものであり、同じユーザプログラムを実行する。
【０００５】
そして、２台のＣＰＵユニットのうち、一方が動作系のＣＰＵユニットとなって、実際にサイクリックな処理を行い、メモリに対して読み書きを行ったり、外部のＩ／Ｏ機器等との間で制御データ（Ｉ／Ｏデータ）の送受を行い、ＦＡネットワークシステムの制御を司る。また、他方のＣＰＵユニットは待機系のＣＰＵユニットとなり、待機中は、動作系のユーザプログラムと同一のユーザプログラムを実行するものの、演算実行結果を出力・反映することはない。そして、実行系ＰＬＣから処理結果等を受信し、待機系のＣＰＵユニットのメモリの更新を行う。これにより、待機系のＣＰＵユニットと実行系のＣＰＵユニットのメモリの同一性が確保される。
【０００６】
そして、実行系のＣＰＵユニットが故障した場合には、待機系のＣＰＵユニットが実行系のＣＰＵユニットに切り替わって実際の制御等の動作を行う。従って、ＣＰＵユニットに故障が発生しても、すぐにシステムが停止することなく、継続して運転できるので信頼性が向上する。
【０００７】
一方、上記したＣＰＵユニットには、シリアル通信ポートが備えられており、このシリアル通信ポートにＲＳ２３２ＣやＲＳ４８５用のシリアル通信回線（通信ケーブル）を接続することにより、そのシリアル通信回線を介してツール，表示器，制御コンピュータ等の接続機器と通信可能となっている。
【０００８】
そして、ＣＰＵユニットが二重化されたＰＬＣでは、２つのＣＰＵユニットが同一の接続機器と通信可能にする必要があり、そのための両ＣＰＵユニットと接続機器の接続関係を模式的に示すと、図１のようになる。すなわち、図１（ａ）に示すように、２台のＣＰＵユニット１ａ，１ｂと接続機器４は、１：Ｎ通信インタフェースに対応する通信ケーブル２に接続される。上記した構成において、接続機器４と実行系のＣＰＵユニット１ａの間でデータの送受を行うためには、各ＣＰＵユニット１ａ，１ｂに異なるシリアル通信ポートＮｏを付す。これにより、接続機器４は、通常、通信先アドレスにシリアル通信ポートＮｏを付加するので、接続機器４が現在の実行系のＣＰＵユニット１ａを認識することにより、対応する通信ポートＮｏ．を付加したプロトコルを作成し、通信ケーブル２に出力する。すると、通信ケーブル２上を送信されるデータは、各ＣＰＵユニット１ａ，１ｂに送られるが、シリアル通信ポートＮｏが一致する実行系のＣＰＵユニット１ａのみが当該データを内部に取り込む。
【０００９】
なお、ＣＰＵユニットからのデータ出力については、ＣＰＵユニット１ａ，１ｂは、どちらが実行系となっているか分かっているので、実行系のＣＰＵユニット（図の場合１ａ）が接続機器４に対してデータを送信すればよいので問題はない。
【００１０】
また、別の構成としては、図１（ｂ）に示すように、２台のＣＰＵユニット１ａ，１ｂのシリアル通信ポートＮｏを同じにするとともに、通信ケーブル３中の所定位置に通信切替回路５を実装する。この通信切替回路５は、現在どちらのＣＰＵユニットが実行系になっているかを知っており、実行系のＣＰＵユニット１ａと、接続機器４を接続するようにする。これにより、通信ケーブル３を介して送られてきたデータは、その通信切替回路５を経由して実行系のＣＰＵユニット１ａに渡される。係る構成を採ると、接続機器４側では、現在実行系となっているＣＰＵユニットが何であるかを認識する必要がないので、処理が簡易化される。
【００１１】
【発明が解決しようとする課題】
しかしながら、上記した従来のシステムでは、以下に示す問題がある。まず、図１（ａ）に示した各ＣＰＵユニットに異なるシリアル通信ポートＮｏを設定する方式の場合、接続機器４側がそれぞれのＣＰＵユニットを意識した通信制御プログラムにする必要がある。すなわち、接続機器４は二重化されているＣＰＵユニットのうち、どちらが実行系のＣＰＵユニットであるかを確認してから、そのＣＰＵユニットのシリアル通信ポートＮｏを付加したコマンドを、通信ラインへ出力しなければならないので、煩雑である。
【００１２】
また、実行系のＣＰＵユニット１ａから接続機器４に対してデータを送った後、接続機器４が実行系のＣＰＵユニットに返信する場合、受信したデータに付された発信元のシリアル通信ポートＮｏ（図１（ａ）の場合Ａ）に基づいてコマンドを作成し送ることになる。従って、実行系のＣＰＵユニット１ａがデータを送信後、返信を受信するまでの間に故障が発生したような場合には、新たに実行系に切り替わったＣＰＵユニット１ｂ側では接続機器４からの返信を受信することができないと言う問題を有する。
【００１３】
一方、図１（ｂ）に示したシリアル通信ポートＮｏを同じにした方式の場合には、図１（ａ）で示した構成を採った場合に生じた問題は解消されるものの、シリアル通信自体が二重化されなくなることから、信頼性の低下につながる問題点があった。また、シリアル通信ポートが故障した場合、ＣＰＵユニット１ａ，１ｂ側ではそれを認識することができず、係る故障を検出するためには、外付けで別途回路を追加する必要があった。
【００１４】
この発明は、ＣＰＵユニットを二重化した場合でも、ＣＰＵユニットが１台のときと同様のシリアル通信プログラムで通信を行うことが可能となり、ユーザのシステム構築が容易にできるとともに、シリアル通信も含めた二重化を実現できるプログラマブルコントローラ及びＣＰＵユニット並びにプログラマブルコントローラの処理方法を提供することを目的とする。
【００１５】
【課題を解決するための手段】
この発明によるプログラマブルコントローラは、二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラであって、前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とした。さらに、前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一にする。そして、前記接続機器から前記シリアル回線を介して送られてきた通信コマンドは、前記両ＣＰＵユニットが受信するが、その受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスは、実行系のＣＰＵユニットのみが実行する機能と、前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えて構成すると良い。ここで、メモリは、例えば、ＩＯメモリや、ユーザメモリなどがある。さらに、各種パラメータなども同じ状態を維持する対象となる。
【００１６】
そして、好ましくは、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって前記通信コマンドに対する処理並びにレスポンスを返す機能をさらに付加することである。
【００１７】
また、別の解決手段他としては、二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラであって、前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とした。さらに、前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一にする。そして、前記２つのＣＰＵユニットのうち実行系のＣＰＵユニットのみが通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力する機能と、前記通信コマンドに対する前記接続機器からのレスポンスは、前記両ＣＰＵユニットが受信するが、その受信したレスポンスに対する処理は前記実行系のＣＰＵユニットのみが実行する機能と、前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能を備えて構成することである。
【００１８】
さらに、この場合も好ましくは、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わるように構成することである。
【００１９】
この発明によれば、２つのＣＰＵユニットの通信のためのシリアル通信ポートＮｏを同じにしたため、接続機器にとっては、二重化されていない１台のＣＰＵユニットに対する通信処理と同様の通信プログラムにより実行することができる。つまり、接続機器は、いずれが実行系のＣＰＵユニットなのかを意識することなく通信を行うことができる。シリアル通信ポートＮｏが同じなため、接続機器から送られてきたデータは、両ＣＰＵユニットが受信するが、各ＣＰＵユニットは自分が実行系か待機系かが分かっているので、実行系側のみが受信したデータに伴う正規の処理を実行する。また、待機系のＣＰＵユニットは、実行系のＣＰＵユニットから処理結果を取得し、前記実行系のＣＰＵユニットから処理結果の通知を受け、その処理結果に応じた処理を行うことにより、実行系のＣＰＵユニットと同じ状態を維持するので、実行系のＣＰＵユニットがダウンした場合には、そのまま待機系のＣＰＵユニットが実行系のＣＰＵユニットに切り替わっても、それ以前の状態と問題なくスムーズに処理が継続する。
【００２０】
また、上記した各発明を前提とし、前記待機系のＣＰＵユニットが、前記実行系のＣＰＵの通信内容を取得し、実行系と待機系のＣＰＵユニットで現在通信している内容が一致するか否かを前記バスにて比較することにより、通信系統の故障の有無を判断する機能を備えるとよい。
【００２１】
つまり、本発明では、２つのＣＰＵユニットのシリアル通信ポートＮｏを同じにしているので、接続機器から送られてきたデータは、両ＣＰＵユニットで受信できる。従って、受信した内容が同じ場合には、受信系統は共に正常であると判断できる。また、一方が受信できない場合には、受信できなかったＣＰＵユニット側の受信系統が故障していると判断できる。
【００２２】
さらに、送信系統は、実行系のＣＰＵユニットから接続機器に向けて出力されるデータを待機系のＣＰＵユニットも取得し、バス経由で実行系が送信したデータと、待機系が取得したデータとを比較し、一致すれば送信系統は正常であると判断できる。また一致しない場合には、何れかが故障していると判断できる。
【００２３】
また、上記した各プログラマブルコントローラの発明を構成するのに用いてられるＣＰＵユニットとしては、例えば、二重化対応のＣＰＵユニットであって、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備えるとともに、前記シリアル回線に接続された接続機器と通信を可能とし、シリアル通信ポートＮｏは、相手方のＣＰＵユニットと同一に設定され、前記接続機器から前記シリアル回線を介して送られてきた通信コマンドを受信すると、自己が実行系の場合にのみの受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスを行う機能と、前記待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えて構成することである。
【００２４】
また、別の構成としては、二重化対応のＣＰＵユニットであって、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備えるとともに、前記シリアル回線に接続された接続機器と通信を可能とし、シリアル通信ポートＮｏは、相手方のＣＰＵユニットと同一に設定され、自己が前記実行系の場合に通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力する機能と、前記通信コマンドに対する前記接続機器からのレスポンスは、受信するものの、その受信したレスポンスに対する処理は前記実行系の場合にのみ行う機能と、前記待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する機能とを備えて構成することである。
【００２５】
さらに、本発明に係るプログラマブルコントローラにおける処理方法では、二重化された２つのＣＰＵユニットを備えたプログラマブルコントローラにおける処理方法であって、前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とするものであり、前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一に設定する。そして、前記接続機器から前記シリアル回線を介して送られてきた通信コマンドは、前記両ＣＰＵユニットが受信し、その受信した通信コマンドに対する処理並びに前記接続機器へのレスポンスは、実行系のＣＰＵユニットのみが行う。さらに、前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する処理を行うようにした。
【００２６】
また、別の解決手段としては、前記２つのＣＰＵユニットは、バスを通して、内部のデータ転送や相手の状態を確認可能とするとともに、１：Ｎ通信タイプのシリアル回線に接続するシリアル通信ポートを備え、前記シリアル回線に接続された接続機器と通信を可能とするものであり、前記２つのＣＰＵユニットのシリアル通信ポートＮｏを同一に設定する。そして、前記２つのＣＰＵユニットのうち実行系のＣＰＵユニットのみが通信コマンドの発行プログラムに基づいて生成される通信コマンドを前記接続機器に向けて出力し、前記通信コマンドに対する前記接続機器からのレスポンスは、前記両ＣＰＵユニットが受信し、その受信したレスポンスに対する処理は前記実行系のＣＰＵユニットのみが行い、前記２つのＣＰＵユニットのうち待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持する処理を行うようにした。
【００２７】
上記した各発明において、待機系のＣＰＵユニットのメモリの状態を、前記実行系のＣＰＵユニットのメモリと同じ状態を維持するには、例えば、実行系のＣＰＵユニットが持つメモリに格納されたデータを、待機系のＣＰＵユニットに対して送り、２つのＣＰＵユニットにおいてメモリ内容の同一性を図ることであるが、係る処理は、例えば、実行系のＣＰＵユニットが必要なデータを待機系のＣＰＵユニットに対して送るようにしても良いし、待機系のＣＰＵユニットが実行系のＣＰＵユニットにアクセスし、取得するようにしても良い。また、共有メモリを用いた転送処理を利用し、実行系のＣＰＵユニットが所定のメモリエリアに必要なデータを書き込むことで、自動的に（ＣＰＵユニットが関与しないで）待機系のＣＰＵユニットのメモリに書き込むようにしても良い。
【００２８】
【発明の実施の形態】
図２は、本発明の好適な一実施の形態を示している。ＰＬＣ１０と接続機器２０は、共にシリアル通信系の通信回線（通信ケーブル）２１に接続され、その通信ケーブル２１を介して相互に通信可能となっている。接続機器２０としては、ＰＬＣのメモリの読出しや更新等を行うツール，表示器，制御コンピュータなどがある。
【００２９】
ＰＬＣ１０は、複数のユニットから構成される。すなわち、ユーザプログラムを演算実行したり、Ｉ／Ｏリフレッシュや周辺処理をサイクリックに実行する機能を持つ第１，第２ＣＰＵユニット１１，１２や、電源ユニット１３や、入出力機器を接続するＩ／Ｏユニット１４や、所定のネットワーク（図示省略）に接続し、他の装置（スレーブ，ＰＬＣ等）と通信を行う通信ユニット１５等がある。これらのユニットは、バスを介して接続される。もちろん、これらの他にもユニットは存在し、必要に応じて連結するユニットを増減する。
【００３０】
第１，第２ＣＰＵユニット１１，１２は、同一のユーザプログラムを実行するもので、実際のシステム稼動時には、何れか一方が実行系となり、他方が待機系となる。そして、実行系となったＣＰＵユニットが行ったユーザプログラムの演算結果が、制御に反映される。
【００３１】
さらに、第１，第２ＣＰＵユニット１１，１２は、シリアル通信をするためのインタフェースを内蔵し、そのユニットの表面にシリアル通信ポートを実装している。そして、それら第１，第２ＣＰＵユニット１１，１２と接続機器２０とは、１：Ｎ通信インタフェースに対応した通信ケーブル２１により接続され、シリアル通信ポートＮｏ等の宛先を特定することにより、その通信ケーブル２１に接続された所望の相手に対してデータを送信可能としている。
【００３２】
さらに、図３（ａ）に示すように、本実施の形態では、第１，第２ＣＰＵユニット１１，１２（シリアル通信ポート）を特定するシリアル通信ポートＮｏは、同一のものを割り当てている。このシリアル通信ポートＮｏの設定は、例えば１：１通信インタフェースで接続されたツールから実行系のＣＰＵユニットに送信することで、係る実行系のＣＰＵユニットに設定する。また、その実行系のＣＰＵユニットは、バスを使用して受信したシリアル通信ポートＮｏを待機系のＣＰＵユニットに渡す。これにより、第１，第２ＣＰＵユニット１１，１２は、取得したシリアル通信ポートＮｏを自己の番号に設定する。よって、同一の番号に設定される。なお、第１，第２ＣＰＵユニット１１，１２各々のスイッチ或いは内部メモリの変更によって、同一のシリアル通信ポートＮｏを設定するようにしても良い。
【００３３】
また、第１，第２ＣＰＵユニット１１，１２と接続機器２０の通信インタフェースが異なっていたり、第１，第２ＣＰＵユニット１１，１２と接続機器２０の一方或いは両方の通信インタフェースが１：１であったりする場合には、１：Ｎ通信になるように通信ケーブル２１′上の適宜位置にインタフェース変換器１６を組み込むと良い（図３（ｂ）参照）。
【００３４】
上記のように構成すると、接続機器２０にて第１，第２ＣＰＵユニット１１，１２に設定されたシリアル通信ポートＮｏを付加された送信データ（コマンド／レスポンス）が出力されると、通信ケーブル２１を経由して、第１，第２ＣＰＵユニット１１，１２が共に受信する。そこで、第１，第２ＣＰＵユニット１１，１２は、自己が実行系か待機系かがわかっているので、実行系／待機系に応じた処理を行う。なお、以下の説明では、第１ＣＰＵユニット１１が実行系のＣＰＵユニットとなり、第２ＣＰＵユニット１２が実行系ユニットになっているものとして説明する。
【００３５】
すなわち、接続機器２０がホスト（１：Ｎ通信の親局に相当）の場合には、まず接続機器２０にて通信コマンドが生成され、送信される。すると、第１，第２ＣＰＵユニット１１，１２は、係る通信コマンドを同時に受信する（図４（ａ）参照）。
【００３６】
このとき、図４（ｂ）に示すように、実行系である第１ＣＰＵユニット１１は、受信した通信コマンドに従って、所定の処理を実行し、その処理結果を待機系の第２ＣＰＵユニット１２に通知するとともに、接続機器２０にレスポンスを返す。一方、待機系の第２ＣＰＵユニット１２は、接続機器２０から通信コマンドを受信しても、自己が待機系であることがわかっているので、その通信コマンドに従った処理は実行せず、実行系の第１ＣＰＵユニット１１からの処理通知に従う。ここで言う「処理通知に従う」とは、例えば、実行系の第１ＣＰＵユニット１１が受信した通信コマンドに従って処理を実行した結果、第１ＣＰＵユニット１１の内部データに変更が発生し、待機系の第２ＣＰＵユニット１２へ反映が必要な場合は、所定のタイミングで実行系と待機系のＣＰＵユニット間で内部データの一致処理が実行されることを意味する。
【００３７】
このように、第１，第２ＣＰＵユニット１１，１２は、自己が実行系か待機系かがわかっているので、ホストである接続機器２０から通信コマンドを受信したとしても、待機系の第２ＣＰＵユニット１２は制御のための処理を実行しないことにより、ＦＡネットワークシステムにとっては、実行系の第１ＣＰＵユニット１１のみが稼動しているように動作する。
【００３８】
また、待機系の第２ＣＰＵユニット１２は、実行系の第１ＣＰＵユニット１１が受信した通信コマンドに従って処理を実行した結果、第１ＣＰＵユニット１１の内部データに変更が発生し、待機系の第２ＣＰＵユニット１２へ反映が必要な場合は、所定のタイミングで実行系と待機系のＣＰＵユニット間で内部データの一致処理が実行される。これにより、実行系の第１ＣＰＵユニット１１と同じ状態を維持する。従って、実行系の第１ＣＰＵユニット１１が故障した場合には、直ぐに第２ＣＰＵユニット１２が実行系に切り替わり、制御動作を実行することができる。
【００３９】
つまり、図５（ａ）に示すように、実行系の第１ＣＰＵユニット１１が異常通知を待機系であった第２ＣＰＵユニット１２に通知するので、第２ＣＰＵユニット１２は実行系に切り替わる。そして、図５（ｂ）に示すように、第２ＣＰＵユニット１２は、接続機器２０から送られてきた通信コマンドに対する処理を実行し、接続機器２０にレスポンスを返す。
【００４０】
上記した処理を実行するための具体的な処理機能は、図６に示すフローチャートを実行するようになっている。すなわち、接続機器２０が通信コマンドを生成し、送信する（ＳＴ１）。すると、ＰＬＣのＣＰＵユニットは、通信ケーブル２１を介して送られてきた通信コマンドを受信する（ＳＴ１１）ので、自己が実行系か否かを判断する（ＳＴ１２）。実行系か否かは、例えば各ＣＰＵユニット１１，１２のメモリ上に設けた実行系フラグにより判別できる。
【００４１】
実行系の場合には、受信した通信コマンドの内容の処理を実行し（ＳＴ１３）、係る受信した通信コマンドに従って処理を実行した結果、第１ＣＰＵユニット１１の内部データに変更が発生し、待機系の第２ＣＰＵユニットへ反映が必要な場合は、その旨を第２ＣＰＵユニット１２へ通知する（ＳＴ１４）。その後、通信コマンドを送ってきた接続機器２０に対してレスポンスを返す（ＳＴ１５）。なお、接続機器２０は、係るレスポンスを受信することにより、送信した通信コマンドが正常に実行されたこと認識するとともに、必要な情報を取得する（ＳＴ２）。
【００４２】
一方、待機系のＣＰＵユニットの場合には、ステップ１２の分岐判断でＮｏとなるので、ステップ１６に飛び、相手側のＣＰＵユニットがダウンしているか否かを判断する（ＳＴ１６）。相手側がダウンしていない場合には、係る相手側のＣＰＵユニットが実行系であるので通信コマンドを実行する。そこで、待機系のままとなるので、実行系のＣＰＵユニットからの通知内容を基に、例えば内部データの１つに含まれるＩ／Ｏメモリのデータ内容の更新などの処理を実行する（ＳＴ１７）。
【００４３】
また、ステップ１６の分岐判断で相手方がダウンしていると判断すると、自己を実行系に切替える。従って、ステップ１３に飛び、通信コマンドに即した処理を実行する。なお、上記切替は、例えば、メモリの所定領域に割り当てた実行系フラグを立てることにより行える。
【００４４】
次に、ＰＬＣがホストの場合の動作を説明する。図７（ａ）に示すように、ＣＰＵユニットが内部プログラムを実行し、通信プログラムの発行のプログラムがある、実行系の第１ＣＰＵユニット１１が接続機器２０に向けて通信コマンドを送信する。待機系の第２ＣＰＵユニット１２は、接続機器２０に対して通信コマンドを送信しない。ここで「通信コマンドを送信しない」とは、通信コマンドの発行自体をしない場合はもちろんのこと、通信コマンドを発行（生成）しても送信しない場合も含む。
【００４５】
通信コマンドを受信した接続機器２０は、図７（ｂ）に示すように、レスポンスを返す。このとき、通信コマンドの発信元情報は、第１ＣＰＵユニット１１のシリアル通信ポートＮｏが付加されているので、接続機器２０は、そのシリアル通信ポートＮｏに向けてレスポンスを返信するので、第１，第２ＣＰＵユニット１１，１２は、共に上記レスポンスを受信する。
【００４６】
すると、実行系である第１ＣＰＵユニット１１は、受信したレスポンスに従って、所定の処理を実行し、その処理結果を待機系の第２ＣＰＵユニット１２に通知するとともに、接続機器２０にレスポンスを返す。一方、待機系の第２ＣＰＵユニット１２は、接続機器２０から通信コマンドを受信しても、自己が待機系であることがわかっているので、その通信コマンドに従った処理は実行せず、実行系の第１ＣＰＵユニット１１からの処理通知に従う。ここで言う「処理通知に従う」とは、例えば、実行系の第１ＣＰＵユニット１１が受信した通信コマンドに従って処理を実行した結果、第１ＣＰＵユニット１１の内部データに変更が発生し、待機系の第２ＣＰＵユニット１２へ反映が必要な場合は、所定のタイミングで実行系と待機系のＣＰＵユニット間で内部データの一致処理が実行されることを意味する。
【００４７】
このように、第１，第２ＣＰＵユニット１１，１２は、自己が実行系か待機系かがわかっているので、実行系の第１ＣＰＵユニット１１と接続機器２０との間で通信を行うことになる。
【００４８】
また、実行系の第１ＣＰＵユニット１１から通信コマンドを送信した場合、接続機器２０からレスポンスが返信されるが、このとき指定されるあて先は第１ＣＰＵユニット１１のシリアル通信ポートＮｏであるので、第２ＣＰＵユニット１２側でもレスポンスを受信可能となる。従って、通信コマンドを送信後、レスポンスが返信されてくるまでの間に第１ＣＰＵユニット１１が故障した場合、レスポンスは実行系に切り替わった第２ＣＰＵユニット１２が受信することができ、レスポンスに伴う処理を正常に実行できる。
【００４９】
上記した処理を実行するための具体的な処理機能は、図８に示すフローチャートを実行するようになっている。ＣＰＵユニットが演算実行するユーザプログラム中に、通信コマンド発行プログラムが存在すると（ＳＴ２１）、自己が実行系か否かを判断する（ＳＴ２２）。
【００５０】
実行系の場合には、通信コマンド発行プログラムにしたがって、通信コマンドを生成し、送信する（ＳＴ２３）。この通信コマンドは、通信ケーブル２１を介して接続機器２０に送られ、接続機器２０は係る通信コマンドを受信する（ＳＴ２９）。すると、接続機器２０はレスポンスを返すので（ＳＴ３０）、実行系のＣＰＵユニットは係るレスポンスを受信する（ＳＴ２４）。すると、受信したレスポンスの内容の処理を実行し（ＳＴ２５）、実行系の第１ＣＰＵユニット１１が受信した通信コマンドに従って処理を実行した結果、第１ＣＰＵユニット１１の内部データに変更が発生し、待機系の第２ＣＰＵユニット１２へ反映が必要な場合は、待機系の第２のＣＰＵユニット１２へ通知する（ＳＴ２６）。
【００５１】
一方、待機系のＣＰＵユニットの場合には、ステップ２２の分岐判断でＮｏとなるので、ステップ２７に飛び、相手側のＣＰＵユニットがダウンしているか否かを判断する（ＳＴ２７）。相手側がダウンしていない場合には、係る相手側のＣＰＵユニットが実行系であるので通信コマンドを生成し、送信する。そこで、待機系のままとなるので、実行系のＣＰＵユニットからの通知内容を基に、例えば内部データの１つに含まれるＩ／Ｏメモリのデータ内容の更新などの処理を実行する（ＳＴ２８）。
【００５２】
図９は、本発明の第３の実施の形態を示している。上記した各実施の形態における二重化ＣＰＵの接続構成を前提とし、各ＣＰＵユニットの通信インタフェースに故障が無いことを検知する機能を設けている。
【００５３】
すなわち、上記した各実施の形態と同様に、接続機器２０と実行系の第１ＣＰＵユニット１１との間で通信を実施する（▲１▼，▲１▼′）。この通信を待機系の第２ＣＰＵユニット１２が監視（▲２▼，▲３▼）し、第１，第２ＣＰＵユニット１１，１２における通信状態をバスを介して比較し、一致している場合には正常と判断する（図９（ｂ））。
【００５４】
そして、一致しない場合には、第１，第２ＣＰＵ１１，１２の受信状態に応じてどちら側が故障しているかを判断する。係る判断は、例えば待機系のＣＰＵユニットで行うと、実際の制御を行う際の負荷にならないので好ましいが、実行系のＣＰＵユニットで行ってももちろん良い。さらに、両方のＣＰＵユニットで判断すると、通信インタフェース（送受信部）の故障の有無に対し自己診断が行えるので好ましい。
【００５５】
そして、比較結果と故障部位の特定は、図１０に示す対応表に基づいて判定できる。すなわち、例えばホストが接続機器２０側の場合には、接続機器からＣＰＵユニットに向けて通信コマンドが出力されるので、その通信コマンドは実行系と待機系の両方のＣＰＵユニットへ向けて送信される（▲１▼，▲３▼）。
【００５６】
すると、実行系と待機系のＣＰＵユニットで共に通信コマンドを受信した場合には、比較結果が一致するので、両系統とも正常であると判断できる。また、何れか一方のＣＰＵユニットでのみ通信コマンドを受信した場合には、比較結果は不一致となり、通信コマンドを受信できなかった方の受信部が故障していると判断できる。
【００５７】
また、実行系のＣＰＵユニットは、通信コマンドを受信するとレスポンスを送信するので、待機系のＣＰＵユニットは係るレスポンスを取得する（▲２▼）。従って、実行系のＣＰＵユニットがレスポンスを送信し、待機系のＣＰＵユニットでそれ（レスポンス）を受信できた場合には、比較結果は一致するので故障無しと判断できるが、レスポンスを送信しているにもかかわらず、待機系のＣＰＵユニットで当該レスポンスを受信できない場合には、実行系の送信部が故障していると判断できる。すなわち、実行系のＣＰＵユニットからのレスポンスを送信する前に、接続機器から通信コマンドを受信するため、その時点で待機系の受信部は正常であるので、実行系のＣＰＵからレスポンスを送信したにもかかわらず待機系で受信できないのは実行系の送信部が故障していると言える。また、ＣＰＵユニットがホストの場合も、基本的に上記と同様な判定基準に従って判断できる。
【００５８】
上記した処理を実行するための具体的な処理機能は、図１１に示すフローチャートを実行するようになっている。すなわち、実行系のＣＰＵユニットは、通信コマンド（レスポンス）の送信或いは受信を行い（ＳＴ３１）、待機系のＣＰＵユニットは接続機器−実行系ＰＬＣ間の通信コマンド（レスポンス）を受信する（ＳＴ４１）。
【００５９】
次いで、両ＣＰＵユニットは、それぞれＣＰＵ間バスを通して相手側のＣＰＵユニットにおける通信状態と比較し（ＳＴ３２，ＳＴ４２）、比較結果が不一致か否かを判断する（ＳＴ３３，ＳＴ４３）。一致する場合には、正常であるので、そのまま判定処理を終了し、不一致の場合には図１０に示した表に基づき、異常内容を分析する（ＳＴ３４，ＳＴ４４）。
【００６０】
そして、自分が異常か否かを判断し（ＳＴ３５，ＳＴ４５）、異常の場合には運転を停止する（ＳＴ３６，ＳＴ４６）。さらに、待機系のＣＰＵユニットは、自分が正常の場合には、待機系から実行系に切替を行う（ＳＴ４７）。
【００６１】
【発明の効果】
以上のように、この発明では、同一のシリアル通信ポートＮｏを設定するとともに、実行系のＣＰＵユニットのみが正規の処理を実行するようにしたため、ＣＰＵユニットを二重化した場合でも、ＣＰＵユニットが１台のときと同様のシリアル通信プログラムで通信を行うことが可能となり、ユーザのシステム構築が容易にできるとともに、シリアル通信も含めた二重化を実現することができる。
【図面の簡単な説明】
【図１】従来例を示す図である。
【図２】本発明の第１の実施の形態を示す図である。
【図３】本発明の第１の実施の形態を示す図である。
【図４】第１の実施の形態の機能を説明する図である。
【図５】第１の実施の形態の機能を説明する図である。
【図６】第１の実施の形態の機能を説明するフローチャートである。
【図７】第２の実施の形態を説明する図である。
【図８】第２の実施の形態の機能を説明するフローチャートである。
【図９】第３の実施の形態を説明する図である。
【図１０】第３の実施の形態における判定基準を説明する図である。
【図１１】第３の実施の形態の機能を説明するフローチャートである。
【符号の説明】
１０　ＰＬＣ
１１　第１ＣＰＵユニット
１２　第２ＣＰＵユニット
１３　電源ユニット
１４　Ｉ／Ｏユニット
１５　通信ユニット
２０　接続機器
２１　通信ケーブル
【図１】
2004013647.tif 000003
【図２】
2004013647.tif 000004
【図３】
2004013647.tif 000005
【図４】
2004013647.tif 000006
【図５】
2004013647.tif 000007
【図６】
2004013647.tif 000008
【図７】
2004013647.tif 000009
【図８】
2004013647.tif 000010
【図９】
2004013647.tif 000011
【図１０】
2004013647.tif 000012
【図１１】
2004013647.tif 000013