(57)【特許請求の範囲】
【請求項１】
複数のインターフェースユニットと、
複数のＣＰＵモジュールと、を含むプログラマブルコントローラであって、
前記インターフェースユニットは、前記ＣＰＵモジュールと接続可能であって、接続されたＣＰＵモジュールに向けて複数の異なる電位状態を有する第１電位信号を送出可能であり、
前記ＣＰＵモジュールは、前記インターフェースユニットと接続可能であると共に他のＣＰＵモジュールと接続可能であり、その内部に演算処理を実行するためのＣＰＵと、判別ビット及び定義情報を格納するためのメモリと、を有しており、
前記判別ビットは、当該判別ビットを有するＣＰＵモジュールの接続先である前記インターフェースユニットから当該ＣＰＵモジュールに入力された前記第１電位信号の電位状態に基づいて、当該ＣＰＵモジュール内のＣＰＵがメインＣＰＵであるかサブＣＰＵであるかを示す２値化情報を有しており、
前記定義情報は、当該定義情報を有するＣＰＵモジュール内のＣＰＵが予めメインＣＰＵとして設定されているかサブＣＰＵとして設定されているかを示す設定情報を有し、かつ、
前記２値化情報に基づき、当該ＣＰＵモジュール内のＣＰＵをメインＣＰＵ又はサブＣＰＵのいずれかに自動的に設定する、プログラマブルコントローラ。
【請求項２】
前記ＣＰＵモジュールは、他のＣＰＵモジュールが接続された場合に、当該他のＣＰＵモジュールに向けて所定の電位状態を有する第２電位信号を送出可能であり、  当該他のＣＰＵモジュール内の判別ビットは、前記第２電位信号の電位状態に基づいて自身のＣＰＵがサブＣＰＵであることを示す２値化情報を有する、請求項１に記載のプログラマブルコントローラ
【請求項３】
前記ＣＰＵモジュール内における前記判別ビットが有する２値化情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容と、当該ＣＰＵモジュール内における前記定義情報が有する設定情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容とが不一致である場合に、エラー報知するエラー報知手段を更に有する、請求項１又は請求項２に記載のプログラマブルコントローラ。
【請求項４】
前記ＣＰＵモジュール内における前記判別ビットが有する２値化情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容と、当該ＣＰＵモジュール内における前記定義情報が有する設定情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容とが不一致である場合に、前記ＣＰＵによる前記演算処理の実行を制限する、請求項１から請求項３のうちいずれか１項に記載のプログラマブルコントローラ。
【請求項５】
前記ＣＰＵモジュールが有する前記メモリ内に前記定義情報が格納されていない場合に、当該メモリ内に当該ＣＰＵモジュール内の前記判別ビットが有する２値化情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容に基づき新たな定義情報を作成する、請求項１から請求項４のうちいずれか１項に記載のプログラマブルコントローラ。
【請求項６】
前記複数のＣＰＵモジュールは、前記演算処理の実行のタイミングの基準となるクロック信号を生成しており、かつ、  前記判別ビットが有する２値化情報がサブＣＰＵであることを示すＣＰＵモジュールのクロック信号を、前記判別ビットが有する２値化情報がメインＣＰＵであることを示すＣＰＵモジュールのクロック信号に同期させる、請求項１から請求項５のうちいずれか１項に記載のプログラマブルコントローラ。 
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、プログラマブルコントローラに関する。
【背景技術】
【０００２】  従来、複数のＣＰＵモジュールからなるマルチＣＰＵ構成のプログラマブルコントローラが提案されている（例えば、特許文献１を参照）。このマルチＣＰＵ構成のプログラマブルコントローラによれば、マルチタスク処理が可能となり、負荷分散や処理高速化を実現する。また、複数のアプリケーションを機能ごとに区分けしてマルチＣＰＵに処理担当させることにより、複雑な処理を回避して処理の単純化・高速化を図っている。【０００３】  特許文献１には、複数のＣＰＵモジュールの各々を識別するために、システムプロセッサが局番スイッチを有することが開示されている。そして、局番スイッチの設定によって、自己のＣＰＵモジュールと他のＣＰＵモジュールとが区別可能であることが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１２３６８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】  しかしながら、上述のように、従来のマルチＣＰＵ構成のプログラマブルコントローラでは、複数のＣＰＵの各々を識別するために、ＣＰＵごとにスイッチを設け、わざわざスイッチ設定を行う必要があった。また、プログラム側で、どのＣＰＵがメインＣＰＵで、どのＣＰＵがサブＣＰＵであるかの宣言を行う必要があった。このプログラム側での宣言と、ハードウェア側で検出したメインＣＰＵとサブＣＰＵの設定（すなわち、スイッチ設定）とが矛盾した場合に、プログラムが異常動作する懸念がある。プログラムの異常動作は、プログラマブルコントローラで動作制御する制御対象（モータ等）の異常動作の原因となり得る。【０００６】  本発明は、上記の課題に鑑みてなされたもので、どのＣＰＵがメインＣＰＵであり、どのＣＰＵがサブＣＰＵであるかをプログラム上で宣言したり、スイッチ設定したりする必要がなく、同一構成の複数のＣＰＵを回路に接続することにより自動的にメイン・サブの設定を完了することのできるプログラマブルコントローラを提供することを例示的課題とする。また、回路接続の変更等により、メインＣＰＵとサブＣＰＵの設定が変更となった場合でも、プログラムの異常動作を防止することのできるプログラマブルコントローラを提供することを例示的課題とする。
【課題を解決するための手段】
【０００７】  上記の課題を解決するために、本発明の例示的側面としてのプログラマブルコントローラは、複数のインターフェースユニットと、複数のＣＰＵモジュールと、を含む。インターフェースユニットは、ＣＰＵモジュールと接続可能であって、接続されたＣＰＵモジュールに向けて複数の異なる電位状態を有する第１電位信号を送出可能である。ＣＰＵモジュールは、インターフェースユニットと接続可能であると共に他のＣＰＵモジュールと接続可能であり、その内部に演算処理を実行するためのＣＰＵと、判別ビット及び定義情報を格納するためのメモリと、を有している。判別ビットは、その判別ビットを有するＣＰＵモジュールの接続先であるインターフェースユニットからそのＣＰＵモジュールに入力された第１電位信号の電位状態に基づいて、そのＣＰＵモジュール内のＣＰＵがメインＣＰＵであるかサブＣＰＵであるかを示す２値化情報を有している。定義情報は、その定義情報を有するＣＰＵモジュール内のＣＰＵが予めメインＣＰＵとして設定されているかサブＣＰＵとして設定されているかを示す設定情報を有している。【０００８】  ＣＰＵモジュールは、他のＣＰＵモジュールが接続された場合に、他のＣＰＵモジュールに向けて所定の電位状態を有する第２電位信号を送出可能であり、他のＣＰＵモジュール内の判別ビットは、第２電位信号の電位状態に基づいて自身のＣＰＵがサブＣＰＵであることを示す２値化情報を有してもよい。【０００９】  プログラマブルコントローラが、ＣＰＵモジュール内における判別ビットが有する２値化情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容と、そのＣＰＵモジュール内における定義情報が有する設定情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容とが不一致である場合に、エラー報知するエラー報知手段を更に有してもよい。【００１０】  プログラマブルコントローラが、ＣＰＵモジュール内における判別ビットが有する２値化情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容と、そのＣＰＵモジュール内における定義情報が有する設定情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容とが不一致である場合に、ＣＰＵによる演算処理の実行を制限してもよい。【００１１】  プログラマブルコントローラが、ＣＰＵモジュールが有するメモリ内に定義情報が格納されていない場合に、そのメモリ内にそのＣＰＵモジュール内の判別ビットが有する２値化情報が示すメインＣＰＵであるかサブＣＰＵであるかについての内容に基づき新たな定義情報を作成してもよい。【００１２】  複数のＣＰＵモジュールは、演算処理の実行のタイミングの基準となるクロック信号を生成しており、かつ、判別ビットが有する２値化情報がサブＣＰＵであることを示すＣＰＵモジュールのクロック信号を、判別ビットが有する２値化情報がメインＣＰＵであることを示すＣＰＵモジュールのクロック信号に同期させてもよい。【００１３】  本発明の更なる目的又はその他の特徴は、以下添付図面を参照して説明される好ましい実施の形態によって明らかにされるであろう。
【発明の効果】
【００１４】  本発明によれば、どのＣＰＵがメインＣＰＵであり、どのＣＰＵがサブＣＰＵであるかをプログラム上で宣言したり、スイッチ設定したりする必要がなく、同一構成の複数のＣＰＵを回路に接続することにより自動的にメイン・サブの設定を完了することができる。また、回路接続の変更等により、メインＣＰＵとサブＣＰＵの設定が変更となった場合でも、プログラムの異常動作を防止することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態１に係るプログラマブルコントローラ（ＰＬＣ）の使用状態を示す図である。
【図２】図１に示すＰＬＣの概略構成を示すブロック図である。
【図３】ＣＰＵラックにおいて、ＩＦユニットに接続されたＣＰＵモジュールの概略構成を示すブロック図である。
【図４】別のＣＰＵラックにおいて、ＩＦユニットに接続されたＣＰＵモジュールの概略構成を示すブロック図である。
【図５】ＰＬＣの電源投入時の動作を説明するフローチャートである。
【図６】プログラムスキャン時におけるＰＬＣの動作について説明するフローチャートである。
【図７】ＰＬＣのデータバックアップの手順について説明するフローチャートである。
【図８】エンジニアリングツール（プログラム編集アプリケーション）を用いた制御プログラムの編集手順について説明するフローチャートである。
【図９】実施形態２に係るＰＬＣの概略構成を示すブロック図である。
【図１０】実施形態２におけるＣＰＵラックにおいて、ＩＦユニットに接続されたＣＰＵモジュールの概略構成を示すブロック図である。
【図１１】実施形態３に係るＰＬＣの概略構成を示すブロック図である。
【図１２】実施形態３におけるＣＰＵラックにおいて、ＩＦユニットに接続されたＣＰＵモジュールの概略構成を示すブロック図である。
【発明を実施するための形態】
【００１６】    [実施形態１]  以下、本発明の実施形態１について図面を用いて説明する。図１は、本発明の実施形態１に係るプログラマブルコントローラ（ＰＬＣ）２の使用状態を示す図である。プログラマブルコントローラ２は、サーボ制御装置３を介して制御対象としてのサーボモータ４に接続されて使用される。もちろん、制御対象はサーボモータ４に限られず、その他の種類のモータやモータ以外の各種アクチュエータを制御対象とすることができる。
【００１７】  ＰＬＣ２は、内部に電源モジュール１０、ＣＰＵ（演算処理装置）モジュール５、オプションモジュール６等の複数のモジュールを有して構成されている。複数のＣＰＵモジュール５は各々内部にメモリを有しており、そのメモリ内に各々制御プログラムが格納されている。制御プログラムが実行されると、ＣＰＵモジュール５の演算処理に基づきＰＬＣ２からサーボ制御装置３に向けて制御指令が送出されるようになっている。サーボ制御装置３は、受信した制御指令に基づき、サーボモータ（制御対象）４の動作制御及び駆動を実行するようになっている。
【００１８】
ＰＬＣ２は、ＵＳＢポート等のデータ通信ポート２ａを有しており、そのデータ通信ポート２ａにＵＳＢメモリ等の外部記憶装置を接続することで、ＰＬＣ２内のデータや設定情報等をデータバックアップすることが可能となっている。また、ＰＬＣ２は、Ｅｔｈｅｒｎｅｔポート等のデータ通信ポート２ｂを有しており、データ通信ポート２ｂを介してエンジニアリングツール等のプログラム編集アプリケーションを有するＰＣに接続することにより、ＰＣを介してＰＬＣ２内の制御プログラムの読み出し、編集、書き込み等を行えるようになっている。ＰＬＣ２は、後述する判別ビットに基づく内容と定義情報に基づく内容とが不一致となった場合に、エラー表示を行うエラー表示器（エラー報知手段）ＥＲを有している。
【００１９】  図２は、ＰＬＣ２の概略構成を示すブロック図である。ＰＬＣ２は、複数のＣＰＵラックＲを有している。各々のＣＰＵラックＲが電源モジュール１０、ＣＰＵモジュール５を有している。数種類のモジュールが、オプションモジュール６として用意されており、ＣＰＵラックＲのうちいくつかが、オプションモジュール６を有していてもよい。例えば、制御機器に応じて、モジュールのラインナップから用途にあったモジュールを選んで、オプションモジュールとしてＰＬＣ２に適用してもよい。モジュールのラインナップには、ＲＳ−２３２Ｃ通信・Ｄｅｖｉｃｅｎｅｔ通信等のための通信モジュールや、サーボ制御モジュールや、Ｉ／Ｏモジュール等がある。
【００２０】  図２では、ＣＰＵラックＲ１が電源モジュール１０、２つのＣＰＵモジュール５ａ，５ｂ、オプションモジュール６を有している。ＣＰＵラックＲ２は電源モジュール１０、１つのＣＰＵモジュール５ｃ、オプションモジュール６を有している。ＣＰＵラックＲ３は電源モジュール１０、１つのＣＰＵモジュール５ｄを有している。ＣＰＵモジュール５ａ〜５ｄは、同一の構成を有している。
【００２１】  各ＣＰＵラックＲ１〜Ｒ３は、各々ラック間インターフェースユニット（インターフェースユニット。以下、ＩＦユニットという。）Ｆ１〜Ｆ３を有している。ＩＦユニットは、他のＩＦユニットを介してＣＰＵラック同士を接続する機能を有している。図２では、ＣＰＵラックＲ１とＣＰＵラックＲ２とが、ＩＦユニットＦ１とＩＦユニットＦ２とを介して接続されている。ＣＰＵラックＲ１とＣＰＵラックＲ３とが、ＩＦユニットＦ１とＩＦユニットＦ３とを介して接続されている。
【００２２】  ＩＦユニットＦ１は、電源モジュール１０を介してＣＰＵモジュール５ａに接続されている。そして、ＣＰＵモジュール５ｂがＣＰＵモジュール５ａに接続されている。ＩＦユニットＦ２は、電源モジュール１０を介してＣＰＵモジュール５ｃに接続されている。ＩＦユニットＦ３は、電源モジュール１０を介してＣＰＵモジュール５ｄに接続されている。ＩＦユニットＦ１〜Ｆ３は、内部にスレーブラック拡張モジュール１１を有するか否かにより、自身に接続されたＣＰＵモジュールをメインＣＰＵ又はサブＣＰＵに設定する機能を有するが、この点は後述する。
【００２３】
図３は、ＣＰＵラックＲ１において、ＩＦユニットＦ１に接続されたＣＰＵモジュール５ａ、５ｂの概略構成を示すブロック図である。図４は、ＣＰＵラックＲ２において、ＩＦユニットＦ２に接続されたＣＰＵモジュール５ｃの概略構成を示すブロック図である。ＣＰＵモジュール５は、ＣＰＵ（演算処理装置）１３とＦＰＧＡ７とメモリ８とを有している。ＣＰＵ１３は、各種アプリケーションを実行するプロセッサである。ＦＰＧＡ７は、システムに特化した回路を組み込んだ集積回路であり、制御プログラムＰの実行に基づくスキャン周期を生成する等の処理を実行する機能を有する。メモリ８内には、制御プログラムＰが格納されている。制御プログラムＰが実行されることによりＣＰＵ１３が演算処理を行い、その演算結果に基づきサーボモータ４の動作が制御されるようになっている。
【００２４】  ＩＦユニットＦ１はスレーブラック拡張モジュール１１を有していないので、ＣＰＵ５ａと接続される接続ポート１１ａの電位状態がＯＰＥＮとなる。接続ポート１１ａに接続された接続ポート１１ｂの電位レベルは接続ポート１１ａの電位レベルと同一となる。また、接続ポート１１ｂの電位レベルと判別ビット１２ａの電位レベルは同一レベルである。したがって、接続ポート１１ｂの電位レベル及び判別ビット１２ａの電位レベルは、いずれも接続ポート１１ａの電位レベルと同一レベルとなる（以下、この状態をＯＰＥＮな状態、という。）。ＩＦユニットＦ１の接続ポート１１ａは、電源モジュール１０を介してＣＰＵモジュール５ａ内のＦＰＧＡ７ａが備える接続ポート１１ｂに接続され、結果的にＩＦユニットＦ１からＣＰＵモジュール５ａに向けて第１電位信号Ｓ１が入力される。接続ポート１１ａの電位状態がＯＰＥＮな状態である場合、接続ポート１１ｂへ入力される第１電位信号Ｓ１の電位状態は、判別ビット１２ａの電位レベルにより決定されるため、Ｌｏｗレベルである。
【００２５】  ＣＰＵモジュール５ａでは、メモリ８ａ内部に判別ビット１２ａを有している。判別ビット１２ａは、自身のＣＰＵモジュール５ａ内のＣＰＵ１３ａがメインＣＰＵであるかサブＣＰＵであるかを示す２値化情報を有しており、その情報は接続ポート１１ｂへ入力される第１電位信号Ｓ１の電位状態に基づいている。例えば、本実施形態１では、ＦＰＧＡの接続ポートへ入力される第１電位信号Ｓ１の電位状態がＬｏｗの場合、判別ビットは「０」であり、そのＣＰＵモジュールはメインＣＰＵとして設定されるものとする。ＦＰＧＡの接続ポートへ入力される第１電位信号Ｓ１の電位状態がＨｉｇｈの場合、判別ビットは「１」であり、そのＣＰＵモジュールはサブＣＰＵとして設定されるものとする。
【００２６】  ＣＰＵモジュール５ａでは、ＦＰＧＡ７ａの接続ポート１１ｂへの入力電位の電位状態がＬｏｗレベルであるので、判別ビット１２ａは「０」となり、ＣＰＵモジュール５ａ内のＣＰＵ１３ａはメインＣＰＵとして設定される。ＣＰＵ１３ａがメインＣＰＵとして設定されると、その設定情報（自身がメインＣＰＵであるとの情報）が定義情報Ｑａとしてメモリ８ａ内に格納される。制御プログラムＰの実行の際には、メインＣＰＵとしてのＣＰＵモジュール５ａの動作クロック信号がプログラム実行の基準クロック信号となる。したがって、ＣＰＵモジュール５ａのクロック信号が、他のサブＣＰＵに向けて送信される。なお、いずれのＣＰＵモジュール５ａ〜５ｄもクロック信号を生成している。
【００２７】  ＣＰＵモジュール５ａは、出力ポート１１ｃを有している。この出力ポート１１ｃから出力される第２電位信号Ｓ２の電位状態（所定の電位状態）は、Ｖｃｃとされている。ＣＰＵモジュール５ｂは内部にＦＰＧＡ７ｂを有しており、出力ポート１１ｃは、ＦＰＧＡ７ｂの接続ポート１１ｄに接続される。出力ポート１１ｃの電位状態がＶｃｃレベルであるので、接続ポート１１ｄへ入力される第２電位信号Ｓ２の電位状態はＨｉｇｈレベルとなる。
【００２８】  ＣＰＵモジュール５ｂでは、メモリ８ｂ内部に判別ビット１２ｂを有している。判別ビット１２ｂの構成及び機能は、判別ビット１２ａと同様である。ＣＰＵモジュール５ｂでは、ＦＰＧＡ７ｂの接続ポート１１ｄへ入力される第２電位信号Ｓ２の電位状態がＨｉｇｈレベルであるので、判別ビット１２ａは「１」となり、ＣＰＵモジュール５ｂ内のＣＰＵ１３ｂはサブＣＰＵとして設定される。ＣＰＵ１３ｂがサブＣＰＵとして設定されると、その設定情報（自身がサブＣＰＵであるとの情報）が定義情報Ｑｂとしてメモリ８ｂ内に格納される。制御プログラムＰの実行の際には、メインＣＰＵとしてのＣＰＵモジュール５ａの動作クロック信号がプログラム実行の基準クロック信号となる。サブＣＰＵとしてのＣＰＵモジュール５ｂの動作クロック信号は、受け取ったメインＣＰＵとしてのＣＰＵモジュール５ａからのクロック信号に同期する。
【００２９】  上述のように、ＩＦユニットＦ１がスレーブラック拡張モジュール１１を有していないので、ＩＦユニットＦ１に接続されたＣＰＵモジュール５ａはメインＣＰＵとして設定される。ＣＰＵモジュール５ａに接続されたＣＰＵモジュール５ｂ（換言すると、ＩＦユニットに直接接続されておらず、他のＣＰＵモジュールに接続されているＣＰＵモジュール）は、サブＣＰＵとして設定される。
【００３０】  なお、ＦＰＧＡの接続ポートへの入力電位がＨｉｇｈレベル／Ｌｏｗレベルのいずれの場合に、自身のＣＰＵをメインＣＰＵ／サブＣＰＵのいずれに設定するかは、設計的に自由な事項である。また、ＦＰＧＡの接続ポートへの入力電位がＨｉｇｈレベル／Ｌｏｗレベルのいずれの場合に、判別ビットの情報値を「０」／「１」のいずれに設定するかも、設計的に自由な事項である。
【００３１】  ＩＦユニットＦ２は内部にスレーブラック拡張モジュール１１を有している。したがって、ＣＰＵ５ｃと接続される接続ポート１１ｅに入力される第１電位信号Ｓ１の電位状態はＶｃｃレベルとなる。スレーブラック拡張モジュール１１の接続ポート１１ｅは、電源モジュール１０を介してＣＰＵモジュール５ｃ内のＦＰＧＡ７ｃが備える接続ポート１１ｆに接続される。接続ポート１１ｅの電位がＶｃｃレベルである場合、接続ポート１１ｆへ入力される第１電位信号Ｓ１の電位状態はＨｉｇｈレベルとなる。
【００３２】  ＣＰＵモジュール５ｃでは、メモリ８ｃ内部に判別ビット１２ｃを有している。判別ビット１２ｃの構成及び機能は、判別ビット１２ａと同様である。ＣＰＵモジュール５ｃでは、ＦＰＧＡ７ｃの接続ポート１１ｆへの入力電位がＨｉｇｈレベルであるので、判別ビット１２ｃは「１」となり、ＣＰＵモジュール５ｃ内のＣＰＵ１３ｃはサブＣＰＵとして設定される。ＣＰＵ１３ｃがサブＣＰＵとして設定されると、その設定情報（自身がサブＣＰＵであるとの情報）が定義情報Ｑｃとしてメモリ８ｃ内に格納される。制御プログラムＰの実行の際には、メインＣＰＵとしてのＣＰＵモジュール５ａの動作クロック信号がプログラム実行の基準クロック信号となる。サブＣＰＵとしてのＣＰＵモジュール５ｃの動作クロック信号は、受け取ったメインＣＰＵとしてのＣＰＵモジュール５ａからのクロック信号に同期する。
【００３３】  上述のように、ＩＦユニットＦ２がスレーブラック拡張モジュール１１を有している場合、ＩＦユニットＦ２に接続されたＣＰＵモジュール５ｃはサブＣＰＵとして設定される。そして、ＣＰＵモジュール５ｃに接続されたＣＰＵモジュールもサブＣＰＵとして設定される。なお、ＩＦユニットＦ３とＣＰＵモジュール５ｄとの接続状態及びＣＰＵモジュール５ｄの設定については、ＩＦユニットＦ２とＣＰＵモジュール５ｃとの接続状態及びＣＰＵモジュール５ｃの設定と同様であるので、説明を省略する。すなわち、ＩＦユニットＦ３は、スレーブラック拡張モジュール１１を有しているので、判別ビット１２ｄが「１」となり、ＣＰＵモジュール５ｄはサブＣＰＵとして設定される。そして、サブＣＰＵであるとの情報が定義情報Ｑｄとしてメモリ８ｄ内に格納される（なお、判別ビット１２ｄ、定義情報Ｑｄ及びメモリ８ｄについては、本実施形態１での図示を省略する。）。
【００３４】  上記に説明したように、ＣＰＵモジュール５ａ〜５ｄは、同一構成のＣＰＵモジュールであるにも拘わらず、ＩＦユニットとの接続状態により自動的にメインＣＰＵであるか、サブＣＰＵであるか、が設定される。どのＩＦユニットに接続されるかにより、つまり、スレーブラック拡張モジュールを有するＩＦユニットに接続されるかスレーブラック拡張モジュールを有さないＩＦユニットに接続されるかにより、自動的にメインＣＰＵ／サブＣＰＵの設定がされ、その設定内容が各ＣＰＵモジュール内に定義情報として格納される。
【００３５】  ＰＬＣ２は、電源投入後にハードウェア接続状態検出動作と定義情報確認動作とを行う。ハードウェア接続状態検出動作においては、各ＣＰＵラックＲ１〜Ｒ３間の接続状態の検出、各ＩＦユニット内のスレーブラック拡張モジュールの有無の検出、各ＣＰＵモジュールの接続状態の検出等が実行される。各ＣＰＵモジュールの接続状態の検出においては、各ＣＰＵモジュールがどのＩＦユニットに接続されているか、又は、どのＣＰＵモジュールに接続されているか、についての検出が行われる。このハードウェア接続状態検出動作により、ＩＦユニットとＣＰＵモジュールとの接続状態が検出され、ＰＬＣ２内での接続状況に基づきメインＣＰＵとして設定されるべきＣＰＵモジュール（これを、接続状態が「メイン」であるＣＰＵモジュールという。）とサブＣＰＵとして設定されるべきＣＰＵモジュール（これを、接続状態が「サブ」であるＣＰＵモジュールという。）とが特定される。
【００３６】  定義情報確認動作においては、各ＣＰＵモジュール内の定義情報の設定内容の確認が行われる。つまり、どのＣＰＵモジュールが予めメインＣＰＵとして設定されているか（これを、定義情報が「メイン」であるＣＰＵモジュールという。）、どのＣＰＵモジュールが予めサブＣＰＵとして設定されているか（これを、定義情報が「サブ」であるＣＰＵモジュールという。）についての設定情報が得られる。
【００３７】  接続状態が「メイン」であるＣＰＵモジュールと、定義情報が「メイン」であるＣＰＵモジュールとに矛盾がなく、接続状態が「サブ」であるＣＰＵモジュールと、定義情報が「サブ」であるＣＰＵモジュールとに矛盾がない場合、ＰＬＣ２は正常動作可能状態となる。ＰＬＣ２が正常動作可能状態となると、制御プログラムＰの実行に基づくスキャン動作、ＰＬＣ２が有するデータ通信ポート２ａを介したデータバックアップ処理やプログラム編集アプリケーションを用いた制御プログラムの読み出し、編集、書き込み等が行える。
【００３８】  一方、ＣＰＵモジュールの接続状態と定義情報の内容とに矛盾がある場合、ＰＬＣ２は正常動作可能状態とならない。その場合、データ通信ポート２ａを介したデータバックアップ処理、制御プログラムの読み出しや制御プログラム内のレジスタのモニタ等の一部の機能は有効となるが、制御プログラムＰの実行に基づくスキャン動作やデータ通信ポート２ａを介した制御プログラムの書き込み等の他の機能は有効とならない。
【００３９】  このＰＬＣ２の動作について、図５〜図８のフローチャートを用いて説明する。図５は、ＰＬＣ２の電源投入時の動作を説明するフローチャートである。ＰＬＣ２の電源を投入すると（Ｓ１）、ＰＬＣ２は、ハードウェア接続状態検出動作を開始する（Ｓ２）。そして、ＰＬＣ２は、定義情報確認動作を開始する（Ｓ３）。これらの動作により、ＩＦユニットＦ１〜Ｆ３、ＣＰＵモジュール５ａ〜５ｄの接続状態、スレーブラック拡張モジュール１１の有無、定義情報Ｑａ〜Ｑｄの内容が確認される。
【００４０】  メモリ８ａ〜８ｄ内のいずれにも定義情報Ｑａ〜Ｑｄが格納されていない場合（Ｓ４）、すなわち、定義情報Ｑａ〜Ｑｄのいずれもが内容を有していない場合、ＣＰＵモジュール５ａ〜５ｄはいずれも「未使用である」と判断される。その場合、各ＣＰＵモジュール５ａ〜５ｄのメモリ８ａ〜８ｄ内に新たな定義情報Ｑａ〜Ｑｄが作成される（Ｓ５）。具体的には、接続状態が「メイン」であるＣＰＵモジュールに、「メイン」であることが定義情報として格納され、接続状態が「サブ」であるＣＰＵモジュールに、「サブ」であることが定義情報として格納される。そして、ＰＬＣ２は正常動作可能状態となる。
【００４１】  メモリ８ａ〜８ｄ内のいずれかに定義情報Ｑａ〜Ｑｄが格納されている場合（Ｓ４）、接続状態が「メイン」であるか否かが確認される（Ｓ６）。接続状態が「メイン」でない場合、そのＣＰＵモジュール内の定義情報が「メイン」であるか否かが確認される（Ｓ７）。定義情報も「メイン」でない場合、接続状態と定義状態とが一致する（すなわち、いずれも「サブ」である。）と判断される（Ｓ８）。定義情報が「メイン」である場合は、接続状態と定義状態とが不一致であると判断され（Ｓ９）、例えば、ＰＬＣ２が有するエラー表示器（エラー報知手段）ＥＲにエラー表示される（Ｓ１０）。この場合、ＰＬＣ２は正常動作可能状態とならない。
【００４２】  接続状態が「メイン」である場合（Ｓ６）、そのＣＰＵモジュール内の定義情報が「メイン」であるか否かが確認される（Ｓ１１）。定義情報も「メイン」である場合、接続状態と定義状態とが一致する（すなわち、いずれも「メイン」である。）と判断される（Ｓ１２）。定義情報が「サブ」である場合は、接続状態と定義状態とが不一致であると判断され（Ｓ９）、例えば、ＰＬＣ２が有するエラー表示器ＥＲにエラー表示される（Ｓ１０）。この場合、ＰＬＣ２は正常動作可能状態とならない。
【００４３】  上記の、接続状態と定義情報との照合動作をすべてのＣＰＵモジュールについて行い、すべてにおいて接続状態と定義情報とが一致であると判断されると、ＰＬＣ２は正常動作可能状態となる。
【００４４】  次に、図６を用いて、プログラムスキャン時におけるＰＬＣ２の動作について説明する。スキャン動作が開始すると（Ｓ２１）、一括出力（Ｓ２２）及び一括入力（Ｓ２３）が実行される。ここで、一括出力とは、ラダープログラム（ラダー言語により記述された制御プログラム）にて、設定した出力レジスタの内容を外部機器へ出力することをいい、一括入力とは、外部機器からの入力を入力レジスタへ取り込むことを意味する。そして、各ＣＰＵモジュール５ａ〜５ｄが動作を開始し（Ｓ２４）、まず、各ＣＰＵモジュールの接続状態と定義情報との一致／不一致が確認される（Ｓ２５）。各ＣＰＵモジュールの接続状態と定義情報との一致／不一致の確認プロセスについては、図５において説明した通りである。
【００４５】  各ＣＰＵモジュールの接続状態と定義情報とが一致していると判断されると、制御プログラム（例えば、ラダー言語によって記述されている。）Ｐの解析が実行され（Ｓ２６）、制御プログラムＰに基づくサーボモータ４の動作制御が行われる。ここで、メインＣＰＵに設定されたＣＰＵモジュールのクロック信号がサブＣＰＵに設定されたＣＰＵモジュールへと送信され、サブＣＰＵは、そのメインＣＰＵのクロック信号に同期しつつ動作する。
【００４６】  次に、図７を用いて、ＰＬＣ２のデータバックアップの手順について説明する。データ通信ポート２ａにＵＳＢメモリ（外部記憶装置）が接続され（Ｓ３１）、ＵＳＢメモリとのデータ通信要求信号を受信すると（Ｓ３２）、ＰＬＣ２は、まず、各ＣＰＵモジュールの接続状態と定義情報との一致／不一致を確認する（Ｓ３３）。各ＣＰＵモジュールの接続状態と定義情報との一致／不一致の確認プロセスについては、図５において説明した通りである。
【００４７】  各ＣＰＵモジュールの接続状態と定義情報とが一致していると判断されると、ＰＬＣ２からＵＳＢメモリへのデータバックアップ（ＰＬＣ２からのデータ読み出し）とＵＳＢメモリからＰＬＣ２へのデータロード（ＰＬＣ２へのデータ書き込み）が許可される（Ｓ３４）。一方、各ＣＰＵモジュールの接続状態と定義情報とが不一致であると判断されると、ＰＬＣ２からのデータ読み出しのみが許可され、ＰＬＣ２へのデータ書き込みは許可されない（Ｓ３５）。
【００４８】  次に、図８を用いて、エンジニアリングツール（プログラム編集アプリケーション）を用いた制御プログラムＰの編集手順について説明する。データ通信ポート２ａにエンジニアリングツールを有するＰＣが接続され（Ｓ４１）、ＰＣ側から編集コマンドを受信すると（Ｓ４２）、ＰＬＣ２は、まず、各ＣＰＵモジュールの接続状態と定義情報との一致／不一致を確認する（Ｓ４３）。各ＣＰＵモジュールの接続状態と定義情報との一致／不一致の確認プロセスについては、図５において説明した通りである。
【００４９】  各ＣＰＵモジュールの接続状態と定義情報とが一致していると判断されると、エンジニアリングツールによるＰＬＣ２からＰＣへのデータ読み出し、ＰＣからＰＬＣ２へのデータ書き込みのいずれもが許可される（Ｓ４４）。一方、各ＣＰＵモジュールの接続状態と定義情報とが不一致であると判断されると、ＰＬＣ２からのＰＣへのデータ読み出しのみが許可され、ＰＬＣ２へのデータ書き込みは許可されない（Ｓ４５）。
【００５０】    ［実施形態２］  図９は、実施形態２に係るＰＬＣ２の概略構成を示すブロック図である。このＰＬＣ２は、複数のＣＰＵラックＲ１〜Ｒ３を有している。各々のＣＰＵラックＲ１〜Ｒ３が各々ＩＦユニットＦ１〜Ｆ３、電源モジュール１０、ＣＰＵモジュール５、オプションモジュール６を有している。図９では、ＣＰＵラックＲ１が１つのＣＰＵモジュール５ａを、ＣＰＵラックＲ２が１つのＣＰＵモジュール５ｃを、ＣＰＵラックＲ３が１つのＣＰＵモジュール５ｄを有している。ＣＰＵモジュール５ａ，５ｃ，５ｄは、同一の構成を有している。
【００５１】  図１０は、ＣＰＵラックＲ１において、ＩＦユニットＦ１に接続されたＣＰＵモジュール５ａの概略構成を示すブロック図である。ＣＰＵモジュール５ａでは、メモリ８ａ内部に判別ビット１２ａを有している。判別ビット１２ａの構成及び機能は、実施形態１にて説明したものと同様である。ＣＰＵモジュール５ａでは、ＩＦユニットＦ１がスレーブラック拡張モジュール１１を有していないので、接続ポート１１ａの電位状態がＯＰＥＮな状態となる。したがって、第１電位信号Ｓ１によるＦＰＧＡ７ａの接続ポート１１ｂへの入力電位がＬｏｗレベルとなり、判別ビット１２ａは「０」となり、ＣＰＵモジュール５ａ内のＣＰＵ１３ａはメインＣＰＵとして設定される。ＣＰＵ１３ａがメインＣＰＵとして設定されると、その設定情報（自身がメインＣＰＵであるとの情報）が定義情報Ｑａとしてメモリ８ａ内に格納される。制御プログラムＰの実行の際には、メインＣＰＵとしてのＣＰＵモジュール５ａの動作クロック信号がプログラム実行の基準クロック信号となる。
【００５２】  ＣＰＵラックＲ２において、ＩＦユニットＦ２はスレーブラック拡張モジュール１１を有している。したがって、ＣＰＵモジュール５ｃはサブＣＰＵとして設定される。ＣＰＵラックＲ３において、ＩＦユニットＦ３はスレーブラック拡張モジュール１１を有している。したがって、ＣＰＵモジュール５ｄ内のＣＰＵ１３ｄはサブＣＰＵとして設定される。このＣＰＵラックＲ２，Ｒ３において、ＣＰＵモジュール５ｃ，５ｄがサブＣＰＵとして設定されるプロセスは、実施形態１におけるＣＰＵラックＲ２及びＣＰＵモジュール５ｃについての説明、並びに図４において説明したものと同様であるので、詳細な説明を省略する。制御プログラムＰの実行の際には、サブＣＰＵとしてのＣＰＵモジュール５ｃの動作クロック信号は、受け取ったメインＣＰＵとしてのＣＰＵモジュール５ａからのクロック信号に同期する。
【００５３】    ［実施形態３］  図１１は、実施形態３に係るＰＬＣ２の概略構成を示すブロック図である。このＰＬＣ２は、複数のＣＰＵラックＲ１〜Ｒ３を有している。各々のＣＰＵラックＲ１〜Ｒ３が各々ＩＦユニットＦ１〜Ｆ３、電源モジュール１０、ＣＰＵモジュール５、オプションモジュール６を有している。図１１では、ＣＰＵラックＲ１が２つのＣＰＵモジュール５ａ，５ｂを、ＣＰＵラックＲ２が２つのＣＰＵモジュール５ｃ，５ｄを、ＣＰＵラックＲ３が２つのＣＰＵモジュール５ｅ，５ｆを有している。ＣＰＵモジュール５ａ〜５ｆは、同一の構成を有している。
【００５４】  ＣＰＵラックＲ１においては、ＩＦユニットＦ１がスレーブラック拡張モジュール１１を有していないので、ＣＰＵモジュール５ａ内のＣＰＵ１３ａがメインＣＰＵとして設定される。また、メインＣＰＵであるＣＰＵモジュール５ａに接続されたＣＰＵモジュール５ｂ内のＣＰＵ１３ｂがサブＣＰＵとして設定される。これらの設定プロセスについては、実施形態１におけるＣＰＵラックＲ１及びＣＰＵモジュール５ａ，５ｂについての説明、並びに図３において説明したものと同様であるので、詳細な説明を省略する。制御プログラムＰの実行の際には、メインＣＰＵとしてのＣＰＵモジュール５ａの動作クロック信号がプログラム実行の基準クロック信号となる。そして、サブＣＰＵとしてのＣＰＵモジュール５ｂの動作クロック信号は、メインＣＰＵとしてのＣＰＵモジュール５ａからのクロック信号に同期する。
【００５５】  図１２は、ＣＰＵラックＲ２において、ＩＦユニットＦ２に接続されたＣＰＵモジュール５ｃの概略構成を示すブロック図である。ＣＰＵモジュール５ｃでは、メモリ８ｃ内部に判別ビット１２ｃを有している。判別ビット１２ｃの構成及び機能は、実施形態１にて説明したものと同様である。ＣＰＵモジュール５ｃでは、ＩＦユニットＦ２がスレーブラック拡張モジュール１１を有しているので、接続ポート１１ｅの電位状態がＶｃｃレベルとなる。したがって、第１電位信号Ｓ１によるＦＰＧＡ７ｃの接続ポート１１ｆへの入力電位がＨｉｇｈレベルとなり、判別ビット１２ｃは「１」となり、ＣＰＵモジュール５ｃ内のＣＰＵ１３ｃはサブＣＰＵとして設定される。ＣＰＵ１３ｃがサブＣＰＵとして設定されると、その設定情報（自身がサブＣＰＵであるとの情報）が定義情報Ｑｃとしてメモリ８ｃ内に格納される。制御プログラムＰの実行の際には、サブＣＰＵとしてのＣＰＵモジュール５ｃの動作クロック信号は、メインＣＰＵとしてのＣＰＵモジュール５ａからのクロック信号に同期する。
【００５６】  ＣＰＵモジュール５ｃは出力ポート１１ｇを有している。出力ポート１１ｇから出力される第２電位信号Ｓ２の電位状態（所定の電位状態）は、Ｖｃｃとされている。ＣＰＵモジュール５ｄは内部にＦＰＧＡ７ｄを有しており、出力ポート１１ｇは、ＦＰＧＡ７ｄの接続ポート１１ｈに接続される。出力ポート１１ｇの電位状態がＶｃｃレベルであるので、接続ポート１１ｈへ入力される第２電位信号Ｓ２の電位状態はＨｉｇｈレベルとなる。
【００５７】
ＣＰＵモジュール５ｄでは、メモリ８ｄ内部に判別ビット１２ｄを有している。判別ビット１２ｄの構成及び機能は、判別ビット１２ａと同様である。ＣＰＵモジュール５ｄでは、ＦＰＧＡ７ｄの接続ポート１１ｈへ入力される第２電位信号Ｓ２の電位状態がＨｉｇｈレベルであるので、判別ビット１２ｄは「１」となり、ＣＰＵモジュール５ｄ内のＣＰＵ１３ｄはサブＣＰＵとして設定される（サブＣＰＵとしてのＣＰＵモジュール５ｃに従属的に接続されたサブＣＰＵであるので、サプＣＰＵとしてのＣＰＵモジュール５ｃと区別するためにサブ−サブＣＰＵという場合もある。）。ＣＰＵ１３ｄがサブＣＰＵとして設定されると、その設定情報（自身がサブＣＰＵであるとの情報）が定義情報Ｑｄとしてメモリ８ｄ内に格納される。制御プログラムＰの実行の際には、サブＣＰＵとしてのＣＰＵモジュール５ｄの動作クロック信号は、メインＣＰＵとしてのＣＰＵモジュール５ａからのクロック信号に同期する。
【００５８】  なお、ＣＰＵラックＲ３におけるＣＰＵモジュール５ｅ内のＣＰＵもＣＰＵラックＲ２におけるＣＰＵモジュール５ｃ内のＣＰＵ１３ｃと同様に、サブＣＰＵとして設定される。また、ＣＰＵラックＲ３におけるＣＰＵモジュール５ｆ内のＣＰＵもＣＰＵラックＲ２におけるＣＰＵモジュール５ｄ内のＣＰＵ１３ｄと同様に、サブＣＰＵ（サブ−サブＣＰＵ）として設定される。これらの構成及び設定プロセスは、この実施形態３におけるＣＰＵラックＲ３についての説明及び図１２において説明したものと同様であるので、詳細な説明を省略する。
【００５９】以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、その要旨の範囲内で様々な変形や変更が可能である。
【符号の説明】
【００６０】エラー表示器（エラー報知手段）：ＥＲＩＦユニット（ラック間インターフェースユニット）：Ｆ１〜Ｆ３定義情報：Ｑａ〜Ｑｄ制御プログラム：ＰＣＰＵラック：Ｒ，Ｒ１〜Ｒ３第１電位信号：Ｓ１第２電位信号：Ｓ２プログラマブルコントローラ（ＰＬＣ）：２データ通信ポート：２ａ，２ｂサーボ制御装置：３サーボモータ（制御対象）：４ＣＰＵモジュール：５，５ａ〜５ｆオプションモジュール：６ＦＰＧＡ：７，７ａ〜７ｄメモリ：８，８ａ〜８ｄ電源モジュール：１０スレーブラック拡張モジュール：１１接続ポート：１１ａ，１１ｂ，１１ｄ，１１ｅ，１１ｆ，１１ｈ出力ポート：１１ｃ，１１ｇ判別ビット：１２ａ〜１２ｄＣＰＵ（演算処理装置）：１３，１３ａ〜１３ｄ
【図１】
0006015768.tif 000002
【図２】
0006015768.tif 000003
【図３】
0006015768.tif 000004
【図４】
0006015768.tif 000005
【図５】
0006015768.tif 000006
【図６】
0006015768.tif 000007
【図７】
0006015768.tif 000008
【図８】
0006015768.tif 000009
【図９】
0006015768.tif 000010
【図１０】
0006015768.tif 000011
【図１１】
0006015768.tif 000012
【図１２】
0006015768.tif 000013