(57)【要約】【課題】  正常な二重化運転が可能な状態で実行系と待機系のＣＰＵユニットを稼動させることができるプログラマブルコントローラを提供すること【解決手段】  実行系の第１ＣＰＵユニット２２と、待機系の第２ＣＰＵユニット２２′を備え、両ＣＰＵユニットは、機器自体の機能性を示すＣＰＵバージョンと、格納されたユーザプログラムの機能性を示す機能バージョンを記憶保持している。二重化運転開始に先立ち、第１ＣＰＵユニットは、第２ＣＰＵユニットのユニットバージョンを取得し、自己が記憶保持する機能バージョンを比較し、ユニットバージョンが機能バージョン以上である場合に二重化運転可能と判断する。実行可能と判断した場合に、第１ＣＰＵユニットは、自己が保持するユーザプログラムを、機能バージョンとともに第２ＣＰＵユニットにコピーし、二重化運転を開始するように構成した。【選択図】        図７
2006260607.tif 000002
【特許請求の範囲】
【請求項１】
２つのＣＰＵユニットを備え、前記２つのＣＰＵユニットは、相手の状態を確認可能とし、一方が実行系となるとともに他方が待機系となり、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって運転を継続するプログラマブルコントローラにおいて、
前記ＣＰＵユニットは、機器自体の機能性を示すユニットバージョン情報を記憶保持するとともに、格納されたユーザプログラムに基づくユーザプログラムバージョン情報を有し、
前記待機系のＣＰＵユニットのユニットバージョン情報と、前記実行系のＣＰＵユニットが有する前記ユーザプログラムバージョン情報に基づき、前記実行系のＣＰＵユニットが記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断する判断手段と、
その判断手段が実行可能と判断した場合にのみ二重化運転を開始する手段を備えたことを特徴とするプログラマブルコントローラ。
【請求項２】
前記実行系のＣＰＵユニットは、前記待機系のＣＰＵユニットからその待機系のＣＰＵユニットが持つユニットバージョン情報を取得する取得機能と、
その取得した前記待機系のＣＰＵユニットのユニットバージョン情報と、自己が有する前記ユーザプログラムバージョン情報を比較し、自己が記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断する判断機能を備え、
前記取得機能および前記判断機能により、前記判断手段を構成することを特徴とする請求項１に記載のプログラマブルコントローラ。
【請求項３】
前記実行系のＣＰＵユニットは、前記二重化運転を開始するに際し、少なくとも前記実行系のＣＰＵユニットが保持するユーザプログラムを、前記ユーザプログラムバージョン情報とともに前記待機系のＣＰＵユニットにコピーする機能を備えたことを特徴とする請求項１または２に記載のプログラマブルコントローラ。
【請求項４】
前記ユーザプログラムバージョン情報並びに前記ユニットバージョン情報は、数値データで構成されていることを特徴とする請求項１から３のいずれか１項に記載のプログラマブルコントローラ。
【請求項５】
前記ユーザプログラムバージョン情報は、前記ユーザプログラムの機能性を示す機能バージョン情報であることを特徴とする請求項１から４のいずれか１項に記載のプログラマブルコントローラ。
【請求項６】
前記ユーザプログラムバージョン情報は、少なくとも前記ユーザプログラムの機能性を示す機能バージョン情報と前記ＣＰＵユニットに設定されたパラメータのレベルを特定するパラメータバージョン情報とにより特定されるアプリバージョン情報であることを特徴とする請求項１から４のいずれか１項に記載のプログラマブルコントローラ。
【請求項７】
機器の機能性を示すユニットバージョン情報が設定されたプログラマブルコントローラ用のユニットであって、
同一のプログラマブルコントローラを構成する他のＣＰＵユニットのユニットバージョン情報を取得する手段と、
その取得した前記他のＣＰＵユニットのユニットバージョン情報と、自己に格納されたユーザプログラムに基づくユーザプログラムバージョン情報を比較し、自己が記憶保持するユーザプログラムを前記他のＣＰＵユニットが実行可能か否かを判断する判断手段とを備えたＣＰＵユニット。
【請求項８】
２つのＣＰＵユニットを備え、前記２つのＣＰＵユニットは、相手の状態を確認可能とし、一方が実行系となるとともに他方が待機系となり、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって運転を継続するプログラマブルコントローラにおける二重化運転開始方法であって、
前記ＣＰＵユニットは、機器自体の機能性を示すユニットバージョン情報を記憶保持するとともに、格納されたユーザプログラムに基づくユーザプログラムバージョン情報を有し、
二重化運転開始に先立ち、
前記プログラマブルコントローラを構成する所定のユニットが、前記待機系のＣＰＵユニットのユニットバージョン情報と、前記実行系のＣＰＵユニットが有する前記ユーザプログラムバージョン情報を比較し、前記実行系のＣＰＵユニットが記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断し、
その判断結果が実行可能であることを条件に二重化運転を開始することを特徴とする二重化運転開始方法。
【請求項９】
２つのＣＰＵユニットを備え、前記２つのＣＰＵユニットは、相手の状態を確認可能とし、一方が実行系となるとともに他方が待機系となり、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって運転を継続するプログラマブルコントローラにおける二重化運転開始方法であって、
前記ＣＰＵユニットは、機器自体の機能性を示すユニットバージョン情報を記憶保持するとともに、格納されたユーザプログラムに基づくユーザプログラムバージョン情報を有し、
二重化運転開始に先立ち、
前記実行系のＣＰＵユニットは、前記待機系のＣＰＵユニットからその待機系のＣＰＵユニットが持つユニットバージョンを取得し、
その取得した前記待機系のＣＰＵユニットのユニットバージョン情報と、自己が有する前記ユーザプログラムバージョンを比較し、自己が記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断し、
実行可能と判断した場合に、前記実行系のＣＰＵユニットは、自己が保持するユーザプログラムを、前記ユーザプログラムバージョン情報とともに前記待機系のＣＰＵユニットにコピーし、二重化運転を開始することを特徴とする二重化運転開始方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルコントローラおよびＣＰＵユニットおよび二重化運転開始方法に関するものである。
【背景技術】
【０００２】
生産工場（製造現場）に設置されるファクトリーオートメーション（ＦＡ）の制御装置として、プログラマブルコントローラ（ＰＬＣ）が用いられている。このＰＬＣは、複数のユニットから構成される。すなわち、電源供給源の電源ユニット，ＰＬＣ全体の制御を統率するＣＰＵユニット，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット，アクチュエータなどに制御出力を出す出力ユニット，通信ネットワークに接続するための通信ユニットなどの各種のユニットを適宜組み合わせて構成される。
【０００３】
ＰＬＣのＣＰＵユニットにおける制御は、入力ユニットで入力した信号をＣＰＵユニットのＩ／Ｏメモリに取り込み（ＩＮリフレッシュ）、予め登録されたユーザプログラム記述言語（例えばラダー言語）で組まれたユーザプログラムに基づき論理演算をし（演算実行）、その演算実行結果をＩ／Ｏメモリに書き込んで出力ユニットに送り出し（ＯＵＴリフレッシュ）、その後、通信ユニットを介して通信ネットワーク上の他のＰＬＣとデータ送受信を行ったり、ＣＰＵユニットに備えられた通信ポートを介して外部の機器とデータ送受信などを行ったりする（周辺処理）ことをサイクリックに繰り返し処理するようになる。なお、ＩＮリフレッシュとＯＵＴリフレッシュと一括して行なう（Ｉ／Ｏリフレッシュ）場合もある。
【０００４】
ところで、システムの安全性，信頼性を向上するため、ＰＬＣを構成する各ユニットを二重化することが行われる。例えば、本発明が対象とするＣＰＵユニットを二重化する場合、ＣＰＵユニットを２個設けるとともに、それら２つのＣＰＵユニットをＣＰＵ間バスにより接続する。そして、それら２個のＣＰＵユニットは、基本的に同一の機能を持ったものであり、同じユーザプログラムを実行する。
【０００５】
そして、２台のＣＰＵユニットのうち、一方が実行系のＣＰＵユニットとなって、実際にサイクリックな処理を行い、メモリに対して読み書きを行なったり、外部のＩ／Ｏ機器等との間で制御データ（Ｉ／Ｏデータ）の送受を行い、ＦＡネットワークシステムの制御を司る。また、他方のＣＰＵユニットは待機系のＣＰＵユニットとなり、待機中は、実行系のユーザプログラムと同一のユーザプログラムを実行するものの、演算実行結果を出力することはない。そして、実行系のＣＰＵユニットから処理結果等を受信し、待機系のＣＰＵユニットのメモリの内容の更新を行う。これにより、待機系のＣＰＵユニットと実行系のＣＰＵユニットのメモリの内容の同一性が確保される。
【０００６】
そして、実行系のＣＰＵユニットが故障した場合には、待機系のＣＰＵユニットが実行系のＣＰＵユニットに切り替わって実際の制御等の動作を行う。従って、ＣＰＵユニットに故障が発生しても、すぐにシステムが停止することなく、継続して運転できるので信頼性が向上する。
【０００７】
一方、ＣＰＵユニットで実行するユーザプログラムは、ＰＬＣに接続されたサポートツールを介してダウンロードされ、ＰＬＣ（ＣＰＵユニット）のユーザメモリに格納される。また、ＰＬＣに格納されているユーザプログラムを修正等する場合には、サポートツールをＰＬＣに接続するとともに、ＰＬＣに格納されているユーザプログラムをアップロードし、必要な修正をした後、修正後の新ユーザプログラムをＰＬＣに再度ダウンロードすることが行われる。なお、サポートツールは、パーソナルコンピュータ或いは専用の周辺機器などにより実現される。
【０００８】
さらに、ＣＰＵユニットの二重化を図った場合、各ＣＰＵユニットに対して同一のユーザプログラムを実装する必要があるが、例えば、サポートツールから各ＣＰＵユニットに対してそれぞれユーザプログラムをダウンロードするようにすると、ユーザはダウンロード処理を２回行う必要があり煩雑である。そこで、サポートツールからは実行系側のＣＰＵユニットに対してユーザプログラムをダウンロードし、ＣＰＵユニットが持つコピー機能により実行系側のＣＰＵユニットは、上記ダウンロードされたユーザプログラムを待機系側のＣＰＵユニットにコピーするようにしたものがある。
【０００９】
ところで、ＰＬＣは、生産方式の高度化，多様化並び技術の進歩に伴って新規の機能が付加された新機種の開発や仕様の改善、さらには、搭載ソフトウェアの機能強化などの各種のバージョンアップがされる。このバージョンアップは、処理速度の向上，機能追加などが行われるが、基本的に従来機種との互換性を持ち、旧バージョンのＰＬＣの機能は新バージョンのＰＬＣに継承される。したがって、旧バージョンのＰＬＣで使用していたユーザプログラムは、そのまま新バージョンのＰＬＣに実装することが可能となる。
【００１０】
また、このように機能の向上等に伴うバージョンアップの場合、形式はそのままでバージョンのみ変更することが良く行われる。そのため、バージョンが異なるものの形式が同じＣＰＵユニットが存在するため、二重化のために実装した２つのＣＰＵユニット（形式は一致）のバージョンが異なることが有り得る。
【００１１】
また、サポートツールは各ＰＬＣ（ＣＰＵユニット）に対応するもので、ＰＬＣがバージョンアップされると、それに合わせてサポートツールもバージョンアップされる。すなわち、新バージョンのＰＬＣにおいて機能拡張された場合、旧バージョンのサポートツールでは拡張された機能に対応できず、その拡張された機能をサポートするためには、それに対応したサポートツールが必要となる。もちろん、サポートツールも従来のサポートツールの機能を継承するように設計されるので、バージョンアップされたサポートツールは、旧バージョンのＰＬＣに接続し、ユーザプログラムのダウンロードや作成・修正等が行えるようになっている。
【００１２】
このように、新バージョンのサポートツールは、新旧いずれのバージョンのＰＬＣとの接続性を保証し、旧バージョンのサポートツールは旧バージョンのＰＬＣとの接続のみ保証する。そして、旧バージョンのサポートツールが新バージョンのＰＬＣに接続して所定のサポート処理（ユーザプログラムの追加・更新等）をすることがないように、サポートツールをＰＬＣに接続した際に、両者間の通信でＰＬＣの機種情報（例えば、形式とバージョンとで構成される）をサポートツールが読み出し、サポートツールは自己が保有する対応可能なＰＬＣ機種情報と照合し接続保証できるか否かを判断するようにしている。つまり、ＰＬＣとサポートツールをシリアル通信などの通信回線を介して接続し、ＰＬＣに対してＰＬＣ機種情報を取得する通信コマンドをサポートツールからＰＬＣに発行し、その通信コマンドを受けたＰＬＣは自己のＰＬＣ機種情報をレスポンスとして返信する。サポートツールは、自己が接続可能なＰＬＣ機種情報の一覧を記憶保持しているため、そのレスポンスを受けたサポートツールは、記憶保持した上記一覧のデータとレスポンスとして取得した現在接続しているＰＬＣのＰＬＣ機種情報との照合を図り、接続可能か否かの判断をする。なお、係る機種確認についての技術としては例えば特許文献１に開示されている。
【００１３】
【特許文献１】特開平１０−９７３１０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上記した特許文献１に開示されたサポートツールを用いると、実行系のＣＰＵユニットにユーザプログラムをタウンロードするに際し、サポートツールが機種確認をすることにより接続可能か否かの判断をするため、実行系のＣＰＵユニットに対してはそのＣＰＵユニットで実行可能な正しいバージョンのユーザプログラムをダウンロードすることができる。しかし、実行系側のＣＰＵユニットから待機系側のＣＰＵユニットにユーザプログラムをコピーする際には、サポートツールによるバージョンのチェック実行することができない。その結果、仮に実行系側のＣＰＵユニットが新バージョンで、待機系側のＣＰＵユニットが旧バージョンの場合には、ユーザプログラムのコピーはできるものの、待機系側のＣＰＵユニットはユーザプログラムを順次実行し、自己が実行できない回路に至ると、停止、或いは異常な動作を行ってしまう。そのため、少なくとも待機系側の旧バージョンのＣＰＵユニットが実行系側に切り替わると、ＰＬＣが停止することになってしまう。
【００１５】
一方、バージョンアップする都度形式も変えるようにすれば、同じ形式のＣＰＵユニットを用いることにより、上記した停止の問題は生じない。しかし、バージョンアップするごとに形式が増えるため、製造メーカ並びにユーザの形式管理が煩雑となり、実用的でない。
【００１６】
この発明は、正常な二重化運転が可能な状態で実行系と待機系のＣＰＵユニットを稼動させることができるプログラマブルコントローラおよびＣＰＵユニットおよび二重化運転開始方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明に係るプログラマブルコントローラは、２つのＣＰＵユニットを備え、前記２つのＣＰＵユニットは、相手の状態を確認可能とし、一方が実行系となるとともに他方が待機系となり、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって運転を継続するプログラマブルコントローラにおいて、前記ＣＰＵユニットは、機器自体の機能性を示すユニットバージョン情報を記憶保持するとともに、格納されたユーザプログラムに基づくユーザプログラムバージョン情報を有し、前記待機系のＣＰＵユニットのユニットバージョン情報と、前記実行系のＣＰＵユニットが有する前記ユーザプログラムバージョン情報に基づき、前記実行系のＣＰＵユニットが記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断する判断手段と、その判断手段が実行可能と判断した場合にのみ二重化運転を開始する手段を備えて構成した。
【００１８】
ここでユニットバージョン情報は、ＣＰＵユニットが備えている機能の範囲を表すものであればよい。例えば、ＣＰＵユニットが備えている機能の名称のリスト情報でも良いし、機能名称のリストに対応させた数値情報でも良い。また、ユーザプログラムバージョン情報は、当該ユーザプログラムを実行するためにＣＰＵユニットが備えるべき機能の範囲を表すものであればよい。例えば、機能の名称のリスト情報でもよいし、機能名称のリストに対応させた数値情報でもよい。
【００１９】
なお、判断手段は、実施の形態では実行系のＣＰＵユニットに実装したが、どちらのＣＰＵユニットに備えても良いし，ＣＰＵユニット以外の他のユニットに備えても良い。さらに、ＣＰＵユニットに実装する場合は、二重化運転中に実行系のＣＰＵユニットがダウンすると待機系のＣＰＵユニットは実行系に切り替わるため、その後にダウンしたＣＰＵユニットを復帰させて二重化運転を開始しようとした際には、当初待機系であったものが実行系になるため、好ましくは両方のＣＰＵユニットに判断手段を実装することである。また、一方のＣＰＵユニットに実装した場合には、実行系か待機系かに関係なく、その一方のＣＰＵユニットが他方のＣＰＵユニットから必要なバージョン情報（ユニットバージョン情報またはユーザプログラムバージョン情報）を取得し判断するようになる。
【００２０】
また、前記実行系のＣＰＵユニットは、前記待機系のＣＰＵユニットからその待機系のＣＰＵユニットが持つユニットバージョン情報を取得する取得機能と、その取得した前記待機系のＣＰＵユニットのユニットバージョン情報と、自己が有する前記ユーザプログラムバージョン情報を比較し、自己が記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断する判断機能を備え、前記取得機能および前記判断機能により、前記判断手段を構成することができる。
【００２１】
さらに、前記実行系のＣＰＵユニットは、前記二重化運転を開始するに際し、前記実行系のＣＰＵユニットが保持するユーザプログラムを、ユーザプログラムバージョン情報とともに前記待機系のＣＰＵユニットにコピーする機能を備えるとよい。
【００２２】
上記した各発明によれば、二重化運転しようとするＣＰＵユニットのユニットバージョン情報が異なる場合でも、待機系のＣＰＵユニットのユニットバージョン情報と実行系のＣＰＵユニットで実行するユーザプログラムに基づくユーザプログラムバージョン情報から、待機系のＣＰＵユニットが係るユーザプログラムを実行可能か否かを判断できる。よって、適宜のタイミング（例えば二重化運転開始時等）でチェックをすることにより、確実に二重化対応が可能な場合のみ二重化運転を開始できる。つまり、実行系のＣＰＵユニットが実行しているユーザプログラムを実行できない待機系のＣＰＵユニットが、そのまま稼動し、見かけ上、二重化運転を実行し、実行系のＣＰＵユニットがダウンすると待機系のＣＰＵユニットが実行系に切り替わり、停止するおそれを未然に防止できる。
【００２３】
また、前記ユーザプログラムバージョン情報並びに前記ユニットバージョン情報は、数値データで構成するとよい。このようにすると、バージョンの新旧を容易に判定できる。
【００２４】
前記ユーザプログラムバージョン情報は、例えば、前記ユーザプログラムの機能性を示す機能バージョン情報とすることができる。また、前記ユーザプログラムバージョン情報は、少なくとも前記ユーザプログラムの機能性を示す機能バージョン情報と、前記ＣＰＵユニットに設定されたパラメータのレベルを特定するパラメータバージョン情報により特定されるアプリバージョン情報とすることもできる。これは、以下に示す各発明においても同様である。機能バージョン情報は、ユーザプログラムを実行するためにＣＰＵユニットが備えるべき機能の範囲を表すものであればよい。例えば、機能の名称のリスト情報でもよいし、機能名称のリストに対応させた数値情報でもよい。  ここで、パラメータは、サポートツールによって設定することでＣＰＵユニットの基本仕様やＰＬＣシステムの仕様をソフトウェア的に定義することを可能とするデータや、複数のネットワークを介してＰＬＣ間でデータの送受信を行なう場合の通信経路に関するデータなどを含むものである。このパラメータを設定変更することでＰＬＣシステム全体の動作可能範囲を複数のレベルに設定することができる。この動作可能範囲の設定例としては、例えば、機能の名称のリストで情報でもよいし、機能名称のリストに対応する数値情報でもよい。
【００２５】
また、「バージョン情報を有する」とは、不揮発性記憶手段等に記憶保持させていてもよいし、必要に応じて記憶保持している情報に基づいて生成することにより有するようにしても良い。
【００２６】
また、前記実行系のＣＰＵユニットは、前記待機系のＣＰＵユニットのユニットバージョン情報を取得するとともに、自己のユニットバージョン情報と比較し、古いユニットバージョン情報を、プログラマブルコントローラに接続されるサポートツールに通知するように構成すると良い。また、本発明に係るプログラマブルコントローラシステムでは、係るプログラマブルコントローラと、そのプログラマブルコントローラに接続されたサポートツールを備えたシステムにおいて、前記サポートツールは、前記プログラマブルコントローラに対して前記ユニットバージョン情報の要求を発行し、前記プログラマブルコントローラは、前記実行系と前記待機系のＣＰＵユニットのうち、古いユニットバージョン情報を通知するように構成するとよい。
【００２７】
このようにすると、サポートツールは、古いユニットバージョン情報に合わせてユーザプログラムを作成し、ダウンロードすることにより、そのダウンロードしたユーザプログラムを用いて確実に二重化運運転が実行できる。
【００２８】
さらに、上記した各発明を実行するに適した本発明に係るＣＰＵユニットは、機器の機能性を示すユニットバージョン情報が設定されたプログラマブルコントローラ用のユニットであって、同一のプログラマブルコントローラを構成する他のＣＰＵユニットのユニットバージョンを取得する手段と、その取得した前記他のＣＰＵユニットのユニットバージョン情報と、自己が記憶保持するユーザプログラムに基づくユーザプログラムバージョン情報を比較し、自己が記憶保持するユーザプログラムを前記他のＣＰＵユニットが実行可能か否かを判断する判断手段とを備えるようにした。
【００２９】
さらに、自己が保有するユニットバージョン情報と、前記他のＣＰＵユニットのユニットバージョン情報を比較し、サポートツールからの読出要求に対するレスポンスとして、前記２つのユニットバージョン情報のうち古いバージョン情報を返送する機能を備えるとよい。
【００３０】
また、本発明に係る二重化運転開始方法は、２つのＣＰＵユニットを備え、前記２つのＣＰＵユニットは、相手の状態を確認可能とし、一方が実行系となるとともに他方が待機系となり、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって運転を継続するプログラマブルコントローラにおける二重化運転開始方法であって、前記ＣＰＵユニットは、機器自体の機能性を示すユニットバージョン情報を保持するとともに、格納されたユーザプログラムに基づくユーザプログラムバージョン情報を有する。そして、二重化運転開始に先立ち、前記プログラマブルコントローラを構成する所定のユニットが、前記待機系のＣＰＵユニットのユニットバージョン情報と、前記実行系のＣＰＵユニットが有する前記ユーザプログラムバージョン情報を比較し、前記実行系のＣＰＵユニットが記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断し、その判断結果が実行可能であることを条件に二重化運転を開始するようにした。
【００３１】
また、別の解決手段としては、２つのＣＰＵユニットを備え、前記２つのＣＰＵユニットは、相手の状態を確認可能とし、一方が実行系となるとともに他方が待機系となり、前記実行系のＣＰＵユニットがダウンした場合には、前記待機系のＣＰＵユニットが実行系に切り替わって運転を継続するプログラマブルコントローラにおける二重化運転開始方法であって、前記ＣＰＵユニットは、機器自体の機能性を示すユニットバージョン情報を記憶保持するとともに、格納されたユーザプログラムに基づくユーザプログラムバージョン情報を有し、二重化運転開始に先立ち、前記実行系のＣＰＵユニットは、前記待機系のＣＰＵユニットからその待機系のＣＰＵユニットが持つユニットバージョンを取得し、その取得した前記待機系のＣＰＵユニットのユニットバージョン情報と、自己が有する前記ユーザプログラムバージョン情報を比較し、自己が記憶保持するユーザプログラムを前記待機系のＣＰＵユニットが実行可能か否かを判断し、実行可能と判断した場合に、前記実行系のＣＰＵユニットは、少なくとも自己が保持するユーザプログラムを、前記ユーザプログラムバージョン情報とともに前記待機系のＣＰＵユニットにコピーし、二重化運転を開始するようにした。
【発明の効果】
【００３２】
本発明では、異なるユニットバージョンが存在するＣＰＵユニットを用いた場合でも、正常な二重化運転が可能な状態で実行系と待機系のＣＰＵユニットを稼動させることができる。
【発明を実施するための最良の形態】
【００３３】
図１は、本発明の好適な一実施の形態を実現するシステム全体を示している。図１に示すように、パソコンからなるサポートツール１０とＰＬＣ２０が、所定の通信回線３０を介して接続されている。この通信回線３０は、例えば、ＲＳ２３２Ｃなどのシリアル回線を用いて直接ケーブル接続することにより実現される。もちろん、このように直接接続するものに限ることはなく、他の通信回線を用いネットワーク経由でＰＬＣ２０とサポートツール１０とを接続する構成を採っても良い。そして、サポートツール１０で作成（修正も含む）したユーザプログラムは、通信回線３０を介してＰＬＣ２０にダウンロードされる。
【００３４】
ＰＬＣ２０は、複数のユニットから構成される。すなわち、電源供給源の電源ユニット２１，ＰＬＣ全体の制御を統率する第１，第２ＣＰＵユニット２２，２２′，ＦＡの生産装置や設備装置の適所に取り付けたスイッチやセンサの信号を入力する入力ユニット２３，アクチュエータなどに制御出力を出す出力ユニット２４，通信ネットワークに接続するための通信ユニット２５などの各種のユニットを適宜組み合わせて構成される。そして、本システムにおいてサポートツール１０からダウンロードされるユーザプログラムは、ＣＰＵユニット２２，２２′に記憶保持され、そこにおいて実行される。より具体的には、サポートツール１０は、実行系側の第１ＣＰＵユニット２２に対してユーザプログラムをダウンロードし、第１ＣＰＵユニット２２は、待機系側の第２ＣＰＵユニット２２′に対してユーザプログラムをコピーすることにより、第１ＣＰＵユニット２２と第２ＣＰＵユニット２２′は、同一内容のユーザプログラムを記憶保持するようになる。
【００３５】
すなわち、通信回線３０を通信ユニット２５に接続し、サポートツール１０と第１ＣＰＵユニット２２は、通信ユニット２５を介して通信したり、第１ＣＰＵユニット２２にシリアル回線のインタフェースを内蔵させることによりサポートツール１０を直接第１ＣＰＵユニット２２に連結し、ユーザプログラムのダウンロード等を行うようにしたりできる。もちろん、ユーザプログラムのダウンロードについて着目したため、サポートツール１０は第１ＣＰＵユニット２２と通信することについて説明したが、第２ＣＰＵユニット２２′も第１ＣＰＵユニット２２と同様にサポートツール１０と通信する機能は持っている。
【００３６】
サポートツール１０は、パソコンから構成され、図２に示すように、ハードウエア構成としてキーボード，ポインティングデバイス等の入力装置１１と、ディスプレイ等の表示装置１２と、ＣＰＵ１３と、記憶部１４を備えている。さらに、接続されたＰＬＣ２０（ＣＰＵユニット２２，２２′）に実装されるユーザプログラムも記憶部１４に格納される。
【００３７】
一方、ＣＰＵユニット２２，２２′の内部構造は、図３に示すように構成されている。すなわち、システムプログラムは、システムＲＯＭ２２ａ，２２′ａに格納されており、そのシステムプロクラムは、ＭＰＵ２２ｂ，２２′ｂに呼び出され、そのＭＰＵ２２ｂ，２２′ｂにおいて、ワークメモリとしてのシステムＲＡＭ２２ｃ，２２′ｃを適宜使用しながら、プログラムに従った所定の処理を実行する。また、運転時において、ユーザデータの１つであるユーザプログラムは、ユーザメモリ（ＵＭ）２２ｄ，２２′ｄに格納されている。さらに、Ｉ／Ｏデータやパラメータは、ＩＯメモリ（ＩＯＭ）２２ｅ，２２′ｅに格納されている。
【００３８】
そして、ユーザプログラムには、後述するごとく機能性を示す機能バージョンが付与されており、この機能バージョンもユーザプログラムの一部を構成し、ユーザメモリに格納される。また、パラメータは、サポートツールによって設定することでＣＰＵユニットの基本仕様やＰＬＣシステムの仕様をソフト的に定義することを可能とするデータや、複数のネットワークを介してＰＬＣ間でデータの送受信を行なう場合の通信経路に関するデータなどがある。従って、このパラメータにも、どのレベルまでの仕様に対応しているかを特定するパラメータバージョンを付与して管理することができる。そして、ＣＰＵユニット全体を見ると、ユーザプログラムの機能を示す機能バージョンと、パラメータバージョンにより、アプリケーション（システム）全体の仕様・レベル（アプリバージョン）を特定できる。
【００３９】
本実施の形態では、ＣＰＵユニットが備えている機能の範囲を表わすユニットバージョン（ＣＰＵバージョン）と、ユーザプログラムのバージョンである機能バージョンという２種類のバージョンを用意し、後述するごとくＣＰＵユニットの所定メモリに格納するとともに、それら２種類のバージョンを用いて二重化運転の可否等を判断するようにした。また、後述するごとく、ＣＰＵバージョンとアプリバージョンとにより二重化運転の可否等を判断するようにしてもよい。
【００４０】
ＣＰＵバージョンは、例えばシステムＲＯＭ２２ａに格納される。ＣＰＵユニットは、サポートツール１０等からの呼出要求を受けると、そのレスポンスとしてそれらＣＰＵバージョンをサポートツール１０に返送するようになっている。また、機能バージョンはユーザプログラムの一部として、ユーザメモリ２２ｄ，２２′ｄに格納する。
【００４１】
さらに、本実施の形態では、ＰＬＣ（ＣＰＵユニット）に付すＣＰＵバージョン並びに機能バージョンは、数値で表し、バージョンアップするごとに数値も大きくする。つまり、数値が大きいほど新しいバージョンであると言えるので、係るバージョンの数値の大小関係を比較することにより、簡単にどちらが新しいバージョンであるかを判別できる。そして、新バージョンのＰＬＣ２０（第１，第２ＣＰＵユニット２２，２２′）は、旧バージョンの機能を継承しているため、実装するユーザプログラムの機能バージョンの数値が、自己のＣＰＵバージョンの数値以下の場合には、対応できる。なお、バージョンの数値は、整数のみ（いわゆる「メジャーバージョン」のみ）でもよいし、小数点等を適宜使用したマイナーバージョンも使用することもある。
【００４２】
上記した機能バージョンとＣＰＵバージョンの関係ならびに旧バージョンの承継について、例をあげて説明すると、図４，図５のようになる。すなわち、図４はＣＰＵバージョンと機能の関係を示す図で、ＣＰＵバージョンがアップするごとに、搭載される（利用可能な）機能が増える。そして、使用可能な機能を示す機能バージョンとＣＰＵバージョンのバージョン番号を一致させている。つまり、ＣＰＵバージョンが１.０ならば、機能Ａ〜Ｃまでが実行可能であり、係る機能Ａ〜Ｃの範囲内で使用しているユーザプログラムの機能バージョンは１．０となる。同様に、ＣＰＵバージョンが２．０ならば、機能Ａ〜Ｆまでが実行可能であり、係る機能Ａ〜Ｆの範囲内で使用しているユーザプログラムの機能バージョンは２．０となる。よって、ＣＰＵバージョンが２．０のＣＰＵユニットであれば、機能バージョンが２．０と１．０の両方のユーザプログラムを実行可能となる（図５参照）。
【００４３】
さらに、図６に模式的に示すように、実行系の第１ＣＰＵユニット２２と待機系の第２ＣＰＵユニット２２′は、互いのバージョン情報を確認し、比較する機能を備えている。さらに、上記したように、サポートツール１０からの要求に応じて、バージョン情報を通知する機能を有する。
【００４４】
二重化運転可能性のチェックをするタイミングとしては、任意のタイミングで実行可能であるが、例えば、外部機器により実行系ＣＰＵユニットに格納されているユーザプログラムの一部または全部が変更された場合や、外部機器により実行系ＣＰＵユニットのパラメータが変更された場合などがある。勿論、これ以外のタイミングでチェックをしても良い。
【００４５】
上記した構成において、第１，第２ＣＰＵユニット２２，２２′は、二重化運転になる際に二重化運転が可能か否かを判断し、その判断結果に従って所定の処理を実行する。すなわち、まず二重化運転になるタイミングとしては、
（１）電源立ち上げ時などの第１，第２ＣＰＵユニット２２，２２′が同時に立ち上がる場合；
（２）一方のＣＰＵユニットを故障などで交換している間、他方のＣＰＵユニットで単独運転しているケースから、再度一方のＣＰＵユニットを立ち上げて二重化運転に戻す場合；
がある。
【００４６】
図７に示すように、実行系の第１ＣＰＵユニット２２の機能バージョンと、待機系の第２ＣＰＵユニット２２′のＣＰＵバージョンを比較し、実行系のＣＰＵユニット２２の機能バージョンが待機系のＣＰＵユニット２２′のＣＰＵバージョン以下の場合には、二重化運転可能と判断し、待機系のＣＰＵユニット２２′のＣＰＵバージョンが実行系のＣＰＵユニット２２の機能バージョン未満の場合には、二重化運転不可と判断する。
【００４７】
一例として、実行系ＣＰＵユニットの機能バージョンが３．０で、待機系のＣＰＵユニットのＣＰＵバージョンが４．０の場合、実行系ＣＰＵユニットは機能Ａ〜Ｇを実行するのに対して、待機系ＣＰＵユニットは機能Ａ〜Ｉを実行可能であることから、実行系ＣＰＵユニットがダウンして待機系ＣＰＵユニットが実行系に切り替わっても全ての機能を実行できるので、そのままシステムを継続できる。
【００４８】
一方、実行系ＣＰＵユニットの機能バージョンが３．０で、待機系のＣＰＵユニットのＣＰＵバージョンが２．０の場合、実行系ＣＰＵユニットは機能Ａ〜Ｇを実行するのに対して、待機系ＣＰＵユニットは機能Ａ〜Ｆを実行可能であるが、機能Ｇは実行不能である。従って、実行系ＣＰＵユニットがダウンして待機系ＣＰＵユニットが実行系に切り替わると、機能Ｇを実行できないことからシステムが停止する。
【００４９】
よって、このように二重化運転不可能と判断した場合には、「バージョン照合異常」として、二重化運転せずに単独運転を継続する。なお、電源立ち上げ時に二重化運転が不可となった場合には、実行系ＣＰＵユニットのみで単独運転するか、全体で運転停止にするかは内部設定などで決定することができる。
【００５０】
そして、上記した処理を行なうための具体的な処理機能は、図８に示すフローチャートを実行するようになる。すなわち、二重化運転移行開始になると、まず、実行系ＣＰＵユニット側は待機系ＣＰＵユニットのＣＰＵバージョンを確認する（ＳＴ１）。つまり、待機系ＣＰＵユニットに対してＣＰＵバージョンを要求する。待機系ＣＰＵユニットは、係る要求を受けると、自己のＣＰＵバージョンを実行系ＣＰＵユニットに通知する（ＳＴ２）。
【００５１】
そこで、実行系ＣＰＵユニットは、待機系ＣＰＵユニットから送られてきたＣＰＵバージョンと、自己の機能バージョンを比較する（ＳＴ３）。そして、その大小関係から、待機系ＣＰＵユニットのＣＰＵバージョンが実行系ＣＰＵの機能バージョン未満の場合には、二重化不可と判断し（ＳＴ４）、バーション照合異常通知を発行し（ＳＴ５）、単独運転を開始する（ＳＴ６）。
【００５２】
一方、待機系ＣＰＵユニットのＣＰＵバージョンが実行系ＣＰＵの機能バージョン以上の場合には、二重化可能と判断し（ＳＴ５）、二重化運転を開始する（ＳＴ８）。また、二重化不可の決定（ＳＴ４）並びに二重化可能の決定（ＳＴ７）をしたならば、それぞれその決定内容を待機系ＣＰＵユニットに通知する。
【００５３】
待機系ＣＰＵユニットは、実行系ＣＰＵユニットに対して自己のＣＰＵバージョンを通知したならば、実行系ＣＰＵユニットからの比較結果を待ち（ＳＴ９）、比較結果を受信するとその比較結果に応じて二重化運転開始するか（ＳＴ１０，ＳＴ８）、運転を停止しバージョン照合異常の通知をする（ＳＴ１０，ＳＴ１１）。さらに、ステップ８の二重化運転開始に伴い、実行系ＣＰＵユニットは自己が記憶保持しているユーザプログラムと、必要によりパラメータを待機系ＣＰＵユニットの所定エリアへコピーする。
【００５４】
ところで、サポートツール１０は、自己が対応可能なＣＰＵユニットのＣＰＵバージョンに関する情報を持ち、実行系の第１ＣＰＵユニット２２にダウンロードするに際し、第１ＣＰＵユニット２２のＣＰＵバージョンを取得し、対応可能か否かを判断する。そして、対応可能な場合のみユーザプログラムをダウンロードする。
【００５５】
さらに、ＣＰＵユニットに新たな機能を追加する場合には、図９に示すように、（１）まずサポートツール１０は、第１ＣＰＵユニット２２に対してバージョン情報（ＣＰＵバージョン，機能バージョン）を確認する。（２）次いで、第１ＣＰＵユニット２２は、第２ＣＰＵユニット２２′のＣＰＵバージョンを取得し、その大小関係を比較する。（３）そして、第１ＣＰＵユニット２２は、古い方のＣＰＵバージョンと自己の機能バージョンを通知する。なお、機能バージョンは対比することなく自己のものを通知するのは、二重化運転中は同じ機能で両ＣＰＵユニットが動作しているため、機能バージョンは一致しているのが前提であるからである。
【００５６】
これにより、サポートツール１０は、二重化ＰＬＣに使用できる命令や設定の範囲を認識することができ、ユーザが間違えて範囲を超えた命令や設定をダウンロードしてしまうことを防止することができる。
【００５７】
上述の実施の形態では、サポートツール１０からのバージョン読み出し要求に対して、実行系ＣＰＵユニットは、自己のＣＰＵバージョンと待機系ＣＰＵユニットから取得したＣＰＵバージョンとを比較し、古いＣＰＵバージョンを応答するように説明したが、本発明は、これに限ることはなく、実行系ＣＰＵユニットは、自己のＣＰＵバージョンと待機系ＣＰＵユニットのＣＰＵバージョンの両方をサポートツール１０へ応答するようにしても良い。この場合、サポートツール１０は、実行系ＣＰＵユニットからの応答された実行系ＣＰＵユニットのＣＰＵバージョンと待機系ＣＰＵユニットのＣＰＵバージョンを比較し、古いＣＰＵバージョンを実行系ＣＰＵユニットと待機系ＣＰＵユニットの共通のＣＰＵバージョンとして扱うように構成すれば良い。
【００５８】
また、実行系ＣＰＵユニットが待機系ＣＰＵユニットのＣＰＵバージョンを知る方法としては、実施の形態のように、実行系ＣＰＵユニットが待機系ＣＰＵユニットに対してＣＰＵバージョンを要求し、その要求に待機系ＣＰＵユニットが応答することでも良いし、待機系ＣＰＵユニットが自己のＣＰＵバージョンを実行系ＣＰＵユニットから読み出し可能なメモリに予め格納しておき、それを実行系ＣＰＵユニットが必要に応じて読み出す様にしても良く、各種の実施が可能となる。
【００５９】
なお、ＣＰＵバージョン（ユニットバージョン）の格納場所は、実施の形態のようにシステムＲＯＭ２２ａ，２２’ａでも良いし、その他の書き換え可能なメモリに格納しても良い。さらにまた、機能バージョンの格納場所は、実施の形態のようにユーザプログラムの一部としてユーザメモリ（ＵＭ）２２ｄ，２２’ｄに格納しても良いし、ＩＯメモリ２２ｅ，２２’ｅに格納しても良く、その格納場所は任意である。
【００６０】
さらに、上記した実施の形態では、機能バージョンとＣＰＵバージョンを比較すること
により、二重化運転が可能か否かを判断するようにしたが、実行系が有するアプリバージョンと待機系が有するＣＰＵバージョンを比較することにより二重化可能か否かを判断するようにしても良い。アプリバージョンは、パラメータバージョンと機能バージョンにより決定されるため、例えばＩＯメモリ２２ｅ，２２′ｅに格納することができる。このアプリバージョンは、ＣＰＵバージョンと同様に不揮発性メモリに格納しても良いし、揮発性メモリ・バッファに一時的に記憶しても良い。また、パラメータバージョンやアプリバージョンは、機能バージョンと同様にサポートツールにより設定することもできるし、ＣＰＵユニットが、設定されたパラメータや、機能バージョンに従って自働的に設定するようにしても良い。そして、そのように自動的に設定する機能をＣＰＵユニットに実装した場合には、アプリバージョンは、例えば二重化運転可能か否かを判断する際に、求めることもできる。
【００６１】
そして、あらかじめ或いは二重化運転可否判断の際に求めたアプリバージョンを用いた二重化可能か否かの判断処理は、基本的に、上記した実施の形態における機能バージョンをアプリバージョンに置き換えたものにすることにより、実行することができる。
【００６２】
上記した実施例にけるアプリバージョンは、ユーザプログラム作成時にユーザが決定し、サポートツールを用いてユーザプログラムの一部として格納されるように構成してもよい。
【００６３】
アプリバージョンを決める他の実施の形態について述べる。後述するようにＣＰＵユニット内に予めアプリバージョンとアプリバージョンごとに実施可能な機能名を対応させたテーブルを格納しておく。ＣＰＵユニットのＭＰＵは、ユーザメモリ（ＵＭ）に格納されているユーザプログラムやＩＯメモリ（ＩＯＭ）に格納されているパラメータを参照することでアプリバージョンを決めるように構成してもよい。図１０と図１１を用いて説明する。図１０は、アプリバージョンとアプリバージョンごとに実施可能な機能とその機能の格納場所との関係を示すテーブル（以下アプリバージョンテーブル）の一例である。この例では、ＩＯメモリに機能名Ｂ，Ｃ，ＦおよびＧのパラメータが格納されているものとする。図１１は、図１０のアプリバージョンテーブルを用いてユーザプログラムとパラメータからアプリバージョンを決定する処理フローを示した例である。実行系ＣＰＵユニットのＭＰＵは、まず、ユーザメモリを検索し（ＳＴ２１）、機能Ｈまたは機能Ｉが使用されているかどうか判断する（ＳＴ２２）。これらステップ２１とステップ２２に対応する具体的例としてはユーザメモリに格納されているユーザプログラムを参照し機能Ｈまたは機能Ｉに対応する命令語が使用されているかどうかを判断することである。ステップ２２で機能Ｈまたは機能Ｉが使用されていると判断した場合は、アプリバージョンをＶｅｒ４．０に決定する（ＳＴ３２）。ステップ２２で機能Ｈと機能Ｉとがともに使用されてないと判断した場合は、さらに、ユーザメモリ内で機能Ｄまたは機能Ｅが使用されているかどうかを判断する（ＳＴ２３）。このステップ２３に対応する具体例としてはユーザメモリに格納されているユーザプログラムを参照し機能Ｄまたは機能Ｅに対応する命令語が使用されているかどうかを判断することである。ステップ２３で機能Ｄまたは機能Ｅが使用されていると判断した場合は、ＩＯメモリを検索し（ＳＴ２８）、機能Ｇを使用しているかどうか判断する（ＳＴ２９）。これらステップ２８とステップ２９に対応する具体例としては、ＩＯメモリに格納されているパラメータを参照し機能Ｇが使用されているかどうかを判断することである。ステップ２９で機能Ｇが使用されていると判断した場合はアプリバージョンをＶｅｒ３．０に決定する（ＳＴ３１）。一方、ステップ２９で機能Ｇが使用されていないと判断した場合は、アプリバージョンをＶｅｒ２．０に決定する（ＳＴ３０）。ステップ２３で機能Ｄと機能Ｅとがともに使用されていないと判断した場合は、次に、ＩＯメモリを検索し(ＳＴ２４)、機能Ｇが使用されているかどうか判断する（ＳＴ２５）。このステップ２５で機能Ｇが使用されていると判断した場合は、アプリバージョンをＶｅｒ３．０に決定する（ＳＴ３１）。ステップ２５で機能Ｇが使用されていないと判断した場合は、さらに、ＩＯＭ内で機能Ｆが使用されているかどうか判断する（ＳＴ２６）。このステップ２６で機能Ｆが使用されていると判断した場合は、アプリバージョンをＶｅｒ２．０に決定する（ＳＴ３０）。ステップ２６で機能Ｆが使用されていないと判断した場合は、アプリバージョンをＶｅｒ１．０に決定する（ＳＴ２７）。以上の処理によりアプリバージョ���が決定される。
【図面の簡単な説明】
【００６４】
【図１】本発明のシステムの一実施の形態を示す図である。
【図２】サポートツールの内部構成を示す図である。
【図３】ＣＰＵユニットの内部構成を示す図である。
【図４】ＣＰＵバージョンと機能の関係を説明する図である。
【図５】ＣＰＵバージョンと機能の関係を説明する図である。
【図６】本発明のシステムの一実施の形態の要部を説明する図である。
【図７】本発明のシステムの一実施の形態の作用を説明する図である。
【図８】各ＣＰＵユニットの機能を説明するフローチャートである。
【図９】本発明のシステムの一実施の形態の作用を説明する図である。
【図１０】本発明のアプリバージョンテーブルの一実施の形態を説明する図である。
【図１１】本発明のアプリバージョンを決定する処理を説明するフローチャートである。
【符号の説明】
【００６５】
１０  サポートツール
１１  入力装置
１２  表示装置
１３  ＣＰＵ
１４  記憶部
２０  ＰＬＣ
２１  電源ユニット
２２  第１ＣＰＵユニット
２２′  第２ＣＰＵユニット
２２ａ，２２ａ′  システムＲＯＭ
２２ｂ，２２ｂ′  ＭＰＵ
２２ｃ，２２ｃ′  ＲＡＭ
２２ｄ，２２ｄ′  ユーザメモリ
２２ｅ，２２ｅ′  ＩＯメモリ
２３  入力ユニット
２４  出力ユニット
２５  通信ユニット
３０  通信回線
【図１】
2006260607.tif 000003
【図２】
2006260607.tif 000004
【図３】
2006260607.tif 000005
【図４】
2006260607.tif 000006
【図５】
2006260607.tif 000007
【図６】
2006260607.tif 000008
【図７】
2006260607.tif 000009
【図８】
2006260607.tif 000010
【図９】
2006260607.tif 000011
【図１０】
2006260607.tif 000012
【図１１】
2006260607.tif 000013