IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ WhiteRook合同会社の特許一覧

特開2022-162801常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム
<>
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図1
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図2
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図3
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図4
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図5
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図6
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図7
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図8
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図9
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図10
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図11
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図12
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図13
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図14
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図15
  • 特開-常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022162801
(43)【公開日】2022-10-25
(54)【発明の名称】常微分方程式の数値計算装置、計算装置において常微分方程式を解く演算の実行方法、及びプログラム
(51)【国際特許分類】
   G06F 17/13 20060101AFI20221018BHJP
【FI】
G06F17/13
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021067801
(22)【出願日】2021-04-13
(11)【特許番号】
(45)【特許公報発行日】2021-07-21
(71)【出願人】
【識別番号】521087704
【氏名又は名称】WhiteRook合同会社
(74)【代理人】
【識別番号】110002435
【氏名又は名称】特許業務法人井上国際特許商標事務所
(74)【代理人】
【識別番号】100077919
【弁理士】
【氏名又は名称】井上 義雄
(74)【代理人】
【識別番号】100172638
【弁理士】
【氏名又は名称】伊藤 隆治
(74)【代理人】
【識別番号】100153899
【弁理士】
【氏名又は名称】相原 健一
(74)【代理人】
【識別番号】100159363
【弁理士】
【氏名又は名称】井上 淳子
(72)【発明者】
【氏名】城所 仁
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB03
(57)【要約】      (修正有)
【課題】常微分方程式を計算負荷が低くかつ高精度に解く。
【解決手段】常微分方程式は、離散時間に関する差分方程式の形式を有し、第1及び第2の係数行列が夫々、行列指数関数を近似する、所定の計算ステップと状態を表す状態変数ベクトル項及び入力を表す入力ベクトル項との積の冪乗項により構成される第1の行列冪級数を含む。HILS計算装置のYummy行列計算手段は、計算ステップを時間不変計算ステップと時間可変計算ステップとに分離し、時間不変計算ステップと定数行列Aとの積の冪乗項により構成される第2の行列冪級数であるYummy行列と、その行列に基づく第1の定数係数行列及び第2の定数係数行列を計算する。状態方程式計算手段は、第1、第2の定数係数行列の夫々と、パルス信号計測手段が順次算出する時間可変計算ステップとの間の乗算演算により夫々第1、第2の係数行列を算出しながら、差分方程式に対する解法演算を実行する。
【選択図】図5
【特許請求の範囲】
【請求項1】
制御対象の動作を数学的にモデル化した常微分方程式である状態方程式を解く演算を実行する計算装置であって、
状態を表す状態変数ベクトル項に第1の係数行列を乗算した項と入力を表す入力ベクトル項に第2の係数行列を乗算した項を含む常微分方程式について、所定の計算ステップによって定まる離散時間間の差分関係を示す差分方程式の形式を有し、一定時間において不変な定数とみなせる定数行列を指数とする行列指数関数を近似する行列冪級数であって、所定の計算ステップと前記定数行列との積の冪乗項により構成される有限な次数の第1の行列冪級数を夫々含む前記第1の係数行列及び前記第2の係数行列が夫々定義される、状態方程式を設定する方程式設定手段と、
前記計算ステップを時間的に不変な時間不変計算ステップと時間的に可変な時間可変計算ステップとに分離し、少なくとも、前記時間不変計算ステップと前記定数行列との積の冪乗項により構成される前記有限な次数の第2の行列冪級数を前記状態方程式の解法演算に先立って事前に計算する事前計算手段と、
前記事前に計算された前記第2の行列冪級数に基づいて夫々前記第1の係数行列及び前記第2の係数行列を算出しながら、順次算出される時間可変計算ステップに基づいて、前記差分方程式に対する解法演算を実行する状態方程式計算手段と、
を備える常微分方程式の数値計算装置。
【請求項2】
前記定数行列をA、前記計算ステップをh、前記有限な次数をNとして、前記第1の行列冪級数は、
【数1】
と定義され、
前記(1)式として定義される前記第1の行列冪級数を用いて、
【数2】
の演算式により前記第1の係数行列が定義され、
前記定数行列Aの逆行列をA-1、第2の定数行列をB、単位行列をIとして、前記(1)式として定義される前記第1の行列冪級数を用いて、
【数3】
の演算式により前記第2の係数行列が定義され、
前記方程式設定手段は、
前記計算ステップhによって定まる前記離散時間をn、X及びXn+1を夫々前記離散時間n及びn+1における前記状態変数ベクトル項、Uを前記離散時間nにおける前記入力ベクトル項として、前記(2)式の演算及び前記(3)式の演算に基づいて、前記状態方程式である前記差分方程式を、
【数4】
として設定し、
前記事前計算手段は、
前記計算ステップhを時間的に不変な時間不変計算ステップhexpと時間的に可変な時間可変計算ステップhとに分離し、前記第2の行列冪級数を、
【数5】
として事前に計算し、
更に前記(5)式に基づく第1の定数係数行列(AymA)及び第2の定数係数行列(AymB)を夫々事前に計算し、
前記状態方程式計算手段は、前記第1の定数係数行列(AymA)、前記第2の定数係数行列(AymB)、及び前記順次算出される前記時間可変計算ステップhに基づいて、
【数6】
で示される形式の前記(4)式に対応する差分方程式に対して前記解法演算を実行する、
請求項1に記載の常微分方程式の数値計算装置。
【請求項3】
前記事前に算出される前記第2の行列冪級数を記憶する記憶手段を更に備え、
前記状態方程式計算手段は、前記記憶手段に記憶されている前記第2の行列冪級数を用いて、前記差分方程式に対して前記解法演算を実行する、
請求項1又は2に記載の常微分方程式の数値計算装置。
【請求項4】
前記時間不変計算ステップは、前記状態方程式の固有値と前記時間不変計算ステップとの積が前記状態方程式の計算結果が安定となる安定領域内に存在するように設定され、
前記時間可変計算ステップの算出において、算出された前記時間可変計算ステップの値が前記時間不変計算ステップの値よりも大きくなった場合に、前記時間可変計算ステップの値を前記時間不変計算ステップの値として算出する、
請求項1乃至3の何れか一項に記載の常微分方程式の数値計算装置。
【請求項5】
前記数値計算装置は、制御装置の開発において、前記制御装置が制御を行う制御対象を模擬する装置であって、
を離散時間nにおける前記状態変数ベクトル項、Uを前記離散時間nにおける前記入力ベクトル項とし、C及びDを所定の定数行列として、出力変数ベクトルYを、以下の(7)式で示される演算により算出し、
【数7】
前記出力変数ベクトルYに応じた物理的な信号を前記制御対象に供するにおいて、前記時間不変計算ステップの時間間隔で前記(7)式を算出する出力変数算出手段を更に備える、
請求項1乃至4の何れか一項に記載の常微分方程式の数値計算装置。
【請求項6】
前記計算装置は、制御装置の開発において、前記制御装置が制御を行う制御対象を模擬する装置であって、
前記制御装置から得られる信号により正の数で前記時間可変計算ステップを算出するパルス信号計測手段を更に備える、
請求項1乃至5の何れか一項に記載の常微分方程式の数値計算装置。
【請求項7】
前記事前計算手段は、
前記時間不変計算ステップを複数設定し、
前記複数の時間不変計算ステップの夫々に対して複数の前記第2の行列冪級数の夫々を、前記状態方程式の解法演算に先立って事前に計算し、
前記状態方程式計算手段は、前記事前計算手段が事前に計算した前記複数の第2の行列冪級数から1つを選択して、前記差分方程式に対する解法演算に使用する、
請求項1乃至6の何れか一項に記載の常微分方程式の数値計算装置。
【請求項8】
前記事前計算手段は、前記複数の時間不変計算ステップの夫々に対して複数の前記第2の行列冪級数の夫々を前記状態方程式の解法演算に先立って事前に計算するときに、前記複数設定した時間不変計算ステップの夫々に対応した次数で計算を実行する、
請求項7に記載の常微分方程式の数値計算装置。
【請求項9】
制御対象の動作を数学的にモデル化した常微分方程式である状態方程式を解く演算を実行する計算機に、
状態を表す状態変数ベクトル項に第1の係数行列を乗算した項と入力を表す入力ベクトル項に第2の係数行列を乗算した項を含む常微分方程式について、所定の計算ステップによって定まる離散時間間の差分関係を示す差分方程式の形式を有し、一定時間において不変な定数とみなせる定数行列を指数とする行列指数関数を近似する行列冪級数であって所定の計算ステップと前記定数行列との積の冪乗項により構成される有限な次数の第1の行列冪級数を夫々含む前記第1の係数行列及び前記第2の係数行列が夫々定義される、状態方程式を設定する処理と、
前記計算ステップを時間的に不変な時間不変計算ステップと時間的に可変な時間可変計算ステップとに分離し、少なくとも、前記時間不変計算ステップと前記定数行列との積の冪乗項により構成される前記有限な次数の第2の行列冪級数を前記状態方程式の解法演算に先立って事前に計算する処理と、
前記事前に計算された前記第2の行列冪級数に基づいて夫々前記第1の係数行列及び前記第2の係数行列を算出しながら、順次算出される時間可変計算ステップに基づいて、前記差分方程式に対する解法演算を実行する処理と、
を実行させる、計算装置において常微分方程式を解く演算の実行方法。
【請求項10】
制御対象の動作を数学的にモデル化した常微分方程式である状態方程式を解く演算を実行する計算機に、
状態を表す状態変数ベクトル項に第1の係数行列を乗算した項と入力を表す入力ベクトル項に第2の係数行列を乗算した項を含む常微分方程式について、所定の計算ステップによって定まる離散時間間の差分関係を示す差分方程式の形式を有し、一定時間において不変な定数とみなせる定数行列を指数とする行列指数関数を近似する行列冪級数であって所定の計算ステップと前記定数行列との積の冪乗項により構成される有限な次数の第1の行列冪級数を夫々含む前記第1の係数行列及び前記第2の係数行列が夫々定義される、状態方程式を設定する処理と、
前記計算ステップを時間的に不変な時間不変計算ステップと時間的に可変な時間可変計算ステップとに分離し、少なくとも、前記時間不変計算ステップと前記定数行列との積の冪乗項により構成される前記有限な次数の第2の行列冪級数を前記状態方程式の解法演算に先立って事前に計算する処理と、
前記事前に計算された前記第2の行列冪級数に基づいて夫々前記第1の係数行列及び前記第2の係数行列を算出しながら、順次算出される時間可変計算ステップに基づいて、前記差分方程式に対する解法演算を実行する処理と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、物理現象を数学的にモデル化した常微分方程式を数値計算により解く演算を実行する数値計算装置、そのような計算装置において常微分方程式を解く演算の実行方法、及びプログラムに関する。
【背景技術】
【0002】
物理現象を数学的モデルとして表現する運動方程式や電子回路は、常微分方程式となる事が多い。しかしながら、多くの常微分方程式は解析的に求めることは困難である。このため、古くは19世紀のCarl Runge、Martin Kuttaの時代より、様々な数値計算手法が提案されてきている。
今日では、制御対象を接続することにより、その制御対象に対してフィードバック制御を行う制御装置が無数に存在する。その制御対象は、機械装置である場合もあり、或いは電子回路である場合もある。例えば、自動車には、ECU(Electronics Control Unit:電子制御ユニット)と呼ばれる制御装置が多く搭載されている。夫々のECUは、例えばエンジン、トランスミッション、又はサスペンションなどの機械装置である制御対象に対して、フィードバック制御を行う。また、近年の車両はいくつかの異なる電圧を電子機器に使用しているため、電圧コンバータ装置を制御するECUはスイッチ素子の断続により所定の電圧あるいは電流となるよう、スイッチ素子の断続状態に対しフィードバック制御を行う。これらの制御装置は、制御対象を接続して初めて機能するという特性を持つ。従って、制御装置の開発においては、かつては、実際に制御対象を接続して実験/検証を行う必要があった。しかし、開発段階の制御装置を実際の制御対象に接続して検証を行った場合、制御装置による制御が不完全であることにより、制御対象が破壊されてしまうという事故が起こり得た。また、例えば月着陸船の制御装置のように、実際の使用環境での実験/検証が不可能な制御装置の開発においては、制御対象を実際に接続してその制御装置を開発することができなかった。或いは、開発段階において制御対象の実機が存在しない場合においても、制御対象を実際に接続してその制御装置を開発することができなかった。
【0003】
このような問題を解決するために、従来、HILS(Hardware In the Loop Simulator)と呼ばれるテスト装置が知られている(例えば特許文献1)。HILSでは、機械装置又は電子回路である制御対象が計算装置におけるソフトウェア処理によって模擬される。この場合、制御対象の動作は、計算機内のソフトウェアによって実現される数学モデルで表現される。また、計算装置は、電圧又は電流等の実際の信号を入出力する物理的入出力手段を装備する。そして、計算装置のこれらの物理的入出力手段に、制御装置の実際の物理的入出力手段が接続される。計算装置は、常微分方程式を解く演算を実時間で実行することにより制御対象の動作を模擬する。そして、計算装置は実際の信号を制御装置に対して実時間で入出力することにより、ハードウェアである制御装置を実際に動作させてテストする。即ち、HILSは、リアルタイムシミュレータとして動作する。HILSにより、制御対象の実機を用意することなく、ECUなどの制御装置の設計及び検証を支援することが可能となる。
【0004】
更に、SILS(Software In the Loop Simulator)と呼ばれるテスト装置も知られている(例えば特許文献1)。SILSでは、制御装置自体、及びその物理的入出力手段も計算装置によって模擬される。そして、SILSは、制御装置と制御対象の全体の動作を、計算装置が実行するソフトウェア処理によって模擬する。
【0005】
HILS又はSILSで用いられる数学モデルは、制御対象である、機械装置の動作を表現する運動方程式や、電子回路の動作を表す回路方程式である。この方程式は、一般的に常微分方程式である状態方程式として表現することができる。特に、状態変数ベクトルに第1の係数行列を乗算し、入力ベクトルに第2の係数行列を乗算した各乗算結果の和が、状態変数ベクトルの1階の導関数に等しい線形状態方程式は、制御対象の挙動を表す数学モデルとして有用であり、非線形の場合であっても上記形式に近似して用いられることが多い。ここで、「状態変数ベクトル」とは、常微分方程式の解をいう。
【0006】
HILSにおいては、実時間で動作する制御装置に合わせて、線形状態方程式を実時間で解きながら、その結果導出される信号を制御装置に対して実時間で入出力する必要がある。従って、状態方程式の数値解法演算を上記実時間処理に間に合うように計算装置で高速に実行する技術は、極めて重要である。
【0007】
連続系の状態方程式を解くための計算方法としては、その状態方程式を離散信号形式で表現することにより差分方程式として計算する数値計算手法が良く知られている。この解法の代表例としては、Runge-Kutta法が知られている。
【0008】
ところで、線形状態方程式における係数行列の要素が一定時間において不変な定数であれば、その方程式は、所謂LTI(Linear Time Invariant:線形時間不変)システムの方程式となる。HILS又はSILSで用いられる物理モデルは、LTIシステムを仮定しても十分であることが多い。このようなLTIシステムの状態方程式においては、係数行列を対角要素が互いに異なる固有値である対角行列に変換することができる場合がある。
【0009】
このような対角行列に含まれる固有値は、一般に複素数である。そして、複数の固有値の大きさが著しく異なる状態方程式は、解が周波数の比較的高い成分と低い成分を含む、いわゆるStiffな方程式と呼ばれる(例えば特許文献2)。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特許第5692739号公報
【特許文献2】特開2005-025651号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
上述のようなLTIシステムを仮定できる状態方程式(常微分方程式)を、前述したRunge-Kutta法などによる差分方程式に変換して演算する場合について考える。このケースでは、差分方程式における離散時間の計算ステップと対角行列の固有値の関係が適切でない場合、計算がプラス無限大(∞)又はマイナス無限大(-∞)に発散することが知られている。特に、前述したStiffな方程式を解く場合に、絶対値の大きな固有値でも計算が発散しないようにするためには、計算ステップhを小さくしなければならない。しかしながら、計算ステップhを小さくした場合、方程式の応答を支配する絶対値の小さな固有値に対しては、その計算ステップは過剰に小さくなりすぎる。この結果、計算ステップを小さくした場合、計算誤差が蓄積すると共に、それ以上に、例えばHILSの場合には、計算ステップhが意味する物理的時間以内で計算が間に合わなくなる、という事態を招いてしまうという問題があった。
【0012】
このような問題を解決するために、更に従来、複素平面のいわゆる左半平面全体を計算安定領域とする、後退Euler法、台形法(Tustin法)、又はGear法と呼ばれる後退微分方程式を用いた解法が知られている。しかしながら、これらの解法は、陰解法と呼ばれ、計算が容易ではない。即ち、常微分方程式が前述したようなLTIシステムの場合であっても逆行列を計算する必要があり、計算負荷が極めて高くなる。また、常微分方程式が非線形方程式であれば、Newton法などの反復計算が必要となり、この場合も計算負荷が極めて高くなる。このため、後退Euler法や台形法やGear法は、実時間での計算を要求されるHILSに適した計算法ではなく、SILSに対しても制御装置のための検証時間が長くなってしまうという問題点があった。またSILSで検証したのち、HILSを適用する場合、計算アルゴリズムが異なることよる検証精度の劣化を招くという問題点もあった。
【0013】
更に、計算ステップhに対して、後退Euler法は1次の近似精度であるため、計算精度が低い。台形法は2次の近似精度となるが、原点から離れた固有値に対しては、本来は解が一定値に収束する場合にあっても、解が振動し一定値に収束しないという問題がある。一方、Gear法においては、次数を上げると安定領域が狭まり、連続系常微分方程式の安定領域である左半平面内において、不安定な領域が残る。このため、Stiffな方程式を満足に解くことのできる計算アルゴリズムは、皆無であると言わざるを得ない。
【0014】
以上の考察からわかるように、計算装置において絶対値が小さな固有値と絶対値が大きな固有値を共に有するStiffな方程式を適切に解く演算を実行することは、従来困難であった。
【0015】
そこで、本発明は、計算装置において、Stiffな常微分方程式を安定して解く演算を、計算負荷が低くかつ高精度に、実行可能とすることを目的とする。
【課題を解決するための手段】
【0016】
態様の一例の常微分方程式の数値計算装置は、制御対象の動作を数学的にモデル化した常微分方程式である状態方程式を解く演算を実行する計算装置であって、状態を表す状態変数ベクトル項に第1の係数行列を乗算した項と入力を表す入力ベクトル項に第2の係数行列を乗算した項を含む常微分方程式について、所定の計算ステップによって定まる離散時間間の差分関係を示す差分方程式の形式を有し、一定時間において不変な定数とみなせる定数行列を指数とする行列指数関数を近似する行列冪級数であって、所定の計算ステップと定数行列との積の冪乗項により構成される有限な次数の第1の行列冪級数を夫々含む第1の係数行列及び第2の係数行列が夫々定義される、状態方程式を設定する方程式設定手段と、計算ステップを時間的に不変な時間不変計算ステップと時間的に可変な時間可変計算ステップとに分離し、少なくとも、時間不変計算ステップと定数行列との積の冪乗項により構成される有限な次数の第2の行列冪級数を状態方程式の解法演算に先立って事前に計算する事前計算手段と、事前に計算された第2の行列冪級数に基づいて夫々第1の係数行列及び第2の係数行列を算出しながら、順次算出される前記時間可変計算ステップに基づいて、差分方程式に対する解法演算を実行する状態方程式計算手段と、を備える。
【発明の効果】
【0017】
本発明によれば、計算装置において、Stiffな常微分方程式を安定して解く演算を、計算負荷が低くかつ高精度に、実行することが可能となる。これにより、例えばHILSが適用できる制御装置の開発対象の範囲を広げることが可能となる。その他、SILSはもとより、一般的な数値計算の分野においても、計算時間の短縮に貢献し、SILSとHILSの検証結果の整合性を高め、様々な解析の効率化に供することが可能となる。
【図面の簡単な説明】
【0018】
図1】h=1の場合においてN次の行列指数近似法の安定領域を説明する図である。
図2】Runge-Kutta法において安定に計算できる固有値λと計算ステップhの積hλの複素平面領域を説明する図である。
図3】固定ステップ法によるコンバータ回路の模擬動作を説明する図である。
図4】部分的可変ステップ法によるコンバータ回路の模擬動作を説明する図である。
図5】計算装置の一実施形態を示すブロック図である。
図6】昇圧コンバータ装置の回路図の例を説明する図である。
図7】パルス信号計測手段の処理例を示すフローチャートである。
図8】状態方程式計算手段の処理例を示すフローチャートである。
図9】Yummy法の安定領域を説明する図(その1)である。
図10】Yummy法の安定領域を説明する図(その2)である。
図11】Yummy法の安定領域を説明する図(その3)である。
図12】Yummy法の時系列の計算結果を説明する図(その1)である。
図13】Yummy法の時系列の計算結果を説明する図(その2)である。
図14】計算装置の他の実施形態を示すブロック図である。
図15】他の実施形態において、Yummy行列記憶手段が記憶する各配列データの値を示すテーブル例を示す図である。
図16】他の実施形態において、Yummy行列選択処理の例を示すフローチャートである。
【発明を実施するための形態】
【0019】
以下、本発明を実施するための形態(以下「本実施形態」と記載)について図面を参照しながら詳細に説明する。以下の説明においては、本実施形態について詳細に説明する前に、まず常微分方程式の数値計算による解法に関する一般的な技術背景について説明する。そして、その一般技術の問題点を具体的に明らかにした上で、本実施形態について詳細に説明する。
【0020】
<常微分方程式>
前述したように、HILS又はSILSで用いられる数学モデルは、制御対象である、機械装置の動作を表現する運動方程式や、電子回路の動作を表す回路方程式である。この方程式は、任意数の要素を持つ状態変数ベクトルX、時間を表す変数t、及びベクトル関数F(t,X)を用いて、下記(1)式の常微分方程式として表現されることがある。
【数1】
【0021】
上記(1)式の常微分方程式は、公知の技術である動作点による区分線形化手法などにより、A、B行列と、外力を表す入力ベクトルU(t)とを用いた、線形状態方程式と呼ばれる下記(2)式の形式で表現できることが知られている。
【数2】
【0022】
このように、線形状態方程式は、状態変数ベクトルX(t)に係数行列Aを乗算し、入力ベクトルU(t)に係数ベクトルBを乗算した各乗算結果AX(t)とBU(t)の和が、状態変数ベクトルの1階の導関数
に等しい、という形を有する。
【0023】
HILSまたはSILSにおいて(2)式の形式の状態方程式を解く演算を効率的に実行することは重要である。特に、HILSにおいては、実時間で動作する制御装置に合わせて、(2)式の状態方程式を実時間で解きながら、その結果導出される信号を制御装置に対して実時間で供給する必要がある。従って、状態方程式の数値解法演算を上記実時間処理に間に合うように計算装置で高速に実行する技術は、極めて重要である。
【0024】
<行列指数関数法>
ところで、上記(2)式の各係数行列A、Bは必ずしも定数行列である必要はない。しかしながら、各係数行列A、Bの要素が一定時間において不変な定数であれば、(2)式は、所謂LTI(Linear Time Invariant:線形時間不変)システムの線形状態方程式となる。HILS又はSILSで用いられる物理モデルは、LTIシステムを仮定しても十分であることが多い。前述した(2)式がLTIシステムの状態方程式となっており、かつ入力U(t)が一定値Uであるとみなせる場合、行列指数関数
を用いて、下記(3)式の一般解を得ることができる。
【数3】
【0025】
ここで、eAtは式(4)で与えられる。
【数4】
【0026】
しかし、上記(4)式において無限大(∞)の項までの計算は事実上不可能なため、実用上は有限の整数Nで打ち切る下記(5)式を用いるか、パデ近似などの近似的手法を用いる。
【数5】
【0027】
Nでの打切りにしろ、パデ近似にせよ、これらは近似値である。そこで、例えば上記(5)式の計算誤差を少なくするために、所定の時間間隔hを導入し、下記(6)式のように、h間隔の差分方程式で、X、X、・・・、Xというように離散計算を行うことは広く行われている。ここで、U(t)は時間間隔hの間一定とし、Uと表現する。
【数6】
本実施形態で、上記(6)式で示される差分方程式の表現法を、N次の行列指数近似法と呼ぶ。
【0028】
<計算安定性>
係数行列A、Bが定数であるLTIシステムでは、前述した(2)式は下記(7)、(8)式に示されるように固有値分解できる場合がある。
【数7】
【数8】
【0029】
上述の(8)式の固有値λ(1≦s≦n)は、一般に複素数である。そして、前述したように、複数の固有値λの大きさが著しく異なる状態方程式は、いわゆるStiffな方程式と呼ばれる。
【0030】
また上記(8)式のように、Λは対角要素が固有値である対角行列である。従って、(2)式は下記(9)式で示されるスカラー連立方程式として扱うことができる。
【数9】
【0031】
上記(9)式を数値計算する場合は、所定の計算ステップhを導入し、差分方程式で近似して計算することができる。従来知られている簡便な前進Euler法を用いて具体例を示せば、下記(10)式及び(11)式が得られる。
【数10】
【数11】
上記(10)式及び(11)式では、近似がなされているから、近似誤差が発生する。この近似誤差の存在により、元の常微分方程式と差分方程式の関係によっては、計算結果が発散することがある。上記(10)式及び(11)式の前進Euler法では、
【数12】
の条件が満たされると、
【数13】
となり、nが増えるに従って値は単調に増加し、最終的には∞/-∞となり、発散と呼ばれる状態となる。
従って、(2)式は(9)式のスカラー連立方程式と等価であるから、(2)式のA行列の固有値が一つでも(12)式の条件を満たせば、(2)式の解法計算は発散することとなる。常微分方程式が前述したStiffな方程式である場合に、(12)式の条件が満たされ易くなる。
【0032】
図1は、前述した(6)式で定義した本実施形態でいうところのN次の行列指数近似法のh=1において、安定に計算できる固有値λの複素平面領域を説明する図である。
図1において、横軸はλの値の実部を示す実部軸、縦軸はλの値の虚数部を示す虚数部軸である。
図1の安定領域曲線101~108は夫々、前述の(6)式においてN=1、2、3、4、5、6、7、及び8とした場合に計算したときの、発散せずに計算できる安定境界上でh=1の場合の固有値λの値をプロットしたものである。
すなわち、計算する係数行列Aのすべての固有値λが、あるNが与える上記安定領域として示した曲線の内側にあれば、このNを用いた(6)式を用いて、発散せずに計算することが可能である。
なお、λは(6)式の係数行列Aと正則な行列Pを用いて前述の(7)式によって計算される。
【0033】
ここで、行列指数近似法の次数とは前述した(6)式におけるNの値を指すものである。
また、前述の(10)式及び(11)式の前進Euler法は、上記(6)式でN=1とした場合であり、これを次数が1であるところの1次の行列指数近似法と呼称する。
【0034】
図1から理解されるように、行列指数近似法における次数Nが大きくなれば、安定領域も広がる。N=∞であれば行列指数関数の厳密解となって、安定領域は左半平面となり、連続系の常微分方程式の安定領域と一致する。
【0035】
<Stiffな方程式>
前述した(7)、(8)式に示されるLTIシステムを仮定できる状態方程式(常微分方程式)を、例えばRunge-Kutta法などの差分方程式に変換して演算する場合について考える。このケースでは、上記前進Euler法の場合と同様に、差分方程式における離散時間の計算ステップhと、A行列の固有値λの値とが適切でない場合、計算がプラス無限大(∞)又はマイナス無限大(-∞)に発散することが知られている。逆に発散せず安定に状態方程式を解くことができる条件は、計算アルゴリズムごとに異なる。
【0036】
図2は、Runge-Kutta法で安定に計算できる固有値λと計算ステップhの積hλの複素平面領域を説明する図である。図2で、図1の場合と同様に、横軸は積hλの値の実部を示す実部軸、縦軸は積hλの値の虚数部を示す虚数部軸である。図2の安定領域曲線201、202、及び203は夫々、前述の(2)式の状態方程式を代表的な数値解法である1次、2次、及び4次のRunge-Kutta法で解いたときの、発散せずに計算できる安定境界上で積hλの値をプロットしたものである。積hλの計算で、hは上記Runge-Kutta法が実行されるときの計算ステップであり、λは(2)式の係数行列Aと正則な行列Pを用いて前述の(7)式により計算される。
【0037】
例えば、4次のRunge-Kutta法は、下記(14)式で示される。
【数14】
【0038】
図2において、破線領域204は、Stiffな固有値に基づく積hλの存在領域である。また、破線領域205は、応答を支配する固有値に基づく積hλの存在領域である。前述したStiffな方程式を解く場合に、絶対値が大きな固有値でも計算が発散しないようにするためには、計算ステップhを小さくして、積hλの存在領域204が安定領域曲線201、202、又は203の内側に入るようにする必要がある。計算ステップhを小さくすれば、図2において、積hλの存在領域が領域204から破線矢印206で示される方向に移動して安定領域曲線201、202、又は203の内側に入るため、発散しない計算が可能である。しかしながら、計算ステップhを小さくした場合、方程式の応答を支配する絶対値の小さな固有値に基づく積hλの存在領域205付近では、その計算ステップhは過剰に小さくなりすぎる。
【0039】
この結果、計算ステップhを小さくした場合、計算誤差が蓄積すると共に、それ以上に、例えばHILSの場合には、計算ステップhが意味する物理的時間以内で計算が間に合わなくなる、という事態を招いてしまうという問題があった。
【0040】
なお、以上は(1)式のような一般的な常微分方程式に適用できるRunge-Kutta法を例に説明したが、常微分方程式が(2)式のように線形状態方程式の場合、(14)式で説明した4次のRunge-Kutta法は(6)式で表した行列指数近似法のN=4の場合と完全に一致し、行列指数近似法の場合においても上記説明したRunge-Kuttaの場合と同様な計算ステップhと安定領域の関係が成立する。
【0041】
<Stiffな方程式に対応する数値計算アルゴリズム>
以上説明したRunge-Kutta法及び行列指数近似法は、広く使われる数値計算手法である。しかし、これらの数値計算法は、安定領域に限りがある。そして、Stiffな方程式の場合、前述したように、不安定になり計算が発散するか、過剰に小さな計算ステップhを用いなければならないという問題がある。
【0042】
このような問題を解決するために、複素平面のいわゆる左半平面全体を計算安定領域として含む、下記(15)式で示される後退Euler法、下記(16)式で示される台形法、或いはGear法(数式は省略)として知られる、後退微分方程式の数値計算解法が一般的に用いられている。
【数15】
【数16】
【0043】
しかしながら、前述したように、これらの解法は、陰解法と呼ばれる、Xn+1を得るのにXn+1を必要とする解法であり、計算が容易ではない。
即ち、常微分方程式が(2)式に示されるような線形方程式であれば、逆行列を計算する必要がある。一般に逆行列の計算負荷は、行列が“n×n”要素のサイズを有する場合、nの3乗に比例すると言われている。従って、nが大きなシステムの場合には、計算負荷が極めて高くなる。
また、常微分方程式が(15)式又は(16)式に示されるような非線形を含む一般的な関数で表される方程式であれば、前述したように、Newton法などの反復計算が必要となり、この場合も計算負荷が極めて高くなる。
【0044】
このため、これらの解法は、実時間での計算を要求されるHILSに適した計算法ではなく、SILSに対しても制御装置のための検証時間が長くなってしまうという問題点があった。
常微分方程式の解法をHILSなどに適用する場合、HILSは別名リアルタイムシミュレータであるから、計算は所定の時間以内で終了することが要請される。従って、Euler法や台形法やGear法などの計算負荷の重いアルゴリズムは、採用しづらい。また、必ず所定の時間以内に完了することが求められているため、Newton法による反復計算など、計算終了時間が一定でないアルゴリズムを採用することは困難である。
SILSであっても、シミュレーション時間が長くなるため、開発効率の低下を招くという問題が生じる。また、SILSで検証したのちにHILSを適用する場合、計算アルゴリズムが異なることよる検証精度の劣化を招くという問題も生じる。
【0045】
更に、前述したように、計算ステップhに対して、後退Euler法は1次の近似精度であるため、計算精度が低い。台形法は2次の近似精度であるが、原点から離れた固有値に対しては、本来は解が一定値に収束する場合にあっても、解が振動し一定値に収束しないという問題がある。更に、Gear法においては、次数を上げると安定領域が狭まり、連続系常微分方程式の安定領域である左半平面内において、不安定な領域が残る。このため、Stiffな方程式を満足に解くことのできる計算アルゴリズムは、皆無であると言わざるを得ない。
【0046】
そこで、以下に説明する本実施形態による計算アルゴリズムは、複素平面上に極めて広い計算安定領域を持ちながら、最も計算負荷の低い前進Euler法と同等の計算負荷を持つという特徴を有する。本実施形態の詳細について、以下に説明する。
【0047】
<Yummy法>
まず、本実施形態の動作原理について説明する。N次の行列指数近似法において、次数Nが大きい場合は行列指数関数を計算する計算負荷が高く、例えばパデ近似などの他の手法を用いることが多い。しかし、(2)式の係数行列Aが定数で不変であり、かつ計算ステップhが定数の場合には、前述した(5)式の級数部分も定数となる。この場合には、行列指数近似法で使用する級数部分は、A行列が不変である一定期間の間に1度だけ計算すればよいこととなる。
SILSにおいてもこの特性は有用であるが、特にHILS等への応用の場合は、上記行列指数関数は、システムが実際にリアルタイムに稼働する前の準備段階で計算しておけばよい。この場合には、(5)式の級数部分の計算にたとえ数秒程度の時間を要しても実用上問題にはならない。
【0048】
従って、前述した(6)式において、N=20やN=100という、計算負荷が極めて大きな数としても、実用性が損なわれることはなく、行列指数近似法は有用な計算手法である。
しかしながら、計算ステップhが定数であることは、応用範囲を狭めるものである。例えば、本願の発明者が、下記論文文献1又は2にて提案した「部分可変ステップ法」として知られる従来の数値計算手法においては、スイッチング回路のスイッチングタイミングに応じた回路挙動を正確に計算するため、計算ステップhは実時間稼働時点での計測値となっている。
【0049】
<論文文献1>:城所 仁 中原 正俊 “DC/DCコンバータのリアルタイム・シミュレーションを実現する陽解法に基づく高速計算手法”電子情報通信学会論文誌B Vol.J97-B,No.6,pp.-,Jun. 2014.
<論文文献2>:城所 仁 中原 正俊 “FPGAを用いたスイッチングコンバータのリアルタイム・シミュレーション”電子情報通信学会 研究会資料(技術研究報告)EE2013-55
【0050】
本実施形態による数値計算手法では、所定の定数hexpと(上記論文文献ではhに相当)、計測値に基づいて変化する変数であるh(上記論文文献ではhに相当)を分離し、下記(17)式、(18)式、又は(19)式に基づく計算を実行する。以下、本実施形態によるこの数値計算手法を「Yummy法」と呼び、(17)式により計算されるAym行列を「Yummy行列」と呼ぶ。
【数17】
【数18】
【数19】
【数20】
【0051】
上記(17)式のYummy行列Aymは予め計算できる定数であるから、SILSにおいては最初の1回だけ、HILSにおいては制御装置を接続して実時間で動作する前に、計算して記憶しておけばよい。実時間動作時に計算するのは(18)式である。更に、(19)式のように、定数係数行列(AymA)と、係数行列Bが定数と見なせるのであれば、更に定数係数行列(AymB)も、予め計算しておけば、この形式の計算規模は、前述した(10)式及び(11)式で示される前進Euler法と同等となる。従って、(19)式の形式は、現在知られている計算負荷が最も低い数値計算手法である。
なお、連続系との対応は(20)式で示され、hが計算ステップ幅である。
【0052】
上記動作原理に基づく本発明の実施形態の詳細について、以下に説明する。本計算装置の実施形態は、パルス信号のON(オン)/OFF(オフ)時間により所定の電圧を生成するコンバータ装置を制御対象として模擬するものである。
【0053】
まず、パルス信号のON/OFF時間を扱う場合の基本的な問題について説明する。図3は、固定ステップ法によるコンバータ回路の模擬動作を説明する図、図4は、部分的可変ステップ法によるコンバータ回路の模擬動作を説明する図である。図3及び図4共に、前述の論文文献1又は2を基礎としている。
【0054】
通常、HILSでは、図3に示されるように、リアルタイム性の制約により、計算時間hを一定の値とする固定ステップ法を用いる。しかし、本実施形態のように、パルス時間のON/OFF時間により動作するコンバータ装置を模擬する場合、次のような問題がある。即ち、この場合、パルス時間の分解能=計算ステップ時間=hとなり、パルス時間の分解能、即ちコンバータ装置のパルス時間のON/OFF時間の時間分解能が著しく悪化する。
一方、SILSでは、リアルタイム性の制約はないが、HILSとの整合を図るためにHILSの場合と同様な計算を行うことが一般的である。このため、SILSにおいても、上記と同様の問題が生じる。
【0055】
これに対し、本願の発明者は、前述した論文文献1又は2において、部分可変ステップ法と呼ぶ、パルスON/OFF時間の分解能を著しく向上させることができる手法を提案している。この手法では、図4に示されるように、基本的には一定の計算時間hで計算するものの、パルス信号のON/OFF変化が生じた場合、その時間=hを計測し、この値を用いた計算を実行する。
【0056】
<具体的な実施形態>
上述したような計算方法を用いる計算装置の一実施形態について、図5図6図7、及び図8を用いて具体的に説明する。図5は本発明の一実施形態である計算装置500の実施形態を示すブロック図、図6はシミュレーション対象であるコンバータ装置の回路図の例を説明する図、図7図5の計算装置500内のパルス信号計測手段508の処理例を示すフローチャート、図8図5の計算装置500内の状態方程式計算手段509の処理例を示すフローチャートである。
【0057】
図5は、本発明の一実施形態である、計算装置500を示すブロック図である。計算装置500は例えば、物理的な信号入出力手段を有する、いわゆるHILSの実施形態であり、更に前述したように例えば、特には図示しない制御装置からのパルス信号により所定の電圧を生成するコンバータ装置を制御対象として模擬するものである。以降、この計算装置を、HILS計算装置500と記載する。
【0058】
HILS計算装置500は、特には図示しないが、所謂組込みコンピュータのハードウェアとして、CPU(中央演算処理装置)、ROM(リードオンリーメモリ)、RAM(ランダムアクセスメモリ)、フラッシュメモリ装着装置などを有する。
【0059】
図5に示されるHILS計算装置500において、通信手段501は、所謂イーサネットあるいはCAN通信、またはこれに準ずるものである。
【0060】
Yummy行列計算手段502、Yummy行列記憶手段503、ベクトル算出手段506、パルス信号計測手段508、及び状態方程式計算手段509は、上記CPUが上記フラッシュメモリ装置に装着されたメモリカードに記憶されたHILS制御プログラムを上記RAMに読み出して実行する機能ブロック群である。
【0061】
基準時間生成手段507は、HILS計算装置500のコンピュータが内蔵するタイマ装置のハードウェアである。
【0062】
デジタル信号入力手段504、電圧入力手段505、及び電圧出力手段510は、上記入出力インタフェース装置によって構成される。
【0063】
通信手段501には、ローカルエリアネットワークやインターネット等のネットワークまたは専用通信線を介してホストコンピュータ520が通信接続される。
【0064】
デジタル信号入力手段504及び電圧入力手段505は、計算装置側物理的入力手段として動作し、特には図示しない制御装置の制御装置側物理的出力手段のデジタル信号出力手段及び電圧出力手段に接続される。
【0065】
デジタル信号入力手段504は、制御装置からの複数の信号線の各電圧を監視し、夫々所定の閾値を超えた場合に“1”、超えない場合に“0”の各デジタル入力信号をベクトル算出手段506及びパルス信号計測手段508に出力する。
【0066】
電圧入力手段505は、例えば、複数のアナログ/デジタル変換器を内蔵し、制御装置からの複数のアナログ入力電圧値をデジタル入力電圧値に変換し、各デジタル入力電圧値をベクトル算出手段506に出力する。
【0067】
ベクトル算出手段506は、上記複数のデジタル入力信号の“1”又は“0”値及び複数のデジタル入力電圧値をベクトル要素とする入力ベクトルU(前述の(2)式のU(t)に対応)を算出する。なお、入力ベクトルUの第1要素としては値“1”を設定する。この第1要素は、状態方程式が定数項(前述した(2)式のBU(t)=定数)を必要とした場合に、係数行列Bの値により任意の定数を生成するために使用する。
【0068】
一方、ホストコンピュータ520は、一般的なパーソナルコンピュータであってよく、例えばHILSのコンバータ装置を模擬する数学モデルを生成するための回路シミュレーションソフトウェアのプログラムを実行することができる。ユーザは、例えばコンバータ装置を制御対象とし、その数学モデルを生成したい場合には、上記回路シミュレーションソフトウェアにより、例えば、図6に示される昇圧コンバータ装置の回路図をホストコンピュータ520のキーボード、マウス、及びディスプレイを使って作成する。
【0069】
図6の回路は、ハイサイドスイッチQとローサイドスイッチQを具備する。これらのスイッチは、交互にON/OFF動作を行う。例えば外部より入力されたPWM(パルス波形変調)信号が、ハイ(Hi)レベルの時は、QがON状態、QがOFF状態であり、ロー(Lo)レベルの時は、QがOFF状態、QがON状態である。
【0070】
上記回路シミュレーションソフトウェアは、図6で示す回路において、スイッチ素子QがONの時の抵抗値をrsh、QがOFFの時の抵抗値をrslに設定する。そして、このソフトウェアは、(2)式で示した状態方程式のA、B行列と、下記(25)式で示される出力方程式を構成するC、D行列とを、前述した論文文献1又は2の記述に準じて、例えば下記(21)式から(27)式の演算によって生成する。なお、(2)式は、簡略化して(21)式として再掲する。
【0071】
【数21】
【数22】
【数23】
【数24】
【数25】
【数26】
【数27】
【0072】
前述した回路シミュレーションソフトウェアは、外部信号がHiレベルの場合に、図6で示す回路において、スイッチ素子QがONの時の抵抗値をrsh、QがOFFの時の抵抗値をrslに設定する。そして、上記ソフトウェアは、A、B、C、及びD行列を、上記(21)式から(27)式の演算により生成し、これらの行列をAH、BH、CH、及びDH行列として出力する。
【0073】
前述した回路シミュレーションソフトウェアは、外部信号がLoレベルの場合は、図6で示す回路において、スイッチ素子QがOFFの時の抵抗値をrsh、QがONの時の抵抗値をrslに設定する。そして、上記ソフトウェアは、A、B、C、及びD行列を、上記(21)式から(27)式の演算により生成し、これらの行列をA、B、C、及びD行列として出力する。
【0074】
更に、上記回路シミュレーションソフトウェアは、上記A及びA行列を夫々固有値分解し、得られた各固有値の値に基づいて予め定められた手続きに従い、定数計算ステップhexpを算出する。
【0075】
以上の動作の結果、ホストコンピュータ520は例えば、デジタル信号入力手段504に入力されるパルス信号がハイレベル(ON)のときに(2)式の状態方程式を構成するON時係数行列A、B、C、及びDと、パルス信号がローレベル(OFF)のときに(2)式の状態方程式を構成するOFF時係数行列A、B、C、及びDと、所定の定数である定数計算ステップhexpとを出力する。これらのデータは、HILS計算装置500の方程式設定手段である通信手段501で受信され、記憶される。
【0076】
図5のHILS計算装置500において、事前計算手段であるYummy行列計算手段502は、通信手段501が受信した上記係数行列A及びAと定数計算ステップhexpとを受け取り、これらのデータに基づいて前述した(17)式の演算により、Yummy行列AymH及びAymLを計算し、それらのYummy行列をYummy行列記憶手段503に記憶する。Yummy行列記憶手段503は、記憶しているYummy行列AymH及びAymLを状態方程式計算手段509に出力する。
【0077】
HILS計算装置500により例えばHILSの模擬動作が開始されたら、デジタル信号入力手段504が特には図示しない制御装置からパルス信号を取得する。デジタル信号入力手段504は、入力された信号を値「0」又は「1」に変換し、変数pulseの値として、パルス信号計測手段508及びベクトル算出手段506に送る。ベクトル算出手段506は、上述のように与えられた数値を各要素とするUベクトルを作成する。なお、Uベクトルの第1要素は定数項のため、必ず値「1」を設定する。
【0078】
次に、図5のパルス信号計測手段508の動作について説明する。図7は、パルス信号計測手段508の処理例を示すフローチャートである。まず、変数Countの値を「0」にリセットする(図7のステップ01)。なお、以降の説明において、「変数」は、計算装置500を構成する特には図示しないRAM等に記憶される。
【0079】
次に、HILS計算装置500内の基準時間生成手段507からの信号を調べ、これが変化するまで待機する(ステップ02の判定がNO(図中「N」と記載)の繰返し)。
【0080】
基準時間生成手段507からの信号が変化し、ステップ02の判定がYES(図7中「Y」と記載)になったら、変数Countの値を+1インクリメントする(図中「++」と記載)(図7のステップ03)。
【0081】
次に変数old_pulseの値が「0」であるか否かを判定する(図中「==」は等しいことを示す演算記号)(図7のステップ04)。
【0082】
ステップ04の判定がYESならば、デジタル信号入力手段504より与えられる変数pulseの値が「1」であるか否かを判定する(図7のステップ05)。
【0083】
ステップ05の判定がYESであれば、PWM信号が変化したとして、下記(28)式で示される設定処理を実行する(図7のステップ07)。
【数28】
【0084】
ステップ05の判定がNOであれば、PWM信号はLoレベルで変化していないとして、下記(29)式で示される設定処理を実行する(図7のステップ08)。
【数29】
【0085】
ステップ04の判定がNOの場合は、デジタル信号入力手段504より与えられる変数pulseの値が「0」であるか否かを判定する(図7のステップ06)。
【0086】
ステップ06の判定がYESであれば、PWM信号が変化したとして、下記(30)式で示される設定処理を実行する(図7のステップ09)。ここで、「count」は変数countに設定されている値を意味する。
【数30】
【0087】
ステップ06の判定がNOであれば、PWM信号はHiレベルで変化していないとして、下記(31)式で示される設定処理を実行する(図7のステップ10)。
【数31】
【0088】
ステップ07、08、09、又は10の後、変数Countの値がhexpの値以上になったか否かを判定する(図7のステップ11)。
【0089】
ステップ11の判定がNOならば、ステップ02に戻り、上記と同様の処理を繰り返し実行する。
【0090】
ステップ11の判定がYESになったら、状態方程式計算手段509にタイミングパルスを発行する(図7のステップ12)。
Count=hexpであればステップ11の判定はYESであるので、タイミングパルスはhexpの時間間隔で発行される。
【0091】
ステップ12の後、変数old_pulseに変数pulseの内容を設定する(ステップ13)。
【0092】
ステップ13の後、ステップ01に戻って変数Countの値を「0」にリセットした後、上記と同様の処理を繰り返し実行する。
【0093】
以上の処理により、h≦hexp、h≦hexpであることが保証される。
【0094】
ステップ13で変数old_pulseに変数pulseの値を設定しているので、時間間隔hexpの間にPWM信号が所謂チャタリングを起こすことにより、短時間にHiレベルとLoレベルを繰り返すような動作は無視される。時間間隔hexpを超えた時間、HiレベルあるいはLoレベルが継続した場合のみ、そのPWM信号が変化したと認識され、その変化がh及びhの値に反映される。
【0095】
続いて、図5の状態方程式計算手段509の動作について説明する。図8は、図5の状態方程式計算手段509の処理例を示すフローチャートである。まず、状態変数ベクトルXに初期値Xを与え、変数old_pulseに値「0」を設定する(図8のステップ20)。
【0096】
次に、パルス信号計測手段508より与えられるタイミングパルスを待機する(図8のステップ21の判定がNOの繰返し)。
【0097】
タイミングパルスが入力しステップ21の判定がYESになったら、変数old_pulseの値が「0」であるか否かを判定する(図8のステップ22)。
【0098】
ステップ22の判定がYES(値「0」)であれば、前回処理におけるパルスはLoレベルであるので、出力変数ベクトルYを、下記(32)式の演算により算出する(図8のステップ23)。
【数32】
【0099】
ステップ22の判定がNO(値「1」)であれば、前回処理におけるパルスはHiレベルであるので、出力変数ベクトルYを、下記(33)式の演算により算出する(図8のステップ24)。
【数33】
【0100】
次に、変数pulseの値が「0」であるか否かを判定する(図8のステップ25)。
【0101】
ステップ25の判定がYES(値「0」)であれば、下記(34)式及び(35)式で示される演算を実行する(ステップ26)。
なお、ステップ21でタイミングパルスを待ち、タイミングパルスは図7のステップ12でhexpの時間間隔で発行されるのであるから、以下の処理はhexpの時間間隔で行われる。
【数34】
【数35】
【0102】
ステップ25の判定がNO(値「1」)であれば、下記(36)式及び(37)式で示される演算を実行する(ステップ27)。
【数36】
【数37】
【0103】
このとき、PWM信号がHiからLoに変化していれば、ステップ26の処理となり、まずAymH及びAを用いた計算を行い、次にAymL及びAを用いた計算となる。
ステップ26の処理は、ステップ21においてhexpの時間間隔で発行されるタイミングパルスと同期させているため、ステップ26の処理は、hexpの時間の時間間隔において状態変数ベクトルXを更新する処理は2回実行される。
これに対し、ステップ23、ステップ24において行われる出力変数ベクトルの計算は1度のみである。すなわちステップ26、ステップ27において計算される状態変数ベクトルXtmpの値に対しては、出力変数ベクトルYは計算されず、後述するHILS計算装置500内の電圧出力手段510より出力電圧として出力されない。
なお、PWM信号がLoからHiに変化せずLoレベルのままであれば、h=0であり、(35)式のみを計算した場合と等価となるが、計算負荷を一定にするため(34)式も計算する。
ステップ27における計算は、上述のHiレベルとLoレベルが逆転した関係となる。
【0104】
ステップ26又は27の後、変数old_pulseに変数pulseの値を設定する。これにより、状態変数ベクトルXが計算されたときのPWMパルスがHiレベルかLoレベルかを記憶し、ステップ22の判定の根拠とする。
【0105】
図5において、電圧出力手段510は、状態方程式計算手段509が出力する出力変数ベクトルYに相当する電圧値を出力する。なお、出力変数ベクトルYが更新される時間間隔、すなわちhexpの時間間隔において、この電圧値は更新される。図5には図示していないが、電圧出力手段510内のデジタル/アナログ変換器によりデジタル電圧信号から変換されて出力されたアナログ電圧値は、制御装置の制御装置側物理的入出力手段に入力される。
制御装置は、このアナログ電圧値を、制御対象に設置されたセンサ装置からの信号と理解して、制御対象の挙動を判定し、所定の制御出力を出力する。
この制御出力は、HILS計算装置500のデジタル信号入力手段504又は電圧入力手段505に入力される。このようにして、制御装置と制御対象であるHILS計算装置500との間に、フィードバックのクローズドループ(閉ループ)が形成される。この結果、図5のHILS計算装置500は、図6の回路図で示したコンバータ装置を模擬し、制御装置に制御対象を与えることができる。
【0106】
<Yummy法の安定領域>
Yummy法は前述した(17)式及び(18)乃至(19)式により計算するが、前述した(7)式から(11)式までの関係と同様に安定領域が定義される。この時、h=hexp=1であれば、図1で示した領域となるが、h≠hexpの場合は異なる領域となる。
【0107】
図9図10、及び図11は、本実施形態によるYummy法の安定領域を説明する図である。図9図11において、図1の場合と同様に、横軸は固有値λの値の実部を示す実部軸、縦軸はλの値の虚数部を示す虚数部軸である。図9において、901は、前進Euler法(h=0.5)の安定領域曲線である。902は、行列指数近似法(N=4、h=1)の安定領域曲線である。903は、行列指数近似法(N=8、h=1)の安定領域曲線である。904は、本実施形態によるYummy法(N=8、hexp=1、h=0.5)の安定領域曲線である。図10において、1001は、行列指数近似法(N=8、h=1)の安定領域曲線である。1002は、本実施形態によるYummy法(N=8、hexp=1、h=0.8)の安定領域曲線である。図11において、1101は、前進Euler法(h=0.1)の安定領域曲線である。1102は、行列指数近似法(N=8、h=1)の安定領域曲線である。1103は、本実施形態によるYummy法(N=8、hexp=1、h=0.1)の安定領域曲線である。前述した(2)式のA行列の全ての固有値が上記各安定領域曲線の内側の安定領域にあれば、状態方程式計算手段509での状態方程式の計算は安定である。
【0108】
図9図10図11に示すように、h<hexpであるならば、安定領域は(6)式として示したN次の行列指数近似法において計算ステップサイズをhexpとした場合に対し、必ず広くなる。従って、図5の実施形態においては、ホストコンピュータ520が係数行列A、Aの固有値を計算し、これらの固有値の全てがN次打ち切りの行列指数近似法の安定領域に入るように、hexp及び次数Nを決定し、HILS計算装置500に送る。図5のパルス信号計測手段508は、h若しくはhがhexpより大きい場合はhexpとすることができる。以上により、状態方程式計算手段509における状態方程式の解法演算が不安定になることはない。
【0109】
<Yummy法の安定性の証明>
本実施形態によるYummy法の安定性、即ち、h<hexpであるならば、安定領域は計算ステップサイズをhexpとしたN次の行列指数近似法の安定領域より広くなることについて、以下に示す。
(7)~(11)式のように(17)式はスカラーの連立式と等価であるから、以下にスカラー式で示す。また外部入力値uは安定性解析には無関係なため省略する。
【数38】
【数39】
【数40】
すなわち、hによる安定領域は、hexpによる安定領域を含有するため、hexpのものより広いということができる。
なお、Ω(λ)=0となるλのときは、
【数41】
であり、Ω(λ)=0となるλにおいて、hとhexpの安定領域は一致する。
【0110】
本実施形態によるYummy法の計算精度について説明する。前述の(18)式及び(19)式のYummy法の状態方程式(常微分方程式)の計算精度は、hexpがhに近い値であれば、N次の行列指数近似法に漸近するが、hexpとhが離れた値、例えばh=0.2hexpのような場合は、計算精度は劣化する。
【0111】
例えば、下記(42)及び(43)式で示される2つの運動方程式について考察する。
【数42】
【数43】
【0112】
上記(42)式及び(43)式の運動方程式を、下記の諸元のもとで、8次のYummy法で計算した結果を、図12(a)及び(b)に示す。なおこの場合、前進Euler法では計算が発散するため、比較対象としては、前述した(15)式として示した後退Euler法を用いている。
=300 m=1
ks=0.9 k=10 c=10
図12(a)は、前述の(42)式及び(43)式の横軸:時間(秒)に対する縦軸:「x:質量体mの変位[m]」の運動方程式の解法結果を示している。1201(「◇」マーク)は実施形態によるYummy法(hexp=1、h=0.2)の計算結果であり、1202(実線)は厳密解、1203(「*」マーク)は後退Euler法(h=0.2)、1204(破線)は後退Euler法(h=1)である。
図12(b)は、前述の(42)式および(43)式の運動方程式の、横軸:時間(秒)に対する縦軸:「x:質量体mの変位[m]」の解法結果を示している。1211(「◇」マーク)は、本実施形態によるYummy法(hexp=1、h=0.2)の計算結果であり、1212(実線)は、厳密解、1213(「*」マーク)は後退Euler法(h=0.2)、1214(破線)は後退Euler法(h=1)である。
【0113】
図12に示したように、hexp=1、h=0.2の場合においては、(15)式として示した後退Euler法でh=0.2として計算したほうが厳密解に近いという結果となっている。
【0114】
このような計算精度の低下を補うためには、図13の例に示されるように、hexpを複数用意し、これに対応するAymH、AymLを複数計算し、これらすべてを記憶し、計測されたhまたはhの値により、上記複数の計算結果から1つを選択して計算するようにすればよい。
【0115】
図13は、h=0.2においてhexp=0.25を選択した場合の結果を示している。図13(a)は、前述の(42)式および(43)式の運動方程式の、横軸:時間(秒)に対する縦軸:「x:質量体mの変位[m]」の解法結果を示している。1301(「◇」マーク)は本実施形態によるYummy法(hexp=0.25、h=0.2)の計算結果であり、1302(実線)は厳密解、1303(「*」マーク)は後退Euler法(h=0.2)、1304(破線)は後退Euler法(h=1)である。
図13(b)は、横軸:時間(秒)に対する縦軸:「x:質量体mの変位[m]」の、前述の(42)式および(43)式の運動方程式の、横軸:時間(秒)に対する縦軸:「x:質量体mの変位[m]」の解法結果を示している。1311(「◇」マーク)は本実施形態によるYummy法(hexp=0.25、h=0.2)の計算結果であり、1312(実線)は厳密解、1313(「*」マーク)は後退Euler法(h=0.2)、1314(破線)は後退Euler法(h=1)である。
【0116】
図13より、h=hexpであれば、その精度はN次の行列指数関数近似法と一致し、Nを大きくとれば、極めて高い精度を得ることができる。h≠hexpであっても、近似なhexpによるAymH、AymLを使用することで、高い精度を極めて高速な計算で得ることができることがわかる。
【0117】
<SILS計算装置>
図14は、計算装置の他の実施形態を示すブロック図である。図14は、計算装置1400がSILSを構成する例である。以降、この計算装置をSILS計算装置1400と記載する。図14では、図5の通信手段501の代わりに、回路シミュレーション実行手段1402を有し、状態方程式において用いられる前述したA,B,C,D行列が設定される。図14において、図5の場合と同じ参照番号を付したブロックは、図5の場合と同じ機能を有する。
【0118】
また、SILS計算装置1400は、制御装置制御則計算手段1401を備えている。図5のHILS計算装置500では、制御装置は、デジタル信号入力手段504、電圧入力手段505、又は電圧出力手段510を介してHILSとして動作する計算装置500の外部に接続されていた。これに対して、図14では、上記制御装置の動作を、SILS計算装置1400内の制御装置制御則計算手段1401によって模擬することができる。
【0119】
図14のSILS計算装置1400によれば、それ単体で、内蔵される制御装置制御則計算手段1401によって制御装置の制御則の動作を検証することが可能である。状態方程式計算手段509の出力は、制御装置制御則計算手段1401にフィードバックされると共に、ディスプレイ装置1404に表示させて確認することができる。制御装置制御則計算手段1401から状態方程式計算手段509への入力ベクトルU(t)についても、ディスプレイ装置1404で確認できるようにしてもよい。
【0120】
SILS計算装置1400は、回路シミュレーション実行手段1402を内蔵し、図5のホストコンピュータ520が実行した回路シミュレーションソフトウェアを実行できる。回路シミュレーション実行手段1402は、例えばユーザによるキーボード装置1403の操作により入力された回路図(図6を参照)から、状態方程式を導き、図5のHILS計算装置500の場合と同様に、A、B、C、D行列及びA、B、C、D行列を生成する。
【0121】
また、回路シミュレーション実行手段1402は、状態方程式を解析し、安定に計算を行える、計算ステップhexp0からhexpMまでの、所定の定数であるM+1個の計算ステップを算出し、これらをYummy行列計算手段502に送る。なお、これらの計算ステップの値は、hexpM<・・・<hexp1<hexp0が成立する順とする。
【0122】
Yummy行列計算手段502は、hexp0からhexpMの各値に基づき、Aym0H~AymMH行列と、Aym0L~AymML行列を計算し、これらをYummy行列記憶手段503に記憶させる。Yummy行列記憶手段503は、これらのデータを、図16のテーブルに示される対応関係で、各配列のデータhexp[i]、AymL[i]、AymH[i](0≦i≦3)に記憶させ、また各データセット毎にYummy法における次数Nも設定する。
【0123】
模擬動作が開始されると、Yummy行列記憶手段503は、パルス信号計測手段508から送られてくる計算ステップh及びhの値により、AymH、AymL行列を選択し、これらを状態方程式計算手段509に送る。
図16は、Yummy行列記憶手段503が実行するYummy行列選択処理の例を示すフローチャートである。
【0124】
まず図16のテーブルに例示されるように、各配列のデータhexp[i]、AymL[i]、AymH[i](0≦i≦3)を設定し、各データセット毎にYummy法における次数Nも設定する。そして、繰り返しの変数iを値「0」にリセットする(図16のステップ30)。
【0125】
次に、図16において、ステップ32で変数iの値を+1ずつインクリメントしながら、ステップ31で配列データhexp[i]の値が計算ステップhの値未満となったと判定するまで、各配列データhexp[i]の値をチェックする動作を繰り返す(ステップ31の判定がNO→ステップ32→ステップ31の判定の繰返し)。
【0126】
配列データhexp[i]の値が計算ステップhの値未満となってステップ31の判定がYESになると、そのときの変数iの値に対応する配列データAymL[i]の値をAymL行列としてセットする(図16のステップ33)。なお、図15のテーブルに示されるように、配列データhexp[i]の値は、iが増加するに従って値が最大値(=hexp[0])から減ってゆくように設定されており、最後の値は「-1」のため、ステップ31の判定は何れかのiの値で必ずYESになる。
【0127】
次に、図16において、ステップ34で変数iの値を「0」にリセットした後、ステップ36で変数iの値を+1ずつインクリメントしながら、ステップ35で配列データhexp[i]の値が計算ステップhの値未満となったと判定するまで、各配列データhexp[i]の値をチェックする動作を繰り返す(ステップ31の判定がNO→ステップ32→ステップ31の判定の繰返し)。
【0128】
配列データhexp[i]の値が計算ステップhの値未満となってステップ35の判定がYESになると、そのときの変数iの値に対応する配列データAymH[i]の値をAymH行列としてセットする(図16のステップ37)。このときも、配列データhexp[i]の値は、iが増加するに従って値が最大値(=hexp[0])から減ってゆくように設定されており、最後の値は「-1」のため、ステップ37の判定は何れかのiの値で必ずYESになる。
【0129】
図15のテーブルから理解できるように、例えば
【数44】
である。従って、AymL、AymHの計算に使用するNは、使用するhexpの値が小さくなれば計算精度が向上すること、及び計算安定領域も拡大することに鑑みて、図15のテーブルに示されるように、hexpの値が小さくなれば、Nの値も小さくすることにより、AymL、AymHを計算する時間を短縮することができる。
前述したように、hexp3<hexp2<hexp1<hexp0の関係がある。このため、図16に示されるフローチャートの制御処理により、例えばhexp0≦h<hexp1であるhであれば、hexp0で計算したAymL行列が選択される結果となる。この結果、図14の状態方程式計算手段509は、精度の高い計算が安定に行えるAymL行列を用いて、計算を行えることになる。
【0130】
このように、図14の構成を有するSILS計算装置1400においては、図5のHILS計算装置500におけるデジタル信号入力手段504や電圧出力手段510を備える必要なく、制御装置制御則計算手段1401により、テストを行う制御則を実行し、模擬された制御対象が適切に制御しうるかを実験/検証することが可能となる。
【0131】
以上説明したように、本実施形態による計算装置は、Stiffな常微分方程式を安定して解く演算を、計算負荷が低くかつ高精度に、実行することが可能となる。これにより、例えばHILSが適用できる制御装置の開発対象の範囲を広げることが可能となる。その他、SILSはもとより、一般的な数値計算の分野においても、計算時間の短縮に貢献し、様々な解析の効率化に供することが可能となる。
【0132】
本実施形態で説明したYummy法は、複素平面上に極めて広い計算安定領域を持ちながら、最も計算負荷の低い前進Euler法と同等の計算負荷を持つ、という特徴を有する画期的な計算アルゴリズムである。
従って、HILSなど、計算時間に制約がありながら、Stiffな方程式に対応しなければならない用途に適用することで、従来では困難であった、図6で例示したような機構や電子回路などの模擬、即ち、リアルタイムのシミュレーションを可能とするものである。
加えて、HILS以外の、物理的信号を介さず計算機内で制御機器の制御アルゴリズムを検証するSILS、更には一般的な数値計算の分野においても、計算時間の短縮に貢献し、SILSとHILSの検証結果の整合性を高め、様々な解析の効率化に供するものである。
【符号の説明】
【0133】
101、102、103、104、105、106、107、108、201、202、203、901、902,903,904、1001、1002、1101、1102、1103 安定領域曲線
500 HILS計算装置
501 通信手段
502 Yummy行列計算手段
503 Yummy行列記憶手段
504 デジタル信号入力手段
505 電圧入力手段
506 ベクトル算出手段
507 基準時間生成手段
508 パルス信号計測手段
509 状態方程式計算手段
510 電圧出力手段
520 ホストコンピュータ
1400 SILS計算装置
1402 回路シミュレーション実行手段
1403 キーボード装置
1404 ディスプレイ装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16