(57)【特許請求の範囲】
【請求項１】
時間離散的数値系列データを入力し、これら時間離散的数値系列データを、直線補間により折れ線で連続化した折れ線近似信号とみなして台形公式を用いて積分することにより基本項を算出する基本演算部と、
前記時間離散的数値系列データの跳躍点をサンプリングし、前記基本演算部で算出された基本項を補正するための補正項を算出し出力する補正演算部と、
前記基本演算部で求められた基本項から前記補正演算部で求められた補正項を減算して補正された積分値を生成し出力する減算器と
を備えたことを特徴とする積分器。
【請求項２】
前記基本演算部は、入力された時間離散的数値系列データから前記基本項への直接信号伝達経路がないことを特徴とする請求項１記載の積分器。
【請求項３】
前記補正演算部は、前記時間離散的数値系列データに跳躍点が発生したかどうかを監視し、跳躍点が発生した場合には、前記時間離散的数値系列データの跳躍点、それに先行する２つの先行データをサンプリングし、前記２つの先行データから求められた前記跳躍点発生時における外挿点と前記跳躍点との差分に基づいて補正項を算出することを特徴とする請求項１記載の積分器。
【請求項４】
前記基本演算部、補正演算部及び減算器は、拡張シグナルフローグラフを用いてプログラミングされ、コンピュータによって実行されるものであることを特徴とする請求項１記載の積分器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、離散的数値系列データを積分する積分器に関する。
【背景技術】
【０００２】
従来、コンピュータを用いて、時間離散的数値系列データ（以下、「離散的数値系列データ」と呼ぶ。）を積分する手法として、離散的数値系列データを、直線補間により折れ線で連続化した折れ線近似信号とみなして台形公式を用いて積分する方法が知られている（非特許文献１）。
【０００３】
また、コンピュータによる連続動的システムの数学モデルをプログラムする手法としては、拡張シグナルフローグラフを用いた方法が知られている（非特許文献２，３）。この拡張シグナルフローグラフは、シグナルフローグラフを線形要素だけでなく非線形要素にも拡張し時間経過とともに信号が計算され伝達される仕組みを可視的（グラフィカル）なプログラミング言語にしたもので、基本的には、伝達されてきたデータ間の代数演算を行う演算ノードと演算ノードのデータを他の演算ノードに伝達する伝達アークから構成される。
【先行技術文献】
【特許文献】
【０００４】
【非特許文献１】：戸川隼人、他：よくわかる数値計算−アルゴリズムと誤差解析の実際、日刊工業新聞社、p.154、(2001.11)
【非特許文献２】：高橋宏治、長谷川健介：マークフローグラフと拡張シグナルフローグラフによるシステム統合モデルの計算実現、計測自動制御学会 システム・情報部門、離散事象システム部会  第43 回離散事象システム研究会講演論文集、pp.67/72, (2008,6)
【非特許文献３】：長谷川健介、高橋宏治：システム統合のためのControl and Computing System Builder(CSB)の提案―プログラミング・シミュレーションとケースモデル、電気学会 システム・制御研究会資料、SC-08-12、pp. 59/64、(2008,3)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した特許文献１に開示の積分手法では、数値系列データに跳躍点などの不連続点を含む場合、誤差が発生し、十分な精度を確保することが出来ないという問題がある。
【０００６】
本発明は、このような点に鑑みなされたもので、コンピュータによる連続動的システムの数学モデルをプログラムする際に、十分な精度を実現できる積分器を提供することを目的とする。
【０００７】
また、本発明は、上記目的を達成し、かつフィードバックループ形成に容易に導入できる積分器を簡単なアルゴリズムによって実現し、シミュレーションにおける容易なプログラミングと計算精度の向上とを図ることを他の目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る積分器は、離散的数値系列データを入力し、これら離散的数値系列データを、直線補間により折れ線で連続化した折れ線近似信号とみなして台形公式を用いて積分することにより基本項を算出する基本演算部と、前記離散的数値系列データの跳躍点をサンプリングし、前記基本演算部で算出された基本項を補正するための補正項を算出し出力する補正演算部と、前記基本演算部で求められた基本項から前記補正演算部で求められた補正項を減算して補正された積分値を生成し出力する減算器とを備えたことを特徴とする。
【０００９】
前記基本演算部は、入力された離散的数値系列データから前記基本項への直接信号伝達経路がないことを特徴とする。
【００１０】
本発明の他の実施形態において、前記補正演算部は、前記離散的数値系列データに跳躍点が発生したかどうかを監視し、跳躍点が発生した場合には、前記離散的数値系列データの跳躍点、それに先行する２つの先行データをサンプリングし、前記２つの先行データから求められた前記跳躍点発生時における外挿点と前記跳躍点との差分に基づいて補正項を算出することを特徴とする。
【００１１】
本発明の更に他の実施形態において、前記基本演算部、補正演算部及び減算器は、拡張シグナルフローグラフを用いてプログラミングされ、コンピュータによって実行されるものであることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、コンピュータによる連続動的システムの数学モデルをプログラムする際に、十分な精度を実現できる積分器を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態に係る積分器の構成を示すブロック図である。
【図２】同積分器におけるソースデータとなる離散的数値系列データの一例を示す図である。
【図３】同積分器の構成を示す拡張シグナルフローグラフである。
【図４】同積分器の各部の離散的数値系列データを示すグラフである。
【図５】本発明の第２の実施形態に係る積分器の各部の離散的数値系列データを示すグラフである。
【図６】同積分器の構成を示す拡張シグナルフローグラフである。
【図７】同積分器を適用した高次多項式データの生成過程を示す拡張シグナルフローグラフである。
【図８】同積分器を適用した一次遅れ系を示す拡張シグナルフローグラフである。
【図９】同積分器を適用した一次遅れ系のデータの精度を示す拡張シグナルフローグラフである。
【図１０】同積分器を適用した一次遅れ系における積分ゲインと応答の関係を示すグラフである。
【図１１】同積分器を適用した持続振動２次系を示す拡張シグナルフローグラフである。
【図１２】同積分器を適用した持続振動２次系のサイクルテスト結果を示すグラフである。
【図１３】本発明の第３の実施形態に係る積分器に入力される途中に数値の跳躍点を有する離散的数値系列データを示すグラフである。
【図１４】同積分器の構成を示す拡張シグナルフローグラフである。
【図１５】本発明の第４の実施形態に係る積分器を説明するための拡張シグナルフローグラフの演算セルを示す図である。
【図１６】同積分器をＮＷ積分器に適用した拡張シグナルフローグラフである。
【図１７】同積分器の跳躍起因アークにおけるイベント発生から補正項組み込みまでの処理を中間言語で表現した例を示す図である。
【図１８】同積分器のプログラミングを説明するための第一の図である。
【図１９】同積分器のプログラミングを説明するための第二の図である。
【発明を実施するための形態】
【００１４】
［第１実施形態］
次に、本発明の第１実施形態に係る台数公式に基づくｔｒ積分器について詳細に説明する。
【００１５】
図１は、本実施形態に係る積分器の構成を示す図である。
【００１６】
この積分器は、処理の中心をなす演算システム構築部１（以下、「ＣＢＳ」（Computing System Builder)と称する。）と、ＣＢＳ１に供給される処理対象であるソースデータを記憶するソースデータ記憶部２と、処理に必要な操作を行うための入力部３と、処理に必要な操作のためのＧＵＩ（Graphic User Interface）を表示する表示部４と、処理結果を出力する出力部５とを備えて構成されている。
【００１７】
ＣＢＳ１は、拡張シグナルフローグラフに基づくグラフプログラムを構築し、提供されるソースデータに対して実行するもので、グラフプログラムの構築に必要なデータを記憶するプログラムデータライブラリ１１と、プログラムデータライブラリ１１に記憶されたプログラムデータを用いてグラフプログラムを作成・編集するためのグラフプログラム作成・編集部１２と、グラフプログラム作成・編集のためのＧＵＩを表示部４上に作成するＧＵＩ作成部１３と、グラフプログラムを実行可能プログラムに変換し実行するプログラム実行部１４とを備えて構成されている。
【００１８】
この積分器の具体的な機能については後述することとし、ここでは、まずソフトウエア積分器の原理について説明する。
【００１９】
［原理説明］
いま、図２に示すように、連続関数ｕ（ｔ）について等間隔ΔＴでサンプリングしたとする。その連続関数ｕ（ｔ）を、サンプル値間の直線近似関数として台形近似積分に関する公式（台形公式）を用いて積分すると、次のように求められる。
【００２０】
すなわち、図２の点ｕn-1からｕnまでの台形の面積を時点ｎΔＴでの値として記号ΔＳｎを用いると、
【００２１】
［数１］
0005439696.tif 000002
【００２２】
と求められる。ただし、ここでは初期の三角形ΔＳ０は考慮せず、ΔＳ０＝０とする。また、横軸点ｎΔＴのｕ（ｔ）の値を、ｕｎとする。したがって、０≦ｔ≦ＮΔＴの範囲の全面積ＳＮは、
【００２３】
［数２］
0005439696.tif 000003
【００２４】
あるいは、
【００２５】
［数３］
0005439696.tif 000004
【００２６】
で表される。
【００２７】
以下、上述の台形近似による近似積分を実行するための計算アルゴリズムを導出する。
【００２８】
説明の便宜上、図２に示した入力数値列を、これによって単位インパルス列を変調したサンプル値信号
【００２９】
［数４］
0005439696.tif 000005
【００３０】
で表現した上で、さらにｚ変換してＵ（ｚ）で表すと
【００３１】
［数５］    
0005439696.tif 000006
【００３２】
となる。上式ではｚ−ｎの係数が第ｎ番目の数値ｕｎとして表されている。
【００３３】
次にｕ＊（ｔ）をΔＴだけ右シフトしてｚ変換すると次式となる。
【００３４】
［数６］
0005439696.tif 000007
【００３５】
（５）式、（６）式を加算して整理すると、
【００３６】
［数７］    
0005439696.tif 000008
【００３７】
となる。さらに上式の両辺にΔＴ／２を乗じると、
【００３８】
［数８］  
0005439696.tif 000009
【００３９】
となる。上式右辺のｚ−ｎの係数は、（１）式から解るように、ｎ番目の台形の面積ΔＳｎに相当する。すなわち、
【００４０】
［数９］
0005439696.tif 000010
【００４１】
となる。この台形面積ΔＳｎを逐次加算して積分するには（８）式あるいは（９）式の両辺に累算を表す離散値伝達関数１／（１−ｚ−１）を乗ずれば良い。その結果、積分値は、下記（１０）式のように求めることができる。
【００４２】
［数１０］
0005439696.tif 000011
【００４３】
上式右辺の弧内はサンプル時点ΔＴからサンプル時点ＮΔＴまでの積分値を表すのでこれをＳＮで表して
【００４４】
［数１１］
0005439696.tif 000012
【００４５】
とすると、（１０）式は、
【００４６】
［数１２］
0005439696.tif 000013
【００４７】
となる。上式左辺全体をＴＲ（ｚ）で表し、
【００４８】
［数１３］
0005439696.tif 000014
【００４９】
とすると、ＴＲ（ｚ）は上式右辺に基づきＵ（ｚ）で表される数値列入力を直線補間して積分を行う際のサンプル時点ＮΔＴにおける近似積分値計算システムを表わすことになる。
【００５０】
ＴＲ（ｚ）の第一項を基本項、第二項を補正項と定義し、それぞれをＡｔｒ（ｚ）およびＢｔｒ（ｚ）とすると、
【００５１】
［数１４］
0005439696.tif 000015
【００５２】
［数１５］
0005439696.tif 000016
【００５３】
となる。なお、上述の数式表現で用いられた文字記号“ｔｒ”あるいは“ＴＲ”は台形（trapezoid）を意味したものである。また、補正項は図２において、−ΔＴ〜０の期間の三角形ΔＳ０の面積（底辺がΔＴ、高さがｕ０の三角形ΔＳ０の面積）を基本項から差し引くことを表している。
【００５４】
次に、上述のシステムを非特許文献２に示した拡張シグナルフローグラフ（以下、「SFG.e」と呼ぶ。）を用いて説明する。SFG.eはシグナルフローグラフを線形要素だけでなく非線形要素にも拡張し時間経過とともに信号が計算され伝達される仕組みを可視的（グラフィカル）なプログラミング言語にしたもので、基本的には、伝達されてきたデータ間の代数演算（減算、割算を除く）行う演算ノードと演算ノードのデータを他の演算ノードに伝達する伝達アークから構成される。
【００５５】
図３（ａ）は、SFG.eによってソフトウエア積分器の仕組を表したもので、そのアークは定係数アークと単位遅延アークとからなっている。以下、これをＴＲ積分器と呼ぶことにする。ＴＲ積分器は同図で示すように基本項Ａｔｒ（ｚ）を算出するＡｔｒ演算部（基本演算部）２１と、補正項Ｂｔｒ（ｚ）を算出するＢｔｒ演算部（補正演算部）２２と、Ａｔｒ演算部２１で算出された基本項からＢｔｒ演算部２２で算出された補正項を減算する減算器２３とを備えて構成されている。
【００５６】
Ａｔｒ演算部２１は（５）式の入力信号Ｕ（ｚ）、すなわち計算ステップ０での初期数値ｕ０からステップ進行１，２，３，…，ｎに伴って数値ｕ０，ｕ１，ｕ２，ｕ３，…，ｕｎ…を入力し、ステップ毎に下記数１６の上段の式で示す積分値を基本項Ａｔｒとして出力する。
【００５７】
一方、Ｂｔｒ演算部２２は、図３（ａ）で示すようにｔ＝０のときにｕ０をサンプラでサンプリングし、ステップ毎に積算された補正項Ｂｔｒ（ｕ０＋ｕ０ｚ−１＋ｕ０ｚ−２＋…）を出力する。Ｂｔｒ演算部２２の乗算ノードは、サンプラとしての機能を有し、入力データ列に、ｔ＝０において発生される単位インパルスδ（ｔ）を乗ずることでｕ０をサンプリングする。
【００５８】
積分値補正のための加算器２３は、基本項Ａｔxと補正項Ｂｔｒの符号変換値を加算する。この結果、数１６の下段に示すような積分出力が得られる。
【００５９】
［数１６］
0005439696.tif 000017
【００６０】
図３（ｂ）は図３（ａ）の入力ノードから出力ノードまでを一本のアークでまとめてトランスミッタンスが１／ｓｔｒの積分アークとしてＴＲ積分器を表したものである。ここで、ｓｔｒはラプラス変数ｓに対応するものとして記号的に与えたものである。
【００６１】
なお、図３（ａ）における乗算ノードはサンプラの役割を持ち、計算開始時のタイミングも含めてアルゴリズムのコーディングで容易に実現されるものである。
【００６２】
［第２の実施形態］
上記の第１の実施形態では、図３（ａ）に示すように、Ａｔｒ演算部２１に、入力部に入力された時系列データが出力部に直接伝達される直接伝達経路を有しているが、第２の実施形態では、直接信号伝達経路なしの積分（以下、「ｎｗ積分」と呼ぶ。）が可能な積分器を提供する。
【００６３】
台形公式による近似積分は数値間を直線補間する方式によるため、一定数値入力に対する積分は正確に実行される。ここでは、先に述べたｔｒ積分方式と同じように一定数値入力に対する積分を正確に実行できるとともに、直接信号伝達経路なしの近似積分が実行できることを必要条件として新しいアルゴリズムを導出する。
【００６４】
まず、先に説明したtr積分方式で一定値入力信号に対する挙動について詳細に説明する。
【００６５】
図３（ａ）の基本項Ａｔｒ（ｚ）において、入力信号Ｕ（ｚ）が図４（ａ）に示すような一定値ｕ０（この例では、ｕ０＝１）の数値列
【００６６】
［数１７］
0005439696.tif 000018
【００６７】
であるとすると、基本項Ａｔｒ（ｚ）は、
【００６８】
［数１８］      
0005439696.tif 000019
【００６９】
となる（図４（ｂ）参照）。これを展開すると次式のように各サンプル時点での値が得られる。
【００７０】
［数１９］
0005439696.tif 000020
【００７１】
一方、補正項Ｂｔｒ（ｚ）は（１５）式から展開して次のように表される（図４（ｃ）参照）。
【００７２】
［数２０］     
0005439696.tif 000021
【００７３】
したがって、この場合の積分出力ＴＲ（ｚ）は、上述のＡｔｒ（ｚ）とＢｔｒ（ｚ）との差として
【００７４】
［数２１］
0005439696.tif 000022
【００７５】
のように求められる（図４（ｄ）参照）。これは横軸上サンプル時点０において数値が０から出発し、時間間隔ΔＴ毎に積分結果としての数値が正確にΔＴｕ０ずつ増加していることを示している。これらの数値列を直線補間すると原点から出発する傾斜がΔＴｕ０の直線となり、積分結果の応答が正確に連続信号で仮想的に示されたことになる。
【００７６】
ところで、この基本項の応答でわかるように０．５ΔＴが初期数値として先に述べた直接信号伝達経路により伝達されることなり、この存在によって以上述べたＴＲ積分器は閉ループが多く用いられる動的システムの数学モデルに適さないことになる。
【００７７】
そこで、この問題を解決する方法を図５によって説明する。
【００７８】
いま、図５（ａ）のように先の例とおなじく入力信号が一定値ｕ０（この例では、ｕ０＝１）の数値列であるとする。これに対する基本項の応答Ａｔｒ（ｚ）（図５（ｂ））を図５（ｃ）の信号によって次式のように変形し直接信号経路伝達となる第一項０．５ΔＴｕ０・ｚ０を消去する。
【００７９】
［数２２］
0005439696.tif 000023
【００８０】
これを改めて基本項Ａｎｗ（ｚ）とすると、基本項Ａｎｗ（ｚ）は、数２３のように表すことができる。
【００８１】
［数２３］
0005439696.tif 000024
【００８２】
その結果を図５（ｄ）に示す。
【００８３】
一方、補正項Ｂｔｒ（ｚ）を、Ａｔｒ（ｚ）からＡｎｗ（ｚ）への変形と同様に次のように変形してＢｎｗ（ｚ）とする（図５（ｅ）参照）。
【００８４】
［数２４］
0005439696.tif 000025
【００８５】
［数２５］
0005439696.tif 000026
【００８６】
以上の結果、次の関係が成立する。
【００８７】
［数２６］
0005439696.tif 000027
【００８８】
この式は、右辺の台形公式に基づくＴＲ（ｚ）に対してこれと等価な新しい近似積分アルゴリズムが得られたことを表している。そこで、新しい近似積分アルゴリズムをＮＷ（ｚ）で表し、これを次のように定義する。
【００８９】
［数２７］
0005439696.tif 000028
【００９０】
ここで、Ａｎｗ（ｚ）は次のように定式化される。（１５）式と（２３）式より、Ａｎｗ（ｚ）＝Ａｔｒ（ｚ）−ΔＴｕ０（０．５ｚ０−０．５ｚ−１）であり、これより、
【００９１】
［数２８］
0005439696.tif 000029
【００９２】
が導かれる。上式右辺の一定値ｕ０の入力（１／（１−ｚ−１））ｕ０を一般の入力信号Ｕ（ｚ）で置き換え、
【００９３】
［数２９］
0005439696.tif 000030
【００９４】
とする。
【００９５】
一方、Ｂｎｗ（ｚ）は（１６）式と（２４）式より次のように得られる。
【００９６】
［数３０］
0005439696.tif 000031
【００９７】
なお、上述の数式表現で用いられた文字記号“ｎｗ”あるいは“ＮＷ”は「新しい（new）近似積分」を意味するものである。
【００９８】
［第２の実施形態の効果］
［ＮＷ積分のアナログ積分との等価性について］
上述のアルゴリズムをSFG.eによって図６（ａ）のように一つのソフトウエア積分器として表すことにする。以下、これをＮＷ積分器と呼ぶことにする。ＮＷ積分器は、同図で示すように基本項Ａｎｗ（ｚ）を算出するＡｎｗ演算部（基本演算部）３１と、補正項Ｂｎｗ（ｚ）を算出するＢｎｗ演算部（補正演算部）３２と、Ａｎｗ演算部３１で算出された基本項からＢｎｗ演算部３２で算出された補正項を減算する減算器３３とを備えて構成されている。また、図６（ｂ）はＴＲ積分器の場合と同様、上述の機能を入力ノードから出力ノードまでトランスミッタンス１／ｓｎｗの積分アークで表現したものである。なお、ｓｎｗはラプラス変数ｓに対応するものとして記号的に与えたものである。このように、ＮＷ積分器は一定値入力列に対してはＴＲ積分器と全く同様に正確な積分が実行可能であり、また台形近似アルゴリズムに基づいているので、一般の入力値系列に対してもＴＲ積分器と同様な精度が期待できる。その上、直接信号伝達経路を保持しない構造であってその出力を同一計算ステップ内で入力側に直接フィードバック可能であり、このことから、ＴＲ積分器と異なりＮＷ積分器はプログラミング上の定性的な制約なしにアナログ積分器と等価な連続値伝達関数を持つものと見なすことができる。
【００９９】
図６（ａ）の乗算ノードはサンプラの役割を持つ。この場合、時点ΔTにおいて単位インパルス（時間関数としてはδ（ｔ-ΔT）、z変換形ではｚ−１であるが、以下の説明では時間関数を用いる。）を乗ずることでｕ０をサンプリングすることを表している。
［ＴＲ／ＮＷ積分器に生じる誤差の検討］
以上述べたように、ＮＷ積分器はＴＲ積分器から拡張されたもので直線補間近似に基づいているが、それぞれの各計算ステップでの積分計算過程に差異がある。ＴＲ積分器では（１５）式で示すように現入力を含む台形公式による直接計算であるのに対し、ＮＷ積分器では（２９）式右辺分子括弧外のｚ−１の存在で分かるように現入力を含まない外挿計算になっている。したがって一般形の数値入力に対する近似度はＴＲ積分器に比較して幾分劣化することが考えられる。また、ＮＷ積分器についてはフィードバック系の構成におけるアナログ積分に対する近似度について考慮する必要がある。代表的な例を用いた比較を通してそれぞれのその使用上の限界、解決法、および注意などについて述べる。
【０１００】
例１．高次多項式の計算
高次多項式はｘｎ（n：正整数）によって構成される数式である。そこで、高次多項式計算への適用のため、ｘｎの計算をＮＷ積分で行い精度について検討する。積分変数としてｘを選びシグナルフローグラフでｘｎを表すと図７（ａ）のようになる。
【０１０１】
同図でトランスミッタンス1/sは積分を表すが、図７（ｂ）に示す拡張シグナルフローグラフによるプログラミングではこれをＮＷ積分である1/s.nwに置き換える。
ところで、先に述べたように、ＮＷ積分はＴＲ積分同様、ｎ＝１において正確な積分が可能であった。したがって理論的に上述の積分は正確に実行可能である。また、ｎ＝２のｘ２に対しては、この導関数に対応するｎ＝１のｘが直線補間と実際の関数とが一致することから、その計算は正確に実行可能である。したがって、ｎが３以上に対しては直線補間と実際の関数の不一致から計算誤差を生じる。その程度の確認のため、パソコンによってつぎのようなシミュレーションを行った。
【０１０２】
［条件］
(i) 変数：倍精度浮動小数点数型
(ii) n＝3およびn=4
(iii) 積分区間：0から1まで
(iv) 積分区間の刻み数＝4, 10, 25, 50, 100
(v)誤差の定義：(|NW積分値―理論値｜／理論値)×100 (%)
【０１０３】
［結果］
(i) 誤差の最大値は0.33% (n=4, 刻み数＝4)となる。この条件は実用上極端な場合である。
(ii) n=4に対して, 
刻み数10, 25, 50, 100
における誤差はそれぞれ、
1.3×10-2%，9.8×10-4%，5.2×10-4%，1.6×10-4%
となった。
(iii) n=3については、すべてn=4における対応誤差以下であり実際上問題にならない
(iv)以上の結果、高次多項式の計算では刻み数は10以上を推奨するものとする。
【０１０４】
例２．定積分による精度検証
【０１０５】
［数３１］  
0005439696.tif 000032
【０１０６】
で示される定積分による円周率計算をＴＲ積分およびＮＷ積分で行い解析値πとの差を積分区間（０〜１）の刻み数毎に比較すると表１のようになる。ＴＲ積分よりもＮＷ積分の方が、若干精度が低下しているが、刻み数が200以上では差が見いだせず十分な精度が得られることが分かる。
【０１０７】
【表１】
0005439696.tif 000033
【０１０８】
例３．一次遅れ系におけるＮＷ積分器の誤差検証
ＮＷ積分器を用いて一次遅れ系を構成して理論値との差異につき検討する。図８は、拡張シグナルフローグラフによって表現された一次遅れ系である。
この系の入出力間の伝達関数は次のように求められる。
【０１０９】
［数３２］
0005439696.tif 000034
【０１１０】
また、図９はこの系のインディシアル応答を求めるグラフィックプログラムを示したものである。この場合、ＮＷ積分器の積分ゲインＫを１とし、したがって時定数Ｔは１secである。同図では、単位ステップ信号を加えたのち時刻が１sec（時定数Ｔ）後のステップ応答の値ｙ（Ｔ）を示している。
【０１１１】
また、図９には、比較のため、ｙ（Ｔ）の理論値 １−ｅ−１を計算するためのプログラムも示している。この計算では一計算ステップに要する時間が10msecとしてあり、したがって、この計算刻み数は100である。図９では、この結果として、応答値ｙ（Ｔ）が0.6321234107であるのに対して、理論値は0.6321205497であり、小数点以下５桁まで合致している。
【０１１２】
シミュレーションにおいては、このような一次遅れ系をＮＷ積分器によって構成する場合、Ｋの値には理論的に限界があるが、図１０に示す積分ゲインと応答の関係から解るように25（時定数で0.04sec）以下が適当である。なお、この限界における応答値ｙ（Ｔ）は0.625となる。また小数点以下４桁まで一致する最小の時定数は0.08sec (Ｋの値で12.5)となる。
【０１１３】
表２は積分ゲインと時刻Ｔ経過後のインディシアル応答値との関係を示したものである。
【０１１４】
【表２】
0005439696.tif 000035
【０１１５】
例４．持続振動２次系のサイクルテストによる積分性能の検証
ゲイン定数１の積分器２つを縦続接続し、その出力を入力側に単位負フィードバックすると理論的には安定限界となり、持続振動を発生する。この状態をどこまで維持できるかをサイクルテストと呼んでいる。図１１はこのための拡張シグナルフローグラフによるプログラムを表している。この系は、図中の微分方程式をプログラムしたもので、真空中での振り子の振動に関する運動方程式に相当する。その場合、ｙは振り子の紐の角度、ｘ’は角速度となる。ここでは、二つの積分器の一方をＮＷ積分、他方をＴＲ積分としている。すなわち、図のグラフの閉ループには少なくとも一個のＮＷ積分器を使用する必要がある。
【０１１６】
図１２は、この系のｘ’（破線）およびｙ（実線）の応答を示したものである。このサイクルテスト結果から積分器としての性能が十分に果たされていることが分かる。この場合の積分ゲインは1 (1/sec)であり、振動角周波数は１rad/sec、周期は２πとなり計算刻み幅は十分に小さい。近似積分の精度は刻み幅に影響されるので、閉ループの積分ゲインの大きさには制約がある。同図（ｃ）は積分ゲインが10 (1/sec)の場合であり、図では確認できないほどであるが、若干の振幅の減衰が見られた。また、逆に増大振動は起こらない。
【０１１７】
［第３の実施形態］
次に、補正項の一般化を図った本発明の第３の実施形態について説明する。
【０１１８】
積分変数としての数値列には、これまでにも初期数値ｕ０が零でない場合と同様、途中に数値の跳躍を生じる場合がある。この跳躍はシステム内外に起こる事象発生により付随して生じる。いま、図１３に示すように、時点ｊΔＴにおいて数値の跳躍が起こったとする。これを、近似的にｕｊ−２からｕｊ−１を直線補間し、さらに時点ｊΔＴまで外延した値をｕｊ’とすると、ここからｕｊまで跳躍したと見なす。もしも、これを跳躍と見做さずｕｊ−１からｕｊへ直線補間したとすると図でｕｊ，ｕｊ−１，ｕｊ’を結ぶ三角形の面積がＴＲ積分およびＮＷ積分における誤差になるのでこれを補正する必要がある。
【０１１９】
この面積をｃｊとすると、
【０１２０】
［数３３］
0005439696.tif 000036
【０１２１】
ただし、
【０１２２】
［数３４］
0005439696.tif 000037
【０１２３】
で表される。これに基づいてＴＲ積分器に対する補正項は初期数値に対するＴＲ積分の補正項(１６)式を参照して
【０１２４】
［数３５］
0005439696.tif 000038
【０１２５】
となる。これは補正項の一般式であり、（１６）式は上式でj=0に相当する。この場合、ｕｊ＝ｕ０であるのに対して、ｕｊ−１＝ｕｊ−２＝０となり、（３４）式は（１６）式に一致する。
【０１２６】
またＮＷ積分器に対する補正項は同様にして（３０）式を参照して
【０１２７】
［数３６］       
0005439696.tif 000039
【０１２８】
が得られる。
【０１２９】
これらを拡張シグナルグローグラフで表現すると図１４のようになる。図３及び図６の拡張シグナルグローグラフと異なるのは、Ａｔｒ演算部２１，Ａｎｗ演算部３１からへの信号伝達経路４１，４２のみである。なお、図１４のＢｔｒ演算部２２及びＢｎｗ演算部３２の累積部２４，３４は跳躍点で発生する補正値を累積する働きをしている。
【０１３０】
［跳躍の起因を積分器補正部へ伝達する方法］
入力信号における跳躍は積分器以外の要素における事象（イベント）発生に起因する。拡張シグナルグローグラフには不連続非線形アークが伝達アークとして用意されているが、このうち代表的な跳躍の起因をもつものとして、以下のものがある。
【０１３１】
（１）不感帯付きオンオフアーク：オンオフ状態をもち、その間の移行に不感帯をもつ。
【０１３２】
（２）ヒステリシスアーク：オンオフ状態をもち、その間の移行に一定の幅のヒステリシスをもつ。
【０１３３】
（３）サンプル・ホールダアーク：連続信号を一定周期でサンプリングし、ホールドする。
【０１３４】
（４）無駄時間アーク：一定の無駄時間（最小サンプル時間の整数倍）で信号伝達をおこなう。
【０１３５】
（５）スイッチングアーク：論理変数を外部変数とし、その真、偽で伝達係数が1, 0となる。
【０１３６】
これらを「跳躍起因アーク」と定義する。跳躍起因アークでは一定の条件（閾値、時間などの論理的条件）で出力信号値が跳躍的に変化する。跳躍起因アーク群はこれが発生する計算ステップ番号を一時記憶する共通のステップレジスタをもち、ある計算ステップ中において該アークに事象が発生すると、直ちにその時のステップ番号をＴＲ積分器用の跳躍発生番号として、また、ＮＷ積分器用にはこれに１を加えて単位遅延を加味した数を跳躍発生番号として前記ステップレジスタに記憶させる。
【０１３７】
これに対して積分器側は、計算ステップ毎に計算カウンタデータを受け取ると同時にこれが前記跳躍発生番号に一致するかどうかを常時判断し、これが一致した場合に限り、等価的に図１４（ａ）のＢｔｒ演算部２２あるいは図１４（ｂ）のＢｎｗ演算部３２におけるサンプリング信号とサンプラで示したように、補正信号の計算を行い、補正を実行するようになっている。
【０１３８】
シミュレーションプログラム中の全ての積分器は図３（ｂ）あるいは図６（ｂ）のように一本のアークで表現されるが、そのなかでは上記機能をもち、その入力側で直接あるいは間接的に信号の跳躍を受けるとこれに対応した上述の操作を行うようになっている。したがって、跳躍現象の影響を受けていない積分器もその操作を行うことになるが、その場合は、図１４と(３２)式から推定できるように十分に小さいサンプリング間隔（一般的にはコンピュータの最小計算ステップ間隔に相当）では、ｕｊ−２，ｕｊ−１から外側に延ばしたｕｊ’がｕｊの値に殆ど一致することから、Δｕｊは零と見なすことができるので、実質的には入力信号の跳躍を受ける積分器だけが選択されることになる。また、同一の計算ステップで複数の跳躍起因アークで跳躍が発生しても、それぞれの積分器はその結果としての入力信号値に対して総合的に補正を実行することになる。
【０１３９】
なお、上述したｊが事象発生ステップに相当する。以上の詳細については積分器のメソッドのコード表現において後述する。
【０１４０】
［第４の実施形態］
次に、グラフ表現のアルゴリズムに関するソフトウエア構造および実行形態に関する第４の実施形態について説明する。
【０１４１】
拡張シグナルフローグラフに基づくビジュアルプログラムは、ここでは仮想のビジュアルプログラミングツールであるＣＳＢ(Computing System Builder)１（図１）によって記述され編集され、かつ実行するものとする（非特許文献３）。ソフトウエア積分器もビジュアルプログラムのなかの伝達アークとして記述され、実行されるので、このためのＣＳＢ１に関するソフトウエア構造と実行形態の概要について説明する。なお、既に述べたように、拡張シグナルフローグラフは代数演算（減算、割算は除く）をおこなう演算ノードと、演算ノードのデータを他の演算ノードで用いるデータに変換して伝達する伝達アークから構成される。
【０１４２】
［グラフプログラム］
拡張シグナルフローグラフで描かれたプログラム（以下、「グラフプログラム」と呼ぶ。）において、全演算ノードを一定の順序で巡ることで行われる一回の計算ステップを必要な回数繰り返し行うことにより要求する計算が実行される。その場合、一回の計算ステップは各演算ノードについて一回の代数演算ステップの実行系列からなる。この実行系列の周期を計算ステップ周期とよび、この実行に要する時間を計算ステップ時間とよぶ。演算ノードには一回の計算ステップ周期において演算順序が決められる。これを示すインデックスを演算ノードの実行インデックスとよぶ。実行インデックスは自然序数に従って1から始まり、2,3,4… と増加して付けられる。各演算ノードにはすでにグラフプログラミングにおいて配置順に自然序数で固有インデックスが付けられている。これは必ずしも実行インデックスと一致しないので、計算実行前に固有インデックスから実行インデックスへの変換を行うことが必要である。
【０１４３】
［演算セル］
具体的な演算は演算セルに基づき実行される。  演算セルは、図１５に示すように、演算ノード(以下、ノード)と伝達アーク（以下、アーク）からなる。すなわち、演算セルは、一個の核ノードと一個以上の子ノードと、これらを接続するアークとを備えて構成される。ソースを除くすべてのノードはそれぞれ核ノードとして一個の演算セルを構成する。ソースは核ノードにはならず子ノードとして信号源の役割をもつ。ソースとしての加算ノードはＧＵＩ上、配置時の初期値としてゼロが与えられるが随時変更可能としている。乗算ノードはＧＵＩ上、配置時の初期値は１で変更不可としている。また、ステップ関数、インパルス関数、正弦波関数、余弦波関数、ランダム関数、ユーザ定義時間関数などの時間駆動関数は特殊なソースノードとして与えられる。
【０１４４】
演算セルは、これに属する全ての子ノードのデータが計算ステップ周期毎に更新されると直ちに核ノードで演算をおこなうようになっている。すなわち、各子ノードのデータは該ノードを出発ノードとするアークのメソッド（サブルーチン）でそれぞれ核ノードへ変換・伝達され、該核ノード固有の代数演算により新しいデータを生成する。
【０１４５】
演算セルの核ノードは他の演算セルの子ノードとすることができる。  これにより複数の演算セルが結合されて数式が作られ方程式となりグラフプログラムとなる。他の演算セルの子ノードにならない核ノードはシンクとなり計算結果のデータを示すことになる。
【０１４６】
［伝達アークの型］
アークには、これにより接続される演算ノード間の実行順序に関して、Ａ型アークとＤ型アークの二種類がある。
【０１４７】
Ａ型アークは、そのアークの出発ノードの実行インデックスよりも到着ノードの実行インデックスが大きいアーク、これに対して、Ｄ型アークはそのアークの出発ノードの実行インデックスよりも到着ノードの実行インデックスが小さいアークを指す。（“Ａ”は実行インデックスがアークの方向に沿って上昇（Ascent）、“Ｄ”は実行インデックスがアークの方向に沿って下降（Descent）を意味する）。
【０１４８】
上述のことから、一つの演算セルでの計算では、Ａ型アークで接続された子ノードは同じ計算ステップ内で核ノードよりも早く更新されたデータが使われ、またＤ型アークで接続された子ノードは前計算ステップにおいてすでに更新されたデータが使われることになる。このことからＡ型アークは直接数値伝達経路をもつアークであり、Ｄ型アークは直接数値伝達経路を持たないアークである。たとえば、前述の図１４（ａ）のグラフプログラムで表されるＴＲ積分器では、U(z)からR(ｚ)に到る基本項および補正項を通る経路はいずれも直接数値伝達経路を持っておりＡ型アークである。一方、図１４（ｂ）のグラフプログラムで表されるＮＷ積分器では、U(z)からW(ｚ)に到る基本項および補正項を通る経路にはすべてz-1を含んでいるので直接数値伝達経路を持たないことになりＤ型アークである。Ｄ型アークの場合、前記経路にあるz-1をまとめて入力U(z)に乗じz-1 U(z)としてこれを入力と見なすと、残りのグラフプログラムがＤ型アークとしての事実上のアルゴリズムを表す。図１６はこれをＮＷ積分器に適用したものである。
【０１４９】
［実行インデックス決定プロセス］
グラフプログラムにおける演算ノードの実行インデックスを決定する手順は次のとおりである。なお、実行インデックスが既に割り当てられたノードを決定ノードとよぶことにする。
【０１５０】
（１）始めにソースノードに実行インデックスが１から順に割り当てられる。これを決定ノードとする。その割り当て順序はソースノードそれぞれの固有インデックスの順に従うものとする。
【０１５１】
（２）決定ノード以外のノードを固有インデックス順に選ぶ。この選択は最大固有インデックスまで達すると最小固有インデックスから選択を繰り返すものとする。
【０１５２】
（３）選ばれたノードを核ノードとし、これにＡ型アークで接続された全てのノードがすでに決定ノードとなり、かつ該核ノードからＤ型アークで接続された全てのノードがすでに決定ノードとなっている場合にかぎり、該核ノードを決定ノードとし、（２）に戻る。
【０１５３】
（４） 全てのノードが決定ノードになると実行インデックス割り当てが終了する。
【０１５４】
Ｄ型アークの定義から、ソースをＤ型アークの出発ノードとすることはできない。ソースの実行インデックスより優先する実行インデックスをもつ核ノードは存在しないからである。もしもこのように接続した場合、該Ｄ型アークはＡ型アークと見なされる。
【０１５５】
グラフプログラムを通してシミュレーションを実行する場合の仮想アプリケーション（ＣＳＢ１）を概念的に説明する。
【０１５６】
ＣＳＢ１はグラフィカルユーザーインタフェースを通してグラフプログラミングとその編集を行うことができる。その際、各ノードの固有インデックスから実行インデックスへの変換を行いながら試行実験を通してプログラム編集ができるようになっている。
【０１５７】
演算ノード、伝達アークはそれぞれプログラミングを通して固有の属性、関連、メソッドが与えられ、ノードオブジェクト型、アークオブジェクト型の集合としてまとめられる。
【０１５８】
演算ノードの代数演算機能、伝達アークの変換機能はメソッドに属する。
【０１５９】
演算セルは演算ノードと伝達アークから構成される構造体であるが、これはアークおよびノードそれぞれの“関連”を通したインデックスの階層構造によってオブジェクト化される。
【０１６０】
メニューとして用意されている伝達アーク（すでに説明したアークの中では例えば、ＴＲ積分アーク、ＮＷ積分アーク、跳躍起因アークなど）のメソッドは、ソフトウエア上は命令語（例えば、Visual BasicやC言語）で記述される。積分アーク（ソフトウエア積分器）についてこれまで拡張シグナルフローグラフ（図１４あるいは図１６）の形で説明したが、直接これをグラフプログラムとしてプログラミングすることも可能である。実際上は言語化されている。これについて以下説明する。
【０１６１】
［跳躍起因アーク］
跳躍起因アークにおけるイベント発生から補正項組み込みまでの処理は次のように行われる。全てのＴＲ積分器に対して共通に跳躍点発生ステップレジスタexjが、また全てのＮＷ積分器に対して共通に跳躍点発生ステップレジスタexjjが用意されている。
【０１６２】
いま、跳躍起因アークが活性化して信号伝達するときに跳躍が発生した場合、レジスタexjにその時の計算ステップカウンタexnnの値ｊを、またレジスタexjjにはj+1を代入することで、図１４（ａ）および（ｂ）に示すようにサンプラを働かせて補正項を組み込むことが出来る。
【０１６３】
上記ステップカウンタexnnから上記レジスタexjおよびexjjへの値の移行手続きを、不感帯付きオンオフアークを例にして中間言語で表現すると図１７のようになる。ただし、オンオフ特性は出力については０から±１、不感帯幅については入力０から±ｈの 点対称とする。
【０１６４】
［ＴＲ積分器］
図１４（ａ）を図１８（ａ）のように変数の文字記号を改めて割り当て、これを参照し、用いながら中間言語表現を行うと図１８（ｂ）のように記述できる。
【０１６５】
［ＮＷ積分器］
ＴＲ積分器の場合と同様、図１６に基づき図１９（a）の変数文字記号の割り当てを行い同図（ｂ）のように中間言語表現が得られる。
【０１６６】
なお、図１８（ａ）、図１９（ａ）の中のＴはサンプリング周期であるが、実際には用いられるシミュレーションツールでの計算ステップ周期で例えば10ms等に固定してある。
【符号の説明】
【０１６７】
１…演算システム構築部、２…ソースデータ記憶部、３…入力部、４…表示部、５…出力部、１１…プログラムデータライブラリ、１２…グラフプログラム作成・編集部、１３…ＧＵＩ生成分、１４…プログラム実行部、２１…Ａｔｒ演算部、２２…Ｂｔｒ演算部、２３，３３…積分値補正用加算器、３１…Ａｎｗ演算部、３２…Ｂｎｗ演算部、２４，３４…累積部、４１，４２…信号伝達経路。
【図１】
0005439696.tif 000040
【図２】
0005439696.tif 000041
【図３】
0005439696.tif 000042
【図４】
0005439696.tif 000043
【図５】
0005439696.tif 000044
【図６】
0005439696.tif 000045
【図７】
0005439696.tif 000046
【図８】
0005439696.tif 000047
【図９】
0005439696.tif 000048
【図１０】
0005439696.tif 000049
【図１１】
0005439696.tif 000050
【図１２】
0005439696.tif 000051
【図１３】
0005439696.tif 000052
【図１４】
0005439696.tif 000053
【図１５】
0005439696.tif 000054
【図１６】
0005439696.tif 000055
【図１７】
0005439696.tif 000056
【図１８】
0005439696.tif 000057
【図１９】
0005439696.tif 000058