(57)【要約】【課題】本発明は、制御装置を介して燃料電池の制御可能な条件を制御するデータ・プロセッサにおけるシステムおよび方法を提供する。【解決手段】  本発明のシステムおよび方法は、（ａ）制御装置の選択された動作レベルを受信する動作レベル・フィールドを有する制御コマンド・タイプを含むスクリプト言語を提供し、（ｂ）制御コマンドの動作レベル・フィールドに制御装置の選択された動作レベルを挿入することにより制御コマンド・タイプから制御コマンドを導き、（ｃ）テスト・スクリプトが制御コマンドを含むように、スクリプト言語を用いてテスト・スクリプトを書き、（ｄ）テスト・プログラムを提供するためにテスト・スクリプトをコンパイルし、（ｅ）テスト・プログラムにしたがって制御装置を制御する。【選択図】    なし【特許請求の範囲】
【請求項１】
燃料電池を試験するシステムであって、
（ａ）前記燃料電池の制御可能な条件を制御する制御装置を有する試験手段と、
（ｂ）前記制御装置の選択された動作レベルを受信する動作レベル・フィールドを有する制御コマンド・タイプを含むスクリプト言語を提供するユーザ・インターフェースであって、テスト・スクリプトが前記制御コマンド・タイプの制御コマンドを含むように、該テスト・スクリプトは前記スクリプト言語を使用して書き込み可能であり、前記制御コマンドは、前記制御装置の前記選択された動作レベルを、前記制御コマンドの前記動作レベル・フィールドに挿入することによって、前記制御コマンド・タイプから導かれることができる、ユーザ・インターフェースと、
（ｃ）テスト・プログラムを提供する前記テスト・スクリプトをコンパイルするコンパイラと、
（ｄ）前記テスト・プログラムに従って前記制御装置を制御するシステム・マネージャと、
を含む、システム。
【請求項２】
前記選択された動作レベルで動作するために、前記制御コマンドの前記動作レベル・フィールド内で定義された前記選択された動作レベルを、前記制御装置を制御するための装置動作レベルに変換することによって、前記テスト・プログラムを提供するために、前記コンパイラが前記テスト・スクリプトをコンパイルするために動作可能である、
請求項１に記載のシステム
【請求項３】
前記テスト手段が、前記燃料電池の複数の制御可能な条件を制御する複数の制御装置を含み、
前記スクリプト言語が、前記複数の制御装置を識別する複数の装置識別子を含み、
前記複数の制御装置中の各制御装置が、前記複数の装置識別子中の関連する装置識別子によって識別可能であり、
前記制御コマンド・タイプが、選択された制御装置についての前記関連する装置識別子を受信する装置識別フィールドを含み、
前記テスト・スクリプトが、前記制御コマンド・タイプの複数の制御コマンドを含むように、前記テスト・スクリプトは、前記スクリプト言語を使用して書き込み可能であり、
前記テスト・スクリプト内の各制御コマンドが、
（ｉ）前記制御コマンドの前記動作レベル・フィールドに、前記選択された制御装置の前記選択された動作レベルを、
（ｉｉ）前記装置識別フィールドに、前記選択された制御装置についての前記関連する装置識別子を、
含む、
請求項１に記載のシステム。
【請求項４】
前記テスト手段が、前記燃料電池の複数の制御可能な条件を制御する複数の制御装置を含み、
前記スクリプト言語が前記複数の制御装置を識別する複数の装置識別子を含み、
前記複数の制御装置中の各制御装置が、前記複数の装置識別子中の関連する装置識別子によって識別可能であり、
前記スクリプト言語が複数の制御コマンド・タイプを含み、
前記複数の制御コマンド・タイプ中の各制御コマンド・タイプが、
（ｉ）前記制御コマンドによって制御された、選択された制御装置の前記選択された動作レベルを受信する関連する動作レベル・フィールドと、
（ｉｉ）前記選択された制御装置の前記関連する識別子を受信する装置識別フィールドと、
を有し、
前記複数の制御コマンド中の各制御コマンドが、（ｉ）前記制御コマンドの前記動作レベル・フィールドの前記選択された制御装置の前記選択された動作レベルと、（ｉｉ）前記装置識別フィールドの前記選択された制御装置についての前記関連する装置識別子と、を、定義するように、前記複数の制御コマンド・タイプの複数の制御コマンドを含むために、前記テスト・スクリプトは前記スクリプト言語を使用して書き込み可能である、
請求項１に記載のシステム。
【請求項５】
前記複数の制御装置が、アノード気体流量及びカソード気体流量の少なくとも一を制御する少なくとも一の流量制御器を含み、
前記複数の制御コマンド・タイプが、ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプを含み、
前記ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプの前記動作レベル・フィールドが、選択された流量制御レベルを受信するために動作可能であり、
前記ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の流量制御器中の選択された流量制御器の前記関連する装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプのｓｅｔ＿ｆｌｏｗ制御コマンドを含む、
請求項４に記載のシステム。
【請求項６】
前記スクリプト言語が、選択された化学両論率を受信する化学両論定義フィールドと、選択された流量制御器についての前記関連する装置識別子を受信する装置識別フィールドと、を有する化学両論関連コマンド・タイプをさらに含み、
前記テスト・スクリプトが前記化学両論関連コマンド・タイプの化学両論関連コマンドを含むように、前記スクリプト言語を用いて該テスト・スクリプトは書き込みでき、
（ｉ）前記選択された化学両論率を前記化学両論定義フィールドに、（ｉｉ）前記選択された流量制御器についての前記関連する装置識別子を前記装置識別フィールドに、挿入することによって、前記化学両論関連コマンドが前記化学両論関連コマンド・タイプから導かれることができ、
前記システム・マネージャが、少なくとも一の変数に基づいて、前記選択された流量制御器についての関連する流量制御レベルを判断するために動作することができ、
前記少なくとも一の変数が前記選択された化学両論率を含む、
請求項５に記載のシステム。
【請求項７】
前記少なくとも一の変数が、前記燃料電池の負荷電流をさらに含む、請求項６に記載のシステム。
【請求項８】
前記複数の制御装置が少なくとも一の温度制御器を含み、
前記複数のコマンド・タイプが温度制御コマンド・タイプを含み、
該温度制御コマンド・タイプの前記動作レベル・フィールドが、選択された温度制御レベルを受信するために動作可能であり、
前記温度制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の温度制御器中の選択された温度制御器の前記関連する装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記温度制御コマンド・タイプの温度制御コマンドを含む、
請求項４に記載のシステム。
【請求項９】
前記複数の制御装置が、給電ボックスによって提供された前記燃料電池の給電を制御する少なくとも一の給電コントローラを含み、
前記複数の制御コマンド・タイプが給電制御コマンド・タイプを含み、
前記給電制御コマンド・タイプの前記動作レベル・フィールドが、選択された給電制御レベルを受信するために動作可能であり、
前記給電制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の給電コントローラの選択された給電コントローラの関連する装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記給電レベルを指定するｓｅｔ＿ｌｏａｄ制御コマンドを含む、
請求項４に記載のシステム。
【請求項１０】
前記複数の制御装置が少なくとも一の圧力制御器を含み、
前記複数の制御コマンド・タイプが、ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプを含み、
前記ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプの前記動作レベル・フィールドが、選択された圧力制御レベルを受信するために動作可能であり、
前記ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の圧力制御器中の選択された圧力制御器の前記関連する装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプのｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンドを含む、
請求項４に記載のシステム。
【請求項１１】
前記複数の制御コマンド・タイプ中の少なくとも一の制御コマンド・タイプが、前記関連する動作レベル・フィールド内で定義される前記選択された制御装置の前記動作レベルを変更するための傾斜率を受信する関連する傾斜フィールドをさらに含み、
前記複数の制御コマンドが、前記関連する動作レベル・フィールド内で定義される前記選択された制御装置の前記動作レベルを変更するための前記傾斜率を定義する、傾斜制御コマンドを含むように、前記テスト・スクリプトが前記スクリプト言語を使用して書き込み可能である、
請求項４に記載のシステム。
【請求項１２】
前記複数の制御コマンド中の各制御コマンドについて、前記制御コマンドの前記動作レベル・フィールド内で特定された動作レベルで動作するために、前記制御コマンドの前記動作レベル・フィールド内で定義された前記選択された動作レベルを、前記関連する装置識別子によって識別される前記制御装置を制御する装置動作レベルに変換することによって、前記コンパイラが、前記テスト・スクリプトを前記テスト・プログラムに変換するために動作可能である、請求項４に記載のシステム。
【請求項１３】
前記スクリプト言語を使用して、前記テスト・スクリプトを書き込むスクリプト・エディタをさらに含む、請求項４に記載のシステム。
【請求項１４】
制御コマンド・タイプが前記複数の制御コマンド・タイプから選択される場合に、前記スクリプト・エディタが、前記制御コマンド・タイプの制御コマンドを定義する、複数の可能なパラメータを提供するために動作可能である、請求項１３に記載のシステム。
【請求項１５】
前記制御コマンド・タイプが前記複数の制御コマンド・タイプから選択される場合に、前記スクリプト・エディタが、前記制御コマンドの前記関連する動作レベル・フィールドに挿入されるべき、前記選択された動作レベルの選択のために、可能な動作レベルの範囲を提供するように、前記複数の可能なパラメータが、可能な動作レベルの範囲を含む、請求項１４に記載のシステム。
【請求項１６】
制御装置を介して燃料電池の制御可能な条件を制御するデータ・プロセッサにおける方法であって、
（ａ）前記制御装置の選択された動作レベルを受信する動作レベル・フィールドを有する、制御コマンド・タイプを含む、スクリプト言語を提供し、
（ｂ）前記制御装置の前記選択された動作レベルを制御コマンドの前記動作レベル・フィールドに挿入することによって、制御コマンドを前記制御コマンド・タイプから導き、
（ｃ）テスト・スクリプトが前記制御コマンドを含むように、前記スクリプト言語を使用してテスト・スクリプトを書き込み、
（ｄ）テスト・プログラムを提供するために前記テスト・スクリプトをコンパイルし、
（ｅ）前記テスト・プログラムに従って前記制御装置を制御する、
方法。
【請求項１７】
前記選択された動作レベルで動作するために、前記制御コマンドの前記動作レベル・フィールド内で定義される前記選択された動作レベルを、前記制御装置を制御するための装置動作レベルに変換することを、（ｄ）が含む、請求項１６に記載の方法。
【請求項１８】
前記燃料電池の複数の制御可能な条件が、複数の制御装置を介して制御可能であり、
前記スクリプト言語が、前記複数の制御装置を識別する複数の装置識別子を含み、
前記複数の制御装置中の各制御装置が、前記複数の装置識別子中の関連する装置識別子によって識別可能であり、
前記制御コマンド・タイプが、選択された制御装置についての、前記関連する装置識別子を受信する装置識別フィールドを含み、
前記制御コマンドを前記制御コマンド・タイプから導くために、前記選択された制御装置についての前記関連する装置識別子を、前記装置識別フィールドに挿入することを、（ｂ）がさらに含む、
請求項１６に記載の方法。
【請求項１９】
前記燃料電池の複数の制御可能な条件が、複数の制御装置を介して制御可能であり、
前記スクリプト言語が、前記複数の制御装置を識別する複数の装置識別子を含み、
前記複数の制御装置中の各制御装置が、前記複数の装置識別子中の関連する装置識別子によって識別可能であり、
前記スクリプト言語が、複数の制御コマンド・タイプを含み、
前記複数の制御コマンド・タイプ中の各制御コマンド・タイプが、
（ｉ）前記制御コマンドによって制御される、選択された制御装置の前記選択された動作レベルを受信する関連する動作レベル・フィールドと、
（ｉｉ）前記選択された制御装置の前記関連する識別子を受信する装置識別フィールドと、
を有し、
前記複数の制御コマンド中の各制御コマンドについて、前記選択された制御装置の前記選択された動作レベルを、前記制御コマンドの前記動作レベル・フィールドに挿入し、前記選択された制御装置についての前記関連する装置識別子を、前記装置識別フィールドに挿入することによって、複数の制御コマンドを前記複数の制御コマンド・タイプから導くことを、（ｂ）がさらに含む、
請求項１６に記載の方法。
【請求項２０】
前記複数の制御装置が、アノード気体流量及びカソード気体流量の少なくとも一を制御する少なくとも一の流量制御器を含み、
前記複数の制御コマンド・タイプが、ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプを含み、
前記ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプの前記動作レベル・フィールドが、選択された流量制御レベルを受信するために動作可能であり、
前記ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の流量制御器中の選択された流量制御器の前記関連した装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記ｓｅｔ＿ｆｌｏｗ制御コマンド・タイプのｓｅｔ＿ｆｌｏｗ制御コマンドを含む、
請求項１９に記載の方法。
【請求項２１】
前記スクリプト言語が、選択された化学両論率を受信する化学両論定義フィールドと、選択された流量制御器についての前記関連した装置識別子を受信する装置識別フィールドと、を含む化学両論関連コマンド・タイプをさらに含み、
前記テスト・スクリプトが前記化学両論関連コマンド・タイプの化学両論関連コマンドを含むように、前記スクリプト言語を用いて該テスト・スクリプトは書き込まれることができ、
前記化学両論関連コマンドが、（ｉ）前記選択された化学両論率を前記化学両論定義フィールドに、（ｉｉ）前記選択された流量制御器についての前記関連した装置識別子を前記装置識別フィールドに、挿入することによって、前記化学両論関連コマンド・タイプから導かれることができ、
前記方法が、少なくとも一の変数に基づいて、前記選択された流量制御器についての関連した流量制御レベルを判断することをさらに含み、前記少なくとも一の変数が前記選択された化学両論率を含む、
請求項２０に記載の方法。
【請求項２２】
前記少なくとも一の変数が、前記燃料電池の負荷電流をさらに含む、請求項２１に記載の方法。
【請求項２３】
前記複数の制御装置が少なくとも一の温度制御器を含み、
前記複数の制御コマンド・タイプが温度制御コマンド・タイプを含み、
前記温度制御コマンド・タイプの前記動作レベル・フィールドが、選択された温度制御レベルを受信するために動作可能であり、
前記温度制御コマンド・タイプの前記装置識別フィールドは、前記少なくとも一の温度制御器中の選択された温度制御器の前記関連した装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記温度制御コマンド・タイプの温度制御コマンドを含む、
請求項１９に記載の方法。
【請求項２４】
前記複数の制御装置が、給電ボックスによって提供された前記燃料電池の給電を制御する少なくとも一の給電コントローラを含み、
前記複数の制御コマンド・タイプが給電制御コマンド・タイプを含み、
前記給電制御コマンド・タイプの前記動作レベル・フィールドが、選択された給電制御レベルを受信するために動作可能であり、
前記給電制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の給電コントローラの選択された給電コントローラの関連した装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが前記給電レベルを指定するためのｓｅｔ＿ｌｏａｄ制御コマンドを含む、
請求項１９に記載の方法。
【請求項２５】
前記複数の制御装置が、少なくとも一の圧力制御器を含み、
前記複数の制御コマンド・タイプが、ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプを含み、
前記ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプの前記動作レベル・フィールドが、選択された圧力制御レベルを受信するために動作可能であり、
前記ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプの前記装置識別フィールドが、前記少なくとも一の圧力制御器中の選択された圧力制御器の前記関連した装置識別子を受信するために動作可能であり、
前記複数の制御コマンドが、前記ｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンド・タイプのｓｅｔ＿ｐｒｅｓｓｕｒｅ制御コマンドを含む、
請求項１９に記載の方法。
【請求項２６】
前記複数の制御コマンド・タイプ中の少なくとも一の制御コマンド・タイプが、前記関連した動作レベル・フィールド内で定義される前記選択された制御装置の前記動作レベルを変更するための傾斜率を受信する関連した傾斜フィールドをさらに含み、
前記関連した動作レベル・フィールド内で定義される前記選択された制御装置の前記動作レベルを変更するための傾斜率を挿入することによって、前記複数の制御コマンド・タイプ中の少なくとも一の制御コマンド・タイプから、傾斜制御コマンドを導くことを、（ｂ）が含む、
請求項１９に記載の方法。
【請求項２７】
前記複数の制御コマンド中の各制御コマンドについて、前記制御コマンドの前記動作レベル・フィールド内で特定される動作レベルで動作するために、前記制御コマンドの前記動作レベル・フィールド内で定義される前記選択された動作レベルを、前記関連した装置識別子によって識別された前記制御装置を制御するための装置動作レベルに変換することによって、前記テスト・スクリプトを前記テスト・プログラムに変換することを、（ｄ）が含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、燃料電池試験システムに関する。より詳細には、本発明は、燃料電池試験システムの動作を制御し、燃料電池試験を自動化するシステムに関する。
【背景技術】
【０００２】
近年、燃料電池の研究・開発が非常に増加した。これらの努力が、最終的に、公害を少なくする、商業的に実行可能な電力システムを生み出すことが期待されている。
【０００３】
燃料電池は、燃料に蓄積されている化学エネルギを電気エネルギに変換する。燃料電池は、アノードと、カソードと、を有する。いくつかの種類の燃料電池において、水素原子がアノードに導入される。燃料電池内では、水素原子が、電子と陽子（水素イオン）とに分離される。水素イオンは薄膜を通過してカソードに達し、水素イオンが酸素と結合され、水を生成する。電子は、アノードとカソードとの間の電位を生じる薄膜内を、流れることができない。電子は、外部負荷を通って、カソードまで流れる。これにより、外部負荷は、電池によって生成された電位を消費する。カソードでは、水素イオンが酸化され、水を発生させる。理論的には、燃料電池の生成物は、負荷によって消費される電力、熱、及び水のみである。実際には、水素電池内の不純物、環境条件、及び他の条件が、燃料電池の効率にかなり影響し、熱及び水以外の副産物及び排出物を生じる。
【０００４】
一般的な燃料電池は、そのアノードとカソードとの間に、一般的には約１ボルトという、わずかな電位のみを生成可能である。有用な電位を生成するために、個々の電池は、直列に燃料電池スタックに組み立てられていなければならない。一般的には、このような燃料電池スタック上で試験が行なわれる。
【０００５】
燃料電池スタックは、自動車等の実用的装置内で使用される条件を正確に反映するために、異なる種々の条件で試験されなければならない。これには、その間に条件が変化する長期試験も含む。燃料電池の開発は、かなりの試験を必要とし、この目的のために、いくつかの試験システムすなわち「試験ステーション（ｔｅｓｔ  ｓｔａｔｉｏｎｓ）」が開発された。
【０００６】
これらの試験ステーションは、燃料電池スタックの多くの条件、その環境、燃料源、及び制御されるべき他の条件を可能にする。既知の試験ステーションは、これらの条件を手動で制御させる。目標値は、各条件について設定されており、試験ステーション内の自動化された装置がこの目標値を達成しようとする。たとえば、特定の試験の間は、燃料電池用のアノード燃料供給における水素ガス供給に関連した３つの目標条件は、水素ガスが、３００ｋＰａ、８３℃、速度３００ｌｐｍ（リットル／分）で供給されるべきであるということである。一般的な燃料電池試験ステーションは、所望の圧力及び流速を達成するためのポンプ及び流量調節計と、流速を制御するための所望の温度を達成するための加熱及び／又は冷却装置と、を含む。カソード・ガス混合物、燃料電池に加えられた負荷、及び他の条件の同様の特徴は、同様に制御可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
一般的には、燃料電池試験ステーションは、ソフトウェア制御システムを有する。ソフトウェアは、制御システムを容易に変更及び構成させることが可能な、単純かつ柔軟なアーキテクチャを有することが好ましい。
さらに、制御システムが、燃料電池スタックを略自動的に試験可能にすることが望ましい。さらに、制御システムが、試験又は制御システム自体を容易に修正可能にすることが好ましい。好ましくは、自動化された試験の修正を通じて、及び／又は試験条件を手動で変更することによって、試験中でさえ修正可能にする。
【課題を解決するための手段】
【０００８】
本発明は、燃料電池試験システムの動作を監視及び制御するための制御システムを提供する。本制御システムは、それ自体が、システム・マネージャ及びドライバ・アプリケーションのセットを組み込むサーバを含む。各ドライバ・アプリケーションは、対応する制御モジュールと通信する。本制御モジュールは、次に、燃料電池試験システムの要素と通信する。このような要素の各々は、各要素が結合された制御モジュールによって、制御若しくは監視のいずれか又は両方がなされていてもよい。たとえば、流量制御要素は、要素内を現在流れている液体又は気体の量を判断するために監視されてもよく、送り出す液体又は気体の量を設定するために制御されてもよい。
【０００９】
ドライバ・アプリケーションは、システム・マネージャによって生成及び起動され、システム・マネージャによって生成され利用可能にされたマップ化ファイルを通じて、システム・マネージャと通信する。マップ化ファイルは、燃料電池試験システム内のすべての制御可能又は監視可能な要素についてのレコードを含む。制御可能であり監視可能である要素は、個々の制御可能かつ監視可能な特徴を有し、このような特徴の各々が、マップ化ファイル内に、個々のレコードを有するとして、扱われる。
【００１０】
要素の制御可能な又は監視可能な各々の特徴についてのレコードは、独自のタグ名を有するマップ化ファイル内で識別される。制御可能な要素と関連したタグは、制御タグと呼ばれる。監視可能な要素と関連したタグは、データ・タグと呼ばれる。
【００１１】
タグは、制御又は監視されている装置の性質に従って、種々の信号タイプによって関連付けられていてもよい。たとえば、単に開閉可能なバルブ又はスイッチは、オン又はオフのいずれかのために、デジタル制御値を受け取る。さらに、バルブ又はスイッチは、開閉のいずれであるかを判断するために、デジタル・データ値を判断するように照会（ｑｕｅｒｙ）されてもよい。スイッチは、デジタル制御値を送信するために使用される制御タグを有し、現在の状態を照会するために使用されるデータ・タグを有する。
【００１２】
対照的に、液体又は気体の異なる制御可能な量が流れることを許可するように設定可能である流量調節計が、一般的にアナログ制御値を受け取り、それによって該流量調節計を流れるべきである気体又は液体の量を限定する。同様に、現在流れている液体又は気体の量を示すアナログ・データ値を判断するために、流量制御器が照会可能である。本発明の他の実施の形態において、多くの設定値を有する流量制御器等の装置が、設定値の群から特定の設定値を限定する、１ビットよりも多くから成るデジタル値を受信可能である。たとえば、より良い気体を２５６レベルの１つを流出可能にするように流量制御器に指示するために、８ビットのワードが制御値として送られてもよい。
【００１３】
システム・マネージャには、本発明の第１の実施の形態の一部ではないが、燃料電池試験の動作及び処理を制御するために、ユーザによって準備可能である、少なくとも１つのユーザ・アプリケーションが結合している。システム・マネージャは、マップ化ファイルを通じて、ドライバ・アプリケーション及び１つ以上のユーザ・アプリケーションと通信する。システム・マネージャは、マップ化ファイルを生成し、各ドライバ・アプリケーション及び各ユーザ・アプリケーションにアクセス可能にする。マップ化ファイルは、タグ・レコードと、さらにシステム・マネージャに試験システム全体のアクティビティを制御することを許可するタスク・フラグ等のいくつかのシステム・アクティビティ情報と、を
含む。
【００１４】
ドライバ・アプリケーションは、特定のタグの制御値を読出し、現在の制御値を記録する。一般的には、制御モジュールは、物理的装置を制御し、次にその装置の数値的動作範囲を制御するために、種々の範囲の信号を使用する。たとえば、制御システムは、０〜５００基準リットル／分（ｓｌｐｍ）流すことができる、流量制御器を動作するために、０〜２０ボルトの信号を送信するように構成されていてもよい。０〜２０ボルト入力制御範囲と０〜５００ｓｌｐｍ動作レベル範囲との間の関係は、線形であってもよいし、なくてもよい。後述の１つの実施の形態において、該範囲の間の関係は、線形であると仮定されている。他の実施の形態において、該範囲は非線形であってもよく、マップ化ファイル内のタグについてのレコードは、ルックアップ・テーブル若しくは式のいずれか又は両方を含んでいてもよく、１つの範囲と他の範囲との間の変換のために使用されてもよい。各タグ・ファイルについての記録は、制御値若しくはデータ値（タグが制御タグ又はデータ・タグであるかによる）及びタグについての現在の動作レベル（制御タグについての望ましい動作レベル又はデータ・タグについての実際の動作レベルであってよい）の両方を記録するための、８つのフィールドを含む。本発明の燃料電池試験システム及び制御システムと相互作用するユーザ・アプリケーションを一般的に使用する者によって理解される動作値を、本ユーザ・アプリケーションは使用する。ユーザ・アプリケーションは、タグ・ファイルにデータを書き込む又はタグ・ファイルからデータを読み出すための種々の読出／書込方法（ＭａｐｐｅｄＦｉｌｅｓＴｏｏｌ．ｄｌｌ）を使用する。これらの読出／書込方法は、各タグ内の信号記述に従ってデータを変換することを保証する。
【００１５】
本発明の第一の態様は、燃料電池を試験するシステムであって、（ａ）前記燃料電池の制御可能な条件を制御する制御装置を有する試験手段と、（ｂ）前記制御装置の選択された動作レベルを受信する動作レベル・フィールドを有する制御コマンド・タイプを含むスクリプト言語を提供するユーザ・インターフェースであって、テスト・スクリプトが前記制御コマンド・タイプの制御コマンドを含むように、該テスト・スクリプトは前記スクリプト言語を使用して書き込み可能であり、前記制御コマンドは、前記制御装置の前記選択された動作レベルを、前記制御コマンドの前記動作レベル・フィールドに挿入することによって、前記制御コマンド・タイプから導かれることができる、ユーザ・インターフェースと、（ｃ）テスト・プログラムを提供する前記テスト・スクリプトをコンパイルするコンパイラと、（ｄ）前記テスト・プログラムに従って前記制御装置を制御するシステム・マネージャと、を含む。
【００１６】
本発明の第二の態様は、制御装置を介して燃料電池の制御可能な条件を制御するデータ・プロセッサにおける方法であって、（ａ）前記制御装置の選択された動作レベルを受信する動作レベル・フィールドを有する、制御コマンド・タイプを含む、スクリプト言語を提供し、（ｂ）前記制御装置の前記選択された動作レベルを制御コマンドの前記動作レベル・フィールドに挿入することによって、制御コマンドを前記制御コマンド・タイプから導き、（ｃ）テスト・スクリプトが前記制御コマンドを含むように、前記スクリプト言語を使用してテスト・スクリプトを書き込み、（ｄ）テスト・プログラムを提供するために前記テスト・スクリプトをコンパイルし、（ｅ）前記テスト・プログラムに従って前記制御装置を制御する。
【発明を実施するための最良の形態】
【００１７】
本発明の好ましい実施の形態を、図面を参照して詳細に説明する。
「燃料電池試験システム序論」
最初に、例示的な燃料電池スタック試験システム１００を概略的に図示する図１を参照する。システム１００は、一連の気体注入口１０２ａ、１０２ｂ、１０２ｃ、…、１０２ｇ、脱イオン水入力１０４、可燃物排出口１０６、不燃物排出口１０８、制御可能な給電ボックス１１０、試験チャンバ１１２、及び制御システム１４０を有する。図を単純にするために、制御システム１４０は、図１中のいくつかの場所で、概略的に図示されている。
【００１８】
本例示的な燃料電池試験システム１００は、水素ベースの燃料電池スタックを試験するように構成されている。システム１００が使用されている時には、燃料電池スタック１１４は、通常、試験チャンバ１１２に位置する。燃料電池スタック１１４は、アノード側１１４Ａと、カソード側１１４Ｃと、を有する。スタック１１４のアノード側１１４Ａは、アノード気体注入口１１８Ａと、アノード気体排出口１２０Ａと、アノード電気端子１２２Ａと、を有する。カソード側１１４Ｃは、カソード気体注入口１１８Ｃと、カソード気体排出口１２０Ｃと、カソード電気端子１２２Ｃと、を有する。
【００１９】
水素ベースの燃料電池スタックは、一般的に、個別の燃料電池の集積（スタック）から成る。スタック１１４は、８つの燃料セル１１６ａ〜１１６ｈを具備する。燃料セル１１６の各々は、薄膜によって分割されている、アノード側と、カソード側と、を有する（各セル１１６の内部構造は図示されていないが、当業者にはよく理解されるであろう）。各燃料電池のアノード側は、アノード気体混合物を受け取るために、アノード気体注入口１１８Ａに結合されている。アノード気体混合物は、水素を含む。各燃料電池１１６のカソード側は、カソード気体混合物を受け取るために、カソード気体注入口１１８Ｃに結合されている。カソード気体混合物は、酸化体を含む。本例示的な実施の形態において、酸化体は、酸素である。このようにして、水素は、各燃料電池１１６のアノード側に供給され、酸素は、カソード側に供給される。水素分子（Ｈ2）が、アノード側で、電子と、水素
イオン（Ｈ+）と、に分離される。水素イオンは、薄膜を通過して燃料電池１１６のカソ
ード側に流れる。薄膜は、電子が通過しない。自由電子が、アノード・カレント・コレクタにおいて集められる。各電池１１６は、カソード・カレント・コレクタも有する。アノード・カレント・コレクタにおける電子の採集は、燃料電池１１６内に電位を生成する。燃料電池１１６の結合した電位がアノード電気端子１２２Ａとカソード電気端子１２２Ｃとの間に現れるように、燃料電池１１６は、スタック１１４内で電気的に直列に配置されている。各燃料電池１１６内で遊離した電子は、アノード電気端子１２２Ａから流れ出し、給電ボックス１１０を通り、カソード電気端子１２２Ｃに戻る。カソード電気端子から、自由電子は、個々の燃料電池１１６のカソード側に流れ、水素イオンと、電子と、酸素と、が結合し、水を生成する。電子の流れは、給電ボックス１１０内で作業を実行できる電流である。
【００２０】
スタック１１４が、アノード側で水素ガスを、カソード側で酸素を受け取ることが理想的である。しかしながら、これらの理想的な条件は、スタックの実際の使用の間は、満たされていないおそれがある。したがって、システム１００は、アノード及びカソード気体混合物を制御可能な組成で提供するように構成されている。選択された気体注入口１０２は、一連のガス・バルブ１２８及び流量制御器１３２を通じて、アノード気体混合物多岐管１２４に結合されている。同様に、選択された気体注入口１０２は、一連のガス・バルブ１３０及び流量制御器１３４を通じて、カソード気体混合物多岐管１２６に結合されている。本例示的な実施の形態において、水素、メタン、一酸化炭素、二酸化炭素、窒素、及び空気配管（ｓｕｐｐｌｉｅｓ）（気体注入口１０２ａ〜ｅに対応）は、バルブ１２８ａ〜ｆ及び流量制御器１３２ａ〜ｆを通じて、アノード気体混合物多岐管１２４に結合されている。窒素、空気、酸素、及びへロックス（ヘリウムと酸素の混合物）配管（気体注入口１０２ｄ〜１０２ｈに対応）は、バルブ１３０ａ〜ｄ及び流量制御器１３４ａ〜ｄを通じて、カソード気体混合物多岐管１２６に結合されている。
【００２１】
ガス供給バルブ１２８ａ〜ｆは、制御線１２９ａ〜ｆを通じて、制御システム１４０によって制御されている。ガス供給バルブ１３０ａ〜ｄは、制御線１３１ａ〜ｄを通じて、制御システムによって制御されている。流量制御器１３２ａ〜ｆは、データ／制御線１３３ａ〜ｆを通じて、制御システム１４０によって制御されている。流量制御器１３４ａ〜ｄは、データ／制御線１３５ａ〜ｄを通じて、制御システム１４０によって制御されている。アノード気体混合物多岐管１２４内の気体の混合物（「アノード気体混合物」）が選択された組成物を有するように、制御システム１４０は、バルブ１２８及び流量制御器１３２を動作させる。同様に、カソード気体混合物多岐管１２６内のカソード気体混合物が所望の組成を有するように、制御システム１４０は、バルブ１３０及び流量制御器１３４を動作させる。
【００２２】
一般的に、アノード気体混合物及びカソード気体混合物の温度及び湿度レベルを、試験中にスタック１１４に供給される時に、制御することが望ましい。
【００２３】
アノード気体混合物の温度を監視し、アノード気体混合物多岐管１２４に蓄積されているアノード気体混合物を所望の温度に加熱又は冷却するために、アノード気体ヒータ１３６が、アノード気体混合物多岐管１２４に結合されている。同様に、カソード気体混合物の温度を監視し、カソード気体混合物を所望の温度に加熱又は冷却するために、カソード気体ヒータ１３８が、カソード気体混合物多岐管１２６に結合されている。アノード気体ヒータ１３６は、データ／制御線１６０を通じて、制御システム１４０に結合されている。制御システム１４０は、データ／制御線１６０を通じて、アノード気体ヒータ１３６を制御するばかりでなく、アノード気体混合物の温度を監視できる。
【００２４】
アノード気体混合物多岐管１２４から、アノード気体混合物は、アノード気体湿度制御ユニット１４４、アノード気体混合物バルブ１４６、及び流量制御器１４８を通過する。流量制御器１４８からは、アノード気体混合物が、アノード気体再加熱ジャケット１５０を通じて、スタック１１４のアノード気体注入口１１８に流れる。カソード気体混合物多岐管１２６からは、カソード気体混合物が、カソード気体湿度制御ユニット１５２、カソード気体混合物バルブ１５６、及び流量制御器１５６を通じて流れる。流量制御器１５６から、カソード気体混合物が、カソード気体再加熱ジャケット１５８を通じて、カソード気体注入口１１８Ｃに流れる。アノード気体混合物バルブ１４６の動作は、制御線１７２を通じて、制御システム１４０によって制御される。アノード気体流量制御器１４８の動作は、データ／制御線１７４を通じて、制御システム１４０によって制御される。
【００２５】
システム１００の動作中、アノード気体混合物多岐管１２４内で生成されたアノード気体混合物の一部は、スタック１１４に送り出されない。過剰のアノード気体混合物は、可燃物排出口１０６から捨てられる。
【００２６】
アノード気体ヒータ１３６は、アノード気体混合物を、スタック１１４に供給されるべき温度まで加熱する。再加熱ジャケット１５０は、アノード気体混合物がスタック１１４内に流れる時にアノード気体混合物の温度が変化しないことを保証する。アノード気体ヒータ１３６の動作（すなわち、その温度までアノード気体混合物を加熱する温度）は、データ／制御線１６０を通じて、制御システム１４０によって制御される。同様に、アノード再加熱ジャケット１５０の動作は、制御線１６２を通じて、制御システム１４０によって制御される。
【００２７】
システム１００は、脱イオン水注入口１０４において、脱イオン水供給を受け取る。ボイラ１７６は脱イオン水を受け取って蒸気にし、蒸気貯蔵器１７８に蓄積する。
【００２８】
アノード湿度制御ユニット１４４は、蒸気貯蔵器１７８から蒸気を受け取る。アノード湿度制御ユニット１４４は、飽和器１６４と、露点制御器１６２と、を含む。アノード気体混合物は、最初に、飽和器１６４の中を流れる。飽和器１６４は、データ／制御線１６８を通じて、制御システム１４０によって制御されている。飽和器１６４は、一般的には、水蒸気で完全に飽和されるまで（すなわち、混合物が１００％の湿度を有するまで）、十分にアノード気体混合物を加熱するように動作される。飽和器１６４から、アノード気体混合物が、露点制御器１６６内に流れる。露点制御器１６６は、データ／制御線１７０を介して、制御システム１４０によって制御されている。アノード気体混合物の湿度レベルが所望のレベルまで下がるように、露点制御器１６６は、アノード気体混合物の温度を下げるように動作される。アノード気体混合物を完全に飽和させるように飽和器１６４を動作させる必要はない。アノード気体混合物の湿度レベルが所望の湿度レベル以上にあるようにアノード気体混合物を加熱すれば十分である。
【００２９】
アノード気体混合物は、加熱ジャケット１５０を通り、スタック１１４のアノード気体混合物注入口１１８Ａ内に流れる。スタック１４０に供給されたアノード気体混合物の一部は、燃料電池１１６のアノード側によって消費されず、アノード気体混合物の未使用部分は、アノード気体混合物排出口１２０Ａを通じて排出される。アノード気体混合物排出口１２０Ａからは、未使用のアノード気体混合物が、可燃物排出口１０６に流れる。
【００３０】
カソード気体混合物多岐管１２６内で生成されたカソード気体混合物は、同様に、カソード湿度制御ユニット１５２によって調湿される。カソード湿度制御ユニット１５２は、カソード気体飽和器１８０と、露点制御器１８２と、を有する。カソード気体混合物の温度は、気体ヒータ１３８及びカソード再加熱ジャケット１５８によって制御される。カソード気体混合物の調湿及び流量は、テーブル１に記載されたデータ／制御線を通じて、制御システム１４０によって制御される。
【００３１】
【表１】
2005353609.tif 000002
【００３２】
カソード気体注入口１１８Ｃに送り出されなかったか、あるいは未使用でカソード気体排出口１２０Ｃから排出された、過剰のカソード気体混合物は、非可燃物排出口１０８を通じて排出される。
【００３３】
使用中、スタック１１４は、通常は冷却されている。脱イオン水注入口１０４からの脱イオン水が、スタック冷媒冷却器１９８が取り付けられたスタック冷媒貯蔵器１９６内に流れる。冷却器１９８は、貯蔵器１９６内に貯蔵された脱イオン水を所望の温度まで冷却する。冷却器１９８の動作は、データ／制御線２００を通じて、制御システム１４０によって制御される。冷却された脱イオン水は、冷媒バルブ２０６及び冷媒流量調節器２０８の制御下で、貯蔵器１９６からスタック冷媒注入口２０２に流れ、スタック及びスタック冷媒排出口２０４を通り、貯蔵器１９６に戻る。冷媒バルブ２０６及び冷媒流量制御器２０８は、データ／制御線２１０、２１２を通じて、制御システム１４０によって制御される。
【００３４】
燃料電池スタック１１４の試験中は、システム１００及びスタック１１４の種々の点における温度を測定することが、一般的に望ましい。制御システム１４０は、テーブル２に記載されているシステム１００と、スタック１１４の複数の点に結合されている、示されている該点における温度を測定するための複数の温度計を含む。これらの温度計は、温度計が測定を行なう位置の方向を指し示す矢印を有する「Ｔ」を含む円によって、図１で示されている。これらの温度計の各々は、テーブル２に記載されたデータ線を通じて、制御システム１４０に結合されている。
【００３５】
【表２】
2005353609.tif 000003
【００３６】
さらに、燃料電池の試験中は、システム１００内の種々の気体及び液体の圧力を測定することが、一般的に望ましい。制御システム１００は、システム１００の異なる部分に結合された種々の圧力センサを含む。テーブル３は、これらの圧力センサ及びシステム１００内のそれらの位置を識別する。これらの圧力センサは、圧力センサがある位置の方向を指し示す矢印を有する「Ｐ」を含む円及び圧力センサが測定する圧力によって、図１で示されている。これらの温度計の各々は、テーブル３に記載されたデータ線を通じて、制御システム１４０に結合されている。
【００３７】
【表３】
2005353609.tif 000004
【００３８】
燃料電池スタックの試験中に通常測定されるスタック性能の１つの重要な特性は、スタック内の各電池のアノードとカソードとの間に生成される電圧である。各電池１１６内の電圧を測定し、測定された電圧を制御システム１４０に提供するために、データ線２８０のセットが電池１１６と制御システム１４０との間に結合されている。当業者ならば、電池１１６内の電圧が、電池１１６の両側における電位の測定を必要とすることを認識するであろう。したがって、各データ線２８０は、電池１１６内で結合された一対の電極に結合されていてもよく、制御システム１４０に報告される電圧値を計算するために、電極内の電圧差を計算するための回路（作動増幅器等）が使用されてもよい。
【００３９】
給電ボックス１１０は、スタック１１４から制御される給電を引き出すことができる。給電ボックス１１０によって引き出された給電の次の構成要素が設定可能である。すなわち、直流電力（スタックの電気端子１２２内の電力において引き出された電流が効果的）、交流周波数、交流電圧、及び交流電流である。一般的には、給電ボックス１１０は、任意の種類のＡＣ構成要素を、スタック１１４上の給電に加えることができる。制御システム１４０が、制御されるべきスタック１１４から引き出された給電の異なる特性を制御することを許可するために、制御線２８２〜２８８のセットが、給電ボックス１１０と制御システム１４０との間に結合されている。制御線２８２〜２８８が、テーブル４で説明されている。
【００４０】
【表４】
2005353609.tif 000005
【００４１】
次に、本発明の第１の実施の形態による、制御システム１４０を図示する、図２を参照する。制御システム１４０は、サーバ３００と、マップ化ファイル３０２と、制御モジュール３０４ａ、３０４ｂ、３０４ｃ、３０４ｄのセットと、を含む。サーバ３００は、システム・マネージャ３０６と、ドライバ・アプリケーション３０８ａ、３０８ｂ、３０８ｃ、３０８ｄのセットと、を含む。
【００４２】
制御モジュール３０４が、上述の種々のデータ／制御線を通じて、システム１００（図１）の構成要素に結合されている。制御モジュール３０４の各々が、システム１００の異なる部分とインターフェースする。本実施の形態において、制御モジュール３０４ａは流量制御モジュールであり、一般的には、システム１００内のバルブ及び流量制御器に結合されている。制御モジュール３０４ｂは、一般的に、システム１００内の温度計、ヒータ、及び冷却器に結合された熱制御モジュールである。制御モジュール３０４ｃは、給電ボックス１１０の動作を制御するために、一般的に、制御線２８２〜２８８に結合された給電ボックス制御モジュールである。制御モジュール３０４ｄは、制御線２８０に結合された燃料電池電圧監視（ＦＣＶＭ）制御モジュールであり、スタック１１４内の燃料電池１１６内の電圧を監視する。各制御モジュール３０４は、対応するドライバ・アプリケーション３０８を通じて、システム・マネージャ３０６に結合されている。
【００４３】
各制御モジュール３０４とその対応するドライバ・アプリケーションとの間の通信は、選択された通信プロトコルを使用して実行される。たとえば、ＲＳ２３２、ＲＳ４８５、ＩＥＥＥ４８８、又は任意の他のシリアル又はパラレル・データ通信プロトコルが使用されてもよい。プロトコルの選択は、一般的に、制御モジュール内に含まれた装置の性質に基づく。
【００４４】
本実施の形態において、各ドライバ・アプリケーション３０８とシステム・マネージャ３０６との間の通信は、メッセージ・キューのペアを使用して実行される。システム・マネージャ３０６と通信するために、ドライバ・アプリケーション３０８ａは、共有メモリ内にメッセージを記憶する。システム・マネージャ３０６は、次に、共有メモリからメッセージを取り出し、該メッセージに基づいて動作する。ドライバ・アプリケーション３０８ａと通信するために、システム・マネージャ３０６は、共有メモリ内にメッセージを記憶する。ドライバ・アプリケーション３０８ａは、次に、メッセージを取り出し、該メッセージに基づいて動作する。同様に、ドライバ・アプリケーション３０８ｂ−ｄは、システム・マネージャと通信するために、共有メモリを使用する。他の実施の形態において、ドライバ・アプリケーション３０８とシステム・マネージャ３０６との間の通信が、メッセージ・キュー又は他の通信技術等、任意の既知のメカニズムを使用して実行されてもよい。
【００４５】
テーブル５は、システム１００に結合されたデータ／制御線の各々の特性を示す。
【００４６】
【表５】
2005353609.tif 000006
2005353609.tif 000007
【００４７】
【表６】
2005353609.tif 000008
2005353609.tif 000009
2005353609.tif 000010
2005353609.tif 000011
【００４８】
タグ・ファイル３１０が、サーバ３００にアクセス可能な記憶装置３１２に記憶される。タグ・ファイル３１０は、関連したデータ／制御線番号及び構成要素番号を除く各タグについてのテーブル５に示された情報を含む。タグ・ファイル３１０の使用について、以下説明する。
【００４９】
システム・マネージャ３０６及びドライバ・アプリケーション３０８は、個別の実行スレッドである（あるいは、同一コンピュータ上で動作していてもよい）。システム・マネージャ３０６は、システム１００内のすべての監視可能な又は制御可能な要素に関する情報を含む、マップ化ファイル３０２を作動させる。
【００５０】
次に、システム・マネージャ３０６がシステム１００の動作を始動する方法１１００を図示する図３を参照する。
【００５１】
方法１１００は、ステップ１１０２で開始し、システム・マネージャ３０６がタグ・ファイル３１０を読み出す。次に、ステップ１１０４で、システム・マネージャ３０６が、ローカル・メモリ空間内でマップ化ファイル３０２を生成する。マップ化ファイル３０２は、以下の２つの追加のフィールドばかりでなく、タグ化フィールド内のすべてのフィールドを含む、タグ化ファイル３１０内の各タグについてのレコードを含む。
１．制御／データ値フィールド  ―  制御タグについての現在の制御値又はデータ・タグについての現在のデータ値を含む。このフィールド内の値は、各装置についての制御／データ範囲と同様の単位である
２．動作レベル・フィールド  ―  制御／データ値と対応する値を含むが、装置についての動作範囲と同じ単位である。
【００５２】
一例として、タグ５７６、５７７に関連する方法１１００の動作を考察する。ステップ１１０２では、システム・マネージャ３０６が、タグ・ファイル３１０を読み出す。次に、システム・マネージャ３０６がローカル・メモリ空間内にマップ化ファイル３０２を生成する。マップ化ファイル３０２は、タグ５７６、５７７についてのレコードを含む。このレコードは、タグ・ファイル３１０内のタグ５７６、５７７についてのすべてのフィールドを含み、さらに、タグ５７６については、タグ５７６についての現在のデータ値を含むデータ値フィールドを、タグ５７７については、タグ５７７についての現在の制御値を含む制御値フィールドを含む。さらに、マップ化ファイル３０２は、タグ５７６、５７７の各々についての動作レベル・フィールドを含み、動作レベル・フィールド装置についての動作範囲と同一の単位に変換された、それぞれデータ及び制御値フィールド内に記憶された情報を含む。
【００５３】
次に、方法１１００は、ステップ１１０６に進む。ステップ１１０６では、システム・マネージャ３０６が、各流量制御モジュールについてのドライバ・アプリケーションを始動する。本実施の形態において、システム・マネージャ３０６は、タグ化ファイル３１０のモジュール・フィールドの入力に基づいて、制御システム１４０内にどの制御モジュール３０４が存在するかを判断する。あるいは、制御モジュール３０４のリストは、データ・ファイル内で、システム・マネージャ３０６に提供されてもよく、システム・マネージャ３０６は、どの制御モジュールが存在するかを判断するために、制御システム１４０及びシステム１００に結合されたハードウェアを分析してもよい。
【００５４】
本実施の形態においては、４つの制御モジュールがインストールされている。すなわち、流量制御モジュール３０４ａ、温度制御モジュール３０４ｂ、給電ボックス制御モジュール３０４ｃ、及びＦＣＶＭ制御モジュール３０４ｄである。それに応じて、システム・マネージャ３０６が、４つのドライバ・アプリケーション３０８ａ〜３０８ｄを始動する。これらのドライバ・アプリケーションの各々は、独立した実行スレッドであり、互いに独立して動作する。各ドライバ・アプリケーション３０８を始動する時には、システム・マネージャは、関連したメッセージ・キューを生成する（すなわち、ドライバ・アプリケーション３０８ａ用のメッセージ・キュー３１６、３１８である）。
【００５５】
次に、システム・マネージャ３０６は、ステップ１１０８に進み、システム１００内に任意のユーザ・アプリケーションがインストールされている場合には、システム・マネージャ３０６は、１つ以上のユーザ・アプリケーション３１４を始動する。ユーザ・アプリケーションの目的及び動作を、次に説明する。このようなユーザ・アプリケーションは、次に説明する他の実施の形態内に含まれるが、本発明の本第１の実施の形態の一部ではない。次に、システム・マネージャ２０は、ステップ１１１０に進む。
【００５６】
ステップ１１１０は、本発明の異なる実施の形態内に含まれてもよいし、含まれなくてもよい、選択的なステップである。本ステップでは、システム・マネージャ３０６は、記憶装置から初期条件データ・ファイル（図示せず）を読み出す。この初期条件データ・ファイルは、１つ以上の制御タグを識別し、制御タグについての初期値を設定する。各識別された制御タグについて、システム・マネージャ３０６は、マップ化ファイル内のタグのレコードの制御／データ値フィールド内に、指定された初期値を入力する。次に、システム・マネージャ３０６は、制御／データ値を対応する動作レベルに変換し、その結果を、マップ化ファイル内のタグのレコードの動作レベル・フィールド内に記憶させる（あるいは、初期値データ・ファイルはタグの初期の作動値を特定してもよく、システム・マネージャ３０６は対応するデータ／制御値を計算してもよい）。
【００５７】
ステップ１１１０の終わりに、システム・マネージャ３０６の初期化動作は完了する。次に、システム・マネージャ３０６は、ループに入り、燃料電池試験中は無制限に本ループ内に留まる。ループは、ステップ１１１０で始まる。
【００５８】
本ループを説明する前に、ドライバ・アプリケーション３０８及びユーザ・アプリケーション３１４の目的及び動作を説明することが望ましい。各ドライバ・アプリケーション３０８は、１つ以上の制御モジュールとインターフェースし、システム１００内の制御及びデータ収集装置とのインターフェースを提供する。各ドライバ・アプリケーションは、システム１００の所望の及び実際の作動条件が記録されている、マップ化ファイル３０２内の関連したタグ・レコードにアクセスしなければならない。
【００５９】
たとえば、ドライバ・アプリケーション３０８ａは、流量制御器１３２ａの動作を制御するための流量制御モジュール３０４ａを使用し、アノード気体混合物多岐管１２４内への水素の流速を制御する。ドライバ・アプリケーション３０８ａは、アノード気体混合物多岐管１２４内の水素の現在の流速を判断するために、流量制御器１３２ａに照会可能である。このような照会に対応して報告された流速は、マップ化ファイル３０２内のタグｆｌｏｗ＿ａｎｏｄｅ＿ｍｉｘ＿H２（テーブル５のタグ番号５７６）用の制御／データ値
フィールド内に記録されるべきである。ドライバ・アプリケーション３０８ａは、さらに、アノード気体混合物多岐管１２４内への水素の流速を一定のレベルに変更するように、流速制御器１３２ａに指示できる。この一定のレベルは、タグｆｌｏｗ＿ａｎｏｄｅ＿ｍｉｘ＿Ｈ２＿ｓｅｔ（テーブル５のタグ番号５７７）用の制御／データ値フィールド内に記録される。ドライバ・アプリケーション３０８ａは、同様に、そこから入力信号（すなわち、デジタル又はアナログ入力信号）を受信可能であり、それに対して出力信号を送信可能な任意の要素についての動作設定を制御できるシステム１００のすべての要素についての動作条件を参照できる。
【００６０】
各ドライバ・アプリケーション３０８は、メッセージ・キューのペアを使用して、システム・マネージャ３０６へメッセージを送信すること及びシステム・マネージャ３０６からメッセージを受信することによって、システム・マネージャ３０６を通じて、マップ化ファイル３０２にアクセスする。これを容易にするために、各ドライバ・アプリケーションは、テーブル６で説明される方法を含む方法分類を使用する。その方法の各々は、システム・マネージャ３０６にメッセージを送信し、適切な場合には、システム・マネージャ３０６は、返信メッセージを送信する。本方法は、返信メッセージを読み、任意の戻り値をドライバ・アプリケーションに戻す。
【００６１】
【表７】
2005353609.tif 000012
2005353609.tif 000013
2005353609.tif 000014
【００６２】
テーブル６に示された方法分類における方法を使用して、ドライバ・アプリケーション３０８は、マップ化ファイル３０２から制御／データ値読み出し及びマップ化ファイル３０２への制御／データ値書込みが可能である。一般的に、ドライバ・アプリケーション３０８は、制御タグのレコードから制御値を読み出し、データ・タグのレコード内にデータ値を書込む。制御値は、システム１００の構成要素を制御するために使用され、データ値はシステム１００の構成要素の動作状態を報告する。
【００６３】
ユーザ・アプリケーション３１４は、燃料電池試験中若しくはシステム１００の動作中における任意の時間に、システム１００の所望の動作状態を定義するため、及びシステム１００の動作状態をユーザに報告するために、使用される。ユーザ・アプリケーションは、ユーザがシステム１００の所望の動作特性を「手動で」設定し現在の動作状態を表示することを許可するユーザ・インターフェース、燃料電池試験を定義し試験中にシステム１００の性能を記録するためのデータ記録性能を有する十分に自動化されたソフトウェア・プログラム、このような手動及び自動化されたソフトウェア又は他の種類のプログラムの組合せであってもよい。
【００６４】
ユーザ・アプリケーション３１４は、制御タグに記録するための動作レベル値を提供し、ユーザに報告するために、ユーザ・インターフェース、データ・ファイル、データ・ファイル及びユーザ・インターフェースの両方を通じて、又はＥメール・メッセージを送信する他の報告する装置（すなわち、プリンタ）、無線ポケットベル、又は他の通信装置等を通じて、データ・タグから動作レベル値を読み出す。制御タグについて、ユーザ・アプリケーション３１４は、動作レベル値を提供し、書込み方法は、動作レベル値を制御値に変換して、マップ化ファイルに記録する。データ・タグについては、読み出し方法は、指定されたタグについて動作レベル値を戻す。
【００６５】
本発明の他の実施の形態に関連したいくつかのユーザ・アプリケーション３１４について、次に説明する。任意の性質のユーザ・アプリケーション３１４が制御値を提供し、任意で、マップ化ファイル３０２内の制御タグ及びデータ・タグのレコードからデータ値を読み出せば、本実施の形態のために十分である。
【００６６】
ユーザ・アプリケーション３１４は、テーブル６に示した方法分類における方法を使用することによって、ドライバ・アプリケーション３０８と同じ方法で、マップ化ファイル３０２をアクセスしてもよい。
【００６７】
ユーザ・アプリケーション及びドライバ・アプリケーションの両方は、「チェック・イン」処理を適用するために、開始時に、マップ化ファイルにアクセスすべきである。この処理は、それ自体の名称を特定し指定されたアクティビティ・フラグを定期的に更新するためにこれより先に使用されるべき指定したＩＤを戻す、アクティビティ更新処理を含む。本処理は、試験システム内に含まれるアプリケーションが「まだ動作している」かをシステム・マネージャに検査させる役割を果たす。さらに、ユーザ・アプリケーションは、「システム・マネージャ自体のアクティビティ・フラグ」を検査することによって、システム・マネージャが「まだ動作している」かを判断できる。停止前の各アプリケーションは、もはや動作していないとシステム・マネージャに知らせるために、「チェック・アウト」処理を適用しなければならない。テーブル６内で示された方法分類内の指定された方法が使用される。
【００６８】
システム・マネージャは、テーブル６で示された方法分類内の指定された方法を使用することによって、それ自体のアクティビティ・フラグを更新し、動作しているユーザ・アプリケーション及びドライバ・アプリケーション・アクティビティ・フラグを検査するために、マップ化ファイルを定期的にアクセスする。
【００６９】
一般的に、ユーザ・アプリケーションは、制御タグのレコードに制御値を書き込み、データ・タグのレコードからデータ値を読み出す。次に、制御値は、システム１００の構成要素を制御するために、制御モジュール３０４を通じて、ドライバ・アプリケーション３０８によって読み出される。マップ化ファイル３０２のレコードからユーザ・アプリケーション３１４によって読み出されたデータ値は、一般的に、ドライバ・アプリケーション３０８ａによって、マップ化ファイル内に書き込まれる。
【００７０】
システム・マネージャ３０６は、各ドライバ・アプリケーション３０８に、マップ化ファイル内の指定されたアクティビティ・フラグを定期的に更新することを要求する。これは、適切な実行を停止したドライバ・アプリケーションが検出されることを保証し、システム・マネージャ３０６が訂正処置を取ることを許可し、これには、ドライバ・アプリケーションを停止させ再始動させ、実行中の燃料電池試験を終了させること、又は他の処置を取ること、を含んでいてもよい。さらに、システム・マネージャ３０６は、チェック・イン処理を適用したすべてのユーザ・アプリケーション３１４が適切に実行していることを、同様に示すことを要求する。
【００７１】
他の実施の形態において、方法１１００は、さらなるステップを有していてもよい。たとえば、他のいくつかの実施の形態において、システム・マネージャ３０６は、各ドライバ・アプリケーション３０８に、以前のメッセージの選択された時間内に、少なくとも１つのメッセージをシステム・マネージャ３０６に送信することを要求してもよい。このような「私は動作中（I'm alive）」メッセージを送るためのさらなる方法が、この目的の
ために、テーブル６の方法分類に加えられてもよい。これは、適切な実行を停止したドライバ・アプリケーションが検出されることを保証し、システム・マネージャ３０６が訂正処置を取ることを許可し、これには、ドライバ・アプリケーションを停止させ再始動させ、実行中の燃料電池試験を終了させること、又は他の処置を取ること、を含んでいてもよい。さらに、システム・マネージャ３０６は、ユーザ・アプリケーション３１４に、適切に実行していることを、同様に示すことを要求してもよい。
【００７２】
ドライバ・アプリケーション３０８は、マップ化ファイル３０２内に記録されたデータを使用し、該データを更新する。各ドライバ・アプリケーションは、InitializeAndOpenMappedFile法を使用することによって、システム・マネージャ３０６が使用しているマップ化ファイル３０２についての処理を取得する。
【００７３】
次に、図４を参照する。図４は、テーブル５中のドライバ・アプリケーションが関連する各タグに対応するシステムの構成要素を各ドライバ・アプリケーション３０８が制御する、方法１２００を図示する。各ドライバ・アプリケーション３０８は、システム１００の少なくとも１つの要素の動作を監視及び／又は制御するための制御モジュールに、結合されている。監視されている各特性は、タグ化ファイル内及びマップ化ファイル３０２内のデータ・タグに対応する。制御される各特性は、タグ化ファイル内及びマップ化ファイル３０２内の制御タグに対応する。ドライバ・アプリケーションは、このようなデータ及び制御タグの各々と関連していると言ってもよい。
【００７４】
方法１２００は、関連した各制御タグについて、ドライバ・アプリケーション３０８によって、実行される。方法１２００は、ステップ１２０２で開始し、制御タグについての現在の制御値を（マップ化ファイルの制御／データ値フィールドから）得るために、ドライバ・アプリケーション３０８は、ＲｅａｄＴａｇｇｅｄＶａｌｕｅ法を使用する。たとえば、ドライバ・アプリケーション３０８ａは、カソード気体混合物のスタック内への流れについて、どのような流速が指定されたかを判断するために、ｆｌｏｗ＿ｃａｔｈｏｄｅ＿ｓｔａｃｋ＿１＿ｓｅｔタグ（テーブル５のタグ番号５３１）についての現在の制御値を得るために、（ユーザ・アプリケーションによって）ＲｅａｄＴａｇｇｅｄＶａｌｕｅを使用してもよい。
【００７５】
次に、方法１２００は、ステップ１２０４に進み、ドライバ・アプリケーションは、制御タグについての制御値を、関連した制御モジュールに送信する。ステップ１２０２において、上記方法を使用して、ドライバ・アプリケーション３０８ａは、流量制御モジュール３０４ａに、制御値を送信する。次に、流量制御モジュール３０４ａは、流量制御器１５６の動作を制御するために、データ線１９２に制御信号を送ることによって、制御値を使用する（図１及びテーブル５参照）。制御モジュールによってシステム１００の取り付けられた構成要素に送られた制御信号の性質は、特定の構成要素に依存する。たとえば、流速が一定の流速を正確に追うことを保証するために、流量制御器は、流量制御器の動作を常に監視及び制御する高品質ＰＩＤタイプ・フィードバック制御装置によって制御されてもよい。
【００７６】
次に、方法１２００は、ステップ１２０６に進み、ドライバ・アプリケーションは、選択された時間待つ。選択された時間は、方法１２００が実行されている特定のタグに依存する。たとえば、アノード気体混合物中の気体の異なる濃度を制御するために流量制御器１３２を制御する時には、ドライバ・アプリケーションは、濃度変化が生じたすぐ後にユーザ・アプリケーションによって処理されることを保証する、短い遅延を有していてもよい。他方、流量調節器２０８についての方法１２００の繰返しの間の遅延は、より長くてもよい。これらの比較は単に例示的なものであり、本発明の実際の実施の形態において、遅延は、関連した制御モジュールの制限ばかりでなく、制御されている構成要素の種類及び所望の正確さの程度に基づいて、選択される。
【００７７】
ステップ１２０６の後に、方法１２００は、ステップ１２０２に戻る。
【００７８】
次に、図５を参照する。図５は、テーブル５中のドライバ・アプリケーションが関連している各データ・タグと対応する各システム要素の動作を各ドライバ・アプリケーション３０８が監視する、方法１３００を図示する。方法１３００は、ドライバ・アプリケーション３０８が関連する各データ・タグに関連して、ドライバ・アプリケーション３０８によって実行される。
【００７９】
方法１３００は、ステップ１３０２で始まり、ドライバ・アプリケーション３０８は、それに関連した制御モジュール、それについて方法１３００が実行されるタグに対応するシステム１００の要素の現在の動作レベルについて、関連した制御モジュールに照会する。たとえば、スタック１１６内へのカソード気体混合物の現在の流速を得るために、ドライバ・アプリケーション３０８ａは、流量制御モジュール３０４に照会してもよい。本動作レベルは、データ・タグについてのデータ値である。
【００８０】
次に、方法１３００は、ステップ１３０４に進み、ドライバ・アプリケーションは、WriteTaggedValue法を使用して、データ値を、タグについてのマップ化ファイル・レコードに書き込む。
【００８１】
次に、方法１３００は、ステップ１３０６に進み、ドライバ・アプリケーションは、選択された時間待つ。
【００８２】
次に、方法１３００は、ステップ１３０２に戻る。
【００８３】
方法１３００を使用して、各ドライバ・アプリケーション３０８は、各ドライバ・アプリケーション３０８が関連する各制御タグについての制御値を定期的に読み出し、制御値をシステム１００の対応する構成要素に送信する。同様に、方法１３００を使用して、各ドライバ・アプリケーション３０８は、各ドライバ・アプリケーションが関連する各データ・タグについてのデータ値を定期的に得て、マップ化ファイル内にデータ値を記憶する。方法１２００及び１３００は、ドライバ・アプリケーション３０８が関連したすべての制御及びデータ・タグについて、各ドライバ・アプリケーション３０８によって同時に実行される。
【００８４】
これらの方法を使用して、制御システム１４０は、タグがマップ化ファイルに加えられたシステム１００の各構成要素の各特性を制御し、監視する。制御システム１４０は、マップ化ファイル３０２に記録された制御／データ値に従って、ユーザ・アプリケーションによって、システム１００を制御しようとする。制御システム１４０は、システム１００の現在の動作状態を、マップ化ファイル３０２内のデータ・タグを更新することによって、ユーザ・アプリケーションに適応させる。
【００８５】
ドライバ・アプリケーションを開始する前に、システム・マネージャは、制御モジュールのタグ・ファイル記述及び現在の試験されたシステムの構成要素に従って、ドライバ・アプリケーションを構成する。
【００８６】
制御システム１４０は、単純化された燃料電池システム１００のコンテクストで記述されている。制御システム１４０の他の実施の形態は、関連した燃料電池試験システムの構造に基づいて、データ／制御線、タグ、制御モジュール、及び他の構成要素を含んでいてもよい。このような変形例のいくつかを、次に説明する。当業者であれば、記載された変形例に適応するように、システム１００に、制御／データ線、タグ、制御モジュール、及び構成要素を加えることができるであろう。
【００８７】
たとえば、本発明の他の実施例は、他の気体の供給源を含んでいてもよく、又はアノード気体混合物及び／又はカソード気体混合物を生成するために使用されてもよい選択するためのより少数の気体を含んでいてもよい。このような実施の形態は、このような気体の流れ、タグ線、及びマップ化ファイル内の入力を制御するための、対応する制御／データ線を含んでいる。
【００８８】
本発明の異なる実施の形態によると、スタックは、任意の数の燃料電池を含んでいてもよい。対応する制御システムは、スタック内の各電池内の電圧を監視するための対応する制御／データ線を含む。
【００８９】
本発明の他の実施の形態は、燃料電池試験の間、燃料電池スタックが置かれているチャンバ環境を制御し監視することを含んでいてもよい。たとえば、チャンバ環境の湿度及び温度が制御されてもよい。このような実施の形態は、温度及び湿度を監視するための対応するデータ・タグばかりでなく、温度及び湿度に関連した制御値についての、マップ化ファイル内の制御タグを含む。当業者は、このような実施の形態に、適切なデータ及び制御線を提供できるであろう。
【００９０】
本発明の他の実施の形態は、アノード及びカソード混合物ばかりでなく、冷却液を監視するためのデータ・タグを含んでいてもよい。このようなデータ・タグは、燃料電池試験システム内の２つのセンサに結合された適切なデータ線と関連している。
【００９１】
他の実施の形態は、気体排出口ばかりでなく主要な気体供給を制御及び監視する圧力センサばかりでなく、バルブ及び流量計を含んでいてもよい。このようなシステムは、燃料電池試験システム内の関連したハードウェア内の適切な制御及びデータ線ばかりでなく、適切な制御及びデータ・タンクを含む。
【００９２】
上述の特徴は、特定の目的のための特定の燃料電池の試験の間に制御される必要があるかもしれない試験条件の単なる例である。本発明は、これらの条件を管理するための、制御システム１００用のソフトウェア・システム、及びそれを用いて本発明が使用される燃料電池試験システムの詳細に基づく他の条件を提供する。
【００９３】
図６を参照する。本発明の第２の例示的な実施の形態を説明する。第２の実施の形態の構成は、上記の第１の例示的な実施の形態と同一であり、ユーザ・アプリケーションを生成するためのシステム４００が追加されている。システム４００は、スクリプト言語４０２、スクリプト・コンパイラ４０４、及びプログラム・プロセッサ４０６を含む。プログラム・プロセッサ４０６は、ユーザ・アプリケーション３１４である（図２参照）。
【００９４】
システム１００を使用して燃料電池試験を実行するためのスクリプト４０８を生成するために、スクリプト言語４０２が使用される（図１）。スクリプト言語４０２は、テーブル７〜１１に示される、複数のコマンドを有する。スクリプト４０８は、スクリプト・コンパイラ４０４を使用して、プログラム４１０に変換される。そうする一方、実行可能なプログラム４１０がアセンブル可能であることを保証するために、スクリプト・コンパイラ４０４は、スクリプト４０８の構文（ｓｙｎｔａｘ）及びフローを検査する。燃料電池試験を制御するために、システム・マネージャ３０６と通信するために、実行可能プログラム４１０はプログラム・プロセッサ４０６によって使用される。
【００９５】
テーブル７は、制御タグと関連した装置について所望の動作レベルを設定するためのスクリプトに使用される、セットポイント・コマンドのセットを示している。各セットポイント・コマンド・パラメータが、テーブル７に記載されている。
【００９６】
【表８】
2005353609.tif 000015
【００９７】
テーブル８は、制御システム１４０を含むシステム１００に適用される一連のコマンドを説明する。
【００９８】
【表９】
2005353609.tif 000016
【００９９】
テーブル９は、スクリプトの実行フローを制御するために使用されてもよいプログラム・フロー・コマンドのセットを説明する。
【０１００】
【表１０】
2005353609.tif 000017
【０１０１】
テーブル１０は、コマンドのブロックを定義するために使用されてもよいブロック・コマンドのセットを定義する。コマンドのブロックは、概して、Ｉｆ、ＥｌｓｅＩｆ、Ｗａｉｔ＿Ｕｎｔｉｌ、又は他のプログラム・フロー・コマンドに対応して実行される。
【０１０２】
【表１１】
2005353609.tif 000018
【０１０３】
テーブル１１は、スクリプトの実行に影響せずに、コマンドがスクリプト内に挿入されることを許可する文書コマンドのセットを定義する。
【０１０４】
【表１２】
2005353609.tif 000019
【０１０５】
周知のように、スクリプトは、該スクリプトを作るための自動化プログラムを使用して構築出来る。ユーザは、コマンドを選択でき、自動化プログラムは、可能なパラメータのリスト及びそこから選ぶべき他の情報を与える。これは、コマンド構文が正確であることを保証する。さらに、ループをスクリプト内に入れることが出来、繰返しループであってもよい。スクリプトの修正は、スクリプトが動作中に実行でき、スクリプトをシャット・ダウン又はリロードする必要はない。サブ−スクリプトが呼ばれている時には、新しいウィンドウが現れる。試験が警告条件を体験すると、警告復帰スクリプトが自動的に起動される。
【０１０６】
本発明の他の変形例及び修正が可能である。すべてのこのような修正又は変形例は、添付の特許請求の範囲内にあると信じられる。
【図面の簡単な説明】
【０１０７】
【図１】本発明による制御システムを含む例示的な燃料電池スタック試験システムの概略図である。
【図２】図１の制御システムを図示する。
【図３】図１の制御システムのシステム・マネージャの始動方法を図示する。
【図４】図１の制御システムのドライバ・アプリケーションについての動作方法を図示する。
【図５】図１の制御システムのドライバ・アプリケーションについての他の動作方法を図示する。
【図６】本発明の第２の実施の形態によるユーザ・アプリケーションによって使用されるスクリプト及びプログラムを生成するためのシステムを、ブロック図によって図示する。
【図１】
2005353609.tif 000020
【図２】
2005353609.tif 000021
【図３】
2005353609.tif 000022
【図４】
2005353609.tif 000023
【図５】
2005353609.tif 000024
【図６】
2005353609.tif 000025