(57)【要約】【課題】制御プログラムの更新を効率的に行いつつ、燃料電池システムの利便性を向上させる。【解決手段】本開示の燃料電池システム（１００）は、制御プログラムを実行するプロセッサ（２１）と、プロセッサ（２１）において実行されるべき制御プログラムとしての第１制御プログラムを記憶する第１領域（２３ｂ）と、第１制御プログラムに代えてプロセッサ（２１）において実行されるべき更新された制御プログラムである第２制御プログラムを記憶する第２領域（２３ｃ）とを含むメモリ（２３）と、燃料電池（２７）の運転状況に応じて、プロセッサ（２１）にて実行されるべき制御プログラムをメモリ（２３）の第１領域（２３ｂ）に記憶された第１制御プログラムからメモリ（２３）の第２領域（２３ｃ）に記憶された第２制御プログラムに切り替える更新指示部とを備えている。【選択図】図３
2018073546.tif 000002
【特許請求の範囲】
【請求項１】
燃料電池を有する燃料電池ユニットと、
前記燃料電池を運転するための制御プログラムを実行するプロセッサと、
前記プロセッサにおいて実行されるべき前記制御プログラムとしての第１制御プログラムを記憶する第１領域と、前記第１制御プログラムに代えて前記プロセッサにおいて実行されるべき更新された制御プログラムである第２制御プログラムを記憶する第２領域とを含むメモリと、
前記燃料電池の運転状況に応じて、前記プロセッサにて実行されるべき前記制御プログラムを前記メモリの前記第１領域に記憶された前記第１制御プログラムから前記メモリの前記第２領域に記憶された前記第２制御プログラムに切り替える更新指示部と、
を備えた、燃料電池システム。
【請求項２】
前記更新指示部は、前記第１制御プログラムから前記第２制御プログラムへの切り替えを前記燃料電池の発電停止期間中に実行する、請求項１に記載の燃料電池システム。
【請求項３】
前記燃料電池の排熱によって生成された湯を貯留する貯湯ユニットをさらに備え、
前記更新指示部は、前記燃料電池の発電停止期間中であって前記貯湯ユニットが前記湯を外部に供給していない期間において、前記第１制御プログラムから前記第２制御プログラムへの切り替えを実行する、請求項１又は２に記載の燃料電池システム。
【請求項４】
前記更新指示部は、前記プロセッサが前記メモリにアクセスしてデータを読み出すべき領域を特定するための情報を記憶するレジスタを含み、
前記レジスタに記憶された情報が書き換えられた後、前記プロセッサにて実行されるべき前記制御プログラムが前記第１領域の前記第１制御プログラムから前記第２領域の前記第２制御プログラムへと切り替わる、請求項１〜３のいずれか１項に記載の燃料電池システム。
【請求項５】
前記第２制御プログラムを外部から取得して一時的に保存する受信装置をさらに備え、
前記燃料電池ユニットは、前記プロセッサ及び前記メモリを含む制御装置を有し、
前記受信装置から前記制御装置に前記第２制御プログラムが転送される、請求項１〜４のいずれか１項に記載の燃料電池システム。
【請求項６】
前記第１制御プログラムのバージョン情報と前記第２プログラムのバージョン情報との照合の結果、前記プロセッサで実行されるべき前記制御プログラムの更新が可能であると判明した場合、前記受信装置は、前記制御装置に前記第２制御プログラムを転送する、請求項５に記載の燃料電池システム。
【請求項７】
前記燃料電池ユニットの機種情報と前記受信装置が前記外部から取得したデータに含まれた機種情報との照合結果、前記プロセッサで実行されるべき前記制御プログラムの更新が可能であると判明した場合、前記受信装置は、前記制御装置に前記第２制御プログラムを転送する、請求項５又は６に記載の燃料電池システム。
【請求項８】
前記燃料電池システムは、通信ネットワークを介して前記燃料電池ユニットと通信可能であり、かつ、前記燃料電池ユニットにインストールされるべき前記第２制御プログラムを記憶している管理サーバをさらに備えた、請求項１〜７のいずれか１項に記載の燃料電池システム。
【請求項９】
前記更新指示部は、前記管理サーバに対して、前記制御プログラムの更新の進捗状況を通知する、請求項８に記載の燃料電池システム。
【請求項１０】
前記燃料電池ユニットへの前記第２制御プログラムの配信を前記管理サーバに指示する情報管理装置をさらに備えた、請求項８又は９に記載の燃料電池システム。
【請求項１１】
前記プロセッサは、前記第１制御プログラムを実行中であり、かつ、前記第２領域に前記第２制御プログラムを書き込み中でない期間において、前記メモリの前記第２領域を初期化する、請求項１〜１０のいずれか１項に記載の燃料電池システム。
【請求項１２】
燃料電池を運転するための制御プログラムとしての第１制御プログラムをメモリの第１領域から読み出してプロセッサに実行させることと、
前記第１制御プログラムに代えて前記プロセッサにおいて実行されるべき更新された制御プログラムである第２制御プログラムを前記メモリの第２領域に書き込むことと、
前記燃料電池の運転状況に応じて、前記プロセッサにて実行されるべき前記制御プログラムを前記メモリの前記第１領域に記憶された前記第１制御プログラムから前記メモリの前記第２領域に記憶された前記第２制御プログラムに切り替えることと、
を含む、燃料電池システムの運転方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、燃料電池システム及びその運転方法に関する。
【背景技術】
【０００２】
燃料電池システムは、エネルギーを高効率で供給することができるコージェネレーションシステムの１つである。地球温暖化などの環境問題に対する取り組みとして、燃料電池システムの普及が推進されている。燃料電池システムの普及が進むにつれて、そのメンテナンスの難しさが表面化しつつある。
【０００３】
難しいメンテナンスの１つとして、燃料電池システムの制御プログラムの更新が挙げられる。特許文献１には、燃料電池システムにおいて、燃料電池ユニット、貯湯タンク及び熱源機のそれぞれの制御プログラムを更新するための方法が記載されている。特許文献１に開示された方法によれば、インターネットなどのネットワークを介して、管理サーバから燃料電池システムに最新の制御プログラムが送信される。燃料電池ユニット、貯湯タンク及び熱源機の運転が停止している期間において、それぞれの制御プログラムが更新される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１８５３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
制御プログラムの更新中において、燃料電池システムの運転は大幅に制限される。このことは、燃料電池システムの利便性を低下させる。
【０００６】
本開示の目的の１つは、制御プログラムの更新を効率的に行いつつ、燃料電池システムの利便性を向上させるための技術を提供することにある。
【課題を解決するための手段】
【０００７】
すなわち、本開示は、
燃料電池と、
前記燃料電池を運転するための制御プログラムを実行するプロセッサと、
前記プロセッサにおいて実行されるべき前記制御プログラムとしての第１制御プログラムを記憶する第１領域と、前記第１制御プログラムに代えて前記プロセッサにおいて実行されるべき更新された制御プログラムである第２制御プログラムを記憶する第２領域とを含むメモリと、
前記燃料電池の運転状況に応じて、前記プロセッサにて実行されるべき前記制御プログラムを前記メモリの前記第１領域に記憶された前記第１制御プログラムから前記メモリの前記第２領域に記憶された前記第２制御プログラムに切り替える更新指示部と、
を備えた、燃料電池システムを提供する。
【発明の効果】
【０００８】
本開示の技術によれば、制御プログラムの更新を効率的に行いつつ、燃料電池システムの利便性を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本開示の一実施形態にかかる燃料電池システムの全体構成図である。
【図２】図２は、燃料電池ユニットの主制御装置及びその周辺機器の概略構成図である。
【図３】図３は、主制御装置のＲＯＭのメモリマップである。
【図４】図４は、情報管理装置、管理サーバ、送受信装置及び主制御装置の相互間における命令及びタスクのタイミングを示す図である。
【図５】図５は、情報制御装置のストレージにおけるデータ構造及び管理サーバのストレージにおけるデータ構造を示す図である。
【図６】図６は、ＲＯＭの第２領域への制御プログラムの書き込み処理を示すフローチャートである。
【発明を実施するための形態】
【００１０】
（本開示の基礎となった知見）
燃料電池システムの制御プログラムを更新するには、まず、燃料電池システムの運転を停止させる。次に、制御プログラムを更新する。その後、燃料電池システムの運転を再開し、正常な運転が行われているかどうかを確認する。定格運転から完全停止（発電量がゼロ）までに必要な時間は、例えば３０分間である。構成部品の温度の低下に必要な時間は、例えば１時間である。完全停止から定格運転までに必要な時間は、例えば３０分間である。正常な運転が行われているかどうかを確認するために必要な時間は、例えば１時間である。これらの時間を考慮に入れると、制御プログラムの更新には数時間が必要である。長時間にわたるシステムの停止をユーザに強いる必要がある。
【００１１】
また、燃料電池システムの制御プログラムを更新する作業者は、燃料電池システムの設置場所に制御プログラムの更新の都度、移動しなければならない。このことは、メンテナンス時間の増加の原因となっている。
【００１２】
特許文献１においては、燃料電池システムの停止中において、通信ネットワークを介して新しい制御プログラムが配信され、古い制御プログラムが新しい制御プログラムへと更新される。しかし、制御プログラムの更新が完了するまで燃料電池システムの運転は禁止される。この点は、燃料電池システムの設置場所に作業者が直接赴き、ＲＯＭライタを使って制御プログラムを更新する場合と同じである。特許文献１に記載の方法には、制御プログラムを更新するためのプログラムが別途必要になるという欠点もある。
【００１３】
本開示の第１態様にかかる燃料電池システムは、
燃料電池と、
前記燃料電池を運転するための制御プログラムを実行するプロセッサと、
前記プロセッサにおいて実行されるべき前記制御プログラムとしての第１制御プログラムを記憶する第１領域と、前記第１制御プログラムに代えて前記プロセッサにおいて実行されるべき更新された制御プログラムである第２制御プログラムを記憶する第２領域とを含むメモリと、
前記燃料電池の運転状況に応じて、前記プロセッサにて実行されるべき前記制御プログラムを前記メモリの前記第１領域に記憶された前記第１制御プログラムから前記メモリの前記第２領域に記憶された前記第２制御プログラムに切り替える更新指示部と、
を備えたものである。
【００１４】
燃料電池を運転している最中（発電中）において、プロセッサで実行されるべき制御プログラムを第１制御プログラムから第２制御プログラムに変更することは現実的には困難である。第１態様によれば、燃料電池の運転状況に応じて、プロセッサで実行されるべき制御プログラムが第１制御プログラムから第２制御プログラムに切り替えられるので、システムの暴走などの不具合の発生も防止されうる。特に、発電停止期間中に切り替えを行なえば、きわめてスムーズに制御プログラムの移行を完了させることができる。また、燃料電池システムは、通常、燃料電池の運転を定期的に停止するように設計されている（例えば１日に１回）。そのため、発電停止期間中は、第１制御プログラムから第２制御プログラムへの切り替えのタイミングとして適している。
【００１５】
本開示の第２態様において、例えば、第１態様にかかる燃料電池システムの前記更新指示部は、前記第１制御プログラムから前記第２制御プログラムへの切り替えを前記燃料電池の発電停止期間中に実行する。第２態様によれば、第１態様における効果が確実に得られる。燃料電池の発電中には、開閉弁、レギュレータ、冷却ポンプなどのアクチュエータとともに、これらアクチュエータを含む各種補機が運転している。プロセッサの再起動の際には、各種アクチュエータとの連係動作、及び、補機との連係動作が必要となる。
【００１６】
本開示の第３態様において、例えば、第１又は第２態様にかかる燃料電池システムは、前記燃料電池の排熱によって生成された湯を貯留する貯湯ユニットをさらに備え、前記更新指示部は、前記燃料電池の発電停止期間中であって前記貯湯ユニットが前記湯を外部に供給していない期間において、前記第１制御プログラムから前記第２制御プログラムへの切り替えを実行する。このような制約を課すことによって、湯が突然冷水に切り替わるといった不具合の発生を防止することができる。
【００１７】
本開示の第４態様において、例えば、第１〜第３態様のいずれか１つにかかる燃料電池システムの前記更新指示部は、前記プロセッサが前記メモリにアクセスしてデータを読み出すべき領域を特定するための情報を記憶するレジスタを含み、前記レジスタに記憶された情報が書き換えられた後、前記プロセッサにて実行されるべき前記制御プログラムが前記第１領域の前記第１制御プログラムから前記第２領域の前記第２制御プログラムへと切り替わる。第４態様によれば、燃料電池の発電停止期間中などの期間に制御プログラムの切り替えを確実に終了させることができる。
【００１８】
本開示の第５態様において、例えば、第１〜第４態様のいずれか１つにかかる燃料電池システムは、前記第２制御プログラムを外部から取得して一時的に保存する受信装置をさらに備え、前記燃料電池ユニットは、前記プロセッサ及び前記メモリを含む制御装置を有し、前記受信装置から前記制御装置に前記第２制御プログラムが転送される。第５態様によれば、更新不可の制御プログラムを主制御装置にダウンロードせずに済むので、主制御装置のＣＰＵ資源及びメモリ資源を節約することができる。
【００１９】
本開示の第６態様において、例えば、第５態様にかかる燃料電池システムの前記受信装置は、前記第１制御プログラムのバージョン情報と前記第２プログラムのバージョン情報との照合の結果、前記プロセッサで実行されるべき前記制御プログラムの更新が可能であると判明した場合、前記制御装置に前記第２制御プログラムを転送する。第６態様によれば、更新不可の制御プログラムを主制御装置にダウンロードせずに済むので、主制御装置のＣＰＵ資源及びメモリ資源を節約することができる。
【００２０】
本開示の第７態様において、例えば、第５又は第６態様にかかる燃料電池システムの前記受信装置は、前記燃料電池ユニットの機種情報と前記受信装置が前記外部から取得したデータに含まれた機種情報との照合結果、前記プロセッサで実行されるべき前記制御プログラムの更新が可能であると判明した場合、前記制御装置に前記第２制御プログラムを転送する。第７態様によれば、更新不可の制御プログラムを主制御装置にダウンロードせずに済むので、主制御装置のＣＰＵ資源及びメモリ資源を節約することができる。
【００２１】
本開示の第８態様において、例えば、第１〜第７態様のいずれか１つにかかる燃料電池システムは、通信ネットワークを介して前記燃料電池ユニットと通信可能であり、かつ、前記燃料電池ユニットにインストールされるべき前記第２制御プログラムを記憶している管理サーバをさらに備えたものである。このような構成によれば、燃料電池ユニットのエンドユーザを訪問することなく、制御プログラムの更新を行うことが可能である。制御プログラムの更新に費やされるコストを大幅に削減することができる。
【００２２】
本開示の第９態様において、例えば、第８態様にかかる燃料電池システムの前記更新指示部は、前記管理サーバに対して、前記制御プログラムの更新の進捗状況を通知する。このようにすれば、管理サーバで更新の進捗を管理できるので、更新不可の原因を容易に探ることができる。
【００２３】
本開示の第１０態様において、例えば、第８又は第９態様にかかる燃料電池システムは、前記燃料電池ユニットへの前記第２制御プログラムの配信を前記管理サーバに指示する情報管理装置をさらに備えたものである。管理サーバは、例えば、燃料電池ユニットの製造メーカのもとに設置され、情報管理装置は、例えば、燃料電池ユニットへの燃料の供給業者のもとに設置される。この場合、燃料の供給業者の依頼に応じて、更新された制御プログラムの配信を迅速に行うことができる。
【００２４】
本開示の第１１態様において、例えば、第１〜第１０態様のいずれか１つにかかる燃料電池システムの前記プロセッサは、前記第１制御プログラムを実行中であり、かつ、前記第２領域に前記第２制御プログラムを書き込み中でない期間において、前記メモリの前記第２領域を初期化する。空き時間を利用して予めメモリを初期化することにより、第２領域への第２制御プログラムの書き込み時間を短縮することが可能になる。
【００２５】
本開示の第１２態様にかかる燃料電池システムの運転方法は、
燃料電池を運転するための制御プログラムとしての第１制御プログラムをメモリの第１領域から読み出してプロセッサに実行させることと、
前記第１制御プログラムに代えて前記プロセッサにおいて実行されるべき更新された制御プログラムである第２制御プログラムを前記メモリの第２領域に書き込むことと、
前記燃料電池の運転状況に応じて、前記プロセッサにて実行されるべき前記制御プログラムを前記メモリの前記第１領域に記憶された前記第１制御プログラムから前記メモリの前記第２領域に記憶された前記第２制御プログラムに切り替えることと、
を含むものである。
【００２６】
第１２態様によれば、第１態様と同じ効果が得られる。
【００２７】
以下、本開示の実施形態について、図面を参照しながら説明する。本開示は、以下の実施形態に限定されない。
【００２８】
図１に示すように、本実施形態にかかる燃料電池システム１００は、燃料電池ユニット１０、管理サーバ６０及び情報管理装置８０を備えている。燃料電池ユニット１０は、通信ネットワークＮ１を介して、管理サーバ６０に通信可能に接続されている。管理サーバ６０は、通信ネットワークＮ２を介して、情報管理装置８０に通信可能に接続されている。図１では省略されているが、複数の燃料電池ユニット１０が通信ネットワークＮ１を介して、管理サーバ６０に通信可能に接続されている。なお、「通信可能」とは、データの送信及び受信が可能であることを意味する。
【００２９】
情報管理装置８０の要求を受けて、管理サーバ６０から燃料電池ユニット１０に更新された制御プログラム（updated control program）が配信され、燃料電池ユニット１０にインストールされる。
【００３０】
通信ネットワークＮ１及びＮ２の例として、インターネット、ローカルエリアネットワーク、仮想プライベートネットワークなどが挙げられる。通信ネットワークＮ１及びＮ２の構築には、電話回線、光回線、モバイル通信回線などの有線又は無線の通信インフラストラクチャが利用されうる。通信ネットワークＮ１は、通信ネットワークＮ２と同じ種類のネットワークであってもよいし、異なる種類のネットワークであってもよい。また、燃料電池ユニット１０、管理サーバ６０及び情報管理装置８０が共通のネットワークによって通信可能に接続されていてもよい。
【００３１】
管理サーバ６０には、燃料電池ユニット１０に送信されるべきデータが記憶されている。燃料電池ユニット１０に送信されるべきデータには、燃料電池ユニット１０にインストールされるべき更新された制御プログラムが含まれる。管理サーバ６０から更新された制御プログラムが配信され、複数の燃料電池ユニット１０のそれぞれにおいて制御プログラムの更新が自動的に行われる。このような構成によれば、燃料電池ユニット１０のエンドユーザを訪問することなく、制御プログラムの更新を行うことが可能である。制御プログラムの更新に費やされるコストを大幅に削減することができる。
【００３２】
情報管理装置８０は、管理サーバ６０に対し、燃料電池ユニット１０への更新された制御プログラムの配信を管理サーバ６０に指示する。管理サーバ６０は、例えば、燃料電池ユニット１０の製造メーカのもとに設置され、情報管理装置８０は、例えば、燃料電池ユニット１０への燃料の供給業者のもとに設置される。この場合、燃料の供給業者の依頼に応じて、更新された制御プログラムの配信を迅速に行うことができる。ただし、情報管理装置８０の機能が管理サーバ６０に備わっていてもよい。すなわち、管理サーバ６０に指示を入力して、燃料電池ユニット１０に制御プログラムを配信することも可能である。
【００３３】
燃料電池ユニット１０は、主制御装置１２（主制御基板）及び送受信装置１４（送受信基板）を備えている。主制御装置１２は、主に、燃料電池ユニット１０に設けられた燃料電池２７（図２）の運転を制御する役割を担っている。送受信装置１４は、ネットワークＮ１を介して、管理サーバ６０と通信を行う役割を担う。送受信装置１４には、モバイル通信モジュール、イーサネットモジュール（「イーサネット」は登録商標）などの通信モジュールが含まれる。
【００３４】
燃料電池システム１００は、貯湯ユニット４０をさらに備えている。貯湯ユニット４０は、燃料電池２７の排熱によって生成された湯を貯留し、シャワー、給湯栓、暖房設備などの必要な場所に湯を供給する役割を担っている。貯湯ユニット４０は貯湯制御装置３２（貯湯制御基板）を有する。貯湯制御装置３２は、燃料電池ユニット１０の主制御装置１２に接続されており、貯湯制御装置２１と燃料電池ユニット１０の主制御装置１２との間でデータの送受信が可能になっている。燃料電池ユニット１０の主制御装置１２及び貯湯ユニット４０の貯湯制御装置３２は、燃料電池ユニット１０及び貯湯ユニット４０に共通の制御装置で構成されていてもよい。
【００３５】
図２に示すように、燃料電池ユニット１０の主制御装置１２は、ＣＰＵ２１、ＲＡＭ２２、ＲＯＭ２３及びインターフェイス２４（Ｉ／Ｆ）を備えている。ＣＰＵ２１、ＲＡＭ２２及びＲＯＭ２３は、例えば、ワンチップのマイクロコンピュータ２０に内蔵されている。主制御装置１２には、ＥＥＰＲＯＭ２５、リモートコントローラ２６、燃料電池２７（燃料電池２７を運転するための各種の補機、センサ類などを含む）、貯湯制御装置３２などの周辺機器がインターフェイス２４を介して接続されている。ＥＥＰＲＯＭ２５には、燃料電池２７の累積運転時間などの重要なデータが記憶されている。リモートコントローラ２６は、入力装置及び出力装置を兼ねている。ユーザは、リモートコントローラ２６を操作して湯を利用したり、燃料電池２７の運転を停止させたりすることができる。ＲＯＭ２３は、データの消去及び書き込みを行うことができる不揮発性メモリであり、典型的にはフラッシュメモリである。ＲＯＭ２３には、燃料電池２７を運転するための制御プログラムが記憶されている。ＲＯＭ２３に記憶された制御プログラムが読み出され、ＣＰＵ２１によって実行される。ＲＡＭ２２は、データの一時的な保存領域として利用される。
【００３６】
送受信装置１４は、マイクロコンピュータ３０及びモバイル通信モジュール３１を有する。マイクロコンピュータ３０は、例えば、ＣＰＵ、メモリなどを内蔵したワンチップマイクロコンピュータである。送受信装置１４も燃料電池ユニット１０の主制御装置１２に接続されており、送受信装置１４と燃料電池ユニット１０の主制御装置１２との間でデータの送受信が可能になっている。送受信装置１４と主制御装置１２との間のデータの送受信は、例えば、ＲＳ４８５などのシリアル通信回線を介して行われる。送受信装置１４は、更新された制御プログラムを含むデータを外部（本実施形態では管理サーバ６０）から取得し、取得したデータをマイクロコンピュータ３０のメモリに一時的に記憶する。
【００３７】
図３に示すように、ＲＯＭ２３は、第１領域２３ｂ及び第２領域２３ｃを含む。第２領域２３ｃは、第１領域２３ｂのアドレスとは異なるアドレスで特定される領域である。第１領域２３ｂは、現在実行中の制御プログラムが記憶されている領域である。言い換えれば、第１領域２３ｂは、ＣＰＵ２１において実行されるべき制御プログラムとしての第１制御プログラムを記憶する領域である。第２領域２３ｃは、更新された制御プログラムを記憶するための領域である。詳細には、第１制御プログラムに代えてＣＰＵ２１において実行されるべき更新された制御プログラムである第２制御プログラムを記憶する領域である。
【００３８】
ＲＯＭ２３は、第１領域２３ｂ及び第２領域２３ｃに加え、ブートプログラム領域２３ａ及びデータ領域２３ｄを含んでいる。ブートプログラム領域２３ａには、マイクロコンピュータ２０の起動用プログラムが記憶されている。データ領域２３ｄには任意のデータを記憶させることができる。
【００３９】
燃料電池ユニット１０の出荷時において、第１領域２３ｂには第１制御プログラムが予め記憶されている。他方、燃料電池ユニット１０の出荷時において、第２領域２３ｃには何も記憶されていない。あるいは、第２領域２３ｃには同じ第１制御プログラムが記憶されていてもよい。この場合、第２領域２３ｃに更新された制御プログラムを書き込む必要が生じたときに第２領域２３ｃが初期化されうる。
【００４０】
第１領域２３ｂに記憶された第１制御プログラムの実行中に第２制御プログラムを外部からダウンロードすると、主制御装置１２のマイクロコンピュータ２０は、第２領域２３ｃに第２制御プログラムを書き込み、次に制御プログラムを読み出すべき領域として第２領域２３ｃを選択するための処理を実行する。その後、マイクロコンピュータ２０はリセットをかけて再起動する。リセット解除後、第２領域２３ｃに記憶された第２制御プログラムがＣＰＵ２１において実行される。このようにすれば、制御プログラムの更新を効率的に行うことができる。制御プログラムの更新のために燃料電池ユニット１０の運転を長時間停止させる必要が無いので、燃料電池システム１００の利便性が大幅に向上する。制御プログラムを更新するためのプログラムを別途準備する必要も無い。
【００４１】
また、ＣＰＵ２１によって実行されるべき制御プログラムとして、第２領域２３ｃに記憶された第２制御プログラムが選択されているときに、主制御装置１２が更新された制御プログラム（第３制御プログラム）を更に取得することがある。この場合、第１領域２３ｂに更新された制御プログラムを書き込み、次に制御プログラムを読み出すべき領域として第１領域２３ｂを選択するための処理を実行する。その後、マイクロコンピュータ２０はリセットをかけて再起動する。リセット解除後、第１領域２３ｂに記憶された第３制御プログラムがＣＰＵ２１において実行される。このような処理を繰り返せば、複数回にわたる制御プログラムの更新要求に対応することできる。
【００４２】
燃料電池ユニット１０の制御プログラムを更新する方法を更に詳しく説明する。
【００４３】
図４に示すように、本実施形態において、制御プログラムの更新は、情報管理装置８０から管理サーバ６０への制御プログラムの更新指示を契機として開始される。
【００４４】
図５に示すように、管理サーバ６０のストレージ６０ｈ（例えばハードディスク）には、運転データ管理プログラム及びデータ配信プログラムが記憶されている。運転データ管理プログラムは、燃料電池ユニット１０の運転データ、貯湯ユニット４０の運転データなどの様々な運転データを管理するためのプログラムである。運転データ管理プログラムが管理サーバ６０で実行されることによって運転データが集められ、ストレージ６０ｈの運転データ領域に保存される。データ配信プログラムは、ストレージ６０ｈの配信用データ領域から更新された制御プログラムを読み出し、燃料電池ユニット１０に配信するためのプログラムである。
【００４５】
情報管理装置８０のストレージ８０ｈ（例えばハードディスク）には、運転データ管理プログラム及び配信命令プログラムが記憶されている。運転データ管理プログラムは、管理サーバ６０から情報管理装置８０に送られた運転データを管理するためのプログラムである。運転データ管理プログラムにより運転データが集められ、ストレージ８０ｈの運転データ領域に保存される。配信命令プログラムは、制御プログラムの更新指示を管理サーバ６０に送信するためのプログラムである。
【００４６】
図４に示すように、情報管理装置８０は、バージョン情報及び機種情報を送信データに添付して、制御プログラムの更新を管理サーバ６０に指示する。バージョン情報は、制御プログラムのバージョンを特定するための情報である。機種情報は、制御プログラムの更新が必要な燃料電池ユニット１０の機種を特定するための情報である。情報管理装置８０から制御プログラムの更新指示を取得すると、管理サーバ６０は、燃料電池ユニット１０の送受信装置１４に新しい制御プログラムを配信するとともに、制御プログラムのバージョン情報及び機種情報の確認を要求する。
【００４７】
具体的には、管理サーバ６０は、新しい制御プログラム（第２制御プログラム）のバージョンが燃料電池ユニット１０で現在実行中の制御プログラム（第１制御プログラム）のバージョンの次のバージョンであるかどうかを問い合わせる。また、管理サーバ６０は、燃料電池ユニット１０の機種が制御プログラムの更新が必要な機種に一致するかどうかを問い合わせる。管理サーバ６０からバージョン情報及び機種情報の確認要求を取得すると、燃料電池ユニット１０の送受信装置１４は、主制御装置１２に対し、バージョン情報及び機種情報の確認を要求する。主制御装置１２は、バージョン情報を確認するための処理及び機種情報を確認するための処理を実行する。主制御装置１２は、燃料電池ユニット１０の動作状態及び発電状態にかかわらず、これらの処理を実行する。つまり、燃料電池２７が運転中であり、電力が生成されている期間においても、これらの処理は実行される。燃料電池２７の運転が停止中であり、電力が生成されていない期間においても、これらの処理は実行される。
【００４８】
第１制御プログラムのバージョン情報は、例えば、ＲＯＭ２３に記憶されている。具体的には、第１制御プログラムのバージョン情報は、第１領域２３ｂの先頭アドレスから４ビットの領域に記憶されている。第１制御プログラムのバージョン情報は、外部の記憶装置に記憶されていてもよい。外部の記憶装置として、本実施形態ではＥＥＰＲＯＭ２５を使用できる。第２制御プログラムがＲＯＭ２３に書き込まれるとき、第２制御プログラムに添付されたバージョン情報が第２制御プログラムと関連付けられてＥＥＰＲＯＭ２５に保存される。
【００４９】
燃料電池システム１０の機種情報は、例えば、ＲＯＭ２３に記憶されている。具体的には、燃料電池システム１０の機種情報は、ＲＯＭ２３のブートプログラム領域２３ａ又はデータ領域２３ｄ（例えば、先頭アドレスから４ビットの領域）に記憶されている。燃料電池システム１０の機種情報は、外部の記憶装置に記憶されていてもよい。外部の記憶装置として、本実施形態ではＥＥＰＲＯＭ２５を使用できる。機種情報は、燃料電池ユニット１０の製造時にＲＯＭ２３、ＥＥＰＲＯＭ２５などの不揮発性メモリに予め書き込まれる。
【００５０】
送受信装置１４からバージョン情報及び機種情報の確認要求を取得すると、主制御装置１２は、ＲＯＭ２３（又はＥＥＰＲＯＭ２５）にアクセスし、現在実行中の制御プログラム（第１制御プログラム）のバージョン情報を読み出し、読み出したバージョン情報と確認要求に添付されたバージョン情報とが一致するかどうかを判断する。また、主制御装置１２は、ＲＯＭ２３（又はＥＥＰＲＯＭ２５）にアクセスし、燃料電池ユニット１０の機種情報を読み出し、読み出した機種情報と確認要求に添付された機種情報とが一致するかどうかを判断する。
【００５１】
主制御装置１２は、バージョン情報及び機種情報の確認結果を送受信装置１４に送信する。すなわち、バージョン情報及び機種情報の両方が確認要求に添付された情報と一致している場合、更新可能の応答を送信し、一致していない場合、更新不可の応答を送信する（更新可否の応答）。更新可能である場合、主制御装置１２において、ＲＯＭ２３の第２領域２３ｃが初期化され、送受信装置１４からの新たな制御プログラムの配信に向けた準備が行われる。
【００５２】
送受信装置１４は、主制御装置１２から更新可否の応答を取得すると、更新可否の応答を管理サーバ６０に送信する。管理サーバ６０は、送受信装置１４から更新可否の応答を取得すると、管理サーバ６０は、更新可否の応答を情報管理装置８０に送信する。また、管理サーバ６０は、制御プログラムの転送要求を送受信装置１４に送信する。主制御装置１２から更新可能の応答を受け取った後、送受信装置１４は、新たな制御プログラム（第２制御プログラム）を分割して主制御装置１２に転送する。
【００５３】
本実施形態において、送受信装置１４は、新たな制御プログラムを外部（管理サーバ６０）から取得して一時的に保存する役割を担っている。新たな制御プログラム（第２制御プログラム）は、送受信装置１４から主制御装置１２に転送される。詳細には、第１制御プログラムのバージョン情報と受信したデータに含まれたバージョン情報との照合の結果、主制御装置１２のマイクロコンピュータ２０のＣＰＵ２１で実行されるべき制御プログラムの更新が可能であると判明した場合、送受信装置１４（詳細にはマイクロコンピュータ３０）は、主制御装置１２に第２制御プログラムを転送する。このようにすれば、更新不可の制御プログラムを主制御装置１２にダウンロードせずに済むので、主制御装置１２のＣＰＵ資源及びメモリ資源を節約することができる。更新不可の場合には、送受信装置１４のメモリに一時記憶された制御プログラムは破棄される。
【００５４】
また、燃料電池ユニット１０の機種情報と送受信装置１４が外部から取得したデータ（詳細には、管理サーバ６０から受信したデータ）に含まれた機種情報との照合結果、主制御装置１２のマイクロコンピュータ２０のＣＰＵ２１で実行されるべき制御プログラムの更新が可能であると判明した場合、送受信装置１４（詳細にはマイクロコンピュータ３０）は、主制御装置１２に第２制御プログラムを転送する。このようにすれば、更新不可の制御プログラムを主制御装置１２にダウンロードせずに済むので、主制御装置１２のＣＰＵ資源及びメモリ資源を節約することができる。更新不可の場合には、送受信装置１４のメモリに一時記憶された制御プログラムは破棄される。
【００５５】
なお、本実施形態では、送受信装置１４が主制御装置１２から更新可否の応答を取得する前に管理サーバ６０から送受信装置１４に新たな制御プログラムが配信される。ただし、送受信装置１４が主制御装置１２から更新可否の応答を取得した後に管理サーバ６０から送受信装置１４に新たな制御プログラムが配信されてもよい。
【００５６】
送受信装置１４から主制御装置１２に制御プログラム（第２制御プログラム）が転送されると、図６のフローチャートに示す各処理が主制御装置１２のＣＰＵ２１において実行される。まず、ステップＳ１において、制御プログラムがＲＯＭ２３の第２領域２３ｃに書き込まれる。詳細には、ＲＡＭ２２に制御プログラムの分割データが一時保存され、ＲＡＭ２２からＲＯＭ２３にデータが移される。ステップＳ２において、書き込み状況がＥＥＰＲＯＭ２５に保存される。
【００５７】
本実施形態によれば、第１制御プログラムを実行することによる燃料電池２７の運転の制御と制御プログラムの更新の処理とを互いに干渉させることなく、別々のタスクとして進めることができる。例えば、第１制御プログラムが実行されて燃料電池２７で電力が生成されている最中であったとしても、ＣＰＵ２１の余剰能力を利用して、第２制御プログラムをＲＯＭ２３の第２領域２３ｃに書き込むことができる。
【００５８】
通常、燃料電池システムの制御プログラムは、マイクロコンピュータの内蔵フラッシュメモリに記憶されている。当業者に知られているように、内蔵フラッシュメモリの書き換えには比較的長い時間が必要である。つまり、本来、制御プログラムの更新には比較的長い時間が必要である。本実施形態によれば、燃料電池２７の運転状態とは無関係に制御プログラムの更新の処理の大部分を進行させるので、更新処理のために燃料電池２７の運転を停止させる必要はない。つまり、ユーザにとって、本実施形態の燃料電池システム１００の利便性は非常に高いといえる。
【００５９】
ＲＯＭ２３の第２領域２３ｃへの第２制御プログラムの書き込みが終了すると、ステップＳ３において、第１制御プログラムから第２制御プログラムへの切り替え（制御プログラムの切り替え）が可能なタイミングかどうか判断される。本実施形態では、燃料電池２７の運転状況に応じて、ＣＰＵ２１にて実行されるべき制御プログラムがＲＯＭ２３の第１領域２３ｂに記憶された第１制御プログラムからＲＯＭ２３の第２領域２３ｃに記憶された第２制御プログラムに切り替えられる。詳細には、第１制御プログラムから第２制御プログラムへの切り替えが燃料電池２７の発電停止期間中に実行される。
【００６０】
燃料電池２７を運転している最中（発電中）に、ＣＰＵ２１で実行されるべき制御プログラムを第１制御プログラムから第２制御プログラムに変更することは現実的には困難である。発電中においては、主制御装置１２は、ポンプ、弁などの補機の制御を行なっている。このような期間に後述するようにマイクロコンピュータ２０の再起動を行うことは不可能である。発電中に主制御装置１２のマイクロコンピュータ２０を再起動すると、マイクロコンピュータ２０は再起動前の状態を忘れているので、燃料電池２７の運転を継続することが不可能になる。
【００６１】
本実施形態では、燃料電池２７の運転状況に応じて、ＣＰＵ２１で実行されるべき制御プログラムが第１制御プログラムから第２制御プログラムに切り替えられるので、システムの暴走などの不具合の発生も防止されうる。特に、発電停止期間中に切り替えを行なえば、きわめてスムーズに制御プログラムの移行を完了させることができる。また、燃料電池システム１００は、通常、燃料電池２７の運転を定期的に停止するように設計されている（例えば１日に１回）。そのため、発電停止期間中は、第１制御プログラムから第２制御プログラムへの切り替えのタイミングとして適している。
【００６２】
図６に示すように、切り替え可能なタイミングであれば、ステップＳ４において、起動領域の設定が行われる。起動領域を設定する処理は、ＣＰＵ２１にて実行されるべき制御プログラムを第１領域２３ｂの第１制御プログラムから第２領域２３ｃの第２制御プログラムへと切り替えるための処理である。本実施形態において、制御プログラムの切り替えは、ＲＯＭ２３に実装されたブートスワップ機能を利用して行われる。ブートスワップ機能は、第１領域２３ｂのアドレスと第２領域２３ｃのアドレスとを見かけ上入れ替えることができる機能である。ブートスワップは、データ領域２３ｄに確保された特定のレジスタの記憶状態を「０」と「１」との間で切り替えることによって達成される。特定のレジスタは、ＣＰＵ２１がＲＯＭ２３にアクセスして制御プログラムのデータを読み出すべき領域を特定するための情報を記憶する役割を担っている。
【００６３】
ステップＳ４において、特定のレジスタに記憶された情報が書き換えられる（例えば、「０」→「１」）。これにより、ＣＰＵ２１にて実行されるべき制御プログラムが第１領域２３ｂの第１制御プログラムから第２領域２３ｃの第２制御プログラムへと切り替わる。ＣＰＵ２１、特定のレジスタ及び図６のフローチャートに示す各処理を実行するためのプログラムは、制御プログラムを切り替える処理を行う更新指示部として機能する。ステップＳ４の処理は短時間で終了するので、燃料電池の発電停止期間中などの期間に制御プログラムの切り替えが確実に終了する。
【００６４】
起動領域の設定が完了したら、ステップＳ５において、主制御装置１２のマイクロコンピュータ２０を再起動させる。これにより、制御プログラムの更新が完了し、次に燃料電池２７の運転を開始するときから、更新された制御プログラム（第２制御プログラム）がＣＰＵ２１で実行される。
【００６５】
ステップＳ３において、切り替え可能なタイミングでないと判断された場合、ステップＳ３を繰り返し、切り替え可能なタイミングまで待機する。切り替え可能なタイミングまで待機することに代えて、待機時間にタイムアウト時間を設定してもよい。例えば、待機時間がタイムアウト時間を越えた場合、ソフト更新が失敗したと判断し、管理サーバ６０に通知する。そして、第２領域２３ｃに書き込んだ第２制御プログラムを無視して、第１領域２３ｂの第１制御プログラムにしたがった動作を継続する。
【００６６】
なお、燃料電池２７の発電停止期間中であって、貯湯ユニット４０が湯を外部に供給していない期間において、第１制御プログラムから第２制御プログラムへの切り替えを実行することが望ましい。このような制約を課すことによって、湯が突然冷水に切り替わるといった不具合の発生を防止することができる。例えば、マイクロコンピュータ２０を再起動すると、リモートコントローラ２６にも再起動がかかり、給湯が「入」から「切」の状態に自動的に切り替わるようにリモートコントローラ２６が設計されていることがある。このような場合には、給湯中にステップＳ５の処理が行われることを避けることが望ましい。貯湯ユニット４０が給湯中である場合にも、切り替え可能なタイミングまで待機する処理が行われる。これにより、燃料電池２７の発電停止期間であって、貯湯ユニット４０が湯を外部に供給していない期間において、ステップＳ４及びステップＳ５の処理が行われる。
【００６７】
また、ステップＳ４及びステップＳ５の処理を実行する直前の所定期間（例えば、１０秒間）において、ユーザによるリモートコントローラ２６の操作を禁止することが望ましい。このような制約は、マイクロコンピュータ２０を再起動すると、リモートコントローラ２６にも再起動がかかるようにリモートコントローラ２６が設計されている場合に特に有効である。
【００６８】
図４に示すように、主制御装置１２において、マイクロコンピュータ２０の再起動が完了すると、主制御装置１２から送受信装置１４に制御プログラムの更新の完了が通知される。そして、送受信装置１４から管理サーバ６０に制御プログラムの更新の完了が通知され、管理サーバ６０から情報管理装置８０に制御プログラムの更新の完了が通知される。先に説明したように、更新不可の場合にもその旨が管理サーバ６０に通知される。つまり、本実施形態によれば、主制御装置１２（更新指示部としてのＣＰＵ２１）から管理サーバ６０に対して、制御プログラムの更新の進捗状況が通知される。このようにすれば、管理サーバ６０で更新の進捗を管理できるので、更新不可の原因を容易に探ることができる。
【００６９】
図４に示す例では、更新可否及び完了通知を示す情報が燃料電池ユニット１０から管理サーバ６０に送信される。送信されるべき情報はこれらに限定されず、例えば、「制御プログラムをダウンロード中」「インストール待ち」「更新成功」「更新失敗」などの情報が燃料電池ユニット１０から管理サーバ６０に送信されてもよい。これらの情報は、管理サーバ６０のモニタに表示されうる。このようにすれば、燃料電池ユニット１０の管理がより容易になる。
【００７０】
（変形例）
燃料電池ユニット１０の主制御装置１２に更新された制御プログラムを配信する方法は、通信ネットワークＮ１を利用することに限定されない。例えば、マイクロコンピュータ２０のインターフェイス２４は、シリアル通信インタフェース、IEEE 802.3などの外部入力インターフェイスを含む。これらの外部入力インターフェースを利用して、外部コンピュータから主制御装置１２のＲＡＭ２２に更新された制御プログラムを供給して一時的に保存させ、さらに、ＲＯＭ２３の第２領域２３ｃに制御プログラムを書き込むことができる。つまり、管理サーバ６０及び情報管理装置８０は必須ではない。しかし、遠隔地から制御プログラムを更新する方法によれば、先に説明した利益が得られる。
【００７１】
送受信装置１４は、受信機能のみを備えた受信装置であってもよい。
【００７２】
第１領域２３ｂに記憶された第１制御プログラムをＣＰＵ２１で実行中であり、かつ、第２領域２３ｃに第２制御プログラムを書き込み中でない期間において、ＣＰＵ２１は、ＲＯＭ２３の第２領域２３ｃを初期化する処理を実行してもよい。空き時間を利用して予めＲＯＭ２３を初期化することにより、第２領域２３ｃへの第２制御プログラムの書き込み時間を短縮することが可能になる。
【産業上の利用可能性】
【００７３】
本明細書に開示された技術は、燃料電池システムに有用であり、特に、燃料電池システムの制御プログラムを遠隔地から更新することに有用である。
【符号の説明】
【００７４】
１０  燃料電池ユニット
１２  主制御装置
１４  送受信装置
２０，３０  マイクロコンピュータ
２１  ＣＰＵ
２２  ＲＡＭ
２３  ＲＯＭ
２３ｂ  第１領域
２３ｃ  第２領域
２６  リモートコントローラ
２７  燃料電池
３１  モバイル通信モジュール
３２  貯湯制御装置
４０  貯湯ユニット
６０  管理サーバ
８０  情報管理装置
１００  燃料電池システム
Ｎ１，Ｎ２  通信ネットワーク
【図１】
2018073546.tif 000003
【図２】
2018073546.tif 000004
【図３】
2018073546.tif 000005
【図４】
2018073546.tif 000006
【図５】
2018073546.tif 000007
【図６】
2018073546.tif 000008