以下、本発明の実施形態にかかるネットワークシステムについて図面を用いて説明する。
図1は、本発明を適用した起動装置121を用いて構成するシステム例である。この図において、中央管理装置120は、ネットワーク122を介して起動装置121と接続し、通信する。中央管理装置120と起動装置121の通信内容としては、中央管理装置120から起動装置121に対する動作指示や各種の設定が例示され、また、起動装置121の動作結果や状態を中央管理装置120が取得することが例示される。
計算機で構成された起動装置121は、計算機で構成された中央管理装置120の動作指示をもとに、ネットワーク123を通じて制御対象124を制御する。制御対象124として、各種のセンサや、各種のアクチュエータが例示される。図1では、一つの中央管理装置120と複数の起動装置121が接続している。またネットワークは、上位ネットワーク122と下位ネットワーク123を有する例を示している。
上位のネットワーク122として、図1ではIEEE802.3を想定する。なお、図1中にはネットワークスイッチを図示しているが、ネットワーク122によってトポロジやネットワークの構成要素は異なる。
下位の制御用ネットワーク123として、図1ではIEEE802.3を想定する。制御対象124を制御することから、制御用ネットワーク123は、各種制御用通信、IEC61158で定義される産業用Ethernet(登録商標)の適用が望ましい。なお、複数の起動装置121に接続する制御用ネットワーク123は、同じ番号を割り当てているが、異なる通信規格であってもよい。
図2は、本発明を適用した起動装置121のハードウェア構成の一実施形態である。CPU101は、不揮発性記憶媒体109からプログラムをメモリ108に転送して実行する。実行処理プログラムとしては、オペレーティングシステム(以下、OSと称す)やOS上で動作するアプリケーションプログラムが例示される。
上位接続通信部102は、CPU101上で動作するプログラムから通信要求を受け取り、ネットワーク122と通信する。上位接続通信部102の実装例としては、FPGA(Field−Programmable Gate Array)、CPLD(Complex Programmable Logic Device)、ASIC(Application Specific Integrated Circuit)、ゲートアレイ、IEEE802.3のMAC(Media Access Control)層の処理IC、PHY(Physical)層の処理IC、MAC、PHYの一体型ICが例示される。なお、通信機能の一部がCPU101に含まれていてもよい。
下位接続通信部103は、制御用ネットワーク123との通信機能を実装した送受信機ICである。下位接続通信部103の実装例としては、FPGA、CPLD、ASIC、ゲートアレイ、IEEE802.3のMAC層の処理IC、PHY層の処理IC、MAC、PHYの一体型ICが例示される。なお、通信機能の一部がCPU101に含まれていてもよい。
なお、接続するネットワークが、ネットワーク122か制御用ネットワーク123かの違いによって、上位接続通信部102と下位接続通信部103を区別しているが、これは便宜上の呼称であって、同一の通信規格であってもよい。
メモリ108は、CPU101が動作するための一時的な記憶領域であり、不揮発性記憶媒体109から転送したOS、アプリケーションプログラム等が格納される。
不揮発性記憶媒体109は、情報の記憶媒体で、OS、アプリケーション、デバイスドライバ等の起動イメージや、CPU101を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。不揮発性記憶媒体109として、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)、フラッシュメモリが例示される。また、取り外しが容易な外部記憶媒体として、フロッピーディスク(登録商標:FD)、CD、DVD、ブルーレイ(登録商標)、USBメモリ、コンパクトフラッシュ(登録商標)等の利用が例示される。
バス110は、CPU101、メモリ108、不揮発性記憶媒体109、上位接続通信部102、下位接続通信部103をそれぞれ接続する。バス110としては、PCIバス、ISAバス、PCI Expressバス、システムバス、メモリバス等が例示される。
本発明を適用した起動装置121の起動処理に関連するプログラムの構成を図3に示す。各プログラムの詳細な処理内容は後述する。ここでははじめに各処理の概要を示すに留める。
起動プログラム130は、起動装置121の起動時(電源オン時、あるいはCPU101のハードリセット時等)に、最初に起動するプログラムである。起動プログラム130の実体は、CPU101のハードウェアリセット時のアドレスに配置されるIPL(Initial Program Loader)や汎用PC(Personal Computer)のBIOS(Basic Input/Output System)等が例示される。
ネットワークブートプログラム131は、ネットワークブート処理を実行する。ネットワークブートプログラム131は、IPL、BIOS等に含まれる場合もあれば、上位接続通信部102をネットワークカードNICとする構成では、NIC上の不揮発性記憶媒体に含む場合もある。
ネットワークアップロードプログラム132は、起動イメージ134を所定のサーバにアップロードする。ネットワークアップロードプログラム132は、IPLやBIOSとして構成してもよいし、起動イメージ134に含まれるOSの起動処理として構成してもよい。例えば、Linux(登録商標)では、所定の起動処理を起動スクリプトとして設定、動作させることができる。
状態記憶部133は、起動プログラム130の状態遷移における現在の状態を記憶する。状態記憶部133は、電源を切った場合でも、記憶内容を保持しておく必要がある。そのため、他の起動処理に関連するプログラムと同様に不揮発性記憶媒体上に構成する必要がある。従って、図2の不揮発性記憶媒体109を用いてもよいし、EEPROM(Electrically Erasable Programmable Read−Only Memory)等のデバイスを用いてもよい。
起動イメージ134は、OSやアプリケーションプログラムなど、起動処理完了後に定常的に動作するソフトウェアプログラムである。
上位接続通信検知部135は、起動装置121が上位ネットワーク122と通信が確立しているかを検知する。検知方法は、IEEE802.3で規定されるMDI(Management Data Interface)におけるPHY ICの状態レジスタのリンクステータスを用いる方法や、PHY ICで一般的に用いられるLED点灯用の出力信号を用いる方法が例示される。
次に、起動処理に関する各プログラムの動作について説明する。起動プログラム130を図4に示す。
前述のとおり、起動プログラム130は、起動装置121の電源を入れた後、最初に起動するプログラムである。はじめに図3の状態記憶部133に保持している状態を取得する(処理ステップS001)。次に、取得した状態に応じて、動作を変える(処理ステップS002)。次に初期状態の動作(処理ステップS003)、開発状態の動作(処理ステップS004)、開発完了状態の動作(処理ステップS005)、稼働状態の動作(処理ステップS006)について実行する。これらの詳細は後述する。各動作を実行後、メモリ108に展開されたOS等の起動イメージの起動アドレスから動作を開始し、OS等のプログラムを起動する(処理ステップS007)。
これらの処理によれば、まず状態記憶部133に保持している状態として、初期状態、開発状態、開発完了状態、稼働状態に区分して記憶されている。現在の状態がこのどこに当るかによって、次に実行すべき処理(処理ステップS003乃至S006)を決定して逐次実行する。なお、これらの個々の処理完了後には、状態記憶部133に保持している状態を他の段階に変更しておくことで、これらの処理を遂行し、状態の遷移を行う。
まず、起動プログラム(図3の130)のうち、初期状態の動作(図4の処理ステップS003)について以下詳細に説明する。この場合には、図5と図6のいずれかの手法を採用できる。
はじめに図5の手法について説明する。ここではまず、図3の上位接続通信検知部135による検知結果を取得する。処理ステップS010では、この検知結果を基にして、上位接続通信が確立しているかを判断する。
上位通信が確立している場合、処理ステップS011において図3のネットワークブートプログラム131に制御を移して、処理ステップS012ではネットワークブートプログラム131の終了を待機する。ネットワークブート処理の終了時点では、中央管理装置120が有する起動イメージが起動装置121に取り込まれ、起動装置121は起動している。従って、ネットワークブート処理の終了を確認して処理ステップS013では図3の状態記憶部133の状態を稼働状態とする。
処理ステップS010にて、上位接続通信が確立していないとされた場合、処理ステップS014では図3の起動イメージ134を図2のメモリ108の所定領域に展開し、CPU101での演算に供する。この場合起動装置121は、予め自己内部に保有する起動イメージを使用して起動処理を実行することになる。次に処理ステップS015では、図3の状態記憶部133の状態を起動処理の次段階である開発状態とする。
初期状態の動作(図4の処理ステップS003)の詳細処理の代案例を図6に示す。図5との違いは、点線で囲んだ部分である。処理ステップS012の後に、ネットワークブートプログラム131によるネットワーク経由の起動イメージのダウンロードが成功したかどうかを処理ステップS016で判定する。これが失敗した場合、処理ステップS017において起動イメージ134をメモリ108の所定領域に展開する。これによりこの起動装置121は、予め自己内部に保有する起動イメージを使用して起動処理を実行する。なお、処理ステップS017の後に、状態を稼働状態としているが、状態を設定せずにそのまま終了してもよい。この場合、状態記憶部133の状態は初期状態のままである。
次に、起動プログラム(図3の130)のうち、開発状態の動作(図4の処理ステップS004)について以下詳細に説明する。この場合には、図7、図8、図9、図10のいずれかの手法を採用できる。
まず、図7での処理について説明する。ここでははじめに、図3の上位接続通信検知部135による上位接続通信が確立しているかの検知結果を処理ステップS020で取得し、この結果を判断する。
上位通信が確立している場合、処理ステップS021では図3のネットワークアップロードプログラム132に制御を移し、処理ステップS022においてネットワークアップロードプログラム132の終了を待機する。これらの処理によって、図3のネットワークアップロードプログラム132が作動して、開発物である起動イメージ134を自動で中央管理装置120に転送することができる。この起動イメージは、起動装置121内で作成され、ここに保有されていたものである。
その後、ネットワークブートプログラム131に制御を移し(処理ステップS023)、処理ステップS024でネットワークブートプログラム131の終了を待機する。これにより起動装置121は、中央管理装置120から起動イメージを得る。このときの起動イメージは、先に送付した開発物である起動イメージ134であり、これにより起動装置121と中央管理装置120に保有する起動イメージの同期が図られる。その終了後に、図3の状態記憶部133の状態を開発完了状態に設定する(処理ステップS025)。
処理ステップS020において上位接続通信が確立していなければ、処理ステップS026において図3の起動イメージ134を図2のメモリ108の所定領域に展開する。この起動イメージは起動装置121内に保有されていたものである。
開発状態の動作(処理ステップS004)の詳細の別の例を図8に示す。図8における図7との違いは、点線で囲んだ部分である。処理ステップS022の後にネットワークアップロードプログラム132による起動イメージのアップロードが成功したかどうかを判定し(処理ステップS027)、アップロードが失敗した場合は、起動イメージ134をメモリ108の所定領域に展開する(処理ステップS026)。この起動イメージは起動装置121内に保有されていたものである。
開発状態の動作(処理ステップS004)の詳細の別の例を図9に示す。図9における図7との違いは、点線で囲んだ部分である。処理ステップS025の後にネットワークブートプログラム131によるネットワーク経由の起動イメージの取得が成功したかどうかを判定(処理ステップS028)する。これが失敗した場合は、起動イメージ134をメモリ108の所定領域に展開する(処理ステップS026)。この起動イメージは起動装置121内に保有されていたものである。
開発状態の動作(処理ステップS004)の詳細の別の例を図10に示す。図10は、図8、図9を組み合わせた動作となる。
次に、起動プログラム(図3の130)のうち、開発完了状態の動作(図4の処理ステップS005)について以下詳細に説明する。この場合には、図11と図12のいずれかの手法を採用できる。
まず、図11での処理について説明する。ここでははじめに、図3の上位接続通信検知部135による上位接続通信が確立しているかの検知結果を取得し、これを確認する(処理ステップS030)。
上位接続通信が確立している場合、図3のネットワークブートプログラム131に制御を移し(処理ステップS031)、ネットワークブートプログラム131の終了を待機する(処理ステップS032)。ネットワークブート処理の終了により、図3の状態記憶部133の状態を稼働状態に設定する(処理ステップS033)。
処理ステップS030にて、上位接続通信が確立していなければ、図3の起動イメージ134を図2のメモリ108の所定領域に展開する(処理ステップS034)。そして、図3の状態記憶部133の状態を開発状態に設定する(処理ステップS035)。
開発完了状態の動作(処理ステップS005)の詳細の別の例を図12に示す。図12における図11との違いは、点線で囲んだ部分である。処理ステップS033の後にネットワークブートプログラム131によるネットワーク経由の起動イメージのダウンロードが成功したかどうかを判定し(処理ステップS036)、これが失敗した場合は起動イメージ134をメモリの所定領域に展開する(処理ステップS037)。
次に、起動プログラム(図3の130)のうち、稼動状態の動作(図4の処理ステップS006)について以下詳細に説明する。この場合には、図13から図16のいずれかの手法を採用できる。
まず、図13での処理について説明する。ここでははじめに、図3の上位接続通信検知部135による上位接続通信が確立しているかの検知結果を取得し確認する(処理ステップS040)。上位接続通信が確立している場合、図3のネットワークブートプログラム131に制御を移す(処理ステップS041)。そして、ネットワークブートプログラム131の終了を待機する(処理ステップS042)。
処理ステップS040にて、上位接続通信が確立していなければ、図3の起動イメージ134を図2のメモリ108の所定領域に展開する(処理ステップS043)。そして、状態記憶部133の状態を稼働状態に設定する(処理ステップS044)。
稼働状態の動作(処理ステップS005)の詳細の別の例を図14に示す。図14における図13との違いは、点線で囲んだ部分である。処理ステップS042の後にネットワークブートプログラム131によるネットワーク経由の起動イメージの取得が成功したかどうかを判定し(処理ステップS045)、これが失敗した場合は起動イメージ134をメモリの所定領域に展開する(処理ステップS046)。
稼働状態の動作(処理ステップS005)の詳細の別の例を図15に示す。図15における図13との違いは、点線で囲んだ部分である。処理ステップS042の後に、ネットワークブートプログラム131によるネットワーク経由で取得した起動イメージで、起動イメージ134を上書きする(処理ステップS047)。
稼働状態の動作(処理ステップS005)の詳細の別の例を図16に示す。図16は、図14、図15を組み合わせた動作を示す。
図3の起動プログラムに関連する処理には、ネットワークブートプログラム131、またはネットワークアップロードプログラム132の処理の成功、失敗の判定処理を行う部分がある。これらは例えば、図5、6、7、8、9、10、11、12、14、16の手順中において必要となる。
この判定処理の具体的な処理手法事例としては、TFTPに従い、エラーコードを示すパケットを受信した場合に失敗と判定する方法や、所定期間応答がない場合等の通信が成立しなかった場合に失敗と判定する方法が挙げられる。一方で、TFTPに従い、所定サイズのデータ転送が完了して確認応答(ACK)コードを示すパケットを受信した場合に成功と判定する方法が挙げられる。
また図3の起動プログラムに関連する処理には、ネットワークアップデート、ネットワークブートの成功、失敗という判定結果を外部に通知する部分がある。これらは例えば、図5、6、7、8、9、10、11、12、14、16の手順中において必要となる。
この具体的な実現手段としては、LED、LCD、ディスプレイ、アラーム音等の手段を用いて外部に通知する方法が例示される。あるいは、状態記憶部133に判定結果を記憶し、起動後のソフトウェア上から判定結果を取得できるようにする構成や、予め設定したメールアドレスに電子メールで通知してもよい。
また、図3の起動プログラムに関連する処理には、失敗に対するリトライ処理を行う部分がある。これらは例えば、図5、6、7、8、9、10、11、12、14、16の手順中において必要となる。
この処理に関し、ネットワークブートプログラム131、あるいはネットワークアップロードプログラム132の処理結果が失敗と判定した場合に、再度、ネットワークブートプログラム131、ネットワークアップロードプログラム132に制御を移し、再試行してもよい。このとき、所定回数、試行が失敗だった場合に、従来の失敗と判定した後の処理を実行することが例示される。
また、図3の起動プログラムに関連する処理には、失敗した場合のプロンプトに関する部分がある。これらは例えば、図5、6、7、8、9、10、11、12、14、16の手順中において必要となる。
この処理に関し、ネットワークブートプログラム131、あるいはネットワークアップロードプログラム132の処理結果が失敗と判定した場合に、所定のタイムアウト期間をもうけ、その所定期間内に入力装置による入力があれば、その後の処理を継続し、入力がなければ、起動せずに終了してもよい。タイムアウト期間は固定値でもよいし、ソフトウェア上から設定可能としてもよい。この場合、起動プログラムは、CPLD、FPGA等のユーザ論理IC上に実装し、入力装置の入力を取得できる構成が例示される。入力装置として、起動装置121上にプッシュスイッチ、トグルスイッチ、DIP(Dual In−line Package)スイッチ等の各種スイッチを設けることやキーボードが例示される。
また、起動プログラムから他のプログラムへの制御の移し方についても考慮すべきである。このための具体的手法として、一般的なCPUに定義されているジャンプ命令やコール命令、リターン命令を用いる方法が例示される。
ジャンプ命令は所定アドレスに制御を移す命令であり、引数に起動処理に関連するプログラムの先頭アドレスを指定すればよい。コール命令は、指定の関数へ制御を移す命令である。コール先の関数のアドレスは、コンパイラ等によって解釈される。起動処理に関連するプログラムが終了した場合は、ジャンプ命令やリターン命令を使用し、起動プログラム130に戻る方法を例示する。ジャンプ命令の場合は、戻り先のアドレスを指定する。リターン命令は、コール命令実行時にスタックに設定されたアドレスに制御を移す。
以上が、図3の起動プログラム130の説明である。ここまで多様なプログラム処理について説明をしてきたが、ここでは、起動装置121の電源投入後の状態が如何なるものであれ、同じ対応を実施している。
つまり中央管理装置120と起動装置121の関係において、起動装置121の電源投入後に中央管理装置120との通信が確立しているのであれば起動装置121は中央管理装置120から起動イメージを入手して起動する。通信が確立していないのであれば起動装置121は自己が保有する起動イメージで起動する。
続いて、図3のネットワークブートプログラム131の動作について具体的に説明する。ネットワークブートプログラム131を図17に示している。
ここで、ネットワークブートプログラム131は、プレブート実行環境規格PXEにしたがってネットワークブートすることが一般的である。この場合はじめに、図3のネットワークブートプログラム131は、処理ステップS050においてIPアドレスを所定のサーバから取得する。この時、IPアドレスを取得するために、動的ホスト構成プロトコルDHCPを用いるのが一般的である。
そして処理ステップS051で、起動イメージを提供するブートサーバの情報を取得する。ここで取得するブートサーバの情報としては、ブートサーバの接続情報、起動イメージのファイル名等である。
処理ステップS052では、これらの情報をもとにネットワークブートプログラム131は、ブートサーバから起動イメージを取得する。起動イメージを取得する通信プロトコルとしてTFTPが例示される。
処理ステップS053では、起動イメージを取得した後、図2のメモリ108に展開する。
なお、IPアドレスを割り当てるサーバとブートサーバを別として説明しているが、同じサーバとして構成してもよい。図1の構成では、中央管理装置120は、DHCPサーバ、ブートサーバとして構成している。
なお、図17の実施に当り、更に以下のような変更、改変、代案を採用可能である。処理ステップS050において、起動装置121のIPアドレスを静的に決定している場合は、処理ステップS050の手順を省略してもよい。
処理ステップS051において、中央管理装置120のIPアドレス、起動イメージのファイル名等を静的に決定し、ブートサーバの情報を取得する必要がない場合は、処理ステップS051の手順を省略してもよい。
起動イメージの取得をメモリ108への展開を処理ステップS052、処理ステップS053と段階を分けて説明したが、所定ブロックサイズにわけて処理ステップS052、処理ステップS053を繰り返し実行してもよい。つまり、所定ブロックサイズをネットワークで経由した後に、メモリ108へと展開し、再度、所定ブロックサイズをネットワークで取得する。起動イメージ全体を取得するまで、これらの処理を繰り返し実行する。
図15、16に示す手順の処理ステップS047において、起動イメージ134を上記処理ステップS052で取得した起動イメージで上書きしているが、この処理も同様に、ブロックサイズ毎に起動イメージ134を上書きしてもよい。
次に、ネットワークブートプログラム131を用いて中央管理装置120から取得した起動イメージにより、起動装置内OSを起動する処理を図18に示す。図18には、図17の処理ステップS053の後に、処理ステップS054が追加されている。処理ステップS054では、メモリ108に展開されたOS等の起動イメージの起動アドレスから動作を開始し、OS等のプログラムを起動する。
図17、図18の処理の具体的な実行に際して、さらに以下の点を考慮し、或いは工夫するのがよい。
図17、図18の処理では、以後起動プログラム130に動作が戻らない。このため、起動プログラム130の動作において、ネットワークブートプログラム131の動作前に状態記憶部133の状態を更新する方法が例示される。
また、図6、9、10、12、14、16の処理において、ネットワークブートプログラム131の成功、失敗を判定するため、ネットワークブートプログラム131の処理結果を所定の位置に記憶する。処理結果の記憶先として、状態記憶部133でもよい。
記憶する結果は、ネットワークブートプログラム131の処理が成功したか失敗したかを示す真理値の他に、失敗した処理とその失敗要因も含めて記憶するのがよい。
失敗した処理の例としては、IPアドレスの取得処理、起動イメージの取得処理、起動イメージの所定ブロック処理等が挙げられる。失敗要因としては、タイムアウトを含む通信の失敗、通信プロトコルに依存した失敗要因、起動イメージが存在しない、起動イメージの容量が不適切(過剰に大きい、過剰に小さい等)、不正な起動イメージファイル名であるといった起動イメージの取得に関する要因や、メモリ108の容量不足といった原因が例示される。
また、起動プログラム130が必要とする情報は、成功か失敗かのみであるが、他の情報をもとに対応処理を変更することができる。例えば、失敗した処理が起動イメージの取得である場合は、再度ネットワークブートプログラム131を実行して、IPアドレスの取得処理を省略してもよい。
さらに、起動イメージによるOSの起動後に失敗要因を取得して、対策を取ることができる。例えば、起動イメージの容量が大きい場合は、メモリ108の容量を大きくする対策や、中央管理装置120の起動イメージを縮小する対策が例示される。
なお、これらの処理結果は、ソフトウェアから消去できるように構成してもよいし、起動プログラム130の実行時の最初(図4の処理ステップS001の前)に消去してもよい。
次に、図3のネットワークアップロードプログラム132を図19に示す。ここでははじめに、ネットワークブートプログラム131と同様にIPアドレスを取得する(処理ステップS060)。
次にブートサーバ(中央管理装置120)の情報を取得する(処理ステップS061)。ここでは、図17の処理ステップS052と同様にPXE仕様の枠組みで取得する方法が例示される。これはシステムの運用方法として、ブートサーバと中央管理装置120を同じとし、図17の処理ステップS052と同様に、プレブート実行環境規格PXE仕様の枠組みで取得することを前提とする。あるいは、中央管理装置120のIPアドレスを静的に決定し、利用する方法が例示される。
最後に、起動装置121自身が保有する起動イメージ134を中央管理装置120に送信する(処理ステップS062)。
なお、図8、10において、ネットワークアップロードプログラム132の成功、失敗を判定するため、ネットワークアップロードプログラム132の処理結果を所定の位置に記憶する。処理結果の記憶先として、状態記憶部133でもよい。
記憶する結果は、ネットワークアップロードプログラム132の処理が成功したか失敗したかを示す真理値の他に、失敗した処理とその失敗要因が例示される。
失敗した処理の例としては、IPアドレスの取得処理、起動イメージの取得処理、起動イメージの所定ブロック処理等が挙げられる。失敗要因としては、タイムアウトを含む通信の失敗、通信プロトコルに依存した失敗要因、起動イメージが存在しない、起動イメージの容量が不適切(過剰に大きい、過剰に小さい等)、不正な起動イメージファイル名であるといった起動イメージの取得に関する要因や、メモリ108の容量不足といった原因が例示される。
また、起動プログラム130が必要とする情報は、成功か失敗かのみであるが、他の情報をもとに対応処理を変更することができる。例えば、失敗した処理が起動イメージの取得である場合は、再度ネットワークアップロードプログラム132を実行して、IPアドレスの取得処理を省略してもよい。
さらに、起動イメージによるOSの起動後に失敗要因を取得して、対策を取ることができる。例えば、起動イメージの容量が大きい場合は、メモリ108の容量を大きくする対策や、中央管理装置120の起動イメージを縮小する対策が例示される。なお、これらの処理結果は、ソフトウェアから消去できるように構成してもよいし、起動プログラム130の実行時の最初(図4の処理ステップS001の前)に消去してもよい。
なお、図19において、中央管理装置120が複数の起動装置121と接続し、かつ、起動装置121毎に起動イメージを区別して管理する場合は、起動イメージの更新場所を起動装置121毎に管理する必要がある。具体的には、起動装置121のIPアドレス毎に起動イメージの更新場所を区別する。処理ステップS061において、プレブート実行環境規格PXE仕様に基づいて、ブートサーバ(中央管理装置120)の情報を提供する場合は、ファイル名を起動装置121ごとに変更する方法が例示される。このとき、起動装置121は、中央管理装置120から提示されたファイル名で起動イメージを中央管理装置120に送信する。
次に図3の状態記憶部133について説明する。状態記憶部133は、起動プログラム130の動作を制御する状態を記憶する。状態には、初期状態、開発状態、開発完了状態、稼働状態がある。
またこれらの状態は、状態遷移する。状態記憶部133の管理する状態遷移を図20に示す。
図20に示す状態遷移の動作は、図5、6、7、8、9、10、11、12、13、14、15、16で説明したとおりである。このため、遷移についての詳細説明を割愛するが、参考までに遷移を決定している処理ステップを記述している。なお、開発状態から開発完了状態に遷移する条件(処理ステップS025)において、「起動イメージの更新が成功」は、図8、10で説明した動作の場合に有効である。
なお状態の表現方式は、4ビットで、各ビットを状態に割り当て、排他的に1にする方式が例示される。例えば、ビット0を初期状態、ビット1を開発状態、ビット2を開発完了状態、ビット3を稼働状態と定義する。一例として、0010(2進数)は開発状態を表す。あるいは、所定の値を各状態に割り当てる方式が例示される。例えば、0を初期状態、1を開発状態、2を開発完了状態、3を稼働状態と定義する。
また状態記憶部133を不揮発性記憶媒体、あるいは外部記憶媒体で構成する場合に、図20の状態遷移による設定ではなく、ソフトウェア等から、明示的に所定の値を設定できるように構成してもよい。
以上詳細に説明した本発明により、ネットワークで接続された製造装置の保守、開発、稼働における課題への効果を説明する。効果の説明に当り、本発明を適用した起動装置を利用して、通常の稼働時では、図1に示す構成で運用するという前提で述べる。
この場合、起動装置121はネットワークブートによる起動が可能となる。そこで、アプリケーションの交換、セキュリティパッチの適用、オペレーティングシステムのバージョンアップ等の定期保守は、中央管理装置120内の起動イメージを更新するだけでよい。そのため、個別の起動装置121内の起動イメージを更新する必要がない。したがって、定期保守が容易になる利点がある。
一方で、起動装置121側で個別にサブシステムを開発する場合は、上位接続通信を検知しないことで開発状態となり、起動装置121内の起動イメージを利用し、起動装置121単独で起動する。したがって、中央管理装置120を必要としない。
また、開発完了時には、図1の構成となるため、起動装置121と中央管理装置120間の通信接続の確立を確認し、開発成果物であるアプリケーションやデバイスドライバを含む起動イメージが自動的に起動装置121から中央管理装置120に送信される。したがって、開発時の工数を低減することができ、開発コストを削減することができる。
これらの起動時の動作の切り替えを上位通信の接続に基づいて、起動プログラム130が自動で切り替えるため、本発明を容易に適用することができる。
次に、所定アドレス、所定命令による開発完了の判定を行う第2の実施例について説明する。ここでは、実施例1と比較して、上位接続ではなく、起動装置121の動作に基づいて開発完了を判定する構成である。実施例に使用する符号は、特に断りのない限り、実施例1で説明した機能や要素等と同一であることを意味する。
本発明を適用した起動装置121を用いて構成するシステム例は図1と同様である。また、起動装置121のハードウェア構成は図2と同様である。
本発明を適用した起動装置121の起動処理に関連するプログラム構成を図21に示す。図3と比較した場合に、新たに追加された起動イメージ更新検知部150は、起動イメージが更新されたかどうかを検知する。検知方法は後述する。
最初に、起動プログラム130を図22に示し、ここでの動作について説明する。
ここでは、はじめに起動イメージ更新検知部150による検知結果を取得する(処理ステップS070)。そして、起動イメージ134が更新されたかどうかを判定する(処理ステップS071)。
起動イメージ134が更新されている場合、ネットワークアップロードプログラム132に制御を移す(処理ステップS072)。そして、ネットワークアップロードプログラム132の終了を待機する(処理ステップS073)。これにより、起動装置121自身が保有する、更新された起動イメージ134を中央管理装置120に送信する。
その後、更新された起動イメージ134をメモリ108の所定領域に展開し(処理ステップS074)、メモリ108に展開されたOS等の起動イメージの起動アドレスから動作を開始し、OS等のプログラムを起動する(処理ステップS075)。
処理ステップS071において、起動イメージ134が更新されていなければ、ネットワークブートプログラム131に制御を移す(処理ステップS076)。そして、ネットワークブートプログラム131の終了を待機する(処理ステップS077)。その後は、処理ステップS075の手順を取る。これにより中央管理装置120からの起動イメージにより起動する。
起動プログラム130の別の例を図23に示す。図22の場合には、更新された起動イメージを起動装置121から中央管理装置120に送り、起動装置121自身は保有する起動イメージで起動した。図23では、更新された起動イメージを起動装置121から中央管理装置120に送り(処理ステップS072,S073)、起動装置121自身は、その後に中央管理装置120から送られた(処理ステップS076,S077)起動イメージで起動することにしている。そのうえで、図23の場合には、処理ステップS071の更新がされていないという条件のときにネットワークブートプログラム131に制御を移し、実行するようにしている。
なお、図22、図23は、上位接続通信検知部135を利用しない場合の動作である。上位接続通信検知部135と組み合わせて利用する場合、図20に示す状態遷移に基づいて起動プログラム130は動作する。このとき、起動イメージ更新検知部150の検知結果を、開発状態における動作に反映させる。
この場合の処理の一例を図24に示す。図24は、開発状態におけるプログラムを示す図7の処理を一部改変している。図24において、点線で示す処理ステップS080,S081が追加部分であり、これにより図7の処理に起動イメージ更新検知部150の検知結果を反映している。
具体的には、処理ステップS020の後に、起動イメージ更新検知部150の検知結果を取得する(処理ステップS080)。そして、起動イメージ134が更新されたかを判定する(処理ステップS081)。起動イメージ134が更新されていない場合は、処理ステップS021、処理ステップS022の処理を省略する。
このようにして、ネットワークアップロードプログラム132に制御を移す前に起動イメージ更新検知部150の検知結果を取得して、起動イメージ134が更新された場合にネットワークアップロードプログラム132に制御を移す。起動イメージ134が更新されていない場合は、起動イメージ134をアップロードする必要がないため、ネットワークアップロードプログラム132の処理を省略する。
次に、起動イメージ更新検知部150の検知方法について説明する。検知方法は、複数考えられ、起動時に起動イメージ更新検知部150が能動的に検知する方法や、OS起動後の稼働時に検知する方法、所定命令の実行の有無によって判定する方法が例示される。以下、具体的に説明する。
例えば、起動イメージ更新検知部150が、ファイルシステムの所定のファイルの情報をもとに起動イメージが更新されたかどうかを判定する方法を図25に例示する。
ここでは予め、判定対象のファイルは設定済みであるとする。判定対象のファイルの設定方法は、起動イメージ更新検知部150がソフトウェアによって設定可能であり、判定対象のファイルパス、あるいはファイルシステムに依存する識別情報によって指定する方法が例示される。
図25は、起動プログラム130から検知結果の取得要求があった際に起動するものとする。はじめに、記憶している更新日時情報が存在するかを判定する(処理ステップS090)。
記憶している更新日時情報が存在すれば、判定対象のファイルの更新日時情報を取得する(処理ステップS091)。そして、取得した更新日時情報が、記憶している更新日時情報より新しいかを判定する(処理ステップS092)。
取得した更新日時情報が、記憶している更新日時情報より新しければ、起動イメージ134は更新されたと判定する(処理ステップS093)。続いて、記憶している更新日時情報を、取得した更新日時情報に更新する(処理ステップS094)。処理ステップS090で、更新日時情報を記憶していない場合も、処理ステップS093、処理ステップS094の手順をとる。
処理ステップS092で、取得した更新日時情報が、記憶している更新日時情報より新しくない場合は、起動イメージ134は更新されていないと判定する(処理ステップS095)。
ここで使用する更新日時情報は、ファイルシステムに依存し、起動イメージが更新されているかどうかを判定可能な分解能が必要である。更新日時情報として、西暦、月、日、時間、分、秒の組み合わせが例示される。
なお、図25は、ファイルの更新日時情報をもとに起動イメージ134が更新されたかを判定したが、更新日時ではなく、ファイルサイズやファイル名等のファイルに関する属性をもとに判定してもよい。例えば、起動イメージ更新検知部150はファイルサイズを記憶しておき、図25の処理ステップS092に相当する処理では、取得したファイルサイズが、記憶しているファイルサイズと異なる場合に起動イメージ134が更新されと判定する方法が例示される。
また、図25は起動時に実行する方法であるが、OS起動後の定期実行処理として構成してもよい。ただし、この場合、図25の処理ステップS094の記憶情報は、起動処理時に更新する必要がある。そうしなければ、起動イメージ134が更新されたと判定された次回の定期処理で起動イメージ134に変化がない場合、起動イメージ134が更新されていないと誤判定する可能性があるためである。
この他に、明示的に起動イメージ134が更新されたことを起動イメージ更新検知部150に設定する専用のプログラムを開発し、利用する方法が例示される。起動イメージ更新検知部150の記憶部分を不揮発性記憶媒体109上に構成し、OS起動後に、専用プログラムを用いて、起動イメージ更新検知部150に、起動イメージ134が更新されたことを示す所定値を設定する。設定された値を消去するタイミングは、起動時に起動プログラム130から取得要求があった際が考えられる。
なお、設定する方法は、専用プログラムの他に、プロセッサの専用命令で構成する方法や、FPGA、CPLDで制御レジスタを設け、ソフトウェアから所定値を書き込まれた場合に起動イメージ更新検知部150が起動イメージ134が更新されたと判定する方法が例示される。
また、起動イメージ134が更新されたことを検知する別の方法として、CPU101、あるいはCPU101上で動作するソフトウェアの動作を監視し、所定の条件に合致した場合に起動イメージ134が更新されたと判定する方法が挙げられる。CPU101の動作例としては、ストア命令やCPU101からみて、外部の記憶媒体(不揮発性記憶媒体109等)に対する書込み命令や、アクセス先のアドレスと組み合わせて条件とすることが例示される。
CPU101の動作を取得する方法としては、バウンダリスキャンテストやJTAG(Joint Test Action Group)を用いる方法が例示される。CPU101ではなく、FPGAやCPLD内部にプロセッサコアを実装し、特定条件の命令が実行されたかどうかを判定する論理を構成してもよい。
これらの条件の一致をもって、起動イメージ更新検知部150を構成する不揮発性記憶媒体109上に起動イメージ134が更新されたことを示す所定値を記憶する。あるいは、ファイルシステム、OSカーネル、デバッグツールで所定の動作(所定のファイル操作等)を実行した場合に起動イメージ134が更新されたと判定して、不揮発性記憶媒体109上に記憶する方法が例示される。
これは、OSカーネル、ファイルシステム等のソースコードを変更して実現してもよいし、OSカーネル、ファイルシステム、デバッグツール等のソフトウェアがフックを用意していれば、それを用いて構成してもよい。フックは、特定の動作時にユーザが所定の独自処理を追加できる仕組みである。
以上の実施例2により、実施例1と比較して、起動イメージ更新検知部150を有することにより、より適切に起動イメージが更新されたかを判定することができる。実施例1の効果に加え、開発完了時に単に上位接続の有無だけでなく、起動イメージ134が更新されたかどうかを判定することで、起動イメージ134が更新されていない場合はアップロードを実行しない。こうすることで無駄な通信を避けることができ、ネットワーク帯域を効率的に利用することができる。
次に、起動イメージのバージョン比較を行うことについて説明する。
第3の実施例は、実施例1、実施例2と比較して、起動装置121と中央管理装置120の起動イメージのバージョン番号を比較することで、ネットワークブート、ネットワークアップデートの実行を制御する構成である。実施例に使用する符号は、特に断りのない限り、実施例1、実施例2で説明した機能や要素等と同一であることを意味する。
本発明を適用した起動装置121を用いて構成するシステム例は図1と同様である。また、起動装置121のハードウェア構成は図2と同様である。
本発明を適用した起動装置121の起動処理に関連するプログラム構成を図26に示す。第1の実施例の起動処理に関連するプログラム構成を示す図3に起動イメージバージョン比較部160を追加した構成になっている。
起動イメージバージョン比較部160は、中央管理装置120と通信し、起動装置121が保有する起動イメージ134と、中央管理装置120の起動イメージのバージョンを比較する。
実施例3の場合の起動プログラム130を図27に示す。
はじめに、起動イメージバージョン比較部160による比較結果を取得する(処理ステップS100)。そして、中央管理装置120の起動イメージのバージョン番号(Aとする)と起動装置121自身が保有する起動イメージ134のバージョン番号(Bとする)の比較結果に応じて動作を変更する(処理ステップS101)。但し、ここでは、バージョン番号が大きな数字の方が、起動イメージも新しいものとする。
AがBより大きい場合は、中央管理装置120の起動イメージ134の方が新しいため、起動装置121の起動イメージ134を中央管理装置120にアップロードする必要はない。中央管理装置120の起動イメージ134で起動装置121が起動すればよい。つまりネットワークブート処理を行えばよい。このため、ネットワークブートプログラム131に制御を移す(処理ステップS102)。そして、ネットワークブートプログラム131の終了を待機する(処理ステップS103)。
なお、処理ステップS103の後に、ネットワークブートプログラム131によるネットワーク経由で取得した起動イメージで、起動イメージ134を上書きしてもよい。
処理ステップS101において、BがAより大きい場合は起動装置121の起動イメージ134の方が新しいため、中央管理装置120にアップロードする必要がある。したがって、ネットワークアップロードプログラム132に制御を移す(処理ステップS104)。そして、ネットワークアップロードプログラム132の終了を待機する(処理ステップS105)。
その後、起動イメージ134をメモリ108の所定領域に展開し(処理ステップS106)、メモリ108に展開されたOS等の起動イメージの起動アドレスから動作を開始し、OS等のプログラムを起動する(処理ステップS107)。
処理ステップS101において、AとBが等しい場合は、起動装置121の起動イメージ134で起動装置121が起動すればよい。具体的には、処理ステップS105、処理ステップS106の手順を取る。なお、AとBが等しい場合は、ネットワークブートプログラム131によって起動してもよい。その場合は、処理ステップS106ではなく、処理ステップS102に遷移する。
なお、起動イメージバージョン比較部160は、上位接続通信検知部135や図21の起動イメージ更新検知部150と組み合わせて用いてもよい。例えば、ネットワークアップロードプログラム132に制御を移す前に起動イメージバージョン比較部160の比較結果を取得する。
この結果、起動イメージ134のバージョンが中央管理装置120の起動イメージのバージョンよりも大きい場合に、ネットワークアップロードプログラム132に制御を移す。
起動イメージ134のバージョンが中央管理装置120の起動イメージのバージョンよりも大きくない場合は、起動イメージ134をアップロードする必要がないため、ネットワークアップロードプログラム132の処理を省略する。
加えて、ネットワークブートプログラム131に制御を移す前に、起動イメージバージョン比較部160の比較結果を取得して、中央管理装置120の起動イメージのバージョンが起動イメージ134のバージョンよりも大きい場合に、ネットワークブートプログラム131に制御を移す。
中央管理装置120の起動イメージのバージョンが起動イメージ134のバージョンよりも新しくない場合は、ネットワークブートプログラム131の処理を省略する。なお、中央管理装置120の起動イメージのバージョンと、起動イメージ134のバージョンが等しい場合は、起動イメージ134を用いて起動してもよい。
次に、バージョン番号の定義方法について説明する。
バージョン番号の定義方法の一つは、起動イメージの作成、更新日時の情報をバージョン番号とすることである。時間の分解能は、起動イメージの新旧を比較できる程度として、例えば、年、月、日、時、分、秒を用いるものとする。なお、中央管理装置120と起動装置121間でバージョン番号を比較可能とするために、中央管理装置120、起動装置121間で時刻を同期している必要がある。時刻同期の方法としては、NTP(Netwok Time Protocol)、全地球測位システムGPS、IEEE1588等の方法が例示される。
あるいは、起動イメージが作成、更新されるたびに、連番でバージョン番号を定義する方法が例示される。この場合、中央管理装置120と起動装置121間でバージョン番号が連番となるように、相互に通信する方法が挙げられる。
図28に、バージョン番号を連番で設定する方法を示す。図28は、中央管理装置120、起動装置121それぞれで実行する方法である。
はじめに、通信相手の起動イメージのバージョンを取得する(処理ステップS110)。次に、取得した通信相手の起動イメージのバージョンが、自身の有する起動イメージのバージョンより新しいかどうかを判定する(処理ステップS111)。
取得した通信相手のバージョンが、自身のバージョンより新しい場合は、新しく設定する起動イメージのバージョンを、取得したバージョンに1を加えた値とする(処理ステップS112)。なお、自身でバージョンを設定していない場合は、取得した通信相手のバージョンの方が新しいものとする。
処理ステップS111で、取得した通信相手のバージョンが、自身のバージョンより新しくない場合は、自身のバージョンが設定されているかを判定する(処理ステップS113)。自身のバージョンが設定されている場合は、新しく設定するバージョンを、自身のバージョンに1を加えた値とする(処理ステップS114)。
処理ステップS113で、自身のバージョンが設定されていない場合は、新しく設定するバージョンとして1を設定する(処理ステップS115)。
なお、図28で、バージョンを更新する場合は1を加えているが、所定値でもよい。また、図28の方法は、起動装置121と中央管理装置120間で排他的に実行しなければならない。これは、起動装置121と央管理装置120の起動イメージの更新を同時に実行しない運用としてもよいし、ネットワーク上で同期をとる仕組みを用いてもよい。
図28は、中央管理装置120と起動装置121各々でバージョンを決定しているが、中央管理装置120で統一的に決定してもよい。これは、起動装置121でバージョンが必要となった際に中央管理装置120に要求し、中央管理装置120が新しいバージョン番号を発行する方法である。この方法では、全起動装置121の要求を中央管理装置120で管理するため、中央管理装置120、起動装置121のバージョン番号が重複しないように割り当てることができる。
バージョン番号の所在について説明する。割り当てたバージョン番号は、起動イメージ中の所定位置に埋め込む方法や、所定ファイル中に記憶する方法が例示される。バージョン番号を有するファイル名は起動イメージと関連付けた名称にすることが例示される。一例としては、起動イメージのファイル名の拡張子を”.version”等にすることが例示される。あるいは、起動イメージの情報をキー、バージョン番号を値とするデータベースとして構成してもよい。
また、バージョン管理システムと連携して、バージョンの取得、大小を比較してもよい。起動イメージの作成、更新時にバージョン管理システムを登録することで、固有の識別子を起動イメージに割り当てることができる。識別子自体を用いて新旧を比較できる場合もあれば、識別子と日時情報を対応づけて比較してもよい。
この時に、起動イメージバージョン比較部160は、バージョン管理システム対応のソフトウェアの機能を有するものとする。なお、OS起動後の起動スクリプトとして、起動イメージバージョン比較部160を構成し、処理後にシステムを再起動してもよい。
また、バージョン管理システムにおけるタグやブランチと関連付けて、バージョンを比較してもよい。タグとは、バージョン管理における特定のバージョンに対する名称であり、ブランチとは、主流の開発履歴から分岐した開発の履歴である。例えば、タグのみをバージョン比較の対象とすることや、同じブランチ上でのみバージョンを比較する方法が例示される。
以上説明した実施例3により、実施例1、実施例2と比較して、起動イメージバージョン比較部160をそなえることにより、中央管理装置120と起動装置121間での起動イメージの新旧関係を、より適切に判定することができる。
実施例1、2の効果に加え、中央管理装置120の起動イメージが更新されたかどうかを判定することで、ネットワークブートが必要かどうかを判定することができる。
また、起動イメージ134が最新で、ネットワークブートが不要な場合は、実行しない。これにより、無駄な通信を避けることができ、また、中央管理装置120への通信の集中を防止することができ、システム全体で高速な起動が可能となる。
次に起動装置の仮想化を実現する実施例4について説明する。実施例4は、実施例1、実施例2、実施例3と比較して、複数の起動装置121を1つの中央管理装置120に仮想化して集約した構成である。実施例に使用する符号は、特に断りのない限り、実施例1、実施例2、実施例3で説明した機能や要素等と同一であることを意味する。
実施例4の発明を適用したシステム例を図29に示す。ここでは、中央管理装置170は、図1のシステム構成と比較して、ネットワーク122がなくなり、制御対象124で構成される制御用ネットワーク123を制御する起動装置の機能を複数仮想化して搭載する。
このときの中央管理装置170のハードウェア構成を図30に示す。
通信部180は、制御用ネットワーク123との通信機能を実装した送受信機ICである。通信部180の実装例としては、FPGA(Field−Programmable Gate Array)、CPLD(Complex Programmable LogicDevice)、ASIC(Application Specific Integrated Circuit)、ゲートアレイ、IEEE802.3のMAC(Media Access Control)層の処理IC、PHY(Physical)層の処理IC、MAC、PHYの一体型ICが例示される。なお、通信機能の一部がCPU101に含まれていてもよい。
また、制御用ネットワーク123ごとに通信部180を図示しているが、複数の制御用ネットワーク123と通信できるように通信部180を構成してもよい。
中央管理装置170は、複数の制御用ネットワーク123を制御するため、複数の通信部180を有する。通信部180の搭載数は、必要な制御用ネットワーク123の数である。
この場合に、中央管理装置170のCPU101上で動作するソフトウェア構成を図31、または図32に示す。これらの図において、193は仮想化された起動装置である。190は、仮想化起動装置193を管理する仮想化管理ソフトウェアである。さらに図32において200はホストOSであり、201はアプリケーションである。
このうち、仮想化起動装置193は、起動装置121における制御機能をソフトウェアで実現して中央管理装置170内に位置づけた仮想マシンである。仮想化起動装置193内では、例えば、ゲストOS191、アプリケーション192が動作している。また、仮想化通信部194は、仮想化起動装置193内における仮想的な通信部である。
なお、ゲストOS191は、仮想マシン上で動作するOSであり、通常のホストOSと同様の場合もあり、仮想マシン用に最適化されている場合もある。また、アプリケーション192は、制御用ネットワーク123の制御対象124を制御、管理するアプリケーションである。
これに対し、仮想化管理ソフトウェア190は、仮想マシンを動作、管理するためのソフトウェアである。生成する仮想化起動装置193の数は、集約する起動装置121の数である。
仮想化管理ソフトウェア190内の仮想ネットワーク管理部195は、仮想化起動装置193間の通信や、仮想マシンから仮想マシン以外との入出力を管理する。例えば、仮想化起動装置193から、中央管理装置170外部の制御対象124へパケットを送信する際に、仮想化通信部194から送信されたパケットを通信部180から送信する機能を担う。
また、仮想ネットワーク管理部195は、所定の仮想化起動装置193の仮想化通信部194と所定の通信部180を対応づける。これは、特定の制御用ネットワーク123を制御する仮想化起動装置193を特定するためである。
仮想化管理ソフトウェア190内のブートサーバ196は、動的ホスト構成プロトコルDHCP、TFTP(Trivial File Transfer Protocol)を含むブートサーバとしての機能、異なる起動装置毎の起動イメージの管理機能を有する。なお、この機能は仮想化管理ソフトウェア190内ではなく、図32のアプリケーション201で実現してもよいし、あるいは中央管理装置120を仮想マシン(仮想化中央管理装置)として構成して実現してもよい。
図32において、ホストOS200は、通常のOSである。また、アプリケーション201は、ホストOS200上で動作するアプリケーションであり、仮想化管理ソフトウェア190の設定、状態取得機能を含む。
なお、仮想化起動装置193内のソフトウェア構成はゲストOS191を含むが、起動装置121のソフトウェア構成を模擬するため、OSを含まない構成でもよい。
このように構成することで、制御用ネットワーク123と起動装置121を用いて、サブシステムを開発する。サブシステムの開発後は、起動装置121を中央管理装置170に接続することで、開発物となる起動イメージ134を中央管理装置170にアップロードする。通常稼働時は、起動装置121を取り外して、制御用ネットワーク123と接続してシステムを構成する。
次に経路制御部のある構成について説明する。起動装置121の別の構成として、図33に示すハードウェア構成が例示される。この構成を図30と比較すると、経路制御部210が設けられている点で相違する。
図33に示すハードウェア構成を有する起動装置121の場合は、後述するカットスルーモードにより、起動装置121を中央管理装置170に接続していてもよい。この場合のシステム構成を図36に示す。図36の構成では、図29の構成において、起動装置121を中央管理装置170に接続している点で相違する。
図33の経路制御部210は、上位接続通信部102、下位接続通信部103、バス110間の経路を制御する。経路制御部210の実装例としては、FPGA(Field−Programmable Gate Array)、CPLD(Complex Programmable LogicDevice)、ASIC(Application Specific Integrated Circuit)、ゲートアレイ等が例示される。なお、CPU101に含まれていてもよい。
図33の経路制御部210の経路構成を図34、図35に示す。図34は、上位接続通信部102、下位接続通信部103を直接接続するカットスルーモードであり、図35は、上位接続通信部102、下位接続通信部103それぞれがバス110と接続する通常モードである。
図35のバスプロトコル変換部220は、上位接続通信部102、下位接続通信部103それぞれとのバスプロトコルと、バス110のバスプロトコルを変換し、相互に通信可能とする機能部である。
なお、図34のカットスルーモードでの通信遅延を最小化するために、上位接続通信部102、下位接続通信部103はそれぞれPHY ICとして構成することが望ましい。
図34のパケット解析部221は、パケットフォーマットが所定のフォーマット条件に一致するかを判定する。条件の一例としては、所定の位置に所定値のデータを含むこと等が例示される。
モードの切り替えは、バス110経由で設定してもよいし、通信経路上を流れるパケットの内容をパケット解析部が解析して、所定条件に一致した場合に設定してもよい。
図34のカットスルーモードは、単にパケットを通過させるための接続状態であり、通常稼働時に中央管理装置170の仮想化起動装置193によって制御用ネットワーク123を制御する場合を想定している。これは、起動装置121で単にパケットを転送する場合でも、パケット処理遅延がシステム性能に影響を与えることを防止するためである。
図35の通常モードは、起動装置121が制御用ネットワーク123を制御する場合や起動装置121上の起動イメージ134を中央管理装置170にアップロードする場面での利用を想定している。
なお、開発完了時の通常モードにおいて、アップロードが完了するまで、下位接続通信部103の通信機能を無効化してもよい。具体的には、図7の処理ステップS022の後、図8の処理ステップS023の前、図9の処理ステップS022の後、図10の処理ステップS023の前に、下位接続通信部103の通信機能を無効化する。
このようにすれば、アップロードが完了して、仮想化起動装置193が動作する前に、誤ったパケットが下位接続通信部103に接続する制御対象124へと通信されるのを防止することができる。
なお、下位接続通信部103の通信機能は、仮想化起動装置193が所定フォーマットのパケットを送信し、経路制御部210がこれを認識することで、再有効化することが例示される。
次に、モード切り替えのタイミングについて説明する。モード切り替えとして、図20の状態遷移に連動して切り替える方法が例示される。初期状態、開発状態では通常モードとし、開発完了状態、稼働状態でカットスルーモードとする。
あるいは、起動装置121が起動イメージ134をアップロード後、自動的にカットスルーモードに切り替わってもよい。
あるいは、仮想化起動装置193が起動後に起動装置121に対して、カットスルーモードに切り替わるように要求を送信してもよい。仮想化起動装置193の起動イメージ134の起動スクリプトに、経路制御部210のモードを切り替えるプログラムを含めて構成する方法が例示される。また、起動装置121は、そのような要求を受信する通信プログラムが必要である。
あるいは、起動装置121として、IEC61784のパート2で定義されるEtherCAT(登録商標)として、カットスルーモードを構成してもよい。EtherCATスレーブとして構成する場合は、所定のアドレス空間に起動イメージ、起動イメージに関する情報(サイズ等)を配置する。こうすることで、中央管理装置170から起動イメージを取得可能である。
あるいは、図37のように、複数の起動装置121を連結してもよい。システム構成時は、いずれの起動装置121においても通常モードで下位接続通信部103を無効化することにより、各起動装置121中央管理装置120の起動イメージ134を順番に取得することができる。
この順番を中央管理装置170の仮想化起動装置193の構成に利用してもよい。例えば、順番に対応する仮想化起動装置193の起動イメージとしてもよいし、一つの起動イメージ中のアプリケーションの識別子としてもよい。
以上説明した実施例により、他の実施例と比較し、仮想化管理ソフトウェア190を有する中央管理装置170と組み合わせることにより、制御用ネットワーク123を制御する複数の起動装置を一つの中央管理装置170に集約することができる。これにより、他の実施例の効果に加え、システム全体を構築するコストを低減することができる。