(57)【特許請求の範囲】
【請求項１】
二重化された２つのＣＰＵユニットを備えた産業用コントローラであって、
前記２つのＣＰＵユニットのうちの少なくとも一方には、通信用ケーブルを接続するための通信ポートを備え、
その通信ポートを備えたＣＰＵユニットは、その通信ポートに接続された通信用ケーブルを介してツール装置と通信コマンドの送受を行なう機能を備え、
前記通信ケーブルが接続されるＣＰＵユニットは、
前記ツール装置から送られてきたコマンドフレームの宛先を解析し、自己宛か否かを判断する宛先判断手段と、
その宛先判断手段により自己宛と判断した場合には、コマンドフレームで指定される処理を実行するとともに、前記通信用ケーブルを経由して前記ツール装置にレスポンスを返す機能と、
その宛先判断手段により自己宛でないと判断した場合には、受信したコマンドフレームを他のＣＰＵユニットに転送し、その転送した他のＣＰＵユニットからのレスポンスフレームを受信すると、受信したそのレスポンスフレームを前記通信用ケーブルを経由して前記ツール装置に送る機能と、
を備え、
前記通信ケーブルが接続されていないＣＰＵユニットは、
前記通信ケーブルが接続されるＣＰＵユニットから転送されて来たコマンドフレームを受信すると、コマンドフレームで指定される処理を実行する機能と、
送信元情報を記録したレスポンスヘッダ部と、その実行結果を格納したレスポンス部を備えたレスポンスフレームを作成し、前記通信ケーブルが接続されたＣＰＵユニットに送る機能と、
を備え、
前記２つのＣＰＵユニットは、左右いずれの側に位置しているかの位置情報を記憶保持し、
前記ツール装置から送信される通信コマンドのコマンドヘッダ部に格納する宛先情報として、“右宛”か“左宛”かの区別情報を含み、
前記宛先判断手段は、記憶保持する自己の位置情報と、前記区別情報とを比較し、受信した通信コマンドが自己宛か否かを判断するようにしたことを特徴とする二重化コントローラ。
【請求項２】
通信ネットワークに接続される通信ユニットと、二重化された２つのＣＰＵユニットと、を備え、
前記２つのＣＰＵユニットは、一方がアクティブとなって実際の制御を実行し、他方はスタンバイとなり、前記通信ユニットは前記アクティブ側のＣＰＵユニットと通信を行なうよう構成される産業用コントローラであって、
前記アクティブ側のＣＰＵユニットは、
ツール装置から前記通信ユニット経由で送られてきたコマンドフレームの宛先を解析し、自己宛か否かを判断する宛先判断手段と、
その宛先判断手段により自己宛と判断した場合には、コマンドフレームで指定される処理を実行するとともに、その実行結果を格納したレスポンス部を備えた前記ツール装置宛のレスポンスフレームを作成し、その作成したレスポンスフレームを前記通信ユニットに送る機能と、
その宛先判断手段により自己宛でないと判断した場合には、受信したコマンドフレームを前記スタンバイ側のＣＰＵユニットに転送し、そのスタンバイ側のＣＰＵユニットからのレスポンスフレームを受信すると、受信したそのレスポンスフレームを、前記通信ユニットに送る機能と、
を備え、
前記スタンバイ側のＣＰＵユニットは、
前記アクティブ側のＣＰＵユニットから転送されて来たコマンドフレームを受信すると、コマンドフレームで指定される処理を実行する機能と、
送信元情報を記録したレスポンスヘッダ部と、その実行結果を格納したレスポンス部を備えたレスポンスフレームを作成し、前記アクティブ側のＣＰＵユニットに送る機能と、
を備え、
前記通信ユニットは、前記アクティブ側のＣＰＵユニットから送られてきたレスポンスフレームを前記ツール装置へ送信するように構成し、
前記２つのＣＰＵユニットは、左右いずれの側に位置しているかの位置情報を記憶保持し、
前記ツール装置から送信される通信コマンドのコマンドヘッダ部に格納する宛先情報として、“右宛”か“左宛”かの区別情報を含み、
前記宛先判断手段は、記憶保持する自己の位置情報と、前記区別情報とを比較し、受信した通信コマンドが自己宛か否かを判断するようにした
ことを特徴とする二重化コントローラ。
【請求項３】
前記２つのＣＰＵユニットの間に、アクティブとスタンバイの切り替え制御を行なう二重化制御ユニットを備え、
その二重化制御ユニットは、それら２つのＣＰＵユニットが自己の左側と右側のいずれに存在しているかを認識し、その認識結果をそれぞれのＣＰＵユニットに通知することで、各ＣＰＵユニットがそれぞれの位置情報を記憶保持するようにしたことを特徴とする請求項１または２に記載の二重化コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＰＵユニットを２つ備えた二重化コントローラに関するもので、より具体的には、ツール装置とＣＰＵユニットとの間の通信コマンドの送受システムの改良に関する。
【背景技術】
【０００２】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）におけるネットワークシステムは、生産設備内の入力機器及び出力機器の制御を司る１または複数のＰＬＣ（Programmable Logic Controller）と、そのＰＬＣにより動作が制御される機器とが、制御系のネットワークに接続される。それらＰＬＣと機器は、その制御系のネットワークを介してサイクリックに通信を行なうことで、ＩＮデータ及びＯＵＴデータ（以下Ｉ／Ｏデータという）の送受を行ない、生産設備を制御する。
【０００３】
ＰＬＣは、制御プログラムに基づいて演算実行するＣＰＵユニット、センサやスイッチなどの入力機器を接続してそれらのオン・オフ信号を入力信号として取り込む入力ユニット、アクチュエータやリレーなどの出力機器を接続してそれらに対して出力信号を送り出す出力ユニット、ネットワークに接続された他の装置とデータの送受を行なう通信ユニット、マスタスレーブ通信をするためのマスタユニット、各ユニットに電源を供給する電源ユニット、などの複数のユニットを組み合わせることにより構成されている。これらのユニットは、内部バスにより電気的に接続され、その内部バスを介して所定のユニット間でデータの送受を行なう。
【０００４】
このＣＰＵユニットは例えば、ＩＮデータである入力機器のＯＮ信号またはＯＦＦ信号を入力し、入力したＯＮ／ＯＦＦ情報をユーザプログラムによって論理演算し、演算結果であるＯＵＴデータを出力機器へ出力する。その出力が出力機器に対する動作指示となって出力機器が動作するといった処理をサイクリックに繰り返し実行することにより、生産設備を制御する。
【０００５】
ところで、システムの安全性，信頼性を向上するため、ＰＬＣを構成する各ユニットを二重化することが行われる。例えば、本発明が対象とするＣＰＵユニットを二重化する場合、ＣＰＵユニットを２個設けるとともに、それら２つのＣＰＵユニットを内部バスにより接続する。それら２個のＣＰＵユニットは、基本的に同一の機能を持ったものであり、同じユーザプログラムを実行する。
【０００６】
２台のＣＰＵユニットのうち、一方が実行系のＣＰＵユニットとなって、実際にサイクリックな処理を行い、メモリに対して読み書きを行なったり、外部のＩ／Ｏ機器等との間で制御データ（Ｉ／Ｏデータ）の送受を行なったりして、ＦＡネットワークシステムの制御を司る。また、他方のＣＰＵユニットは待機系のＣＰＵユニットとなり、待機中は、実行系のユーザプログラムと同一のユーザプログラムを実行するものの、演算実行結果を出力ユニットを介して外部の出力機器へ出力することはない。そして、実行系のＣＰＵユニットから処理結果等を受信し、待機系のＣＰＵユニットのメモリの更新を行う。これにより、待機系のＣＰＵユニットと実行系のＣＰＵユニットのメモリの同一性が確保される。
【０００７】
実行系のＣＰＵユニットが故障した場合には、待機系のＣＰＵユニットが実行系のＣＰＵユニットに切り替わって実際の制御等の動作を行う。従って、ＣＰＵユニットに故障が発生しても、すぐにシステムが停止することなく、継続して運転できるので信頼性が向上する。この種の二重化されたＣＰＵユニットを備えたＰＬＣは、たとえば特許文献１等に開示されている。
【特許文献１】特開２００６−２６０６０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、ＣＰＵユニットにユーザプログラムをダウンロードしたり、ＣＰＵユニットのＩ／ＯメモリにアクセスしＩ／Ｏデータの読み書きをしたりするため、ＣＰＵユニットにツール装置を接続することがある。この接続形態としては、ＣＰＵユニットに直接通信用ケーブルを接続する場合と、通信ユニットに接続された通信ネットワーク経由で接続する場合がある。しかし、通信用ケーブルを直接接続する方式では、通信用ケーブルが接続されているＣＰＵユニットにしかアクセスできなかったので、以下に示す問題を生じる。
【０００９】
ユーザが二重化ＰＬＣでプログラムのデバッグを実施する場合やトラブル発生時など、それぞれのＣＰＵユニットが固有で持っている情報を読み出したい場合には、状態を確認したいＣＰＵユニットに直接通信用ケーブルを接続する必要があった。したがって両方のＣＰＵユニットの状態を確認するためには、一方のＣＰＵユニットの状態を確認した後、もう一方のＣＰＵユニットに通信用ケーブルをつなぎ変えなければならず、非常に手間がかかっていた。
【００１０】
また、プログラム変更やモード変更をしたいときには実行系（アクティブ側）から行う必要があるので、通信用ケーブルを接続しているＣＰＵユニットが待機系（スタンバイ側）であれば、もう一方のＣＰＵユニットに通信用ケーブルを接続しなおす必要があった。
【００１１】
また、通信ユニットは、実行系のＣＰＵユニットとのみ通信が可能であるので、待機系のＣＰＵユニットにはアクセスできなかった。その結果、待機系にアクセスするには、待機系のＣＰＵユニットを実行系に切り替えるか、待機系のＣＰＵユニットに通信用ケーブルを直接接続しなければならず、手間がかかる。よって、実行系のＣＰＵユニットが待機系のＣＰＵユニットの異常を検知したときに、ユーザは、ネットワーク経由で待機系のＣＰＵユニットにアクセスできないので、ユーザは現場に出向かなければならず、復旧作業が完了するまでに時間がかかってしまうという問題があった。
【００１２】
本発明は、通信用ケーブルの非接続側のＣＰＵユニットや、スタンバイ側のＣＰＵユニットに対してもツール装置との間で通信コマンド（コマンド／レスポンス）の送受を行なうことができる二重化コントローラを提供することにある。
【課題を解決するための手段】
【００１３】
上記の目的を達成するため、本発明に係る二重化コントローラは、（１）二重化された２つのＣＰＵユニットを備えた産業用コントローラであって、２つのＣＰＵユニットのうちの少なくとも一方には、通信用ケーブルを接続するための通信ポートを備え、その通信ポートを備えたＣＰＵユニットは、その通信ポートに接続された通信用ケーブルを介してツール装置と通信コマンドの送受を行なう機能を備える。通信ケーブルが接続されるＣＰＵユニットは、ツール装置から送られてきたコマンドフレームの宛先を解析し、自己宛か否かを判断する宛先判断手段と、その宛先判断手段により自己宛と判断した場合には、コマンドフレームで指定される処理を実行するとともに、通信用ケーブルを経由してツール装置にレスポンスを返す機能と、その宛先判断手段により自己宛でないと判断した場合には、受信したコマンドフレームを他のＣＰＵユニットに転送し、その転送した他のＣＰＵユニットからのレスポンスフレームを受信すると、受信したそのレスポンスフレームを通信用ケーブルを経由してツール装置に送る機能と、を備える。通信ケーブルが接続されていないＣＰＵユニットは、通信ケーブルが接続されるＣＰＵユニットから転送されて来たコマンドフレームを受信すると、コマンドフレームで指定される処理を実行する機能と、送信元情報を記録したレスポンスヘッダ部と、その実行結果を格納したレスポンス部を備えたレスポンスフレームを作成し、通信ケーブルが接続されたＣＰＵユニットに送る機能と、を備え、前記２つのＣＰＵユニットは、左右いずれの側に位置しているかの位置情報を記憶保持し、前記ツール装置から送信される通信コマンドのコマンドヘッダ部に格納する宛先情報として、“右宛”か“左宛”かの区別情報を含み、前記宛先判断手段は、記憶保持する自己の位置情報と、前記区別情報とを比較し、受信した通信コマンドが自己宛か否かを判断するようにした。宛先判断手段は、実施形態では、処理ステップＳ１２の分岐判断を実行するＭＰＵ２１により実現される。また、各機能は、それぞれ図５に示すフローチャートにおける所定の処理ステップを実行するＭＰＵ２１により実現される。ツール装置は、実施形態では、制御プログラム開発装置３に対応する。
【００１４】
（２）別の解決手段は、通信ネットワークに接続される通信ユニットと、二重化された２つのＣＰＵユニットと、を備え、２つのＣＰＵユニットは、一方がアクティブとなって実際の制御を実行し、他方はスタンバイとなり、通信ユニットはアクティブ側のＣＰＵユニットと通信を行なうよう構成される産業用コントローラを前提とする。アクティブ側のＣＰＵユニットは、ツール装置から通信ユニット経由で送られてきたコマンドフレームの宛先を解析し、自己宛か否かを判断する宛先判断手段と、その宛先判断手段により自己宛と判断した場合には、コマンドフレームで指定される処理を実行するとともに、その実行結果を格納したレスポンス部を備えたツール装置宛のレスポンスフレームを作成し、その作成したレスポンスフレームを前記通信ユニットに送る機能と、その宛先判断手段により自己宛でないと判断した場合には、受信したコマンドフレームをスタンバイ側のＣＰＵユニットに転送し、そのスタンバイ側のＣＰＵユニットからのレスポンスフレームを受信すると、受信したそのレスポンスフレームを通信ユニットに送る機能と、を備える。スタンバイ側のＣＰＵユニットは、アクティブ側のＣＰＵユニットから転送されて来たコマンドフレームを受信すると、コマンドフレームで指定される処理を実行する機能と、送信元情報を記録したレスポンスヘッダ部と、その実行結果を格納したレスポンス部を備えたレスポンスフレームを作成し、アクティブ側のＣＰＵユニットに送る機能と、を備える。そして、通信ユニットは、アクティブ側のＣＰＵユニットから送られてきたレスポンスフレームをツール装置へ送信するように構成し、前記２つのＣＰＵユニットは、左右いずれの側に位置しているかの位置情報を記憶保持し、前記ツール装置から送信される通信コマンドのコマンドヘッダ部に格納する宛先情報として、“右宛”か“左宛”かの区別情報を含み、
前記宛先判断手段は、記憶保持する自己の位置情報と、前記区別情報とを比較し、受信した通信コマンドが自己宛か否かを判断するようにした。宛先判断手段は、実施形態では、処理ステップＳ４２の分岐判断を実行するＭＰＵ２１により実現される。また、各機能は、それぞれ図６，図７に示すフローチャートにおける所定の処理ステップを実行するＭＰＵ２１により実現される。ツール装置は、実施形態では、制御プログラム開発装置３に対応する。
【００１５】
上記の（１），（２）の発明は、いずれも２つのＣＰＵユニットは、左右いずれの側に位置しているかの位置情報を記憶保持し、ツール装置から送信される通信コマンドのコマンドヘッダ部に格納する宛先情報として、“右宛”か“左宛”かの区別情報を含み、宛先判断手段は、記憶保持する自己の位置情報と、区別情報とを比較し、受信した通信コマンドが自己宛か否かを判断するようにした。各ＣＰＵユニットに位置情報を認識させる仕組みとしては、例えば、各ＣＰＵユニットに設定スイッチを設け、コントローラを構成する際にその設置位置を設定スイッチにより設定したり、ツール装置により設定したりすることで対応できる。また、右用／左用のように専用のユニットを設けても良い。更に、下記（３）に示すように、二重化制御ユニットのようにその設置状態を認識し、自動的に各ユニット設定するようにしても良い。さらには、記憶保持するための物理的なメモリはＣＰＵユニットの外部に設け、適宜のタイミングでその外部のメモリにアクセスして現在の自己の状態を認識するようにしても良い。
【００１６】
（３）２つのＣＰＵユニットの間に、アクティブとスタンバイの切り替え制御を行なう二重化制御ユニットを備え、その二重化制御ユニットは、それら２つのＣＰＵユニットが自己の左側と右側のいずれに存在しているかを認識し、その認識結果をそれぞれのＣＰＵユニットに通知することで、各ＣＰＵユニットがそれぞれの位置情報を記憶保持するようにするとよい。係る認識処理は、例えば、実施形態のように、各ＣＰＵユニットをベースユニットに装着するタイプのコントローラの場合には、各ＣＰＵユニットを装着したスロット位置を認識し、いずれのＣＰＵユニットが左側／右側に設置されているかを認識することができる。また、ベースユニットを用いない構成の場合、例えば、二重化制御ユニットの両側面にそれぞれのＣＰＵユニットを連結することで、内部バス・コネクタの接続関係から、ＣＰＵユニットの左右を識別することができる。もちろん、他の方式により識別するのを妨げない。
【００１９】
この発明によれば、ユーザは左右どちらのＣＰＵユニットに接続していても、アクティブ・スタンバイ両方にアクセスができるようになる。したがって、アクティブ・スタンバイを意識する必要はなくなり、右側でも左側でもどちらか一方のＣＰＵユニットに接続すれば、途中で通信用ケーブルをつなぎかえる必要がなくなるため、デバッグ作業やトラブルシュートにおける手間が軽減される。また、通信ユニットを経由する場合でも左右両方のＣＰＵユニットにアクセスできるので、アクティブ・スタンバイ両方の状態を遠隔地から確認することが可能となる。また、上記の（３）から（６）に示す各発明は、１つの産業用コントローラに対し、適宜の組み合わせにより組み込むとよい。
【発明の効果】
【００２０】
本発明では、通信用ケーブルの非接続側のＣＰＵユニットや、スタンバイ側のＣＰＵユニットに対しても、接続側のＣＰＵユニットやアクティブ側のＣＰＵユニットがコマンドフレームやレスポンスフレームを適宜転送するので、ツール装置との間で通信コマンド（コマンド／レスポンス）の送受を行なうことができる。
【発明を実施するための最良の形態】
【００２１】
図１に示すように、本実施形態のＰＬＣ１０は、複数のユニットを連結して構成されるビルディングブロックタイプである。図では、２つの電源ユニット１１，１１と、第１，第２ＣＰＵユニット１２，１２′と、二重化制御ユニット１３と、通信ユニット１４と、を示しているが、必要に応じて、Ｉ／Ｏユニット（入力ユニット、出力ユニット、入出力ユニットなど）や、高機能ユニット等も連結される。また、本実施形態では、これら各ユニットは、ベースユニット１５に設けられた各スロットに装着することで、そのベースユニット１５内に配線された内部バスを介してデータ通信を行なう。電源ユニット１１からの各ユニットへの電源供給は、ベースユニット１５内に配線された電源ラインを利用して行なう。また、２つのＣＰＵユニット１２，１２′と、二重化制御ユニット１３とを装着するスロット位置は決まっているが、他のユニットは任意のスロットに装着することができるようになっている。
【００２２】
電源ユニット１１は、１つのベースユニット１５上に２台装着する。これにより、一方の電源ユニットが故障してもシステム全体がダウンしないような構成としている。通信ユニット１４は、通信ネットワーク２に接続された他の装置・機器と通信を行なうもので、本実施形態との関係でいうと、制御プログラム開発装置３等のツール装置との間で、通信コマンドのやりとりを行う。
【００２３】
第１，第２ＣＰＵユニット１２，１２′は、同一のユーザプログラムを実行するもので、実際のシステム稼動時には、何れか一方が実行系（アクティブ）となり、他方が待機系（スタンバイ）となる。そして、アクティブ側となったＣＰＵユニットが行なったユーザプログラムの演算結果が、実際の制御に反映される。また、スタンバイ側のＣＰＵユニットも同一のユーザプログラムは実行されるが、その実行結果はＩ／Ｏメモリの所定のエリアに書き込まれるだけで出力ユニットを介して外部の出力機器へは出力されない。さらに、スタンバイ側のＣＰＵユニットは、アクティブ側のＣＰＵユニットから実行結果を受け取り、自己のメモリの更新などの所定の処理を実行する。これにより、スタンバイ側のＣＰＵユニットは、アクティブ側のＣＰＵユニットと同じ状態を維持する。従って、アクティブ側のＣＰＵユニットが異常によりダウンした場合には、直ぐにスタンバイ側であったＣＰＵユニットがアクティブ側に切り替わり、制御動作を実行することができる。
【００２４】
また第１，第２ＣＰＵユニット１２，１２′は、ＲＳ２３２Ｃ等の通信ポート１２ａを有しており、その通信ポート１２ａに制御プログラム開発装置３に接続された通信用ケーブル１の一端のコネクタを装着することで、制御プログラム開発装置３との間で通信コマンドの送受を行なう。
【００２５】
図２，図３は、第１，第２ＣＰＵユニット１２，１２′の内部構造を示している。両ＣＰＵユニット１２，１２′とも、ハードウェア構成は同じである。すなわち、第１，第２ＣＰＵユニット１２，１２′は、ＭＰＵ２１と、ＡＳＩＣ２２と、メモリ２３と、シリアルインタフェース２４と、を備える。ＭＰＵ２１とＡＳＩＣ２２は、ユーザプログラムをサイクリックに演算実行し、ネットワークシステムを構成する各機器の制御等を司る。また、ＭＰＵ２１は、ネットワークに接続された他の装置・機器に対してメッセージを送り、当該装置・機器に記憶保持された情報を収集したり、制御プログラム開発装置３からの要求に従い、メモリ２３の記憶情報を読み書きしたりする。
【００２６】
メモリ２３は、より具体的には、図３に示すように、ＭＰＵ２１が演算実行する際に使用するワークメモリ（ＷＲＡＭ）２３ａと、ユーザプログラムを格納するユーザメモリ（ＵＭ）２３ｂと、Ｉ／Ｏデータとパラメータを格納するＩ／Ｏメモリ（ＩＯＭ）２３ｃと、システムソフトウェアを格納するフラッシュメモリ（ＳＲＯＭ）２３ｄと、ユーザプログラムをバックアップするためのバックアップメモリ（Ｂ−ＵＭ）２３ｅと、を備える。バックアップメモリ２３ｅは、フラッシュメモリで構成されるため、電源ＯＦＦ時もその内容を保持する。ユーザメモリ２３ｂは、ＳＲＡＭで構成され、電源ＯＦＦ時は内容を保持することができないので、電源ＯＮ時にバックアップメモリ２３ｅからデータが転送されることでユーザプログラムを記憶保持する。Ｉ／Ｏメモリ２３ｃは、ＳＲＡＭで構成されるが、電源ＯＦＦ時はバッテリにより内容が保持される。
【００２７】
また、本発明との関係でいうと、ワークメモリ２３ａには、自己がアクティブとスタンバイのいずれであるかの識別情報と、設置位置情報（二重化制御ユニット１３の左側／右側）が格納される。これらの情報は、二重化制御ユニット１３からの指令に基づきＭＰＵ２１がワークメモリ２３ａの該当領域に書き込むことで記憶される。いずれもフラグで管理される。第１，第２ＣＰＵユニット１２，１２′は、ワークメモリ２３ａの該当領域を確認することで、現在、アクティブとスタンバイのいずれであるかを認識し、それに応じた動作を行なう。また、ＭＰＵ２１は、自己のユニットで異常が発生した場合、二重化制御ユニット１３に対してその旨を通知する機能を備える。また、第１，第２ＣＰＵユニット１２，１２′は、ベースユニット１５に装着した際或いは電源投入時に、自己の存在を二重化制御回路１３ａに通知する機能を備える。なお、上述した構成は、基本的に従来のものと同様である。
【００２８】
二重化制御ユニット（ＤＰＬユニット）１３は、第１，第２ＣＰＵユニット１２，１２′間のバス制御や、運転中の表示、アクティブ／スタンバイの切り替えなどを行なう。図２に示すように、二重化制御ユニット１３は、二重化制御回路１３ａと、二重化ポート１３ｂと、ディップスイッチ１３ｃを備える。ディップスイッチ１３ｃは、初期設定として起動時にどちらのＣＰＵユニットをアクティブにするかを指定するスイッチである。
【００２９】
二重化制御回路１３ａは、第１，第２ＣＰＵユニット１２，１２′からの通知（ベースユニット１５に接続されていることの通知）を受信することで、ベースユニット１５のどのスロットにどのＣＰＵユニットが接続されているかを認識することで、第１，第２ＣＰＵユニット１２，１２′がそれぞれ自己の左右いずれの側にいるかを認識し、二重化ポート１３ｂ、内部バス１５ａを介して、それぞれのＣＰＵユニットに対して、設置位置情報（左側／右側）を通知する。更に二重化制御回路１３ａは、ディップスイッチ１３ｃの状態を認識し、第１，第２ＣＰＵユニット１２，１２′（左右のＣＰＵユニット）のいずれが初期状態でアクティブ／スタンバイになるかを認識し、二重化ポート１３ｂ、内部バス１５ａを介して、それぞれのＣＰＵユニットに対して初期状態でいずれの状態になるかを通知する。これらの通知を受信した各ＣＰＵユニット１２，１２′は、ワークメモリ２３ａの所定領域にその状態を書き込む。
【００３０】
また、運転開始後は、上述したように各ＣＰＵユニットは、自己が故障・異常を生じたことを認識するとその旨を二重化制御ユニット１３に通知してくるので、アクティブ側のＣＰＵユニットから係る通知を受けた二重化制御回路１３ａは、アクティブとスタンバイを切り替えるべく、各ＣＰＵユニットのワークメモリ２３ａに格納された識別情報（アクティブ／スタンバイ）をそれぞれ書き替える要求を発行する。これを受けて、各ＣＰＵユニットのＭＰＵ２１は、識別情報の書き替え更新をし、以後、スタンバイ側であったＣＰＵユニットはアクティブ側に切り替わって動作する。また、アクティブ側であったＣＰＵユニットはスタンバイ側になる。なお、これらの構成は、基本的に従来のものと同様である。
【００３１】
ここで本実施形態では、通信用ケーブルを接続していないＣＰＵユニットや、スタンバイ側のＣＰＵユニットに対しても制御プログラム開発装置３がアクセスすることができるようにするために、以下のように構成した。
【００３２】
まず、通信コマンドは、図４に示すフォーマットで構成されるようにした。まず、図４（ａ）に示すように、コマンドフレームは、コマンドヘッダ部とコマンド部と、を備える。コマンドヘッダ部には、宛先情報と送信元情報を含む。宛先情報には、宛先のアドレスを示す宛先アドレス情報と、ＰＬＣを構成する二つのＣＰＵユニットの何れに接続するかを指定する区別情報が含まれる。宛先アドレス情報は、ネットワークアドレス、ノードアドレス、ユニットＮＯ等から構成される。また、区別情報には、“接続先宛”、“非接続先宛”、“右宛”、“左宛”、“アクティブ宛”、“スタンバイ宛”のいずれかを特定する情報が含まれている。送信元情報には、送信元のアドレスを示す情報を付加する。アドレスを示す情報としては、ネットワークアドレス、ノードアドレス、ユニットＮＯ等から構成される。
【００３３】
これにより、二重化された二つのＣＰＵユニットを備えるＰＬＣに対する宛先の指定は、通信用ケーブル１を接続した場合には、接続先宛／非接続先宛、右宛／左宛、アクティブ宛／スタンバイ宛の何れかの指定ができるようになる。また、ネットワーク接続により、通信ユニット１４経由でＣＰＵユニットにアクセスする場合、右宛／左宛、アクティブ宛／スタンバイ宛の何れかの指定ができるようになる。
【００３４】
コマンド部には、コマンド送信先のＰＬＣが実行する処理の大分類を表す“コマンドコード”と、“コマンドに付随する情報”が格納される。つまり、具体的な処理内容を表すパラメータが、コマンド部に格納される。コマンドを受信したＰＬＣ（ＣＰＵユニット）は、このコマンド部に格納されている情報に従って処理を実行する。
【００３５】
一方、上記のコマンドを受信したＣＰＵユニットから返信されるレスポンスフレームは、図４（ｂ）に示すフォーマットで構成されるように、レスポンスヘッダ部とレスポンス部と、を備えるようにした。レスポンスヘッダ部には、コマンドヘッダ部と同様に宛先情報と送信元情報が含まれる。レスポンスヘッダ部の宛先情報に含まれる宛先アドレス情報には、レスポンスの最終的な送信先のアドレスを示す情報（コマンドヘッダ部の送信元情報）が格納される。レスポンスヘッダ部の宛先情報に含まれる区別情報には、コマンドヘッダ部の区別情報と同じものが格納される。また、レスポンスヘッダ部の送信元情報には、このレスポンスフレームの送信元を特定する情報が格納される。この宛先アドレス情報に従って、目的のプログラム開発装置３に送信される。
【００３６】
レスポンス部には、先に受信したコマンド部に格納されている情報に従ってＣＰＵユニットが実行した結果が格納される。具体的には、ＰＬＣが実行したコマンドを表す“コマンドコード”と、正常／異常終了などの実行結果を表す“終了コード”と、ＣＰＵユニットのメモリから取得したデータが格納される“パラメータ”と、を備える。
【００３７】
上記のフォーマットからなるコマンド／レスポンスを用い、二重化ＰＬＣにおいて、通信用ケーブルを右側、もしくは左側のＣＰＵユニットに接続したままで、接続し直すことなく両方のＣＰＵユニットにアクセスできるようにするため、各ＣＰＵユニット１２，１２′のＭＰＵ２１に、図５に示すフローチャートを実行する機能を備えた。
【００３８】
まず、制御プログラム開発装置３は、キーボードやポインティングデバイス等の入力装置を操作して行なわれるユーザ受付処理を実行する（Ｓ１）。つまり、ユーザは、入力装置を操作し、処理対象とするコマンドの送信先が、ケーブル接続側か非接続側か、あるいは右側のＣＰＵユニットか左側のＣＰＵユニットか、あるいはアクティブ側のＣＰＵユニットかスタンバイ側のＣＰＵユニットかを選択する。そこで、制御プログラム開発装置３は、上記の宛先の選択画面（図示省略）を表示し、入力を受け付ける。
【００３９】
次いで、制御プログラム開発装置３は、ユーザが指定した接続先がケーブル接続側か非接続側か、あるいは右側ＣＰＵユニットか左側ＣＰＵユニットか、あるいはアクティブ側のＣＰＵユニットかスタンバイ側のＣＰＵユニットかを解析する（Ｓ２）。そして、制御プログラム開発装置３は、解析結果に基づき、宛先情報、送信元情報を含むコマンドヘッダ部と、コマンド部を備える通信コマンドを作成する（Ｓ３）。
【００４０】
制御プログラム開発装置３は、通信用ケーブル１に接続されたＣＰＵユニットに対し、通信コマンドを送信する（Ｓ４）。図１，図２に示す例では、制御プログラム開発装置３は、第１ＣＰＵユニット１２に対して通信コマンドを送信する。
【００４１】
通信用ケーブル１が接続されたＣＰＵユニット（図では、第１ＣＰＵユニット１２）は、制御プログラム開発装置３から通信コマンドを受信すると（Ｓ１１）、通信コマンドの宛先解析処理を実行する（Ｓ１２）。つまり、コマンドヘッダ部に格納された宛先情報を抽出し、ユーザが指定した接続先が自機宛（自己宛）か他機宛（もう一方のＣＰＵユニット宛））かを解析する。具体的には、まず、コマンドヘッダ部の宛先情報に含まれる宛先アドレス情報を抽出する。抽出した宛先アドレス情報のネットワークアドレスが「０」、ノードアドレスが「０」、ユニットＮＯが「０」の場合は、ＣＰＵユニット宛のコマンドフレームであると判断し、続いて、どちらのＣＰＵユニット宛かを判断するために宛先情報に含まれる区別情報を抽出する。抽出した区別情報が“接続先宛”、“非接続先宛”、“右宛”、“左宛”、“アクティブ宛”、“スタンバイ宛”のいずれかであるかを認識し、“接続先宛”か“右宛”の場合には自機宛と判断し、“非接続先宛”か“左宛”の場合には他機宛と判断する。当然のことながら、第２ＣＰＵユニット１２′に通信用ケーブル１が接続されている場合には、処理ステップＳ１２の処理は、“接続先宛”か“左宛”の場合には自機宛と判断し、“非接続先宛”か“右宛”の場合には他機宛と判断する。区別情報が“アクティブ宛”または“スタンバイ宛”の場合は、自機がアクティブであるかスタンバイであるかに基づいて通信コマンドを自機宛か他機宛かを判断する。
【００４２】
自機宛の場合、ケーブルが接続されたＣＰＵユニットは、受信した通信コマンドのコマンド部に格納されている情報に従って処理を実行し（Ｓ１３）、その処理結果に伴いレスポンスフレームを作成し、接続されている制御プログラム開発装置３に向けて、当該レスポンスフレームを送信する（Ｓ１４）。このレスポンスフレームのレスポンスヘッダには、“接続先宛”、“右宛”、自機がアクティブなら“アクティブ宛”、自機がスタンバイなら“スタンバイ宛”のいずれか（受信した通信コマンドのコマンドヘッダ部に格納された宛先情報と同じもの）が格納される。
【００４３】
一方、処理ステップＳ１２の分岐判断で、宛先が他機宛と判断した場合、ケーブル接続側のＣＰＵユニットは、ケーブル非接続側のＣＰＵユニット（図１，図２では、第２ＣＰＵユニット１２′）に向けて、通信コマンドを転送する（Ｓ１５）。つまり、ケーブル接続側のＣＰＵユニットは、ＣＰＵユニット間のバス（内部バス１５ａ或いは専用バス）を介して他機へＣＰＵユニット間Ｉ／Ｆコマンドとして転送する。その後、ケーブル接続側のＣＰＵユニットは、ケーブル非接続側のＣＰＵユニットからのレスポンスを待つ。
【００４４】
また、ケーブル非接続側のＣＰＵユニットは、転送されてきた通信コマンドを受信すると（Ｓ２１）、受信した通信コマンドのコマンド部に格納されている情報に従って処理を実行し（Ｓ２２）、その処理結果に伴いレスポンスフレームを作成し、当該レスポンスフレームをケーブル接続側のＣＰＵユニットに送信する（Ｓ２３）。このレスポンスフレームのレスポンスヘッダ部には、“非接続先宛”、“左宛”、自機がアクティブなら“アクティブ宛”、自機がスタンバイなら“スタンバイ宛”（第２ＣＰＵユニットの場合：以下同じ）のいずれか（受信した通信コマンドのコマンドヘッダ部に格納された宛先情報と同じもの）が格納される。
【００４５】
ケーブル接続側のＣＰＵユニットは、処理ステップＳ２３の実行により送られてきたレスポンスフレームを受信したならば（Ｓ１６）、処理ステップＳ１４に進み、受信したレスポンスフレームを接続された制御プログラム開発装置３に送信する（Ｓ１４）。このとき送信するレスポンスフレームは、ケーブル非接続側のＣＰＵユニットが接続したものであるので、そのレスポンスヘッダ部には、非接続側のＣＰＵユニットを特定する送信元情報である“非接続先宛”、“左宛”、自機がアクティブなら“アクティブ宛”、自機がスタンバイなら“スタンバイ宛”のいずれか（受信した通信コマンドのコマンドヘッダ部に格納された宛先情報と同じもの）が格納される。
【００４６】
制御プログラム開発装置３は、ケーブル接続側のＣＰＵユニットから送られてくるレスポンスを受信すると（Ｓ５）、そのレスポンスの終了コードから正常／異常終了を判断し、Ｓ３で作成した通信コマンドに対する実行結果を表示装置に表示する（Ｓ６）。つまり、制御プログラム開発装置３は、正常終了の場合にはレスポンス部に格納された情報を表示し、異常終了の場合にはその旨を表示する。制御プログラム開発装置３は、ケーブル接続側のＣＰＵユニットから受信したレスポンスであっても、そのレスポンスヘッダを解析することで、いずれのＣＰＵユニットからのレスポンスであるかを認識できる。
【００４７】
図６，図７は、制御プログラム開発装置３が、通信ネットワーク２経由で通信ユニット１４に接続されている場合における、所定ＣＰＵユニット対するコマンド／レスポンスを送受するための機能を示している。各ユニットのＭＰＵが、対応するフローチャートの処理ステップを実行する機能を備える。通信ユニットは、アクティブ側のＣＰＵユニットとのみ通信ができるので、アクティブ側のＣＰＵユニットが、図５におけるケーブル接続側のＣＰＵユニットと同様の処理を実行し、スタンバイ側のＣＰＵユニットが図５におけるケーブル非接続側のＣＰＵユニットと同様の処理を実行する。つまり、スタンバイ側のＣＰＵユニット宛の通信コマンドは、アクティブ側のＣＰＵユニット経由で伝わり、そのスタンバイ側のＣＰＵユニットからのレスポンスは、アクティブ側のＣＰＵユニット経由で通信ユニットに転送され、通信ネットワーク経由で制御プログラム開発装置３に伝えられる。
【００４８】
具体的には、まず、制御プログラム開発装置３は、キーボードやポインティングデバイス等の入力装置を操作して行なわれるユーザ受付処理を実行する（Ｓ１）。次いで、制御プログラム開発装置３は、ユーザが指定した接続先が右側ＣＰＵユニットか左側ＣＰＵユニットか、あるいはアクティブ側ＣＰＵユニットかスタンバイ側ＣＰＵユニットかを解析する（Ｓ２）。そして、制御プログラム開発装置３は、解析結果に基づき、宛先情報、送信元情報を含むコマンドヘッダ部と、コマンド部からなる通信コマンドを作成する（Ｓ３）。制御プログラム開発装置３は、通信ネットワーク２に通信コマンドを送信する（Ｓ４′）。
【００４９】
この送信された通信コマンドは、通信ネットワーク経由で通信ユニット１４が受信する。そこで、通信ユニットは、受信した通信コマンドをアクティブ側のＣＰＵユニットに対して内部バス１５ａ経由で送信する（Ｓ３１）。そして、その通信コマンドに対するレスポンスを待つ。
【００５０】
アクティブ側のＣＰＵユニットは、通信ユニットから通信コマンドを受信すると（Ｓ４１）、通信コマンドの宛先解析処理を実行する（Ｓ４２）。つまり、コマンドヘッダ部に格納された宛先情報を抽出し、ユーザが指定した接続先が自機宛か他機宛を解析する。具体的には、まず、コマンドヘッダ部の宛先情報に含まれる宛先アドレス情報を抽出する。抽出した宛先アドレス情報のネットワークアドレスとノードアドレスの組み合わせが自ノードであり、かつ、ユニットＮＯが「０」の場合は、自ノードのＣＰＵユニット宛のコマンドフレームであると判断し、続いて、どちらのＣＰＵユニット宛かを判断するために宛先情報に含まれる区別情報を抽出する。抽出した区別情報が“接続先宛”、“非接続先宛”、“右宛”、“左宛”、“アクティブ宛”、“スタンバイ宛”のいずれかであるかを認識し、“アクティブ宛”か“自己の特定する位置情報（右宛  or  左宛）”の場合には自機宛と判断し、“スタンバイ宛”か“自己の位置宛でない”の場合には他機宛と判断する。なお、通信ネットワーク経由の場合は、制御プログラム発支援装置３のユーザが指定する接続先としては、ケーブル接続側か非接続側かの指定はないため通信コマンドの宛先情報を構成する区別情報に“接続先宛”や“非接続先宛”は格納されない。
【００５１】
自機宛の場合、アクティブ側のＣＰＵユニットは、受信した通信コマンドのコマンド部に格納されている情報に従って処理を実行し（Ｓ４３）、その処理結果に伴いレスポンスフレームを作成し、アクティブの通信ユニットに対し、当該レスポンスフレームを送信する（Ｓ４４）。このレスポンスフレームのレスポンスヘッダには、“アクティブ宛”，“（右宛  or  左宛）”のいずれか（受信した通信コマンドのコマンドヘッダ部に格納された宛先情報と同じもの）が格納される。
【００５２】
一方、処理ステップＳ４２の分岐判断で、宛先が他機宛と判断した場合、アクティブ側のＣＰＵユニットは、スタンバイ側のＣＰＵユニットに向けて、通信コマンドを転送する（Ｓ４５）。つまり、アクティブ側のＣＰＵユニットは、ＣＰＵユニット間のバス（内部バス１５ａ或いは専用バス）を介してスタンバイ側のＣＰＵユニットへＣＰＵユニット間Ｉ／Ｆコマンドとして転送する。その後、アクティブ側のＣＰＵユニットは、スタンバイ側のＣＰＵユニットからのレスポンスを待つ。
【００５３】
また、スタンバイ側のＣＰＵユニットは、転送されてきた通信コマンドを受信すると（Ｓ５１）、受信した通信コマンドのコマンド部に格納されている情報に従って処理を実行し（Ｓ５２）、その処理結果に伴いレスポンスフレームを作成し、当該レスポンスフレームをアクティブ側のＣＰＵユニットに送信する（Ｓ５３）。このレスポンスフレームのレスポンスヘッダ部には、“スタンバイ宛”か“位置情報を特定する右宛／左宛”のいずれか（受信した通信コマンドのコマンドヘッダ部に格納された宛先情報と同じもの）が格納される。
【００５４】
アクティブ側のＣＰＵユニットは、処理ステップＳ５３の実行により送られてきたレスポンスフレームを受信したならば（Ｓ５６）、処理ステップＳ４４に進み、受信したレスポンスフレームを通信ユニットに送信する（Ｓ５４）。このとき送信するレスポンスフレームは、スタンバイ側のＣＰＵユニットが接続したものであるので、そのレスポンスヘッダ部には、スタンバイ側のＣＰＵユニットを特定する送信元情報が格納されている。
【００５５】
通信ユニット１４は、アクティブ側のＣＰＵユニットから送られてくるレスポンスフレームを受信したならば、当該レスポンスフレームを通信ネットワーク経由で制御プログラム開発装置３に向けて送信する（Ｓ３２）。
【００５６】
制御プログラム開発装置３は、通信ネットワーク経由で送られてくるレスポンスを受信すると（Ｓ５′）、そのレスポンスの終了コードから正常／異常終了を判断し、Ｓ３で作成した通信コマンドに対する実行結果を表示装置に表示する（Ｓ６）。つまり、制御プログラム開発装置３は、正常終了の場合にはレスポンス部に格納された情報を表示し、異常終了の場合にはその旨を表示する。制御プログラム開発装置３は、ケーブル接続側のＣＰＵユニットから受信したレスポンスであっても、そのレスポンスヘッダを解析することで、いずれのＣＰＵユニットからのレスポンスであるかを認識できる。
【００５７】
なお、アクティブ・スタンバイが入れ替わっても各ＣＰＵユニットの位置（右／左）は変わらないので、通信コマンドに右宛、左宛という情報を付加することでアクティブ・スタンバイに関わらず特定のＣＰＵユニットにアクセスすることが可能になり、必ず両方のＰＬＣの情報を取得することができる。このように、右宛／左宛、アクティブ宛／スタンバイ宛という二種類の宛先指定を準備することで、ユーザはＣＰＵユニットの位置を意識したアクセスと、アクティブ・スタンバイを意識したアクセスの２通りのアクセスが可能となる。
【図面の簡単な説明】
【００５８】
【図１】本発明の好適な一実施形態を示す図である。
【図２】ＣＰＵユニット並びに二重化制御回路の内部構成を示すブロック図である。
【図３】ＣＰＵユニットの内部構成を示すブロック図である。
【図４】コマンドフレーム並びにレスポンスフレームのフォーマットの一例を示す図である。
【図５】主にＣＰＵユニットのＭＰＵの機能を説明するフローチャートである。
【図６】主にＣＰＵユニットのＭＰＵの機能を説明するフローチャート（その１）である。
【図７】主にＣＰＵユニットのＭＰＵの機能を説明するフローチャート（その２）である。
【符号の説明】
【００５９】
１  通信用ケーブル
２  通信ネットワーク
３  制御プログラム開発装置（ツール装置）
１０  ＰＬＣ
１２  第１ＣＰＵユニット
１２ａ  通信ポート
１２′  第２ＣＰＵユニット
１３  二重化制御ユニット
１４  通信ユニット
【図１】
0005088490.tif 000002
【図２】
0005088490.tif 000003
【図３】
0005088490.tif 000004
【図４】
0005088490.tif 000005
【図５】
0005088490.tif 000006
【図６】
0005088490.tif 000007
【図７】
0005088490.tif 000008