以下、本発明に係る実施形態について、図面を参照して説明する。なお、以下では、特許請求の範囲における「電源装置」を「燃料電池装置」として説明するが、「電源装置」は、当該電源装置と通信可能なコントローラ(制御装置)を備えるものであれば、燃料電池装置以外のものであってもよく、例えば、蓄電装置、太陽光発電装置、ガス発電機等であってもよい。
(第1の実施形態)
図1に、本発明の第1の実施形態に係るファームウェア提供システム1の概略構成を示す。ファームウェア提供システム1は、サーバ10と、複数の端末装置と、燃料電池装置(電源装置)30−1〜30−nと、コントローラ(制御装置)40−1〜40−nとを備える。燃料電池装置30−1〜30−n及びコントローラ40−1〜40−nは、それぞれ、同一又は異なる需要家施設に設置される。また、複数の端末装置は、それぞれ、異なる需要家施設毎に設置される燃料電池装置を利用するユーザが利用する端末装置であり、図1の例では、複数の端末装置のうち、燃料電池装置30−1を利用するユーザの端末装置20のみが示されている。
サーバ10は、ネットワーク100及びルータ50−1〜50−nを介して、端末装置20及びコントローラ40−1〜40−nと接続される。サーバ10は、燃料電池装置30−1〜30−n及び燃料電池装置30−1〜30−nにそれぞれ対応するコントローラ40−1〜40−nに、最新のファームウェアを提供する。なお、燃料電池装置30−1〜30−nには、それぞれに対応するコントローラ40−1〜40−nを介して、サーバ10から最新のファームウェアが提供される。
また、サーバ10は、燃料電池装置30−1〜30−n及びコントローラ40−1〜40−nのファームウェアの更新に関するスケジュールを管理する。スケジュールには、各コントローラ40−1〜40−nが、サーバ10から最新のファームウェアのダウンロードをそれぞれ実行する第1日時A−1〜A−nが含まれる。また、スケジュールには、各コントローラ40−1〜40−nが、ファームウェアの更新をそれぞれ実行する第2日時B−1〜B−nが含まれる。
スケジュール管理に関し、サーバ10は、第1日時A−1〜A−nを、サーバ10の一斉送信可能なデータ容量を超えないように、各コントローラ40−1〜40−nにそれぞれ割り当てる。第1日時A−1〜A−nには、各コントローラ40−1〜40−nがダウンロードを実行する日にちが含まれる。例えば、サーバ10は、各コントローラ40−1〜40−nがファームウェアのダウンロードを実行する日にちを分散させることで、サーバ10の一斉送信可能なデータ容量を超えないようにする。
なお、第1日時A−1〜A―nには、各コントローラ40−1〜40−nがファームウェアのダウンロードを開始する時刻である開始時刻と、各コントローラ40−1〜40−nがファームウェアのダウンロードを終了する時刻である終了時刻がそれぞれ含まれる。サーバ10は、例えば、各コントローラ40−1〜40−nのダウンロードの開始時刻及び終了時刻を、それぞれ、各燃料電池装置30−1〜30−nの発電電力が比較的少なくなる時間帯に設定してもよい。例えば、夜間の消費電力が昼間の消費電力と比較して小さくなる需要家施設において、燃料電池装置30−1が負荷追従運転を行っている場合、燃料電池装置30−1の夜間の発電電力は、燃料電池装置30−1の昼間の発電電力と比較して小さくなる。従って、この場合、サーバ10は、コントローラ40−1がファームウェアのダウンロードの開始時刻及び終了時刻を、夜間の時間帯に設定することができる。なお、サーバ10は、コントローラ40−1に対して燃料電池装置30−1の状態情報を要求することで、コントローラ40−1から燃料電池装置30−1の発電電力の情報を取得する。
また、スケジュール管理に関し、サーバ10は、例えば各燃料電池装置30−1〜30−nのユーザによって、燃料電池装置30−1〜30−n毎に指定される日時に基づき、第2日時B−1〜B−nをそれぞれ設定する。サーバ10は、燃料電池装置30−1〜30−n毎に指定される日時を、ユーザが利用する端末装置からネットワーク100を介して取得する。例えば、サーバ10は、燃料電池装置30−1のユーザが指定する日時を、端末装置20からネットワーク100を介して取得する。
また、サーバ10は、スケジュール情報の要求を、コントローラ40−1〜40−nから、ルータ50−1〜50−n及びネットワーク100を介して、それぞれ取得する。サーバ10は、スケジュール情報の要求を送信したコントローラに対し、スケジュール情報を送信する。スケジュール情報には、例えば、そのスケジュール情報が送信されるコントローラに割り当てられた第1日時と、そのコントローラがファームウェアを更新する日時として設定した第2日時と、そのコントローラ等のファームウェアのバージョン情報等が含まれる。例えば、サーバ10からコントローラ40−1へ送信されるスケジュール情報には、第1日時A−1と、第2日時B−1と、コントローラ40−1及び燃料電池装置30−1のファームウェアのバージョン情報等が含まれる。
端末装置20は、燃料電池装置30−1を利用するユーザが使用する端末である。端末装置20は、ネットワーク100を介して、サーバ10と接続される。ユーザは、端末装置20を用いて、燃料電池装置30−1等のファームウェアの更新処理を実行可能な日時を指定し、サーバ10に送信する。
ここで、燃料電池装置30−1のファームウェアの更新処理中は、燃料電池装置30−1の運転を停止させる必要がある。さらに、燃料電池装置30−1は、運転を停止させる際、例えば12時間程度の、長い時間を要する場合がある。これは、燃料電池装置30−1では、動作温度が高温であり、運転を停止させる際に、十分な時間をかけて発電セルの冷却を行わないと、熱ストレスによって、発電セルに劣化が生じるおそれがあるためである。従って、燃料電池装置30−1のファームウェアの更新処理自体が数分程度で完了する場合であっても、燃料電池装置30−1の運転を停止させる必要があるために、結果として、燃料電池装置30−1のファームウェアの更新処理は、長い時間を要する。この間、燃料電池装置30−1が設置される需要家施設では、燃料電池装置30−1からの電力供給を受けることができない。そこで、本実施形態では、ユーザが、燃料電池装置30−1の運転を停止させても支障がない日時すなわち燃料電池装置30−1のファームウェアの更新処理を実行可能な日時を予め指定し、端末装置20を用いて、サーバ10に送信する。例えば、需要家施設が店舗である場合、ユーザは、店舗の休業日を、燃料電池装置30−1のファームウェアの更新処理を実行可能な日時として指定する。
次に、燃料電池装置30−1〜30−n及びコントローラ40−1〜40−nについて、燃料電池装置30−1及びコントローラ40−1を例に説明する。なお、以後、燃料電池装置30−1を「燃料電池装置30」と表記し、コントローラ40−1を「コントローラ40」と表記する。また、ルータ50−1を「ルータ50」と表記する。また、以後、第1日時A−1を単に「第1日時」と表記し、「第2日時B−1」を単に「第2日時」と表記する。
燃料電池装置30は、例えば、固体酸化物形燃料電池装置(SOFC:Solid Oxide Fuel Cell)又は固体高分子形燃料電池装置(PEFC:Polymer Electrolyte Fuel Cell)等である。燃料電池装置30は、店舗等の需要家施設に設置される。燃料電池装置30は、発電部31と、電力変換部32と、通信部33と、記憶部34と、制御部35とを備える。
発電部31は、燃料(例えば、所定割合で配合されたガス、空気及び改質水)の電気化学反応によって発電する。発電部31は、発電した直流電力を、電力変換部32に供給する。
電力変換部32は、発電部31から供給される直流電力を、交流電力に変換する。電力変換部32は、変換後の交流電力を、燃料電池装置30が設置される需要家施設の負荷機器等に供給する。
通信部33は、例えばケーブル等を介して、コントローラ40と通信する。
記憶部34は、燃料電池装置30の各機能を実現させるためのファームウェアを保持(格納)する。記憶部34に保持されているファームウェアは、ファームウェアのバージョンがアップに伴い、最新のものに更新される。
制御部35は、燃料電池装置30全体を制御及び管理するプロセッサ等である。制御部35は、例えば、電力変換部32を制御する。
また、制御部35は、コントローラ40の指示に基づき、燃料電池装置30のファームウェアの更新処理を実行する。この処理の詳細については、下記の<ファームウェアを更新する際の処理>において説明する。
コントローラ40は、燃料電池装置30の運転を制御するものである。コントローラ40は、ルータ50及びネットワーク100を介してサーバ10と接続される。また、コントローラ40は、例えばケーブル等を介して、燃料電池装置30と接続される。
ここで、コントローラ40は、ルータ50と接続されているため、ネットワーク100を介してサーバ10に接続することができる(そのため、コントローラ40には、ネットワーク100に接続するためのIPアドレスが割り当てられている。)。これに対し、燃料電池装置30は、ルータ50と接続されていないため、ネットワーク100に接続することができない(そのため、燃料電池装置30にはIPアドレスが割り当てられていない。)。そのため、本実施形態では、コントローラ40が、コントローラ40自身のファームウェアと、燃料電池装置30のファームウェアとを、サーバ10からダウンロードする。
コントローラ40は、通信部41と、記憶部42と、表示部43と、制御部44とを備える。
通信部41は、ルータ50及びネットワーク100を介してサーバ10と通信する。また、通信部41は、例えばケーブル等を介して、燃料電池装置30と通信する。
記憶部42は、コントローラ40の各機能を実現させるためのファームウェアを保持する。記憶部42に保持されているファームウェアは、ファームウェアのバージョンがアップに伴い、最新のものに更新される。
表示部43は、スケジュール情報等を表示する。表示部43は、例えばタッチセンサ等を有して構成される。
制御部44は、コントローラ40全体を制御及び管理するプロセッサ等である。制御部44は、サーバ10からスケジュール情報に基づき、コントローラ40及び燃料電池装置30のファームウェアのダウンロード及び更新を行う。これらの処理については、下記の<スケジュール情報を取得する際の処理>、<ファームウェアをダウンロードする際の処理>及び<ファームウェアを更新する際の処理>において説明する。
<スケジュール情報を取得する際の処理>
以下、サーバ10からスケジュール情報を取得する際の制御部44の処理について、図2を用いて説明する。なお、ファームウェア提供システム1では、図2に示すステップS101〜S107の処理が定期的に(例えば、1日1回程度)行う。
コントローラ40の制御部44は、サーバ10に対して、スケジュール情報の要求を、通信部41からルータ50及びネットワーク100を介して送信する(ステップS101)。サーバ10は、コントローラ40からスケジュール情報の要求を取得すると、コントローラ40にスケジュール情報を送信する(ステップS102)。
なお、スケジュール情報は、ファームウェアと比較すると、データ容量が小さい。そのため、複数のコントローラがサーバからスケジュール情報を同一タイミングでダウンロードしても、サーバ10への負荷が増してサーバ10がダウンするといった事態が起きにくい。従って、コントローラ40は、任意のタイミングで、スケジュール情報をサーバ10から取得することができる。
コントローラ40の制御部44は、サーバ10からネットワーク100及びルータ50を介して送信されたスケジュール情報を、通信部41を介し取得すると、取得したスケジュール情報を解析する(ステップS103)。
制御部44は、解析したスケジュール情報に基づき、燃料電池装置30及びコントローラ40のファームウェアの少なくとも1つの更新があるか否か判定する(ステップS104)。制御部44は、例えば、今回のステップS103の処理で解析したスケジュール情報と、前回のステップS103の処理で解析したスケジュール情報とを比較して、スケジュール情報に変更があるか否か判定する。
制御部44は、燃料電池装置30及びコントローラ40のファームウェアの少なくとも1つの更新があると判定したとき(ステップS104:Yes)、ステップS105の処理に進む。一方、制御部44は、燃料電池装置30及びコントローラ40の全てのファームウェアの更新がないと判定したとき(ステップS104:No)、処理を終了する。
ステップS105の処理では、制御部44は、ステップS103の処理で解析したスケジュール情報に変更があるか否か判定する。制御部44は、例えば、今回のステップS103の処理で解析したスケジュール情報と、前回のステップS103の処理で解析したスケジュール情報とを比較して、スケジュール情報に変更があるか否か判定する。
このようにステップS101〜S105の処理を定期的に行うことで、スケジュールを管理しているサーバ10側でスケジュール情報が変更されても、コントローラ40側でスケジュール情報の変更を速やかに把握することができる。
制御部44は、スケジュール情報に変更がないと判定したとき(ステップS105:No)、ステップS106の処理に進む。一方、制御部44は、スケジュール情報に変更があると判定したとき(ステップS105:Yes)、ステップS107の処理に進む。
ステップS106の処理では、制御部44は、スケジュール情報を、表示部43に表示させ、ユーザに提示する。制御部44は、例えば、「××××年××月××日にアップデートが始まります。更新後のコントローラのバージョンは○○です。また、更新後の燃料電池装置のバージョンは△△です。」と表示部43に表示させる。
ステップS107の処理では、制御部44は、変更後のスケジュール情報を、表示部43に表示させ、ユーザに提示する。
このようにステップS101〜S107の処理を定期的に行うことで、スケジュール情報が、更新を開始するまで定期的に(例えば、毎日)、表示部43を介してユーザに提示される。これにより、表示部43をこまめに見るという習慣がユーザになくても、更新を開始するまでに、ユーザが表示部43を視認する可能性が高くなる。そのため、ユーザにおいて、知らない間にファームウェアが更新されていたという事態を防ぐことができる。
なお、ステップS106,S107の処理において、制御部44は、ユーザがファームウェアの更新を承認するか否かを問う内容の表示を、表示部43に表示させてもよい。この場合、制御部44は、例えばコントローラ40の入力部等を介して、ユーザからファームウェアの更新を承認する旨の回答を得られたときに、後述の図3及び図4に示すステップS201以降の処理を実行するようにしてもよい。
<ファームウェアをダウンロードする際の処理>
次に、ファームウェアをダウンロードする際の制御部44の処理について、図3を用いて説明する。
コントローラ40の制御部44は、ファームウェアのダウンロードを実行する第1日時になると、最新のファームウェアの要求を通信部41から、ルータ50及びネットワーク100を介してサーバ10に送信する(ステップS201)。サーバ10は、コントローラ40から最新のファームウェアの要求を取得すると、最新のファームウェアを、ネットワーク100及びルータ50を介してコントローラ40に送信する(ステップS202)。
コントローラ40の制御部44は、最新のファームウェアを、サーバ10からネットワーク100及びルータ50を介して、通信部41から取得する。すると、制御部44は、ファームウェアの更新を実行する第2日時になるまで、取得した最新のファームウェアを記憶部42に保持させておく(ステップS203)。
このようなステップS201〜S203の処理によって、本実施形態では、サーバ10によって予め設定された第1日時に、コントローラ40は、サーバ10からファームウェアをダウンロードする。さらに、本実施形態では、サーバ10によって、サーバ10の一斉送信可能なデータ容量を超えないように、各コントローラにそれぞれ第1日時が割り当てられている。これにより、本実施形態では、複数のコントローラがサーバ10から同時にファームウェアをダウンロードしようとすることで、サーバ10への負荷が大きくなり、サーバ10がダウンしてしまうといった事態を防ぐことができる。
ここで、本実施形態では、コントローラ40が、コントローラ40自身のファームウェアと、燃料電池装置30のファームウェアとを、サーバ10からまとめてダウンロードする。これにより、本実施形態では、通信トラフィックを低減させることができる。さらに、本実施形態では、燃料電池装置30をネットワーク100に直接接続させないことで、セキュリティを向上させることができる。
<ファームウェアを更新する際の処理>
次に、ファームウェアを更新する際の燃料電池装置30及びコントローラ40の処理について、図4を用いて説明する。なお、以下では、燃料電池装置30及びコントローラ40の両方のファームウェアを更新するものとする。
コントローラ40の制御部44は、ファームウェアの更新を実行する第2日時になると、ファームウェアの更新を開始する旨を、表示部43に表示させ、ユーザに提示する(ステップS301)。制御部44は、例えば、「ファームウェアのアップデートを開始します。更新後のコントローラのバージョンは○○です。また、更新後の燃料電池装置のバージョンは△△です。」と表示部43に表示させる。
次に、制御部44は、コントローラ40のファームウェアの更新処理を実行する(ステップS302)。このとき、制御部44は、ステップS301の処理で表示部43に表示されているファームウェアの更新を開始する旨の表示を、ファームウェアの更新中である旨の表示に切り替えてもよい。この場合、制御部44は、例えば、「ファームウェアのアップデート中です。」といった内容の表示に切り替える。
コントローラ40の制御部44は、コントローラ40のファームウェアの更新処理が完了すると、燃料電池装置30に対して、運転停止の要求を、通信部41を介して送信する(ステップS303)。燃料電池装置30では、制御部35が、運転停止の要求をコントローラ40から通信部33を介して取得すると、燃料電池装置の運転停止処理を実行する(ステップS304)。制御部35は、燃料電池装置30の運転停止処理が完了すると、コントローラ40に対して、燃料電池装置30の運転停止処理が完了した旨を、通信部33を介して通知する(ステップS305)。
コントローラ40の制御部44は、燃料電池装置30の運転停止処理が完了した旨を燃料電池装置30から通信部41を介して取得すると、燃料電池装置30に対して、燃料電池装置30の最新のファームウェアを、通信部41を介して送信する(ステップS306)。
燃料電池装置30では、制御部35が、最新のファームウェアを、コントローラ40から通信部33を介して取得すると、燃料電池装置30の更新処理を実行する(ステップS307)。制御部35は、燃料電池装置30のファームウェアの更新処理が完了すると、コントローラ40に対して、更新処理が完了した旨を、通信部33を介して送信する(ステップS308)。
コントローラ40の制御部44は、燃料電池装置30の更新処理が完了した旨を、燃料電池装置30から通信部41を介して取得すると、更新処理が完了した旨を、表示部43に表示させ、ユーザに提示する(ステップS309)。制御部44は、例えば、「アップデートが完了しました。」と表示部43に表示させる。
なお、ステップS301の処理において、制御部44は、ファームウェアの更新を開始する旨の代わりに、ユーザがファームウェアの更新の開始を承認するか否かを問う内容の表示を、表示部43に表示させてもよい。この場合、制御部44は、表示部43のタッチセンサ等を介して、ユーザからファームウェアの更新の開始を承認する旨の回答が得られたときに、ステップS302以降の処理を実行するようにしてもよい。
また、燃料電池装置30のファームウェアのみを更新する場合は、ステップS302の処理は行わなくてもよい。また、コントローラ40のファームウェアのみを更新する場合は、ステップS303〜S308の処理を行わなくてもよい。
また、ステップS301〜S309の処理では、燃料電池装置30のファームウェアの更新よりも、コントローラ40のファームウェアの更新を先に実行しているが、コントローラ40のファームウェアの更新を先に実行してもよい。
以上のように、本実施形態では、サーバ10によって予め設定された第1日時に、コントローラ40は、サーバ10からファームウェアをダウンロードする。さらに、本実施形態では、サーバ10によって、サーバ10の一斉送信可能なデータ容量を超えないように、各コントローラにそれぞれ第1日時が割り当てられている。これにより、本実施形態では、複数のコントローラがサーバ10から同時にファームウェアをダウンロードしようとすることで、サーバ10への負荷が大きくなり、サーバ10がダウンしてしまうといった事態を防ぐことができる。従って、本実施形態では、燃料電池装置30及びコントローラ40のファームウェアのダウンロード及び更新を効率よく行うことができる。さらに、本実施形態では、管理専用の他のサーバ等を設けることなく、ファームウェアを提供するサーバ10が各コントローラにそれぞれ第1日時を割り当てることで、サーバ10への負荷の増大を防いでいる。従って、コストを増加させることなく、本実施形態に係る処理を実現することができる。
さらに、本実施形態では、コントローラ40は、サーバ10によって設定されたスケジュールに沿って、燃料電池装置30及びコントローラ40のファームウェアのダウンロード及び更新を行っている。言い換えれば、コントローラ40でファームウェアのスケジュールを設定しなくてもよい。そのため、コントローラ40に、スケジュール設定のための高度な機能を追加することなく、本実施形態に係る処理を実現することができる。従って、低コストで、本実施形態に係る処理を実現することができる。
また、本実施形態では、コントローラ40によって、設定されたスケジュールに沿って、自動的に、燃料電池装置30の運転が停止され、燃料電池装置30のファームウェアの更新が行われる。従って、本実施形態では、燃料電池装置30のファームウェアを更新するために、メンテナンス人員を需要家施設に派遣しなくてもよい。これにより、本実施形態では、燃料電池装置30及びコントローラ40のファームウェアのダウンロード及び更新を、さらに効率よく行うことができる。
(第2の実施形態)
次に、第2の実施形態について説明する。第1の実施形態では、同一又は異なる需要家施設毎にそれぞれ設置される複数の燃料電池装置及び複数のコントローラにおいて、ファームウェアのダウンロード及び更新を効率よく行う方法について説明した。第2の実施形態では、同一需要家施設に設置され、親装置又は子装置に設定される複数の燃料電池装置、及び、親機又は子機に設定される複数のコントローラにおいて、ファームウェアのダウンロード及び更新を効率よく行う方法について説明する。以下では、第1の実施形態と異なる点について主に説明する。なお、第1の実施形態に係る構成要素と同一の構成要素には、同一符号を付し、その説明を省略する。
図5に、本発明の第2の実施形態に係るファームウェア提供システム2の概略構成を示す。ファームウェア提供システム2は、サーバ10と、端末装置20と、燃料電池装置30A,30B,30Cと、コントローラ40A,40B,40Cと、ルータ50A,50B,50Cとを備える。燃料電池装置30A〜30Cは、同一需要家施設に設置され、連結運転を行うものである。連結運転を行う複数の燃料電池装置では、そのうち1つが親装置に設定され、その他が子装置に設定される。本実施形態では、燃料電池装置30Aが親装置に設定され、燃料電池装置30B,30Cが子装置に設定されているものとする。さらに、コントローラ40A〜40Cにおいて、親装置である燃料電池装置30Aに対応するコントローラ40Aが親機に設定され、燃料電池装置30B,30Cにそれぞれ対応するコントローラ40B,40Cが子機に設定されているものとする。
なお、図5では、3つの燃料電池装置30A〜30Cと3つのコントローラ40A〜40Cとを備えるファームウェア提供システム2が示されているが、燃料電池装置及びコントローラの数は、これに限定されず、2つであってもよいし、4つ以上であってもよい。
サーバ10は、コントローラ40Aに対し、燃料電池装置30Aの状態情報の要求を、ネットワーク100を介して送信する。サーバ10は、この要求に対する応答として、コントローラ40Aから、燃料電池装置30Aの状態情報を、ネットワーク100を介して取得する。燃料電池装置30Aの状態情報には、例えば、燃料電池装置30Aの発電電力の値、連結運転を行っている旨等が含まれる。なお、サーバ10は、コントローラ40Aに対して、燃料電池装置30Aの状態情報の要求を、例えば数秒間隔で定期的に行う。また、サーバ10は、同様にして、コントローラ40B,40Cのそれぞれから、燃料電池装置30B,30Cの状態情報をそれぞれ取得する。
また、サーバ10は、燃料電池装置30A〜30Cの状態情報に基づき、コントローラ40A〜40Cのそれぞれにおいて、第1日時に含まれるファームウェアのダウンロードの開始時刻及び終了時刻を設定する。この処理の詳細については、下記の<開始時刻及び設定時刻を設定する際の処理>において説明する。
親装置である燃料電池装置30Aは、親機であるコントローラ40Aの制御の下、発電等を行う。親装置である燃料電池装置30Aは、例えば、連結運転を行う燃料電池装置30A〜30Cにおいて、ベース電源として運転する。燃料電池装置30Aは、発電部31Aと、電力変換部32Aと、通信部33Aと、記憶部34Aと、制御部35Aとを備える。発電部31A、電力変換部32A、通信部33A、記憶部34A及び制御部35Aは、それぞれ、図1に示す発電部31、電力変換部32、通信部33、記憶部34及び制御部35と同様の機能を実現することができる。
子装置である燃料電池装置30Bは、子機であるコントローラ40Bの制御の下、発電等を行う。また、子装置である燃料電池装置30Cは、子機であるコントローラ40Cの制御の下、発電等を行う。子機である燃料電池装置30B,30Cは、例えば、負荷追従運転を行う。燃料電池装置30Bは、発電部31Bと、電力変換部32Bと、通信部33Bと、記憶部34Bと、制御部35Bとを備える。発電部31B、電力変換部32B、通信部33B、記憶部34B及び制御部35Bは、それぞれ、図1に示す発電部31、電力変換部32、通信部33、記憶部34及び制御部35と同様の機能を実現することができる。また、燃料電池装置30Cは、発電部31Cと、電力変換部32Cと、通信部33Cと、記憶部34Cと、制御部35Cとを備える。発電部31C、電力変換部32C、通信部33C、記憶部34C及び制御部35Cは、それぞれ、図1に示す発電部31、電力変換部32、通信部33、記憶部34及び制御部35と同様の機能を実現することができる。
親機であるコントローラ40Aは、自機器に対応する燃料電池装置30Aの運転を制御する。また、コントローラ40Aは、子機であるコントローラ40B,40Cを制御する。コントローラ40Aは、通信部41Aと、記憶部42Aと、表示部43Aと、制御部44Aとを備える。通信部41A、記憶部42A、表示部43A及び制御部44Aは、それぞれ、図1に示す通信部41、記憶部42、表示部43及び制御部44と同様の機能を実現することができる。以下では、異なる点を主に説明する。
通信部41Aは、ルータ50A及びネットワーク100を介して、サーバ10と通信する。また、通信部41Aは、ルータ50A,50Bを介してコントローラ40Bと数新し、ルータ50A,50Cを介してコントローラ50Cと通信する。
制御部44Aは、サーバ10からネットワーク100及びルータ50Aを介して送信される燃料電池装置30Aの状態情報の要求を、通信部41Aを介し取得する。すると、制御部44Aは、燃料電池装置30Aの状態情報を、通信部41Aからネットワーク100及びルータ50Aを介して、サーバ10に送信する。
また、制御部44Aは、サーバ10からスケジュール情報を取得すると、取得したスケジュール情報を解析して、自機器のダウンロードの開始時刻及び終了時刻を検出する。さらに、制御部44Aは、子機であるコントローラ40B,40Cから、コントローラ40B,40Cのダウンロードの開始時刻及び終了時刻を、ルータ50A等を介して、通信部41から取得する。
また、制御部44Aは、自機器のダウンロードの開始時刻になると、ファームウェアを所定順序でサーバ10からネットワーク100、ルータ50A及び通信部41Aを介してダウンロードする。所定順序については後述する。
また、制御部44Aは、自機器でダウンロードが完了したファームウェアと、ダウンロードの実行処理を終了した子機から通知される子機でダウンロードが完了したファームウェアとに基づき、ダウンロードが未完了であるファームウェアを検出する。さらに、制御部44Aは、予めコントローラ40B,40Cから取得したコントローラ40B,40Cのダウンロードの開始時刻等に基づき、次にダウンロードを実行する子機を検出する。制御部44は、次にダウンロードを実行する子機に、検出したダウンロードが未完了であるファームウェアをダウンロードするよう、ルータ50等を介して指示する。この処理の詳細は、下記の<ファームウェアをダウンロードする際の処理>において説明する。
また、制御部44A、コントローラ40A〜40Cの全てがダウンロード実行処理を終了すると、自機器で保持していないファームウェアを保持している子機を検出する。制御部44は、自機器でダウンロードが完了したファームウェアと、子機から通知される子機でダウンロードが完了したファームウェアとに基づき、親機が保持していないファームウェアを保持している子機を検出する。制御部44は、検出した子機に対し、親機が保持していないファームウェアを送信するよう、ルータ50A等を介して要求する。また、制御部44Aは、子機であるコントローラ40B,40Cから通知される子機でダウンロードが完了したファームウェアに基づき、子機であるコントローラが保持していないファームウェアを検出する。さらに、制御部44は、その検出したファームウェアを、その検出したファームウェアを保持していない子機であるコントローラに、ルータ50A等を介して送信する。この処理の詳細は、下記の<ファームウェアを補完する際の処理>において説明する。
子機であるコントローラ40Bは、親機であるコントローラ40Aの制御の下、自機器に対応する燃料電池装置30Bの運転を制御する。コントローラ40Bは、通信部41Bと、記憶部42Bと、表示部43Bと、制御部44Bとを備える。通信部41B、記憶部42B、表示部43B及び制御部44Bは、それぞれ、図1に示す通信部41、記憶部42、表示部43及び制御部44と同様の機能を実現することができる。以下では、異なる点を主に説明する。
通信部41Bは、ルータ50B及びネットワーク100を介して、サーバ10と通信する。また、通信部41Bは、ルータ50B,50Aを介してコントローラ40Aと通信し、ルータ50B,50Cを介してコントローラ50Cと通信する。
制御部44Bは、サーバ10からスケジュール情報を取得すると、取得したスケジュール情報を解析して、自機器のダウンロードの開始時刻及び終了時刻を検出する。さらに、制御部44Bは、コントローラ40Bのダウンロードの開始時刻及び終了時刻を、通信部41Bからルータ50B,50Aを介して、親機であるコントローラ40Aに通知する。
また、制御部44Bは、親機であるコントローラ40Aからルータ50A,50Bを介して、親機によって検出されたダウンロードが未完了であるファームウェアをダウンロードするよう指示を受ける。この場合、制御部44Bは、自機器のダウンロードの開始時刻になると、そのダウンロードが未完了であるファームウェアを、所定順序でサーバ10から通信部41Bを介してダウンロードする。さらに、制御部44Bは、自機器のダウンロード実行処理が終了すると、自機器でダウンロードが完了したファームウェアを、ルータ50B,50Aを介して、親機であるコントローラ40Aに通知する。この処理の詳細は、<ファームウェアをダウンロードする際の処理>において説明する。
また、制御部44Bは、親機であるコントローラ40Aから、親機が保持していないファームウェアを送信するよう要求を受けると、そのファームウェアを、通信部41Bからルータ50B,50Aを介してコントローラ40Aに送信する。また、制御部44Bは、親機であるコントローラ40Aからファームウェアを取得すると、そのファームウェアを、記憶部42Bに保持させる。この処理の詳細は、下記の<ファームウェアを補完する際の処理>において説明する。
子機であるコントローラ40Cは、親機であるコントローラ40Aの制御の下、自機器に対応する燃料電池装置30Cの運転を制御する。コントローラ40Cは、通信部41Cと、記憶部42Cと、表示部43Cと、制御部44Cとを備える。通信部41C、記憶部42C、表示部43C及び制御部44Cは、それぞれ、図1に示す通信部41、記憶部42、表示部43及び制御部44と同様の機能を実現することができる。以下では、異なる点を主に説明する。
通信部41Cは、ルータ50C及びネットワーク100を介して、サーバ10と通信する。また、通信部41Cは、ルータ50C,50Aを介してコントローラ40Aと通信し、ルータ50C,50Bを介してコントローラ50Bと通信する。
制御部44Cの処理は、制御部44Bの処理と同様であるため、説明を省略する。
<開始時刻及び設定時刻を設定する際の処理>
以下、コントローラ40A〜40Cのダウンロードの開始時刻及び終了時刻を設定する際のサーバ10の処理の一例について、図6を用いて説明する。
まず、サーバ10は、同一需要家施設に設置される複数の燃料電池装置が、連結運転を行っているか否か判定する(ステップS401)。サーバ10は、例えば、コントローラ40Aから取得する状態情報に連結運転を行っている旨が含まれる場合、燃料電池装置30A〜30Cが連結運転を行っていると判定する。
サーバ10は、同一需要家施設に設置される複数の燃料電池装置が連結運転を行っていると判定したとき、(ステップS401:Yes)、ステップS402の処理に進む。一方、サーバ10は、同一需要家施設に設置される複数の燃料電池装置が連結運転を行っていないと判定したとき(ステップS401:No)、処理を終了する。
ステップS402の処理では、サーバ10は、各コントローラ40A〜40Cがそれぞれダウンロードを行う時間(以下、「ダウンロード時間」という)を算出する。サーバ10は、ファームウェアの全容量と、コントローラ及びサーバ10間の通信速度と、コントローラの数とに基づき、ダウンロード時間を算出する。例えば、サーバ10は、ファームウェアの全容量と、コントローラ及びサーバ10間の通信速度とに基づき、1つのコントローラのみで全ファームウェアをダウンロードした場合に掛かる時間(以下「第1時間」と表記する)を算出する。さらに、サーバ10は、第1時間を、コントローラの数で除算することで、ダウンロード時間を算出する。例えば、第1時間が30分間であり、コントローラの数が3つである場合、ダウンロード時間は、10分間と算出される。
ステップS403の処理では、サーバ10は、連結運転を行っている複数の燃料電池装置の発電電力の全てが、時刻に対して変動しているか否か判定する。サーバ10は、例えば、コントローラ40A〜40Cからそれぞれ取得する燃料電池装置30A〜30Cの状態情報を参照し、燃料電池装置30A〜30Cの発電電力の全てが時刻に対して変動しているか否か判定する。ここで、燃料電池装置30A〜30Cの全てが負荷追従運転を行っている場合、燃料電池装置30A〜30Cの発電電力の全てが時刻に対して変動する。一方、燃料電池装置30A〜30Cの何れか1つがベース電源として運転している場合、ベース電源として運転している燃料電池装置の発電電力は時刻に対して一定となるため、燃料電池装置30A〜30Cの発電電力の何れか1つは時刻に対して変動しない。従って、燃料電池装置30A〜30Cの全てが負荷追従運転を行っている場合、サーバ10は、燃料電池装置30A〜30Cの発電電力の全てが時刻に対して変動していると判定する。一方、燃料電池装置30A〜30Cの何れか1つがベース電源として運転している場合、サーバ10は、燃料電池装置30A〜30Cの発電電力の全てが時刻に対して変動していると判定しない。
サーバ10は、連結運転を行っている複数の燃料電池装置の発電電力の全てが時刻に対して変動していると判定したとき(ステップS403:Yes)、ステップS404の処理に進む。一方、サーバ10は、連結運転を行っている複数の燃料電池装置の発電電力の全てが時刻に対して変動していると判定しないとき(ステップS403:No)、ステップS406の処理に進む。従って、燃料電池装置の全てが負荷追従運転を行っている場合、サーバ10は、ステップS404,S405の処理に進む。一方、連結運転を行っている複数の燃料電池装置にベース電源として運転を行っている燃料電池装置が含まれる場合、サーバ10は、ステップS406,S407,S408に進む。
ステップS404の処理では、サーバ10は、発電電力が時刻に対して変動する燃料電池装置すなわち負荷追従運転を行っている燃料電池装置のそれぞれにおいて、発電電力が第1所定値よりも小さくなる時間帯を抽出する。例えば、夜間の消費電力が昼間の消費電力と比較して小さくなる需要家施設において、燃料電池装置が負荷追従運転を行っている場合、その燃料電池装置の夜間の発電電力は、その燃料電池装置の昼間の発電電力と比較して小さくなる。そのため、この場合には、ステップS404の処理によって夜間の時間帯が抽出される。
ステップS405の処理では、サーバ10は、ステップS402の処理で算出したダウンロード時間と、ステップS404の処理で抽出した時間帯とに基づき、コントローラ40A〜40Cのダウンロードの開始時刻及び終了時刻をそれぞれ設定する。以下、この処理の一例として、コントローラ40Aのダウンロードの開始時刻及び終了時刻を設定する例を説明する。
例えば、サーバ10は、ステップS402の処理でダウンロード時間を10分間と算出し、ステップS404の処理で燃料電池装置30Aの発電電力が第1所定値よりも小さくなる時間帯として夜間の時間帯を抽出しているものとする。この場合、サーバ10は、ステップS404の処理で抽出した夜間の時間帯において、開始時刻と終了時刻との間の時間が10分間となるように、コントローラ40Aのダウンロードの開始時刻及び終了時刻を設定する。
このようなステップS404,S405の処理によって、燃料電池装置の全てが負荷追従運転を行っている場合、燃料電池装置の発電電力が小さくなる時間帯に、全コントローラのダウンロードの開始時刻及び終了時刻が設定される。一般的に、燃料電池装置の発電電力が大きくなると、燃料電池装置を制御するコントローラの処理量は増加し、燃料電池装置の発電電力が小さくなると、燃料電池装置を制御するコントローラの処理量は低減する。従って、本実施形態では、コントローラの処理量が比較的低減される時間帯に、ダウンロードの開始時刻及び終了時刻を設定することで、ファームウェアのダウンロードを効率よく行うことができる。
ステップS406の処理では、サーバ10は、ステップS404の処理と同様にして、発電電力が時刻に対して変動する燃料電池装置すなわち負荷追従運転を行っている燃料電池装置において、発電電力が第1所定値よりも小さくなる時間帯を抽出する。
ステップS407の処理では、発電電力が時刻に対して変動する燃料電池装置すなわち負荷追従運転を行っている燃料電池装置の全てにおいて、発電電力が第2所定値よりも大きくなる時間帯を抽出する。例えば、昼間の消費電力が夜間の消費電力と比較して大きくなる需要家施設において、燃料電池装置が負荷追従運転を行っている場合、その燃料電池装置の昼間の発電電力は、その燃料電池装置の夜間の発電電力と比較して大きくなる。そのため、この場合には、ステップS407の処理によって昼間の時間帯が抽出される。
ステップS408の処理では、サーバ10は、ステップS402の処理で算出したダウンロード時間と、ステップS406,S407の処理で算出した時間帯とに基づき、コントローラ40A〜40Cのダウンロードの開始時刻及び終了時刻をそれぞれ設定する。以下、この処理の一例を説明する。以下では、燃料電池装置30Aがベース電源として運転を行い、燃料電池装置30B,30Cが負荷追従運転を行っているものとする。
まず、コントローラ40B,40Cのダウンロードの開始時刻及び終了時刻を設定する例について説明する。例えば、サーバ10は、ステップS402の処理でダウンロード時間を10分間と算出し、ステップS406の処理で燃料電池装置30B,30Cの発電電力が第1所定値よりも小さくなる時間帯として夜間の時間帯をそれぞれ抽出しているものとする。この場合、サーバ10は、ステップS406の処理で燃料電池装置30Bに関して抽出した夜間の時間帯において、開始時刻と終了時刻との間の時間が10分間となるように、コントローラ40Bのダウンロード開始時刻及び終了時刻を設定する。同様に、サーバ10は、ステップ406の処理で燃料電池装置30Cに関して抽出した夜間の時間帯において、開始時刻と終了時刻との間の時間が10分間となるように、コントローラ40Cのダウンロード開始時刻及び終了時刻を設定する。
次に、コントローラ40Aのダウンロードの開始時刻及び終了時刻を設定する例について説明する。例えば、サーバ10は、ステップS402の処理でダウンロード時間を10分間と算出し、ステップS407の処理で燃料電池装置30B,30Cの発電電力が第2所定値よりも大きく時間帯として昼間の時間帯をそれぞれ抽出しているものとする。この場合、サーバ10は、ステップS407の処理で燃料電池装置30B,30Cに関して抽出した昼間の時間帯において、開始時刻と終了時刻との間の時間が10分間となるように、コントローラ40Aのダウンロード開始時刻及び終了時刻を設定する。
図7に、サーバ10によって設定されるコントローラ40A〜40Cのダウンロードの開始時刻及び終了時刻の一例を示す。なお、図7に示す「日にち」は、ダウンロードを実行する第1日時に含まれる日にちであり、第1の実施形態において説明したように、コントローラ40A〜40Cのそれぞれに、例えば分散させて割り当てられている。
このようなステップS406,S408の処理によって、負荷追従運転を行っている燃料電池装置の発電電力が小さくなる時間帯に、負荷追従運転を行っている燃料電池装置を制御するコントローラのダウンロードの開始時刻及び終了時刻が設定される。上述のように、一般的には、燃料電池装置の発電電力が小さくなると、燃料電池装置を制御するコントローラの処理量は低減する。従って、負荷追従運転を行っている燃料電池装置を制御するコントローラでは、該コントローラの処理量が比較的低減される時間帯に、ダウンロードの開始時刻及び終了時刻が設定される。これにより、本実施形態では、ファームウェアのダウンロードを効率よく行うことができる。
さらに、ステップS407,S408の処理によって、負荷追従運転を行っている燃料電池装置の発電電力が高くなる時間帯に、ベース電源として運転している燃料電池装置を制御するコントローラのダウンロードの開始時刻及び終了時刻が設定される。これにより、ベース電源の燃料電池装置を制御するコントローラのダウンロード実行中に、何らかの通信不慮により、ベース電源の燃料電池装置の運転が停止した場合でも、負荷追従運転を行っている燃料電池装置の運転は、発電電力が大きい状態で継続される。従って、このような事態が生じても、本実施形態では、安定して需要家施設に電力を供給することができる。
なお、サーバ10は、コントローラ40A〜40Cに対してダウンロードの開始時刻及び終了時刻を設定する際、親機のダウンロードの開始時刻及び終了時刻が、子機のダウンロードの開始時刻及び終了時刻よりも、早い時刻となるように設定してもよい。これは、後述の<ファームウェアをダウンロードする際の処理>を実行するためである。この場合、サーバ10は、図7に示す「日にち」において、コントローラ40Aの日にちを、コントローラ40B〜40Cの日にちよりも、早い日にちに設定する。このとき、第1の実施形態に係る処理で、例えば、コントローラ40Bの日にちの方がコントローラ40Aの日にちよりも早い日にちに設定されている場合、サーバ10は、コントローラ40Aの日にちと、コントローラ40Bの日にちを入れ替えてもよい。
また、後述の図8及び図10に示す処理を実行しない場合、サーバ10は、ステップS402の処理において、ダウンロード時間を第1時間としてもよい。
ここで、ダウンロードの開始時刻及び終了時刻は、サーバ10からコントローラ40A〜40Cにそれぞれ送信されるスケジュール情報に含まれる。従って、例えば、コントローラ40Aの制御部44Aは、前述の図2に示すステップS103の処理によって、自機器のダウンロードの開始時刻及び終了時刻を検出することができる。なお、第2の実施形態では、子機であるコントローラ40Bの制御部44Bは、自機器のダウンロードの開始時刻及び終了時刻を検出すると、自機器のダウンロードの開始時刻及び終了時刻を、親機であるコントローラ40Aに、ルータ50A等を介して通知する。子機であるコントローラ40Cについても同様である。
<ファームウェアをダウンロードする際の処理>
以下、最新のファームウェアをサーバ10からダウンロードする際のコントローラ40A〜40Cの動作の一例について、図8を用いて説明する。まず、燃料電池装置及びコントローラのファームウェアについて簡単に説明する。
燃料電池装置及びコントローラのファームウェアは、複数種類存在する。以下の説明では、燃料電池装置を制御するための2種類のファームウェアと、コントローラを制御するための4種類のファームウェアとの合計6種類が存在するものとする。燃料電池装置の2種類のファームウェアは、例えば燃料電池装置に含まれる燃料電池を制御するためのファームウェアと、燃料電池装置に含まれる電力変換装置を制御するためのファームウェアとである。コントローラの4種類のファームウェアは、例えばブートローダに関するファームウェアと、カーネルに関するファームウェアと、ファイルシステムに関するファームウェアと、アプリケーションに関するファームウェアとである。一般的に、燃料電池装置を制御するための2種類のファームウェアは、コントローラを制御するための4種類のファームウェアと比較すると、データ容量が小さい(なお、更新に掛かる時間は、燃料電池装置を制御するための2種類のファームウェアの方が、コントローラを制御するための4種類のファームウェアよりも長くなる。)。そのため、サーバ10から燃料電池装置及びコントローラのファームウェアの6種類をダウンロードする際、燃料電池装置の2種類のファームウェアが、コントローラの4種類のファームウェアよりも、先にダウンロードされる。言い換えれば、サーバ10から燃料電池装置及びコントローラのファームウェアの6種類をダウンロードする際は、所定順序でファームウェアがダウンロードされる。従って、以下では、サーバ10からダウンロードする6種類のファームウェアをファームウェア1,2,3,4,5,6とし、これら6種類のファームウェアは、ファームウェア1,2,3,4,5,6の所定順序でダウンロードされるものとする。また、コントローラ40A〜40Cのダウンロードの開始時刻及び終了時刻等は、図7に示す時刻であるものとする。
コントローラ40Aの制御部44は、コントローラ40Aのダウンロードの開始時刻の所定時間前になると、最新のファームウェアの要求を、通信部41Aからルータ50A及びネットワーク100を介してサーバ10に送信する(ステップS501)。サーバ10は、コントローラ40Aから最新のファームウェアの要求を取得すると、コントローラ40Aのダウンロードの開始時刻(2016年8月9日12時00)から終了時刻(2016年8月9日12時10)までの間、最新のファームウェアをコントローラ40Aに送信し続ける(ステップS502)。これにより、サーバ10からコントローラ40Aへ、ファームウェア1,2が送信される。なお、コントローラ40Aの制御部44Aは、ファームウェア3のダウンロード中に終了時刻となり、ファームウェア3のダウンロードが未完了で終わった場合には、ファームウェア3を破棄する。
コントローラ40Aの制御部44Aは、サーバ10からネットワーク100及びルータ50Aを介して送信されるファームウェア1,2を、通信部41Aを介し取得すると、取得したファームウェア1,2を記憶部42Aに保持させる(ステップS503)。
このようなステップS501〜S503の処理によって、親機であるコントローラ40Aには、サーバ10から、ファームウェア1,2が所定順序(ファームウェア1,2)でダウンロードされる。
コントローラ40Aの制御部44Aは、自機器でダウンロードが完了したファームウェア1,2に基づき、ファームウェア3〜6のダウンロードが未完了であると検出する。さらに、制御部44Aは、予めコントローラ40B,40Cから取得したコントローラ40B,40Cのダウンロードの開始時刻及び終了時刻に基づき、次にダウンロードを実行する子機がコントローラ40Bであると特定する。従って、制御部44Aは、通信部41Aからルータ50A,50Bを介して、コントローラ40Bに対してファームウェア3以降のファームウェアをダウンロードするよう指示を送信する(ステップS504)。コントローラ40Bの制御部44Bは、コントローラ40Aからルータ50A,50Bを介して送信されるファームウェア3以降のファームウェアをダウンロードするよう指示を、通信部41Bを介し取得する。
コントローラ40Bの制御部44Bは、コントローラ40Bのダウンロードの開始時刻の所定時間前になると、最新のファームウェアの要求を、通信部41Bからルータ50B及びネットワーク100を介してサーバ10に送信する(ステップS505)。このとき、制御部44Bは、ステップS504の処理で取得した指示に基づき、最新のファームウェア1〜6のうち、ファームウェア3以降のファームウェアを要求する。サーバ10は、この要求を取得すると、コントローラ40Bのダウンロードの開始時刻(2016年8月10日23時00分)から終了時刻(2016年8月10日23時10分)までの間、ファームウェア3以降のファームウェアを送信し続ける。これにより、サーバ10からコントローラ40Bへ、ファームウェア3〜5が送信される。なお、コントローラ40Bの制御部44Bは、ファームウェア6のダウンロード中に終了時刻となり、ファームウェア6のダウンロードが未完了で終わった場合には、ファームウェア6を破棄する。
コントローラ40Bの制御部44Bは、サーバ10からネットワーク100及びルータ50Bを介して送信されるファームウェア3〜5を、通信部41Bを介し取得すると、取得したファームウェア3〜5を記憶部42Bに保持させる(ステップS507)。
このようなステップS504〜S507の処理によって、子機であるコントローラ40Bには、サーバ10から、親機がダウンロードしていないファームウェア3〜5が、所定順序(ファームウェア3,4,5)でダウンロードされる。
コントローラ40Bの制御部44Bは、ファームウェア3〜5のダウンロードが完了した旨を、通信部41Bからルータ50B,50Aを介してコントローラ40Aに送信する(ステップS508)。コントローラ40Aの制御部44Aは、コントローラ40Bからルータ50B,50Aを介して送信される、コントローラ40Bによるファームウェア3〜5のダウンロードが完了した旨を、通信部41Aを介し取得する。
このようなステップS508の処理によって、親機であるコントローラ40Aの制御部44が、コントローラ40Bがファームウェア3〜5を保持しており、さらにファームウェア6がダウンロード未完了であることを検出することができる。
コントローラ40Aの制御部44Aは、自機器でダウンロードが完了したファームウェア1,2と、コントローラ40Bから取得したファームウェア3〜5のダウンロードが完了した旨とに基づき、ダウンロードが未完了であるファームウェアは、ファームウェア6であると検出する。さらに、制御部44Aは、予めコントローラ40B,40Cから取得したコントローラ40B,40Cのダウンロードの開始時刻及び終了時刻に基づき、次にダウンロードを実行する子機は、コントローラ40Cであると特定する。従って、コントローラ40Aの制御部44Aは、通信部41Aからルータ50A,50Cを介して、コントローラ40Cに対してファームウェア6をダウンロードする旨の指示を送信する(ステップS509)。コントローラ40Cの制御部44Cは、コントローラ40Aからルータ50A,50Cを介して送信されるファームウェア6をダウンロードする旨の指示を、通信部41Cを介し取得する。
コントローラ40Cの制御部44Cは、コントローラ40Cのダウンロードの開始時刻の所定時刻前になると、最新ファームウェア6の要求を、通信部41Cからルータ50C及びネットワーク100を介してサーバ10に送信する(ステップS510)。サーバ10は、この要求を取得すると、コントローラ40Cのダウンロードの開始時刻(2016年8月11日23時40分)から終了時刻(2016年8月12日23時50分)までの間、ファームウェア6を送信し続ける。これにより、サーバ10からコントローラ40Bへ、ファームウェア6が送信される。
コントローラ40Cの制御部44Cは、サーバ10からネットワーク100及びルータ50Cを介して送信されるファームウェア6を、通信部41Cを介し取得すると、取得したファームウェア6を記憶部42Cに保持させる(ステップS512)。
このようなステップS509〜S512の処理によって、子機であるコントローラ40Cには、サーバ10から、コントローラ40A,40Bがダウンロードしていないファームウェア6が、ダウンロードされる。
コントローラ40Cの制御部44Cは、ファームウェア6のダウンロードが完了した旨を、通信部41Cからルータ50C,50Aを介してコントローラ40Aに送信する(ステップS513)。コントローラ40Aの制御部44Aは、コントローラ40Cからルータ50C,50Aを介して送信される、コントローラ40Cによるファームウェア6のダウンロードが完了した旨を、通信部41Aを介し取得する。
このようなステップS513の処理によって、親機であるコントローラ40Aの制御部44が、コントローラ40Cがファームウェア6を保持しており、さらにファームウェア1〜6のダウンロードが全て完了したことを検出することができる。
ステップS501〜S513の処理によって、コントローラ40A〜40Cがそれぞれ保持しているファームウェア1〜6を図9に示す。このように、コントローラ40A〜40Cのそれぞれで保持しているファームウェアを組み合わせれば、ファームウェア1〜6の全てをそろえることができる。さらに、本実施形態では、各コントローラ40A〜40Cが足りないファームウェアを相互で補完しあうことで、各コントローラ40A〜40Cは全てのファームウェア1〜6の保持が可能になる。以下、この処理を説明する。
<ファームウェアを補完する際の処理>
以下、コントローラ40A〜40Cの間で、足りないファームウェアを相互で補完しあう際の動作の一例について、図10を用いて説明する。なお、親機であるコントローラ40Aは、ステップS508の処理によって、コントローラ40Bはファームウェア3〜5を保持しているが、コントローラ40Bはファームウェア1,2,6を保持していないことを検出している。親機であるコントローラ40Aは、ステップS513の処理によって、コントローラ40Cはファームウェア6を保持しているが、コントローラ40Cはファームウェア1〜5を保持していないことを検出している。
コントローラ40Aの制御部44Aは、通信部41Aからルータ50A、50Bを介して、コントローラ40Bに対してファームウェア3〜5の要求を送信する(ステップS601)。コントローラ40Bの制御部44Aは、この要求を取得すると、記憶部42Bに保持されているファームウェア3〜5を、通信部41Bからルータ50B,50Aを介してコントローラ40Aに送信する(ステップS602)。
コントローラ40Aの制御部44Aは、コントローラ40Bからルータ50B,50Aを介して送信されるファームウェア3〜5を、通信部41Aを介し取得すると、取得したファームウェア3〜5を記憶部42Aに保持させる(ステップS603)。
コントローラ40Aの制御部44Aは、通信部41Aからルータ50A、50Bを介して、コントローラ40Cに対してファームウェア6の要求を送信する(ステップS604)。コントローラ40Cの制御部44Cは、この要求を取得すると、記憶部42Cに保持されているファームウェア6を、通信部41Cからルータ50C,50Aを介してコントローラ40Aに送信する(ステップS605)。
コントローラ40Aの制御部44Aは、コントローラ40Cからルータ50C,50Aを介して送信されるファームウェア6を、通信部41Aを介し取得すると、取得したファームウェア6を記憶部42Aに保持させる(ステップS606)。
このようなステップS601〜S606の処理によって、コントローラ40Aは、ファームウェアのダウンロードが中断されて不完全に終わった場合でも、ファームウェア1〜6の全てを取得することができる。
コントローラ40Aの制御部44Aは、記憶部42Aに記憶されているファームウェア1,2,6を、通信部41Aからルータ50A,50Bを介してコントローラ40Bに送信する(ステップS607)。
コントローラ40Bの制御部44Bは、コントローラ40Aからルータ50A,50Bを介して送信されるファームウェア1,2,6を、通信部41Bを介し取得すると、取得したファームウェア1,2,6を記憶部42Bに保持させる(ステップS608)。
このようなステップS607,S608の処理によって、コントローラ40Bは、ファームウェアのダウンロードが中断されて不完全に終わった場合でも、ファームウェア1〜6の全てを取得することができる。
コントローラ40Aの制御部44Aは、記憶部42Aに記憶されているファームウェア1〜5を、通信部41Aからルータ50A,50Cを介してコントローラ40Cに送信する(ステップS609)。
コントローラ40Cの制御部44Cは、コントローラ40Aからルータ50A,50Cを介して送信されるファームウェア1〜5を、通信部41Cを介し取得すると、取得したファームウェア1〜5を記憶部42Cに保持させる(ステップS610)。
このようなステップS609,S610の処理によって、コントローラ40Cは、ファームウェアのダウンロードが中断されて不完全に終わった場合でも、ファームウェア1〜6の全てを取得することができる。
第2の実施形態に係るファームウェア提供システム2のその他の構成及び効果は、第1の実施形態に係るファームウェア提供システム1の構成及び効果と同様である。
本発明の一実施形態を諸図面や実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形や修正を行うことが容易であることに注意されたい。従って、これらの変形や修正は本発明の範囲に含まれることに留意されたい。例えば、各構成部、各ステップ等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の構成部やステップ等を1つに組み合わせたり、或いは分割したりすることが可能である。また、本発明の一実施形態について装置を中心に説明してきたが、本発明は装置が備えるプロセッサにより実行される方法、プログラム、又はプログラムを記録した記憶媒体としても実現し得るものであり、本発明の範囲にはこれらも包含されるものと理解されたい。