(57)【要約】【課題】本明細書は、複数本の水素タンクを安定して制御する水素タンク制御装置を提供する。【解決手段】本明細書が開示する水素タンク制御装置は、外部の装置から取得した水素タンクの数（総タンク数）を記憶する記憶装置を備えている。水素タンク制御装置は、所定の許容数までの水素タンクのバルブを制御可能である。水素タンク制御装置は、記憶装置に記憶されている総タンク数に基づいてバルブを制御する水素タンクの数を設定するとともに、記憶装置の異常を検知した場合に許容数を、バルブを制御する水素タンクの数に設定する。この水素タンク制御装置を採用することにより、記憶装置に異常が発生した場合においても、バルブの制御を継続することができる。【選択図】図２
2019219012.tif 000002
【特許請求の範囲】
【請求項１】
所定の許容数までの水素タンクのバルブを制御可能な制御装置であって、
外部の装置から取得した水素タンクの数（総タンク数）を記憶する記憶装置を備えており、
当該制御装置は、
前記記憶装置に記憶されている前記総タンク数に基づいて前記バルブを制御する水素タンクの数を設定するとともに、
前記記憶装置の異常を検知した場合に、前記許容数を、前記バルブを制御する前記水素タンクの数に設定する、水素タンク制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書が開示する技術は、複数本の水素タンクのバルブを制御可能な制御装置（水素タンク制御装置）に関する。
【背景技術】
【０００２】
近年、燃料電池車が注目されている。燃料電池車は、複数本の水素タンクを搭載している場合が多い。特許文献１には、４本の水素タンクを搭載した燃料電池車が開示されている。４本の水素タンクのバルブは、１個の水素タンク制御装置で制御される。以下では、水素タンク制御装置を単純にタンク制御装置と称する場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−０９６３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば大型バスでは多数の水素タンクを搭載する。車種によって、搭載する水素タンクの数（以下、総タンク数と称する。）が異なる。１本の水素タンクのバルブに１個のタンク制御装置を割り当てるのはコストが嵩む。１個のタンク制御装置が複数の水素タンクのバルブを制御できる方がよい。一方、車種によって異なる総タンク数に対して車種ごとに個別のタンク制御装置を開発すると、開発費用が増加し、経済的ではない。しかし、１個のタンク制御装置が多数の水素タンク（例えば２０本）のバルブを制御できる規模を有していると、そのようなタンク制御装置を数本しか水素タンクを搭載しない車両に利用するのは無駄が多い。車両が総タンク数に応じて数本の水素タンクのバルブを制御可能な複数の同一のタンク制御装置を組み合わせて用いることが経済的である。
【０００５】
総タンク数が異なる車両に対して同一のタンク制御装置を用いる場合、タンク制御装置は、総タンク数の情報を外部から入手する必要がある。入手した情報（総タンク数）は記憶装置に記憶される。記憶装置で異常が発生し、タンク制御装置が総タンク数の情報を利用できなくなると、水素タンク及びバルブは正常であるにもかかわらずタンク制御装置がバルブを制御できなくなるおそれがある。なお、タンク制御装置が総タンク数の情報を利用できなくなる場合とは、記憶装置へのアクセスができなくなる場合、あるいは記憶装置が誤動作して総タンク数のデータが異常な値に改変される場合などである。
【課題を解決するための手段】
【０００６】
本明細書は、所定の許容数までの水素タンクのバルブを制御可能な水素タンク制御装置を開示する。その水素タンク制御装置は、外部の装置から取得した総タンク数を記憶する記憶装置を備えている。水素タンク制御装置は、記憶装置に記憶されている総タンク数に基づいてバルブを制御する水素タンクの数を設定する。また、水素タンク制御装置は、記憶装置の異常を検知した場合に許容数を、バルブを制御する水素タンクの数（以下、制御対象タンク数とする）に設定する。
【０００７】
本明細書が開示する水素タンク制御装置は、記憶装置で異常が発生し、プロセッサが総タンク数の情報を利用できない場合においても、許容数を制御対象タンク数に設定することでバルブの制御を継続することができる。
【０００８】
本明細書が開示する技術の詳細とさらなる改良は以下の「発明を実施するための形態」にて説明する。
【図面の簡単な説明】
【０００９】
【図１】実施例の水素タンク制御装置を含む燃料電池車のブロック図である。
【図２】実施例における制御ルーチンを示すフローチャートである。
【図３】複数の水素タンク制御装置を含む燃料電池車のブロック図である。
【図４】夫々の水素タンク制御装置が自身の識別番号を認識する仕組みを説明する図である。
【図５】夫々の水素タンク制御装置が自身の識別番号を認識する別の仕組みを説明する図である。
【図６】夫々の水素タンク制御装置が自身の制御対象のタンク本数を判別するためのテーブルである。
【図７】夫々の水素タンク制御装置が実行する制御ルーチンを示すフローチャートである。
【発明を実施するための形態】
【００１０】
図面を参照して実施例の水素タンク制御装置５を説明する。以下、水素タンク制御装置を単純にタンク制御装置５と称する。タンク制御装置５は、燃料電池車１０に搭載されている。図１に、燃料電池車１０のブロック図を示す。燃料電池車１０は、３本の水素タンク６と、燃料電池２０と、タンク制御装置５と、上位制御装置３を備えている。なお、３本の水素タンク６を区別することはなく、いずれかの水素タンクを示す場合には、水素タンク６と表記し、第ｉ番目の水素タンクを示す場合には、水素タンク６（ｉ）と表記する。燃料電池車１０は、総タンク数が３本の自動車である。
【００１１】
燃料電池２０は、インジェクタ２１と燃料電池スタック２２を備えている。なお、燃料電池２０には、燃料電池スタック２２を制御するための他のデバイスを備えているが、それらは図示を省略した。３本の水素タンク６に貯留された水素ガスは、燃料パイプ８を介して燃料電池２０のインジェクタ２１に送られる。インジェクタ２１は、水素ガスの圧力を調整して燃料電池スタック２２に供給する。各水素タンク６にはバルブ７が設けられている。バルブ７を開くことにより、水素タンク６から燃料電池２０へ水素ガスを供給することが可能となる。タンク制御装置５は、３本の水素タンク６のバルブ７を制御する。
【００１２】
タンク制御装置５は、プロセッサ５１と、第１記憶装置５２と、第２記憶装置５３を備えている。プロセッサ５１と第１記憶装置５２は、装置内の通信線で接続されており、プロセッサ５１と第２記憶装置５３も装置内の通信線で接続されている。第１記憶装置５２は、ＲＯＭ（読み出し専用メモリ）であり、プロセッサ５１が実行する制御プログラムと、制御プログラムで実現される処理で用いられる定数が記憶されている。プロセッサ５１は、制御プログラムに従って所定の演算を実行して、バルブ７の開閉制御など、種々の処理や制御を行う。第２記憶装置５３は、不揮発性のメモリであり、プロセッサ５１が外部から得たデータや、制御プログラムで実現される処理の中で生成されるデータなどが記憶される。
【００１３】
タンク制御装置５は、３本までの水素タンクのバルブを制御可能である。また、別のタンク制御装置は、最大５本までの水素タンクのバルブを制御可能である。このように、数種類の異なるタンク制御装置が存在する。ＲＯＭである第２記憶装置５３には、タンク制御装置５が制御可能な水素タンクの数が記憶されている。タンク制御装置５が制御可能な水素タンクの数を、本明細書では「許容数」と称する。以下では、第２記憶装置５３を単純に記憶装置５３と称する。
【００１４】
燃料電池車によって総タンク数は異なるため、総タンク本数が多い場合には、複数のタンク制御装置５が搭載されることもあり得る（後述する変形例参照）。複数のタンク制御装置５は区別する必要がある。タンク制御装置５は、識別番号によって区別される。しかし、タンク制御装置５は、製造時は全て同じ構造を有しており、識別番号も与えられていない。タンク制御装置５は、車両に搭載され、信号ケーブル等が接続された後に、自身の識別番号を特定し、また、自身の制御対象の水素タンク数（制御対象タンク数）を特定する。さらに、タンク制御装置５は、自身が制御する水素タンクの番号（制御対象タンク番号）も自動的に判別する。自身の識別番号を特定する仕組み、自身が制御する水素タンクの本数を特定する仕組み、自身の制御対象の水素タンクの番号を特定する仕組み、については後述する。
【００１５】
上位制御装置３は、燃料電池車１０の全体を管理するコンピュータであり、タンク制御装置５のほか、燃料電池２０、その他車両に関するデバイスを管理する。上位制御装置３は、初回起動時に、燃料電池車１０の総タンク数を、車内ＬＡＮ４を介してタンク制御装置５に送信する。この上位制御装置３の初回起動時にタンク制御装置５に送信された総タンク数と、自身の識別番号から、タンク制御装置５は自身の制御対象の水素タンク数を特定する。このように、上位制御装置３から送信された総タンク数に基づいてバルブ７を制御することで、許容数が総タンク数と異なる場合（例えば本実施例における許容数３本のタンク制御装置５を、総タンク数２本の燃料電池車に用いる場合）においても、タンク制御装置５は２本のバルブ７を正常に制御することができる。即ち、総タンク数の異なる複数の燃料電池車に対し、タンク制御装置５を用いることができるため、開発費を低減することができる。
【００１６】
また、タンク制御装置５は上位制御装置３から送信された総タンク数を記憶装置５３に記憶する。その後、水素タンク６のバルブ７を制御する際に、タンク制御装置５は、記憶装置５３の総タンク数を読み取り、読み取った総タンク数を用いて制御対象タンク数を特定してから、制御対象タンク数範囲内の個数の制御対象タンク番号を特定する。そして、タンク制御装置５は、特定された制御対象タンク番号のバルブ７を制御する。このように、タンク制御装置５は、バルブ７の制御の度に、記憶装置５３の総タンク数を読み取り、制御対象タンク数範囲内の個数の制御対象タンク番号を特定してバルブ７を制御する。そのような処理により、タンク制御装置５は、誤った水素タンク６のバルブ７を制御することを防止することができる。即ち、タンク制御装置５の信頼度を高めることができる。また、記憶装置５３に記憶された総タンク数に基づいてバルブ７を制御することで、バルブ７を制御する度に上位制御装置３からタンク制御装置５に総タンク数を送信する必要がなくなる。それゆえ、例えばノイズ等により、上位制御装置３とタンク制御装置５の間に通信不良が発生した場合においても、記憶装置５３に記憶された総タンク数に基づいて、タンク制御装置５は正常にバルブ７を制御することができる。
【００１７】
タンク制御装置５は許容数３本まで水素タンク６のバルブ７を制御することができる。なお、第１実施例におけるタンク制御装置５の許容数と燃料電池車１０の総タンク数はともに３本である。しかし、先に述べたようにタンク制御装置５は本実施例における燃料電池車１０以外の燃料電池車にも搭載され得るため、搭載される燃料電池車の総タンク数が、タンク制御装置５の許容数と異なることもあり得る。
【００１８】
第１実施例におけるタンク制御装置５のバルブ７の制御方法について、以下説明する。燃料電池車１０が走行中、上位制御装置３は、必要に応じて、バルブを開くべき水素タンクの番号（以下、指令タンク番号）をタンク制御装置５に送信する。上位制御装置３からタンク制御装置５への指令タンク番号は、車内ＬＡＮ４を介して送信される。先に述べたように、上位制御装置３は、初回起動時に燃料電池車１０の総タンク数（３本）を、車内ＬＡＮ４を介してタンク制御装置５に送信する。また、タンク制御装置５は、この上位制御装置３から送信された総タンク数（３本）を記憶装置５３に記憶する。タンク制御装置５は、上位制御装置３から指令タンク番号が送信された際、記憶装置５３の総タンク数（３本）を読み取る。これにより、タンク制御装置５は、自身の制御対象タンク数を読み取った総タンク数（３本）に設定することができる。タンク制御装置５は、自身の制御対象タンク数（３本）を設定した後、上位制御装置３からの指令タンク番号が、制御対象タンク数範囲内の個数の自身の制御対象タンク番号に該当するか否かを判定する。タンク制御装置５は、指令タンク番号が制御対象タンク数範囲内の個数の自身の制御対象タンク番号に該当する場合は、該当する水素タンク６のバルブ７を開く。一方、指令タンク番号が制御対象タンク数範囲内の個数の自身の制御対象タンク番号に該当しない場合は、タンク制御装置５は、何もしない。バルブ７を閉じるときも同様の手順である。
【００１９】
総タンク数を記憶している記憶装置に異常が発生した場合を検討する。記憶装置に異常が発生した場合、電子部品の異常発生をユーザに伝えることは重要であるが、異常が発生した場合にタンク制御装置を停止してしまうと、燃料電池車１０が走行できなくなる。記憶装置に異常が発生した場合であっても、水素タンク６及びバルブ７は正常である。このため、記憶装置５３に異常が発生した場合であっても、燃料電池車１０が走行できなくなることは回避できることが望ましい。そこで実施例のタンク制御装置５は、記憶装置で異常が発生し、総タンク数の情報を利用できない場合においてもバルブ７を制御できる仕組みを有している。
【００２０】
先に述べたように、タンク制御装置は、記憶装置に記憶された総タンク数を読み取ることで、自身の制御対象タンク数を設定する。記憶装置に異常が発生した場合、タンク制御装置は記憶された総タンク数を利用できない。ここで、記憶装置の異常について検討する。記憶装置の異常は、次の４つのケースに大別することができる。（ケース１）記憶装置に記憶された総タンク数が実際の総タンク数より多い場合。例えば、実際の総タンク数が２本にもかかわらず、記憶装置に記憶された総タンク数は３本となっている場合等である。（ケース２）記憶装置に記憶された総タンク数が実際の総タンク数より少ない場合。例えば、実際の総タンク数が３本にもかかわらず、記憶装置に記憶された総タンク数は２本となっている場合等である。（ケース３）記憶装置に記憶された総タンク数の読み取りができない場合。例えば、実際の総タンク数が３本にもかかわらず、タンク制御装置が記憶装置のデータを識別できない場合等である。（ケース４）記憶装置に記憶された総タンク数が明らかに異常値（以下、ＮＧ値と称する）を示している場合。例えば、記憶装置に記憶された総タンク数が０本を示している場合等である。
【００２１】
上記ケース１については、タンク制御装置は自身の制御対象タンク数を３本だと設定するため、制御対象タンク数範囲内の個数で実際の総タンク数の２本の制御対象タンク番号を特定する。即ち、タンク制御装置は２本の水素タンクのバルブを制御できる。従って、記憶装置に記憶された総タンク数と実際の総タンク数は異なるものの、燃料電池車は走行が可能である。また、上記ケース２については、タンク制御装置は自身の制御対象タンク数を２本だと設定するため、制御対象タンク数範囲内の個数の２本の制御対象タンク番号を特定する。従って、タンク制御装置は、３本目の水素タンクを制御対象外と判定する。このため、上位制御装置３が異常を検知するが、タンク制御装置が残り２本の水素タンクを制御することにより、燃料電池車は走行が可能である。
【００２２】
ケース３については、タンク制御装置は、記憶装置に記憶された総タンク数を識別することができないため、制御対象タンク数範囲内の個数で自身の制御対象タンク数を設定することができない。このため、タンク制御装置は、制御対象タンク番号を特定することができない。即ち、上位制御装置からバルブを開くべき水素タンクの番号が、タンク制御装置に指令されても、タンク制御装置は、自身が制御すべき制御タンクであると判定することができない。これにより、タンク制御装置は、バルブを制御することができなくなる。
【００２３】
ケース４については、例えば０本がＮＧ値に該当する。記憶装置の総タンク数が０本を示している場合、タンク制御装置は、自身の制御対象タンク数を０本と設定するため、制御対象タンク数範囲内の個数で制御対象タンク番号を特定することができない。従って、ケース３同様、タンク制御装置は、自身の制御タンクであると判定することができない。これにより、タンク制御装置は、バルブを制御することができない。
【００２４】
ここで、ケース３及びケース４について、タンク制御装置が、記憶装置に記憶された総タンク数を識別できない場合であっても、記憶装置に記憶された総タンク数がＮＧ値を示している場合であっても、許容数のタンクを制御することにより、燃料電池車の走行が可能となる。例えば、許容数が実際の総タンク数より大きい場合は、タンク制御装置が総タンク数の水素タンクのバルブを制御することができるため、上記ケース１と同様に走行が可能である。また、許容数が総タンク数と同じ場合には、タンク制御装置が許容数（即ち、総タンク数）のタンクのバルブを制御することができるため、燃料電池車は走行可能である。さらに、許容数が総タンク数より小さい場合には、タンク制御装置が許容数の水素タンクのバルブを制御することができるため、上記ケース２と同様となり、燃料電池車は走行が可能である。
【００２５】
このように、実施例のタンク制御装置５は、記憶装置５３に異常が発生し、総タンク数の情報を利用できない場合、許容数を制御対象タンク数に設定する。それゆえ、記憶装置で異常が発生した場合においても、タンク制御装置５はバルブ７を制御できる。
【００２６】
なお、タンク制御装置５が記憶装置５３のデータを識別できない場合とは、具体的には、記憶装置５３に故障が発生し、タンク制御装置５が記憶装置５３にアクセスができずに総タンク数を読み取りできない場合や、記憶装置５３が誤動作でデータが改変されて総タンク数を識別できない場合などである。
【００２７】
ＮＧ値は記憶装置５３（第２記憶装置５３）に記憶されるのではなく、ＲＯＭである第１記憶装置５２に制御プログラムとともに記憶される。それゆえ、ＮＧ値が利用できなくなる可能性は極めて小さい。ＮＧ値が利用できなくなる場合には、第１記憶装置５２に記憶されている制御プログラムも利用できない可能性が高く、その場合はタンク制御装置５そのものが動作できないからである。タンク制御装置５は、記憶装置５３の総タンク数を設定されたＮＧ値と比較することにより、記憶装置５３の総タンク数がＮＧ値か否かを判定することができる。タンク制御装置５の許容数も、第１記憶装置５２に記憶されている。
【００２８】
実施例のタンク制御装置５（プロセッサ５１）が実行する処理について図２を用いて説明する。タンク制御装置５は図２の処理を、上位制御装置３からタンク制御装置５へ指令タンク番号が送信された際に実行する。まず、タンク制御装置５は、最初に記憶装置５３に記憶されている総タンク数が読み取り可能かを判定する（ステップＳ２）。読み取り可能な場合（ステップＳ２：ＹＥＳ）は、記憶装置５３の総タンク数を読み取る（ステップＳ３）。続いてタンク制御装置５は、読み取った総タンク数をＮＧ値と比較する（ステップＳ４）。そして、読み取った総タンク数がＮＧ値と一致しない場合（ステップＳ５：ＮＯ）は、先に述べたように、記憶装置５３に異常は発生していないと判定する。次いでタンク制御装置５は、読み取った総タンク数を制御対象タンク数に設定し（ステップＳ６）、ステップＳ６において設定された制御対象タンク数（読み取った総タンク数）から制御対象タンク番号を特定する（ステップＳ７）。そして、タンク制御装置５は、特定された制御対象タンク番号のバルブ７を制御する（ステップＳ８）。
【００２９】
記憶装置５３に記憶された総タンク数が読み取りできなかった場合（ステップＳ２：ＮＯ）や、記憶装置５３に記憶された総タンク数がＮＧ値と一致した場合（ステップＳ５：ＹＥＳ）は、タンク制御装置５は第２記憶装置５３に異常が発生したと判定する。その場合、タンク制御装置５は許容数を制御対象タンク数に設定する（ステップＳ９）。そしてタンク制御装置５は、ステップＳ８において設定された制御対象タンク数（許容数）から制御対象タンク番号を特定する（ステップＳ７）。そして、タンク制御装置５は、特定された制御対象タンク番号のバルブ７を制御する（ステップＳ８）。これにより、先に述べたように、記憶装置５３に異常が発生した場合においても、燃料電池車１０は走行を継続することができる。また、タンク制御装置５はステップＳ２や、ステップＳ５の判定を行うことにより、記憶装置５３の異常を検知することができる。タンク制御装置５が必要に応じて異常検知結果を発信することで、燃料電池車１０のユーザは、記憶装置５３の異常を認識することができる。
【００３０】
（変形例）図３を参照して、燃料電池車に複数のタンク制御装置５が搭載されている場合を説明する。図３に、複数のタンク制御装置５を搭載した燃料電池車１０ａのブロック図を示す。燃料電池車１０ａにおける燃料電池２０等の構成部品及び機能については、実施例と同じであるため説明は省略する。燃料電池車１０ａは、ｋ本の水素タンク６を搭載している。なお、ｋ本の水素タンクを区別することなく、いずれかの水素タンクを示す場合には、水素タンク６と表記し、第ｉ番目の水素タンクを示す場合には、水素タンク６（ｉ）と表記する。
【００３１】
ｓ個のタンク制御装置５は、上位制御装置３と、車内ＬＡＮ４で相互に通信可能に接続されている。複数のタンク制御装置を区別することなく、いずれかのタンク制御装置を示す場合には、タンク制御装置５と表記し、第ｉ番目のタンク制御装置を示す場合には、タンク制御装置５（ｉ）と表記する。
【００３２】
夫々のタンク制御装置５は、３本まで、水素タンク６のバルブ７を制御することができる。上位制御装置３は、燃料電池車１０ａの全体を管理するコンピュータであり、水素タンク制御装置５のほか、燃料電池２０、その他、車両に関するデバイスを管理する。燃料電池車１０ａが走行中、上位制御装置３は、必要に応じて、指令タンク番号を複数のタンク制御装置５に送信する。上位制御装置３からタンク制御装置５への指令は、車内ＬＡＮ４を介して送信される。
【００３３】
上位制御装置３は、実施例同様、初回起動時に燃料電池車１０ａの総タンク数ｋを、車内ＬＡＮ４を介して夫々のタンク制御装置５に送信する。夫々のタンク制御装置５は、上位制御装置３から送信された総タンク数ｋを、各自の記憶装置５３に総タンク数ｋ１として記憶する。記憶装置５３に異常が発生していなければ、総タンク数ｋ１は送信された総タンク数ｋと同じ本数となる。また、先に述べたように、複数のタンク制御装置５の夫々は、制御対象タンク番号を予め特定している。上位制御装置３は、指令タンク番号として例えば、第ｒ番目の水素タンク６（ｒ）から第ｔ番目の水素タンク６（ｔ）まで、バルブ７を開くように、全てのタンク制御装置５に同時に指令する。その際、複数のタンク制御装置５は、各自の記憶装置５３の総タンク数ｋ１を読み取る。複数のタンク制御装置５は、各自の記憶装置５３に記憶された総タンク数ｋ１を用いることにより、後述する算術式で自身の制御対象タンク数を特定する。その後、複数のタンク制御装置５は、指令タンク番号が自身の制御対象タンク番号に該当する場合は、該当する水素タンク６のバルブ７を開く。一方、指令タンク番号が自身の制御対象タンク番号に該当しない場合は、複数のタンク制御装置５は、何もしない。バルブ７を閉じるときも同様の手順である。
【００３４】
このように、総タンク数の異なる複数の燃料電池車に対し、同じタイプの複数のタンク制御装置５を用いることができるため、開発費を低減することができる。
【００３５】
また、記憶装置５３に記憶された総タンク数に基づいてバルブ７を制御することで、実施例同様、バルブ７を制御する度に上位制御装置３からタンク制御装置５に総タンク数を送信する必要がなくなる。それゆえ、例えばノイズ等により、上位制御装置３と複数のタンク制御装置５の間に通信不良が発生した場合においても、各自の記憶装置５３に記憶された総タンク数に基づいて、タンク制御装置５は正常にバルブ７を制御することができる。
【００３６】
複数のタンク制御装置５は、識別番号によって区別される。先に述べたように、夫々のタンク制御装置５は、３本まで、水素タンク６のバルブ７を制御することができる。第１タンク制御装置５（１）は、第１番目の水素タンク６（１）から第３番目の水素タンク６（３）のバルブ７を制御する。第２タンク制御装置５（２）は、第４番目の水素タンク６（４）から第６番目の水素タンク６（６）のバルブ７を制御する。第ｉタンク制御装置５（ｉ）は、第２記憶装置５３（ｉ）を備え、第（（ｉ−１）×３＋１）番目から第（ｉ×３）番目までの水素タンクのバルブ７を制御する。
【００３７】
なお、総タンク数は３の倍数とは限らない。最後の識別番号のタンク制御装置５は、制御対象の水素タンクが１本あるいは２本の場合がある。図３の場合、最後の識別番号のタンク制御装置５（ｓ）は、２本の水素タンク６（ｋ−１）、６（ｋ）を制御する。
【００３８】
図４を参照して、自身の識別番号を特定する仕組みについて説明する。夫々のタンク制御装置５は、４本の番号設定端子１２を備えている。作業者は、特定の番号設定端子１２をグランドに接続し、そのタンク制御装置５に識別番号を与える。４本の番号設定端子１２の夫々は、二進数のビットに対応する。タンク制御装置５は、グランドに接続された番号設定端子１２を「１」と認識し、開放されている番号設定端子１２を「０」と認識するようにプログラムされている。図４に示すように、ｂ０の番号設定端子１２のみがグランドに接続され、残りの番号設定端子１２（ｂ１−ｂ３）が開放されているタンク制御装置５は、自身の識別番号が「１」であると認識する。ｂ０とｂ１の番号設定端子１２がグランドに接続され、残りの番号設定端子１２（ｂ２、ｂ３）が開放されているタンク制御装置５は、自身の識別番号が「３」（二進数で「００１１」）であると認識する。また、ｂ０とｂ３の番号設定端子１２がグランドに接続され、残りの番号設定端子１２（ｂ１、ｂ２）が開放されているタンク制御装置５は、自身の識別番号が「９」（二進数で「１００１」）であると認識する。こうして、各タンク制御装置５は、自身の識別番号を特定する。夫々のタンク制御装置５は、起動時に番号設定端子１２の状態を確認し、自身の識別番号を特定する。
【００３９】
図５を参照して、番号識別端子の変形例を説明する。複数のタンク制御装置５５は、２本の番号設定端子１３を備えている。作業者は、２本の番号設定端子１３の間に、識別番号に対応した抵抗値を有する抵抗１４を接続する。夫々のタンク制御装置５５は、２本の番号設定端子１３の間の抵抗値を計測し、その抵抗値に応じて自身の識別番号を特定する。例えば、タンク制御装置５５には、抵抗値が１０オーム未満であれば識別番号が「１」であり、１０オーム以上２０オーム未満であれば識別番号が「２」であり、２０オーム以上３０オーム未満であれば識別番号が「３」であり、３０オーム以上４０オーム未満であれば識別番号が「４」である、というテーブルが予め記憶されている。夫々のタンク制御装置５は、起動時に番号設定端子１２の間の抵抗値を測定するとともに、記憶しているテーブルを参照して、測定した抵抗値に対応する識別番号を自身の識別番号として特定する。
【００４０】
次に、各タンク制御装置５が、自身の制御対象タンク数を特定する仕組みについて説明する。ここでは、識別番号が「ｐ」であるタンク制御装置５（ｐ）を例に説明する。タンク制御装置５（ｐ）は、上位制御装置３から送信される総タンク数ｋを受信する。なお、上位制御装置３は、初回起動時に総タンク数ｋを、車内ＬＡＮ４を介して全てのタンク制御装置５に知らせる。
【００４１】
先に述べたように、各タンク制御装置５は、上位制御装置３から送信された総タンク数ｋを、各自の記憶装置５３に総タンク数ｋ１として記憶する。タンク制御装置５は、実施例同様、各自の記憶装置５３の総タンク数ｋ１を読み取ることができるか否か、ＮＧ値と一致するか否かにより、各自の記憶装置５３に異常が発生しているか否かを判定する。記憶装置５３に異常が発生していないと判定される場合、各タンク制御装置５は、各自の記憶装置５３に記憶された総タンク数ｋ１を用いて、次の算術式で制御対象タンク数を特定する。なお、この例においても、各タンク制御装置５の許容数は「３」である。タンク制御装置５は、総タンク数ｋ１を３（許容数）で割り、商ｓと余ｑを求める。タンク制御装置５は、商ｓが識別番号ｐ以上の場合は、自身の制御対象タンク数に許容数の「３」を設定する。タンク制御装置５は、商ｓが識別番号ｐ−１に等しい場合は、総タンク数ｋ１をｎで割ったときの余ｑを、自身の制御対象タンク数に設定する。例えば、識別番号ｐ＝４のタンク制御装置５（４）が、総タンク数ｋとして「１１」を受信し、異常が発生せずに、「１１」を記憶装置５３に総タンク数ｋ１として記憶した場合の制御対象タンク数は、次の通りである。即ち、１１（総タンク数ｋ１）÷３（各タンク制御装置５の許容数）＝３余２であり、商ｓ（＝３）は識別番号ｐ（＝４）−１に等しいから、「２」（余ｑ）が、自身の制御対象タンク数となる。なお、商ｓが識別番号ｐ−１に等しく、さらに余がゼロの場合は、例外的に、識別番号ｐのタンク制御装置５（ｐ）は、制御対象の水素タンクを有さず、予備のコンピュータであると認識する。
【００４２】
タンク制御装置５（ｐ）の許容数がｎ本の場合は、以下の通りである。タンク制御装置５（ｐ）は、記憶装置５３の総タンク数ｋ１に対して、総タンク数ｋ１をｎで割った商ｓが自身の識別番号ｐ以上の場合は、自身の制御対象タンク数に許容数ｎを設定する。タンク制御装置５（ｐ）は、商ｓが、自身の識別番号ｐから「１」を減じた値に等しい場合は、総タンク数ｋを許容数ｎで割ったときの余ｑを、自身が制御するタンク本数に設定する。ただし、自身の識別番号ｐから「１」を減じた値に等しく、かつ、余ｑがゼロの場合、タンク制御装置５（ｐ）は、予備の制御装置であると認識して何もしない。
【００４３】
自身の制御対象タンク数を得る仕組みの変形例として、各タンク制御装置５は、上記した算術式を予めテーブル（表）として記憶していてもよい。テーブルの例を図６に示す。識別番号ｐ＝４、総タンク数ｋ＝１１の場合、図６のテーブルを参照して、自身の制御対象のタンク本数は２（図６にて丸を付した箇所）と判別することができる。図６のテーブルは、上記した算術式に等価である。
【００４４】
一方、総タンク数ｋ１が識別できない場合や、ＮＧ値と一致する場合、即ち、記憶装置５３に異常が発生していると判定された場合は、各タンク制御装置５は、上述した方法で制御対象タンク数を求めない。各タンク制御装置５は、各タンク制御装置５の許容数（即ち３本）を制御対象タンク数に設定する。このように制御することにより、記憶装置５３で異常が発生し、タンク制御装置５が総タンク数の情報を利用できない場合においても、タンク制御装置５が許容数を、制御対象タンク数に設定することができる。それゆえ、記憶装置５３で異常が発生した場合においても、タンク制御装置５がバルブ７を制御できる。
【００４５】
この変形例において、タンク制御装置５が実行する処理について図７を用いて説明する。各タンク制御装置５は図７の処理を、上位制御装置３から複数のタンク制御装置５へ同時に指令タンク番号が送信された際に実行する。ステップＳ２からステップ５までの処理は、先の実施例と同様である。ステップＳ５において、記憶装置５３の総タンク数ｋ１がＮＧ値と一致しない場合（ステップＳ５：ＮＯ）は、先に述べたように、タンク制御装置５は、記憶装置５３には異常は発生していないと判定する。この場合、各タンク制御装置５は、記憶装置５３の総タンク数ｋ１を用いて、上述した算術式により、自身の制御対象タンク数を設定する（ステップＳ６ａ）。そして、ステップＳ６ａにおいて設定された制御対象タンク数から制御対象タンク番号を特定する（ステップＳ７）。そして、タンク制御装置５は、特定された制御対象タンク番号のバルブ７を制御する（ステップＳ８）。
【００４６】
ステップＳ２において記憶装置５３の総タンク数が読み取りできなかった場合（ステップＳ２：ＮＯ）や、ステップＳ５において記憶装置５３の総タンク数がＮＧ値と一致した場合（ステップＳ５：ＹＥＳ）の処理は、実施例の場合と同様である。
【００４７】
最後に、各タンク制御装置５が、自身の制御対象タンク番号を特定する仕組みについて説明する。ここでは、各タンク制御装置５が制御可能なタンクの本数（許容数）は「ｎ」であるとして説明する。また、タンク制御装置５の識別番号は「ｐ」であるとして説明する。
【００４８】
各タンク制御装置５が、自身の制御対象タンク番号を特定する仕組みについて説明する。タンク制御装置５（ｐ）は、上位制御装置３から初回起動時に送信された総タンク数ｋをｎで割ったときの商ｓが、自身の識別番号ｐ以上の場合は、（（ｐ−１）×ｎ＋１）番目から（ｐ×ｎ）番目の水素タンクが自身の制御対象の水素タンクであると特定する。一方、タンク制御装置５（ｐ）は、商ｓが自身の識別番号ｐ−１に等しい場合は、（（ｐ−１）×ｎ＋１）番目から（（ｐ−１）×ｎ＋ｑ）番目の水素タンクが自身の制御対象であると特定する、「ｑ」は、総タンク数ｋ１をｎで割ったときの商ｓの余を意味する。
【００４９】
図３を例に説明する。図３の場合、ｎ＝３であるから、例えば、第２番目のタンク制御装置５（２）は、第４番目の水素タンク６（４）から第６番目の水素タンク６（６）が制御対象であると特定することができる。自身の識別番号ｐ＝４、総タンク数ｋ１＝１１の場合、総タンク数ｋ１＝１１をｎ＝３で割った商ｓ＝３であり、ｐ−１＝ｎとなる。よって、第４番目のタンク制御装置５（４）は、第１０番目の水素タンク６（１０）と第１１番目の水素タンク６（１１）が、自身の制御対象の水素タンクであると特定することができる。
【００５０】
第２実施例で説明した技術に関する留意点を述べる。識別番号１となったタンク制御装置５（１）は、複数のタンク制御装置５のマスタとして動作するようにプログラムされていてもよい。マスタのタンク制御装置５（１）は、例えば、水素ステーションから各水素タンク６に水素ガスを充填するときの圧力計測を担当する。
【００５１】
また、各水素タンク６に温度センサが備えられており、各タンク制御装置５は、自身の制御対象の水素タンク６の温度をモニタする機能（プログラム）を有していてもよい。
【００５２】
各タンク制御装置５が、自身の制御対象の水素タンク６の本数Ｘを特定するアルゴリズムは、一例として、以下のプログラム（ＢＡＳＩＣ言語）で実現することができる。
ｉｆ（ｋ≦（ｐ−１）×ｎ）  ｔｈｅｎ  Ｘ＝ｎ
ｅｌｓｅ  ｉｎｔ（ｋ÷ｎ）  ≧  ｐ  ｔｈｅｎ  Ｘ＝  ｍｏｄ（ｋ，ｎ）
【００５３】
上記プログラムにおいて、「ｋ」は総タンク数を表しており、「ｐ」は自身の識別番号を表している。「ｎ」は１個のタンク制御装置５が制御可能なタンク本数を表している。「ｉｎｔ」は、ｋをｎで割ったときの解の整数部分（即ち「商」）を得る関数であり、「ｍｏｄ」は、ｋをｎで割ったときの商の余を得る関数である。
【００５４】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００５５】
３：上位制御装置
４：車内ＬＡＮ
５、５５：タンク制御装置
６：水素タンク
７：バルブ
８：燃料パイプ
１０、１０ａ：燃料電池車
１２、１３：番号設定端子
１４：抵抗
２０：燃料電池
２１：インジェクタ
２２：燃料電池スタック
５１：プロセッサ
５２：第１記憶装置
５３：第２記憶装置
【図１】
2019219012.tif 000003
【図２】
2019219012.tif 000004
【図３】
2019219012.tif 000005
【図４】
2019219012.tif 000006
【図５】
2019219012.tif 000007
【図６】
2019219012.tif 000008
【図７】
2019219012.tif 000009