(58)【調査した分野】(Int.Cl.,DB名)
前記CPUモジュール内における前記判別ビットが有する2値化情報が示すメインCPUであるかサブCPUであるかについての内容と、当該CPUモジュール内における前記定義情報が有する設定情報が示すメインCPUであるかサブCPUであるかについての内容とが不一致である場合に、エラー報知するエラー報知手段を更に有する、請求項1又は請求項2に記載のプログラマブルコントローラ。
前記CPUモジュール内における前記判別ビットが有する2値化情報が示すメインCPUであるかサブCPUであるかについての内容と、当該CPUモジュール内における前記定義情報が有する設定情報が示すメインCPUであるかサブCPUであるかについての内容とが不一致である場合に、前記CPUによる前記演算処理の実行を制限する、請求項1から請求項3のうちいずれか1項に記載のプログラマブルコントローラ。
前記CPUモジュールが有する前記メモリ内に前記定義情報が格納されていない場合に、当該メモリ内に当該CPUモジュール内の前記判別ビットが有する2値化情報が示すメインCPUであるかサブCPUであるかについての内容に基づき新たな定義情報を作成する、請求項1から請求項4のうちいずれか1項に記載のプログラマブルコントローラ。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述のように、従来のマルチCPU構成のプログラマブルコントローラでは、複数のCPUの各々を識別するために、CPUごとにスイッチを設け、わざわざスイッチ設定を行う必要があった。また、プログラム側で、どのCPUがメインCPUで、どのCPUがサブCPUであるかの宣言を行う必要があった。このプログラム側での宣言と、ハードウェア側で検出したメインCPUとサブCPUの設定(すなわち、スイッチ設定)とが矛盾した場合に、プログラムが異常動作する懸念がある。プログラムの異常動作は、プログラマブルコントローラで動作制御する制御対象(モータ等)の異常動作の原因となり得る。
【0006】
本発明は、上記の課題に鑑みてなされたもので、どのCPUがメインCPUであり、どのCPUがサブCPUであるかをプログラム上で宣言したり、スイッチ設定したりする必要がなく、同一構成の複数のCPUを回路に接続することにより自動的にメイン・サブの設定を完了することのできるプログラマブルコントローラを提供することを例示的課題とする。また、回路接続の変更等により、メインCPUとサブCPUの設定が変更となった場合でも、プログラムの異常動作を防止することのできるプログラマブルコントローラを提供することを例示的課題とする。
【課題を解決するための手段】
【0007】
上記の課題を解決するために、本発明の例示的側面としてのプログラマブルコントローラは、複数のインターフェースユニットと、複数のCPUモジュールと、を含む。インターフェースユニットは、CPUモジュールと接続可能であって、接続されたCPUモジュールに向けて複数の異なる電位状態を有する第1電位信号を送出可能である。CPUモジュールは、インターフェースユニットと接続可能であると共に他のCPUモジュールと接続可能であり、その内部に演算処理を実行するためのCPUと、判別ビット及び定義情報を格納するためのメモリと、を有している。判別ビットは、その判別ビットを有するCPUモジュールの接続先であるインターフェースユニットからそのCPUモジュールに入力された第1電位信号の電位状態に基づいて、そのCPUモジュール内のCPUがメインCPUであるかサブCPUであるかを示す2値化情報を有している。定義情報は、その定義情報を有するCPUモジュール内のCPUが予めメインCPUとして設定されているかサブCPUとして設定されているかを示す設定情報を有している。
【0008】
CPUモジュールは、他のCPUモジュールが接続された場合に、他のCPUモジュールに向けて所定の電位状態を有する第2電位信号を送出可能であり、他のCPUモジュール内の判別ビットは、第2電位信号の電位状態に基づいて自身のCPUがサブCPUであることを示す2値化情報を有してもよい。
【0009】
プログラマブルコントローラが、CPUモジュール内における判別ビットが有する2値化情報が示すメインCPUであるかサブCPUであるかについての内容と、そのCPUモジュール内における定義情報が有する設定情報が示すメインCPUであるかサブCPUであるかについての内容とが不一致である場合に、エラー報知するエラー報知手段を更に有してもよい。
【0010】
プログラマブルコントローラが、CPUモジュール内における判別ビットが有する2値化情報が示すメインCPUであるかサブCPUであるかについての内容と、そのCPUモジュール内における定義情報が有する設定情報が示すメインCPUであるかサブCPUであるかについての内容とが不一致である場合に、CPUによる演算処理の実行を制限してもよい。
【0011】
プログラマブルコントローラが、CPUモジュールが有するメモリ内に定義情報が格納されていない場合に、そのメモリ内にそのCPUモジュール内の判別ビットが有する2値化情報が示すメインCPUであるかサブCPUであるかについての内容に基づき新たな定義情報を作成してもよい。
【0012】
複数のCPUモジュールは、演算処理の実行のタイミングの基準となるクロック信号を生成しており、かつ、判別ビットが有する2値化情報がサブCPUであることを示すCPUモジュールのクロック信号を、判別ビットが有する2値化情報がメインCPUであることを示すCPUモジュールのクロック信号に同期させてもよい。
【0013】
本発明の更なる目的又はその他の特徴は、以下添付図面を参照して説明される好ましい実施の形態によって明らかにされるであろう。
【発明の効果】
【0014】
本発明によれば、どのCPUがメインCPUであり、どのCPUがサブCPUであるかをプログラム上で宣言したり、スイッチ設定したりする必要がなく、同一構成の複数のCPUを回路に接続することにより自動的にメイン・サブの設定を完了することができる。また、回路接続の変更等により、メインCPUとサブCPUの設定が変更となった場合でも、プログラムの異常動作を防止することができる。
【発明を実施するための形態】
【0016】
[実施形態1]
以下、本発明の実施形態1について図面を用いて説明する。
図1は、本発明の実施形態1に係るプログラマブルコントローラ(PLC)2の使用状態を示す図である。プログラマブルコントローラ2は、サーボ制御装置3を介して制御対象としてのサーボモータ4に接続されて使用される。もちろん、制御対象はサーボモータ4に限られず、その他の種類のモータやモータ以外の各種アクチュエータを制御対象とすることができる。
【0017】
PLC2は、内部に電源モジュール10、CPU(演算処理装置)モジュール5、オプションモジュール6等の複数のモジュールを有して構成されている。複数のCPUモジュール5は各々内部にメモリを有しており、そのメモリ内に各々制御プログラムが格納されている。制御プログラムが実行されると、CPUモジュール5の演算処理に基づきPLC2からサーボ制御装置3に向けて制御指令が送出されるようになっている。サーボ制御装置3は、受信した制御指令に基づき、サーボモータ(制御対象)4の動作制御及び駆動を実行するようになっている。
【0018】
PLC2は、USBポート等のデータ通信ポート2aを有しており、そのデータ通信ポート2aにUSBメモリ等の外部記憶装置を接続することで、PLC2内のデータや設定情報等をデータバックアップすることが可能となっている。また、PLC2は、Ethernetポート等のデータ通信ポート2bを有しており、データ通信ポート2bを介してエンジニアリングツール等のプログラム編集アプリケーションを有するPCに接続することにより、PCを介してPLC2内の制御プログラムの読み出し、編集、書き込み等を行えるようになっている。PLC2は、後述する判別ビットに基づく内容と定義情報に基づく内容とが不一致となった場合に、エラー表示を行うエラー表示器(エラー
報知手段)ERを有している。
【0019】
図2は、PLC2の概略構成を示すブロック図である。PLC2は、複数のCPUラックRを有している。各々のCPUラックRが電源モジュール10、CPUモジュール5を有している。数種類のモジュールが、オプションモジュール6として用意されており、CPUラックRのうちいくつかが、オプションモジュール6を有していてもよい。例えば、制御機器に応じて、モジュールのラインナップから用途にあったモジュールを選んで、オプションモジュールとしてPLC2に適用してもよい。モジュールのラインナップには、RS−232C通信・Devicenet通信等のための通信モジュールや、サーボ制御モジュールや、I/Oモジュール等がある。
【0020】
図2では、CPUラックR1が電源モジュール10、2つのCPUモジュール5a,5b、オプションモジュール6を有している。CPUラックR2は電源モジュール10、1つのCPUモジュール5c、オプションモジュール6を有している。CPUラックR3は電源モジュール10、1つのCPUモジュール5dを有している。CPUモジュール5a〜5dは、同一の構成を有している。
【0021】
各CPUラックR1〜R3は、各々ラック間インターフェースユニット(インターフェースユニット。以下、IFユニットという。)F1〜F3を有している。IFユニットは、他のIFユニットを介してCPUラック同士を接続する機能を有している。
図2では、CPUラックR1とCPUラックR2とが、IFユニットF1とIFユニットF2とを介して接続されている。CPUラックR1とCPUラックR3とが、IFユニットF1とIFユニットF3とを介して接続されている。
【0022】
IFユニットF1は、電源モジュール10を介してCPUモジュール5aに接続されている。そして、CPUモジュール5bがCPUモジュール5aに接続されている。IFユニットF2は、電源モジュール10を介してCPUモジュール5cに接続されている。IFユニットF3は、電源モジュール10を介してCPUモジュール5dに接続されている。IFユニットF1〜F3は、内部にスレーブラック拡張モジュール11を有するか否かにより、自身に接続されたCPUモジュールをメインCPU又はサブCPUに設定する機能を有するが、この点は後述する。
【0023】
図3は、CPUラックR1において、IFユニットF1に接続されたCPUモジュール5a
、5bの概略構成を示すブロック図である。
図4は、CPUラックR2において、IFユニットF2に接続されたCPUモジュール5cの概略構成を示すブロック図である。CPUモジュール5は、CPU(演算処理装置)13とFPGA7とメモリ8とを有している。CPU13は、各種アプリケーションを実行するプロセッサである。FPGA7は、システムに特化した回路を組み込んだ集積回路であり、制御プログラムPの実行に基づくスキャン周期を生成する等の処理を実行する機能を有する。メモリ8内には、制御プログラムPが格納されている。制御プログラムPが実行されることによりCPU13が演算処理を行い、その演算結果に基づきサーボモータ4の動作が制御されるようになっている。
【0024】
IFユニットF1はスレーブラック拡張モジュール11を有していないので、CPU5aと接続される接続ポート11aの電位状態がOPENとなる。接続ポート11aに接続された接続ポート11bの電位レベルは接続ポート11aの電位レベルと同一となる。また、接続ポート11bの電位レベルと判別ビット12aの電位レベルは同一レベルである。したがって、接続ポート11bの電位レベル及び判別ビット12aの電位レベルは、いずれも接続ポート11aの電位レベルと同一レベルとなる(以下、この状態をOPENな状態、という。)。IFユニットF1の接続ポート11aは、電源モジュール10を介してCPUモジュール5a内のFPGA7aが備える接続ポート11bに接続され、結果的にIFユニットF1からCPUモジュール5aに向けて第1電位信号S1が入力される。接続ポート11aの電位状態がOPENな状態である場合、接続ポート11bへ入力される第1電位信号S1の電位状態は、判別ビット12aの電位レベルにより決定されるため、Lowレベルである。
【0025】
CPUモジュール5aでは、メモリ8a内部に判別ビット12aを有している。判別ビット12aは、自身のCPUモジュール5a内のCPU13aがメインCPUであるかサブCPUであるかを示す2値化情報を有しており、その情報は接続ポート11bへ入力される第1電位信号S1の電位状態に基づいている。例えば、本実施形態1では、FPGAの接続ポートへ入力される第1電位信号S1の電位状態がLowの場合、判別ビットは「0」であり、そのCPUモジュールはメインCPUとして設定されるものとする。FPGAの接続ポートへ入力される第1電位信号S1の電位状態がHighの場合、判別ビットは「1」であり、そのCPUモジュールはサブCPUとして設定されるものとする。
【0026】
CPUモジュール5aでは、FPGA7aの接続ポート11bへの入力電位の電位状態がLowレベルであるので、判別ビット12aは「0」となり、CPUモジュール5a内のCPU13aはメインCPUとして設定される。CPU13aがメインCPUとして設定されると、その設定情報(自身がメインCPUであるとの情報)が定義情報Qaとしてメモリ8a内に格納される。制御プログラムPの実行の際には、メインCPUとしてのCPUモジュール5aの動作クロック信号がプログラム実行の基準クロック信号となる。したがって、CPUモジュール5aのクロック信号が、他のサブCPUに向けて送信される。なお、いずれのCPUモジュール5a〜5dもクロック信号を生成している。
【0027】
CPUモジュール5aは、出力ポート11cを有している。この出力ポート11cから出力される第2電位信号S2の電位状態(所定の電位状態)は、Vccとされている。CPUモジュール5bは内部にFPGA7bを有しており、出力ポート11cは、FPGA7bの接続ポート11dに接続される。出力ポート11cの電位状態がVccレベルであるので、接続ポート11dへ入力される第2電位信号S2の電位状態はHighレベルとなる。
【0028】
CPUモジュール5bでは、メモリ8b内部に判別ビット12bを有している。判別ビット12bの構成及び機能は、判別ビット12aと同様である。CPUモジュール5bでは、FPGA7bの接続ポート11dへ入力される第2電位信号S2の電位状態がHighレベルであるので、判別ビット12aは「1」となり、CPUモジュール5b内のCPU13bはサブCPUとして設定される。CPU13bがサブCPUとして設定されると、その設定情報(自身がサブCPUであるとの情報)が定義情報Qbとしてメモリ8b内に格納される。制御プログラムPの実行の際には、メインCPUとしてのCPUモジュール5aの動作クロック信号がプログラム実行の基準クロック信号となる。サブCPUとしてのCPUモジュール5bの動作クロック信号は、受け取ったメインCPUとしてのCPUモジュール5aからのクロック信号に同期する。
【0029】
上述のように、IFユニットF1がスレーブラック拡張モジュール11を有していないので、IFユニットF1に接続されたCPUモジュール5aはメインCPUとして設定される。CPUモジュール5aに接続されたCPUモジュール5b(換言すると、IFユニットに直接接続されておらず、他のCPUモジュールに接続されているCPUモジュール)は、サブCPUとして設定される。
【0030】
なお、FPGAの接続ポートへの入力電位がHighレベル/Lowレベルのいずれの場合に、自身のCPUをメインCPU/サブCPUのいずれに設定するかは、設計的に自由な事項である。また、FPGAの接続ポートへの入力電位がHighレベル/Lowレベルのいずれの場合に、判別ビットの情報値を「0」/「1」のいずれに設定するかも、設計的に自由な事項である。
【0031】
IFユニットF2は内部にスレーブラック拡張モジュール11を有している。したがって、CPU5cと接続される接続ポート11eに入力される第1電位信号S1の電位状態はVccレベルとなる。スレーブラック拡張モジュール11の接続ポート11eは、電源モジュール10を介してCPUモジュール5c内のFPGA7cが備える接続ポート11fに接続される。接続ポート11eの電位がVccレベルである場合、接続ポート11fへ入力される第1電位信号S1の電位状態はHighレベルとなる。
【0032】
CPUモジュール5cでは、メモリ8c内部に判別ビット12cを有している。判別ビット12cの構成及び機能は、判別ビット12aと同様である。CPUモジュール5cでは、FPGA7cの接続ポート11fへの入力電位がHighレベルであるので、判別ビット12cは「1」となり、CPUモジュール5c内のCPU13cはサブCPUとして設定される。CPU13cがサブCPUとして設定されると、その設定情報(自身がサブCPUであるとの情報)が定義情報Qcとしてメモリ8c内に格納される。制御プログラムPの実行の際には、メインCPUとしてのCPUモジュール5aの動作クロック信号がプログラム実行の基準クロック信号となる。サブCPUとしてのCPUモジュール5cの動作クロック信号は、受け取ったメインCPUとしてのCPUモジュール5aからのクロック信号に同期する。
【0033】
上述のように、IFユニットF2がスレーブラック拡張モジュール11を有している場合、IFユニットF2に接続されたCPUモジュール5cはサブCPUとして設定される。そして、CPUモジュール5cに接続されたCPUモジュールもサブCPUとして設定される。なお、IFユニットF3とCPUモジュール5dとの接続状態及びCPUモジュール5dの設定については、IFユニットF2とCPUモジュール5cとの接続状態及びCPUモジュール5cの設定と同様であるので、説明を省略する。すなわち、IFユニットF3は、スレーブラック拡張モジュール11を有しているので、判別ビット12dが「1」となり、CPUモジュール5dはサブCPUとして設定される。そして、サブCPUであるとの情報が定義情報Qdとしてメモリ8d内に格納される(なお、判別ビット12d、定義情報Qd及びメモリ8dについては、本実施形態1での図示を省略する。)。
【0034】
上記に説明したように、CPUモジュール5a〜5dは、同一構成のCPUモジュールであるにも拘わらず、IFユニットとの接続状態により自動的にメインCPUであるか、サブCPUであるか、が設定される。どのIFユニットに接続されるかにより、つまり、スレーブラック拡張モジュールを有するIFユニットに接続されるかスレーブラック拡張モジュールを有さないIFユニットに接続されるかにより、自動的にメインCPU/サブCPUの設定がされ、その設定内容が各CPUモジュール内に定義情報として格納される。
【0035】
PLC2は、電源投入後にハードウェア接続状態検出動作と定義情報確認動作とを行う。ハードウェア接続状態検出動作においては、各CPUラックR1〜R3間の接続状態の検出、各IFユニット内のスレーブラック拡張モジュールの有無の検出、各CPUモジュールの接続状態の検出等が実行される。各CPUモジュールの接続状態の検出においては、各CPUモジュールがどのIFユニットに接続されているか、又は、どのCPUモジュールに接続されているか、についての検出が行われる。このハードウェア接続状態検出動作により、IFユニットとCPUモジュールとの接続状態が検出され、PLC2内での接続状況に基づきメインCPUとして設定されるべきCPUモジュール(これを、接続状態が「メイン」であるCPUモジュールという。)とサブCPUとして設定されるべきCPUモジュール(これを、接続状態が「サブ」であるCPUモジュールという。)とが特定される。
【0036】
定義情報確認動作においては、各CPUモジュール内の定義情報の設定内容の確認が行われる。つまり、どのCPUモジュールが予めメインCPUとして設定されているか(これを、定義情報が「メイン」であるCPUモジュールという。)、どのCPUモジュールが予めサブCPUとして設定されているか(これを、定義情報が「サブ」であるCPUモジュールという。)についての設定情報が得られる。
【0037】
接続状態が「メイン」であるCPUモジュールと、定義情報が「メイン」であるCPUモジュールとに矛盾がなく、接続状態が「サブ」であるCPUモジュールと、定義情報が「サブ」であるCPUモジュールとに矛盾がない場合、PLC2は正常動作可能状態となる。PLC2が正常動作可能状態となると、制御プログラムPの実行に基づくスキャン動作、PLC2が有するデータ通信ポート2aを介したデータバックアップ処理やプログラム編集アプリケーションを用いた制御プログラムの読み出し、編集、書き込み等が行える。
【0038】
一方、CPUモジュールの接続状態と定義情報の内容とに矛盾がある場合、PLC2は正常動作可能状態とならない。その場合、データ通信ポート2aを介したデータバックアップ処理、制御プログラムの読み出しや制御プログラム内のレジスタのモニタ等の一部の機能は有効となるが、制御プログラムPの実行に基づくスキャン動作やデータ通信ポート2aを介した制御プログラムの書き込み等の他の機能は有効とならない。
【0039】
このPLC2の動作について、
図5〜
図8のフローチャートを用いて説明する。
図5は、PLC2の電源投入時の動作を説明するフローチャートである。PLC2の電源を投入すると(S1)、PLC2は、ハードウェア接続状態検出動作を開始する(S2)。そして、PLC2は、定義情報確認動作を開始する(S3)。これらの動作により、IFユニットF1〜F3、CPUモジュール5a〜5dの接続状態、スレーブラック拡張モジュール11の有無、定義情報Qa〜Qdの内容が確認される。
【0040】
メモリ8a〜8d内のいずれにも定義情報Qa〜Qdが格納されていない場合(S4)、すなわち、定義情報Qa〜Qdのいずれもが内容を有していない場合、CPUモジュール5a〜5dはいずれも「未使用である」と判断される。その場合、各CPUモジュール5a〜5dのメモリ8a〜8d内に新たな定義情報Qa〜Qdが作成される(S5)。具体的には、接続状態が「メイン」であるCPUモジュールに、「メイン」であることが定義情報として格納され、接続状態が「サブ」であるCPUモジュールに、「サブ」であることが定義情報として格納される。そして、PLC2は正常動作可能状態となる。
【0041】
メモリ8a〜8d内のいずれかに定義情報Qa〜Qdが格納されている場合(S4)、接続状態が「メイン」であるか否かが確認される(S6)。接続状態が「メイン」でない場合、そのCPUモジュール内の定義情報が「メイン」であるか否かが確認される(S7)。定義情報も「メイン」でない場合、接続状態と定義状態とが一致する(すなわち、いずれも「サブ」である。)と判断される(S8)。定義情報が「メイン」である場合は、接続状態と定義状態とが不一致であると判断され(S9)、例えば、PLC2が有するエラー表示器(エラー報知手段)ERにエラー表示される(S10)。この場合、PLC2は正常動作可能状態とならない。
【0042】
接続状態が「メイン」である場合(S6)、そのCPUモジュール内の定義情報が「メイン」であるか否かが確認される(S11)。定義情報も「メイン」である場合、接続状態と定義状態とが一致する(すなわち、いずれも「メイン」である。)と判断される(S12)。定義情報が「サブ」である場合は、接続状態と定義状態とが不一致であると判断され(S9)、例えば、PLC2が有するエラー表示器ERにエラー表示される(S10)。この場合、PLC2は正常動作可能状態とならない。
【0043】
上記の、接続状態と定義情報との照合動作をすべてのCPUモジュールについて行い、すべてにおいて接続状態と定義情報とが一致であると判断されると、PLC2は正常動作可能状態となる。
【0044】
次に、
図6を用いて、プログラムスキャン時におけるPLC2の動作について説明する。スキャン動作が開始すると(S21)、一括出力(S22)及び一括入力(S23)が実行される。ここで、一括出力とは、ラダープログラム(ラダー言語により記述された制御プログラム)にて、設定した出力レジスタの内容を外部機器へ出力することをいい、一括入力とは、外部機器からの入力を入力レジスタへ取り込むことを意味する。そして、各CPUモジュール5a〜5dが動作を開始し(S24)、まず、各CPUモジュールの接続状態と定義情報との一致/不一致が確認される(S25)。各CPUモジュールの接続状態と定義情報との一致/不一致の確認プロセスについては、
図5において説明した通りである。
【0045】
各CPUモジュールの接続状態と定義情報とが一致していると判断されると、制御プログラム(例えば、ラダー言語によって記述されている。)Pの解析が実行され(S26)、制御プログラムPに基づくサーボモータ4の動作制御が行われる。ここで、メインCPUに設定されたCPUモジュールのクロック信号がサブCPUに設定されたCPUモジュールへと送信され、サブCPUは、そのメインCPUのクロック信号に同期しつつ動作する。
【0046】
次に、
図7を用いて、PLC2のデータバックアップの手順について説明する。データ通信ポート2aにUSBメモリ(外部記憶装置)が接続され(S31)、USBメモリとのデータ通信要求信号を受信すると(S32)、PLC2は、まず、各CPUモジュールの接続状態と定義情報との一致/不一致を確認する(S33)。各CPUモジュールの接続状態と定義情報との一致/不一致の確認プロセスについては、
図5において説明した通りである。
【0047】
各CPUモジュールの接続状態と定義情報とが一致していると判断されると、PLC2からUSBメモリへのデータバックアップ(PLC2からのデータ読み出し)とUSBメモリからPLC2へのデータロード(PLC2へのデータ書き込み)が許可される(S34)。一方、各CPUモジュールの接続状態と定義情報とが不一致であると判断されると、PLC2からのデータ読み出しのみが許可され、PLC2へのデータ書き込みは許可されない(S35)。
【0048】
次に、
図8を用いて、エンジニアリングツール(プログラム編集アプリケーション)を用いた制御プログラムPの編集手順について説明する。データ通信ポート2aにエンジニアリングツールを有するPCが接続され(S41)、PC側から編集コマンドを受信すると(S42)、PLC2は、まず、各CPUモジュールの接続状態と定義情報との一致/不一致を確認する(S43)。各CPUモジュールの接続状態と定義情報との一致/不一致の確認プロセスについては、
図5において説明した通りである。
【0049】
各CPUモジュールの接続状態と定義情報とが一致していると判断されると、エンジニアリングツールによるPLC2からPCへのデータ読み出し、PCからPLC2へのデータ書き込みのいずれもが許可される(S44)。一方、各CPUモジュールの接続状態と定義情報とが不一致であると判断されると、PLC2からのPCへのデータ読み出しのみが許可され、PLC2へのデータ書き込みは許可されない(S45)。
【0050】
[実施形態2]
図9は、実施形態2に係るPLC2の概略構成を示すブロック図である。このPLC2は、複数のCPUラックR1〜R3を有している。各々のCPUラックR1〜R3が各々IFユニットF1〜F3、電源モジュール10、CPUモジュール5、オプションモジュール6を有している。
図9では、CPUラックR1が1つのCPUモジュール5aを、CPUラックR2が1つのCPUモジュール5cを、CPUラックR3が1つのCPUモジュール5dを有している。CPUモジュール5a,5c,5dは、同一の構成を有している。
【0051】
図10は、CPUラックR1において、IFユニットF1に接続されたCPUモジュール5aの概略構成を示すブロック図である。CPUモジュール5aでは、メモリ8a内部に判別ビット12aを有している。判別ビット12aの構成及び機能は、実施形態1にて説明したものと同様である。CPUモジュール5aでは、IFユニットF1がスレーブラック拡張モジュール11を有していないので、接続ポート11aの電位状態がOPENな状態となる。したがって、第1電位信号S1によるFPGA7aの接続ポート11bへの入力電位がLowレベルとなり、判別ビット12aは「0」となり、CPUモジュール5a内のCPU13aはメインCPUとして設定される。CPU13aがメインCPUとして設定されると、その設定情報(自身がメインCPUであるとの情報)が定義情報Qaとしてメモリ8a内に格納される。制御プログラムPの実行の際には、メインCPUとしてのCPUモジュール5aの動作クロック信号がプログラム実行の基準クロック信号となる。
【0052】
CPUラックR2において、IFユニットF2はスレーブラック拡張モジュール11を有している。したがって、CPUモジュール5cはサブCPUとして設定される。CPUラックR3において、IFユニットF3はスレーブラック拡張モジュール11を有している。したがって、CPUモジュール5d内のCPU13dはサブCPUとして設定される。このCPUラックR2,R3において、CPUモジュール5c,5dがサブCPUとして設定されるプロセスは、実施形態1におけるCPUラックR2及びCPUモジュール5cについての説明、並びに
図4において説明したものと同様であるので、詳細な説明を省略する。制御プログラムPの実行の際には、サブCPUとしてのCPUモジュール5cの動作クロック信号は、受け取ったメインCPUとしてのCPUモジュール5aからのクロック信号に同期する。
【0053】
[実施形態3]
図11は、実施形態3に係るPLC2の概略構成を示すブロック図である。このPLC2は、複数のCPUラックR1〜R3を有している。各々のCPUラックR1〜R3が各々IFユニットF1〜F3、電源モジュール10、CPUモジュール5、オプションモジュール6を有している。
図11では、CPUラックR1が2つのCPUモジュール5a,5bを、CPUラックR2が2つのCPUモジュール5c,5dを、CPUラックR3が2つのCPUモジュール5e,5fを有している。CPUモジュール5a〜5fは、同一の構成を有している。
【0054】
CPUラックR1においては、IFユニットF1がスレーブラック拡張モジュール11を有していないので、CPUモジュール5a内のCPU13aがメインCPUとして設定される。また、メインCPUであるCPUモジュール5aに接続されたCPUモジュール5b内のCPU13bがサブCPUとして設定される。これらの設定プロセスについては、実施形態1におけるCPUラックR1及びCPUモジュール5a,5bについての説明、並びに
図3において説明したものと同様であるので、詳細な説明を省略する。制御プログラムPの実行の際には、メインCPUとしてのCPUモジュール5aの動作クロック信号がプログラム実行の基準クロック信号となる。そして、サブCPUとしてのCPUモジュール5bの動作クロック信号は、メインCPUとしてのCPUモジュール5aからのクロック信号に同期する。
【0055】
図12は、CPUラックR2において、IFユニットF2に接続されたCPUモジュール5cの概略構成を示すブロック図である。CPUモジュール5cでは、メモリ8c内部に判別ビット12cを有している。判別ビット12cの構成及び機能は、実施形態1にて説明したものと同様である。CPUモジュール5cでは、IFユニットF2がスレーブラック拡張モジュール11を有しているので、接続ポート11eの電位状態がVccレベルとなる。したがって、第1電位信号S1によるFPGA7cの接続ポート11fへの入力電位がHighレベルとなり、判別ビット12cは「1」となり、CPUモジュール5c内のCPU13cはサブCPUとして設定される。CPU13cがサブCPUとして設定されると、その設定情報(自身がサブCPUであるとの情報)が定義情報Qcとしてメモリ8c内に格納される。制御プログラムPの実行の際には、サブCPUとしてのCPUモジュール5cの動作クロック信号は、メインCPUとしてのCPUモジュール5aからのクロック信号に同期する。
【0056】
CPUモジュール5cは出力ポート11gを有している。出力ポート11gから出力される第2電位信号S2の電位状態(所定の電位状態)は、Vccとされている。CPUモジュール5dは内部にFPGA7dを有しており、出力ポート11gは、FPGA7dの接続ポート11hに接続される。出力ポート11gの電位状態がVccレベルであるので、接続ポート11hへ入力される第2電位信号S2の電位状態はHighレベルとなる。
【0057】
CPUモジュール5dでは、メモリ8d内部に判別ビット12dを有している。判別ビット12dの構成及び機能は、判別ビット12aと同様である。CPUモジュール5dでは、FPGA7dの接続ポート11hへ入力される第2電位信号S2の電位状態がHighレベルであるので、判別ビット12
dは「1」となり、CPUモジュール5d内のCPU13dはサブCPUとして設定される(サブCPUとしてのCPUモジュール5cに従属的に接続されたサブCPUであるので、サプCPUとしてのCPUモジュール5cと区別するためにサブ−サブCPUという場合もある。)。CPU13dがサブCPUとして設定されると、その設定情報(自身がサブCPUであるとの情報)が定義情報Qdとしてメモリ8d内に格納される。制御プログラムPの実行の際には、サブCPUとしてのCPUモジュール5dの動作クロック信号は、メインCPUとしてのCPUモジュール5aからのクロック信号に同期する。
【0058】
なお、CPUラックR3におけるCPUモジュール5e内のCPUもCPUラックR2におけるCPUモジュール5c内のCPU13cと同様に、サブCPUとして設定される。また、CPUラックR3におけるCPUモジュール5f内のCPUもCPUラックR2におけるCPUモジュール5d内のCPU13dと同様に、サブCPU(サブ−サブCPU)として設定される。これらの構成及び設定プロセスは、この実施形態3におけるCPUラックR3についての説明及び
図12において説明したものと同様であるので、詳細な説明を省略する。
【0059】
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、その要旨の範囲内で様々な変形や変更が可能である。