(57)【要約】【課題】従来よりも少ない処理負荷で、制御対象を制御できるようにする。【解決手段】制御プログラムを生成するに際しては、まず採用する伝達関数を、部分分数分解して、当該伝達関数を、分解前における伝達関数を構成する分母の次数よりも、小さい次数の分母で表される分数式（部分分数）の和に変換する（Ｓ１１０）。そして、伝達関数を構成する部分分数の内、ゲインの小さい部分分数を、演算周期を長くする部分分数に決定する（Ｓ１３０）。また、演算周期を長くする部分分数の係数を、新たに設定する演算周期に合わせて修正する（Ｓ１５０）。そして、演算周期に合わせて各部分分数に対応する演算プログラムを設計し、これらの演算プログラムを組み合わせて、制御対象を制御するための制御プログラムを生成する（Ｓ１７０）。【選択図】図２
2009110376.tif 000002
【特許請求の範囲】
【請求項１】
分数式で表現可能な離散時間系の伝達関数を用いて、制御対象を制御するディジタル制御器の設計方法であって、
前記伝達関数を分解して、当該伝達関数を、分解前における前記伝達関数を構成する分母の次数よりも、小さい次数の分母で表される分数式（以下、「部分分数」と表現する。）の和、に変換する手順（ａ）と、
前記手順（ａ）による分解後の前記伝達関数を構成する各部分分数に対応する演算器を設計する手順（ｂ）と、
前記手順（ｂ）にて設計された演算器を組み合わせて、前記制御対象を制御するディジタル制御器を設計する手順（ｃ）と、
を含み、
前記手順（ｂ）では、前記伝達関数を構成する複数の部分分数の内、一部の部分分数に対応する演算器の演算周期を、他の部分分数に対応する演算器の演算周期よりも長く設定して、前記各部分分数に対応する演算器を設計する
ことを特徴とするディジタル制御器の設計方法。
【請求項２】
前記手順（ｂ）では、前記伝達関数を構成する各部分分数の周波数応答に基づき、演算器の演算周期を、前記他の部分分数に対応する演算器の演算周期よりも長く設定する部分分数を決定する
ことを特徴とする請求項１記載のディジタル制御器の設計方法。
【請求項３】
前記手順（ｂ）では、前記伝達関数を構成する各部分分数の周波数応答として、前記各部分分数の所定周波数帯域のゲイン特性に基づき、ゲインの小さい部分分数から優先的に、前記演算器の演算周期を、前記他の部分分数の演算周期よりも長く設定する部分分数に決定する
ことを特徴とする請求項２記載のディジタル制御器の設計方法。
【請求項４】
分数式で表現可能な離散時間系の伝達関数を用いて、制御対象を制御するディジタル制御器であって、
前記伝達関数を、当該伝達関数の分母の次数よりも、小さい次数の分母で表される分数式（以下、「部分分数」と表現する。）の和、に変換して得られる各部分分数毎に、当該部分分数に対応する演算を行う演算器を備えると共に、
前記各演算器から演算結果として出力される値の和を、前記伝達関数の出力として算出する出力器を備え、
前記複数の演算器の内、一部の演算器は、他の前記演算器及び前記出力器よりも低周期で、演算を行う構成にされていることを特徴とするディジタル制御器。
【請求項５】
請求項４記載のディジタル制御器としての機能を、コンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル制御器の設計方法及びディジタル制御器に関する。
【背景技術】
【０００２】
従来、制御対象を制御する方法としては、制御対象に対する操作量と制御量（制御出力）との関係から、入力値（例えば、ユーザ指令値や制御量と目標値との誤差量）に対する操作量を算出するための伝達関数を導出し、この伝達関数に対応する制御器を設計して、制御対象を制御する方法が知られている（例えば、特許文献１参照）。
【０００３】
また、ディジタル制御器の設計方法としては、制御すべきアナログの制御対象に対し、入力値に対応する操作量を算出するための連続時間系の伝達関数Ｗ（ｓ）を導出し、これを入力値のサンプリング周期Ｔを考慮して、離散時間系の伝達関数Ｗ（ｚ）に置換し、ディジタル制御器を設計する方法が知られている。
【０００４】
この他、従来技術としては、ディジタル制御器として、入力値に対する操作量を算出するための演算手順を記述した制御プログラムを設計し、これをマイクロコンピュータ（以下、「マイコン」と称する。）に搭載することで、ディジタル制御器をソフトウェア的に実現する方法が知られている。このようにして、マイコンに制御プログラムを実装する場合には、マイコンの処理負荷が小さくなるよう演算手順を工夫することが行われている。
【０００５】
例えば、伝達関数Ｗ（ｚ）が、遅延演算子ｚを変数とする２次以上の多項式で表される分母を有する分数式で表される場合には、伝達関数Ｗ（ｚ）を部分分数分解して、当該伝達関数Ｗ（ｚ）を、部分分数分解前における伝達関数の分母の次数よりも、小さい次数の分母で表される分数式（以下、「部分分数」と表現する。）の和に変換する。そして、各部分分数に対応する演算プログラムを設計し、これらの演算プログラムを組み合わせて、制御対象に対応する制御プログラムを生成し、これをマイコンに搭載する。
【０００６】
例えば、入力値Ｘに対する出力値Ｙを、伝達関数Ｗ（ｚ）を用いて式
【０００７】
【数１】
2009110376.tif 000003
で算出するプログラムを、制御プログラムとしてマイコンに搭載する場合には、図８（ａ）に示す手順で値Ｙ（例えば、操作量）を算出するように、プログラムを設計すると、四則演算動作を７回、前回値保持動作を３回行わなければならないことになる。
【０００８】
従って、四則演算動作に１．０ミリ秒、前回値保持動作に０．５ミリ秒を要する場合には、入力値Ｘから出力値Ｙを算出するのに、１．０×７＋０．５×３＝８．５ミリ秒を要することになる。尚、図８（ａ）及び図８（ｂ）の夫々は、式（１）に対応する演算手順の例を示したブロック線図である。
【０００９】
一方、伝達関数Ｗ（ｚ）を、次のように、部分分数分解し、
【００１０】
【数２】
2009110376.tif 000004
部分分数分解後の伝達関数Ｗ（ｚ）を構成する各部分分数に対応する演算プログラムを設計し、これらの演算プログラムを組み合わせて、制御プログラムを生成し、これををマイコンに搭載する場合には、図８（ｂ）に示すように、前回値保持動作が２回に減るため、結果として、入力値Ｘから出力値Ｙを算出する動作を、１．０×７＋０．５×２＝８．０ミリ秒で実現できる。
【００１１】
このように、伝達関数Ｗ（ｚ）に対応する演算をマイコンに実現させる場合には、その演算手順を工夫することで、マイコンの処理負荷を低減することができる。
【特許文献１】特開２００２−２２９６０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来の処理負荷低減方法では、動作をいくつか省略できる程度で、マイコンの処理負荷をさほど大きく低減できないため、安価なマイコンを用いて、低コストに制御システムを構築するにも、一定度の限界があった。
【００１３】
本発明は、こうした問題に鑑みなされたものであり、従来よりも少ない処理負荷で、制御対象を制御可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
かかる目的を達成するためになされた請求項１記載の発明は、分数式で表現可能な離散時間系の伝達関数を用いて、制御対象に対する操作量を算出し、制御対象をディジタル制御するディジタル制御器の設計方法であり、次の手順にてディジタル制御器を設計するものである。
【００１５】
まず、上記伝達関数を分解して、当該伝達関数を、分解前における伝達関数の分母の次数よりも、小さい次数の分母で表される分数式（以下、「部分分数」と表現する。）の和、に変換する（手順（ａ））。
【００１６】
伝達関数Ｗ（ｚ）を部分分数の和に分解（部分分数分解）する場合には、例えば、式（１）に示す伝達関数Ｗ（ｚ）を式（２）に示すように分解する。
そして、分解後の伝達関数を構成する各部分分数に対応する演算器を設計する（手順（ｂ））。この際には、伝達関数を構成する部分分数の内、一部の部分分数に対応する演算器の演算周期を、他の部分分数に対応する演算器の演算周期よりも長く設定して、各部分分数に対応する演算器を設計する。
【００１７】
また、これらの演算器を組み合わせて、制御対象を制御するディジタル制御器を設計する（手順（ｃ））。
従来技術としては、伝達関数を部分分数分解して演算器を設計し、これらの演算器を組み合わせて、制御対象を制御する制御器を設計する方法が知られているが、従来では、各演算器での演算周期を一律にしていたので、上述したように、前回値保持動作などを低減できる程度で、大幅に処理負荷を低減することができなかった。
【００１８】
これに対し、本発明では、一部の演算器の演算周期を、他の部分制御周期の演算周期よりも低く設定する。従って、本発明によれば、単位時間当たりの演算回数を、従来と比較して、大きく減らすことができる。
【００１９】
例えば、図８（ａ）に示すブロックＢ１００に対応する演算を、周期Ｔ０で、マイコンに実行させると、制御目的を達成することができる場合を考える。この場合に、図８（ｂ）に示す各ブロックＢ１０１，Ｂ１０２，Ｂ１０３に対応する演算を、マイコンに実行させれば、ブロックＢ１００と等価な演算を、マイコンに実行させることができると共に、前回値記憶保持動作を、１サイクル当たり、１回減らすことができる。
【００２０】
ここまでの技術は、従来知られた技術である。但し、従来技術では、全てのブロックＢ１０１，Ｂ１０２，Ｂ１０３の演算を、周期Ｔ０でマイコンに実行させる。
一方、本発明では、設計時に、ブロックＢ１０１，ブロックＢ１０２のいずれか一方のブロックに対応する演算処理の実行周期を、周期Ｔ０より長い周期Ｔ１に設定する。例えば、いずれか一方のブロックの実行周期Ｔ１を、周期Ｔ０の整数Ａ倍（但しＡ＞１）に設定する（Ｔ１＝Ａ・Ｔ０）。
【００２１】
従来技術では、全てのブロックＢ１０１，Ｂ１０２，Ｂ１０３の演算を、周期Ｔ０で実行するので、時間Ｔ１当たりに、各ブロックの演算をＡ回実行しなければならないが、上記方法では、実行周期Ｔ１としたブロックの演算回数を時間Ｔ１当たり１回に減少させることができるので、このブロックの演算回数を（Ａ−１）回分減らすことができる。
【００２２】
従って、本発明によれば、制御器をプログラムとして設計し、これをマイコンに実装して、制御を実現する場合に、操作量算出に係るマイコンの処理負荷を大幅に低減することができて、安価なマイコンを用いて、制御システムを構築することができるのである。
【００２３】
尚、この方法は、ディジタル制御器を構成する演算器の全てが、ディジタル制御器全体の特性に大きく寄与するものではなく、各演算器の寄与度が異なることを利用したものである。即ち、寄与度の低い演算器の演算周期を低くしても、ディジタル制御器の性能は、それによって大きく低下することはない。従って、本発明によれば、一部の演算器の演算周期を低くしても、制御目的を十分に達成することができて、安価に制御システムを構築することができるのである。
【００２４】
具体的に、上記ディジタル制御器の設計に当たっては、伝達関数を構成する各部分分数の周波数応答に基づいて、演算器の演算周期を、他の部分分数に対応する演算器の演算周期よりも長く設定する部分分数を決定すればよい（請求項２）。
【００２５】
例えば、伝達関数を構成する各部分分数の所定周波数帯域のゲイン特性に基づき、ゲインの小さい部分分数に対応する演算器から優先的に、演算器の演算周期を、他の部分分数の演算周期よりも長く設定する部分分数に決定すればよい（請求項３）。
【００２６】
ゲインの小さい部分分数については、対応する演算器の演算周期を長くしても、それがディジタル制御器全体の出力に及ぼす影響は小さいので、このように演算周期を長くする部分分数を決定すれば、効率的に制御に係る処理負荷を低減することができる。
【００２７】
特に、ゲインがピークとなる共振周波数の周辺帯域のゲイン特性に基づき、演算器の演算周期を、他の部分分数に対応する演算器の演算周期よりも長く設定する部分分数を決定すれば、一層、良好に制御に係る処理負荷を低減することができる。
【００２８】
尚、請求項４記載のディジタル制御器は、上述の思想を適用したディジタル制御器の発明である。このディジタル制御器は、分数式で表現可能な離散時間系の伝達関数を用いて、制御対象を制御するディジタル制御器であって、伝達関数を、当該伝達関数の分母の次数よりも、小さい次数の分母で表される分数式（部分分数）の和、に変換して得られる各部分分数毎に、当該部分分数に対応する演算を行う演算器を備えると共に、各演算器から演算結果として出力される値の和を、伝達関数の出力として算出する出力器を備え、複数の演算器の内、一部の演算器が、他の演算器及び出力器よりも低周期で、演算を行う構成にされたものである。従って、このディジタル制御器の構成によれば、少ない負荷で制御対象を制御することができる。
【００２９】
また、このディジタル制御器としての機能は、プログラムによりコンピュータに実現させることができる（請求項５）。このプログラムをマイコンに搭載してディジタル制御器を構成すれば、従来よりもマイコンの処理負荷を低減でき、安価なマイコンを用いて、制御目的を達成することができる。
【発明を実施するための最良の形態】
【００３０】
以下に本発明の実施例について、図面と共に説明する。
図１は、本発明が適用された制御システム１の構成を表す説明図である。図１に示す制御システム１は、制御対象１０と、センサ２０と、マイコン３０と、からなり、センサ２０からの入力に基づき、マイコン３０にて操作量Ｕを算出し、当該操作量Ｕに対応した制御信号を制御対象１０に入力することにより、制御対象１０を、ディジタル制御するものである。
【００３１】
この制御システム１を、車両制御システムに適用する場合には、例えば、運転者の車両操作を検知するセンサ（ステアリングセンサ等）を、センサ２０に用いて、運転者の操作に合わせ、車両制御することになる。
【００３２】
マイコン３０は、センサ２０及び制御対象１０に接続される入出力回路３７と、各種演算処理を実行するＣＰＵ３１と、制御プログラム等を記憶するフラッシュメモリ３３と、プログラム実行時に作業領域として使用されるＲＡＭ３５と、を備え、フラッシュメモリ３３に記憶された制御プログラムを、ＣＰＵ３１にて実行することにより、制御対象１０を制御する。
【００３３】
ここで、センサ２０からの入力値Ｘに基づき、次の伝達関数Ｗ（ｚ）
【００３４】
【数３】
2009110376.tif 000005
に従って、値Ｙを算出し、この値Ｙを、操作量Ｕ＝Ｙとして、制御対象１０を制御する制御システム１を考える。但し、伝達関数Ｗ（ｚ）は、離散時間系の伝達関数であり、変数ｚは、遅延演算子を表すものとする。
【００３５】
この場合、本実施例では、次のようにして制御プログラムを設計し、この制御プログラムを、フラッシュメモリ３３に登録して、マイコン３０を、制御対象１０に対応するディジタル制御器として機能させる。これにより、式（３）に示す伝達関数Ｗ（ｚ）を用いて、制御対象１０に対する操作量Ｕを算出し、制御対象１０を制御する制御システム１を実現する。
【００３６】
図２は、本実施例における制御プログラム（ディジタル制御器）の設計手順を示したフローチャートである。
まず、本実施例では、操作量Ｕ＝Ｙの演算周期Ｔを、制御目的を達成可能な範囲で、最大の演算周期Ｔ０に決定し、演算周期Ｔ０に合わせて、伝達関数Ｗ（ｚ）の係数（ａ1，ａ2，ａ3，ａ4，ａ5，ｂ1，ｂ2，ｂ3，ｂ4，ｂ5）を決定する。例えば、演算周期Ｔ０＝１／１２５０＝０．０００８（秒）に設定し、伝達関数Ｗ（ｚ）を、次のように設定する。
【００３７】
【数４】
2009110376.tif 000006
続いて、制御システム１に採用する、伝達関数Ｗ（ｚ）を部分分数分解し、伝達関数Ｗ（ｚ）を、分解前における伝達関数の分母の次数よりも、小さい次数の分母で表される分数式（部分分数）の和に変換する（Ｓ１１０）。式（５）は、式（４）に示す伝達関数Ｗ（ｚ）を部分分数分解したときの、当該部分分数分解後の伝達関数Ｗ（ｚ）を表す。
【００３８】
【数５】
2009110376.tif 000007
部分分数分解に際しては、基本的に、部分分数の分母が変数ｚの１次式となるようにするが、分母に虚数が現れる場合には、分母が複素共役の関係にある部分分数をまとめ、分母に虚数が現れないようにする。尚、本実施例では、Ｓ１１０における部分分数分解後の伝達関数Ｗ（ｚ）を構成する、第ｋ（ｋ＝１，２，…，Ｋ）番目の部分分数を、特に部分分数Ｗｐ［ｋ］と表現する。但し、値Ｋは、部分分数分解後の部分分数の総数を表す。
【００３９】
このようにして、伝達関数Ｗ（ｚ）を部分分数分解した後には、部分分数分解後の伝達関数Ｗ（ｚ）を構成する部分分数Ｗｐ［ｋ］（ｋ＝１，２，…，Ｋ）の内、演算周期Ｔを、予め設定した演算周期Ｔ０よりも長くする部分分数を決定する。
【００４０】
具体的には、まず、部分分数分解前の伝達関数Ｗ（ｚ）の周波数応答から、演算周期Ｔを長くする部分分数を決定する際に検討すべき周波数帯域（以下、「検討帯域」という。）を決定する（Ｓ１２０）。
【００４１】
図３は、式（４）に示す伝達関数Ｗ（ｚ）の周波数応答として、縦軸をゲイン（即ち、伝達関数Ｗ（ｚ）の入出力比）、横軸を周波数とした伝達関数Ｗ（ｚ）のゲイン特性、及び、縦軸を位相遅れ、横軸を周波数とした伝達関数Ｗ（ｚ）の位相特性を表すボード（Ｂｏｄｅ）線図である。
【００４２】
本実施例では、周波数応答が特徴的な周波数帯域を、検討帯域に決定する。具体的には、共振周波数を基準として、その前後の周波数帯域を、検討帯域に決定する。図３に示すボード線図の例では、共振周波数を含む帯域２０［Ｈｚ］〜２００［Ｈｚ］を、検討帯域に設定する。
【００４３】
次に、各部分分数Ｗｐ［ｋ］（ｋ＝１，２，…，Ｋ）の検討帯域内の周波数応答に基づき、演算周期Ｔを長くする部分分数を決定する（Ｓ１３０）。即ち、当該ステップでは、まず、各部分分数Ｗｐ［ｋ］（ｋ＝１，２，…，Ｋ）の周波数応答を導出する。
【００４４】
式（４）に示す伝達関数Ｗ（ｚ）を用いる場合には、その部分分数である各関数Ｗ１，Ｗ２，関数Ｗ３の周波数応答を導出する。但し、ここでは、式（５）における第１番目の部分分数を関数Ｗ１、第２番目の部分分数を関数Ｗ２、第３番目の部分分数を関数Ｗ３と表現する。図４は、これら各関数Ｗ１，Ｗ２，Ｗ３の周波数応答（ゲイン特性及び位相特性）を表すボード線図である。
【００４５】
【数６】
2009110376.tif 000008
そして、導出した各部分分数Ｗｐ［ｋ］（ｋ＝１，２，…，Ｋ）の周波数応答から、検討帯域内で、ゲインが最大値を採る部分分数よりも、常に、ゲインが小さい部分分数を、演算周期を長くする部分分数に決定する。
【００４６】
以下では、部分分数Ｗｐ［ｋ］（ｋ＝１，２，…，Ｋ）の内、演算周期Ｔを長くする部分分数に決定した部分分数を、特に部分分数Ｗｑ［ｍ］（ｍ＝１，２，…，Ｍ）と表現する。但し、値Ｍは、演算周期を長くする部分分数に決定した部分分数の個数を表す。また、部分分数Ｗｐ［ｋ］（ｋ＝１，２，…，Ｋ）の内、演算周期を長くする部分分数に決定した部分分数以外の部分分数を、特に部分分数Ｗｒ［ｎ］（ｎ＝１，２，…，Ｎ＝Ｋ−Ｍ）と表現する。
【００４７】
図４に示す例では、縦軸をゲイン（各関数Ｗ１，Ｗ２，Ｗ３の入出力比）、横軸を周波数とした各関数Ｗ１，Ｗ２，Ｗ３のゲイン特性を表すグラフから、検討帯域（２０［Ｈｚ］〜２００［Ｈｚ］）内で、ゲインが最大値を採る関数Ｗ１より、常にゲインが小さい関数Ｗ２，Ｗ３を、演算周期Ｔを長くする部分分数Ｗｑ［１］，Ｗｑ［２］に決定し、関数Ｗ１を、演算周期Ｔを長くしない部分分数Ｗｒ［１］に決定する。
【００４８】
一方、各関数Ｗ１，Ｗ２，Ｗ３の周波数特性が、仮に図５に示すようになる場合には、検討帯域内で、ゲインが最大値を採る関数Ｗ１より、当該検討帯域内で常にゲインが小さい関数Ｗ２を、演算周期Ｔを長くする部分分数Ｗｑ［１］に決定し、関数Ｗ１及び検討帯域内でゲインが最大値を採る関数Ｗ１より大きくなる領域がある関数Ｗ３を、演算周期Ｔを長くしない部分分数Ｗｒ［１］，Ｗｒ［２］に決定する。
【００４９】
このようにして、演算周期Ｔを長くする部分分数を決定した後には、演算周期Ｔを長くすると決定した各部分分数Ｗｑ［ｍ］（ｍ＝１，２，…，Ｍ）に対し、新たに設定する演算周期Ｔの候補を設定する（Ｓ１４０）。
【００５０】
具体的には、演算周期Ｔの候補として、部分分数分解前の伝達関数Ｗ（ｚ）に設定した演算周期Ｔ０の整数倍の周期Ｔ［ｊ］＝（ｊ＋１）・Ｔ０（ｊ＝１，２，…，Ｊ）を設定する。例えば、部分分数分解前の伝達関数Ｗ（ｚ）に設定した演算周期Ｔ０が、Ｔ０＝１／１２５０＝０．０００８（秒）である場合には、Ｔ［ｊ］＝（ｊ＋１）／１２５０（ｊ＝１，２，…，Ｊ）を、演算周期の候補に設定する。
【００５１】
但し、値Ｊは、候補として設定する周期の個数を表す。値Ｊについては、例えば、演算周期Ｔ［ｊ］の逆数（１／Ｔ［ｊ］）が、伝達関数Ｗ（ｚ）の共振周波数の約５倍を下回らないように設定する。
【００５２】
この後には、演算周期を長くすると決定した部分分数Ｗｑ［ｍ］（ｍ＝１，２，…，Ｍ）毎に、当該部分分数を構成する係数の値を、演算周期の候補Ｔ［ｊ］に合わせて修正し、演算周期Ｔ［ｊ］に適合する部分分数を導出する。即ち、各部分分数Ｗｑ［ｍ］（ｍ＝１，２，…，Ｍ）について、演算周期の候補Ｔ［ｊ］（ｊ＝１，２，…，Ｊ）毎に、周期Ｔ［ｊ］に適合する部分分数を導出する（Ｓ１５０）。
【００５３】
尚、係数の修正は、離散時間系の上記部分分数を、連続時間系の部分分数（伝達関数）に変換し、連続時間系の部分分数を、演算周期Ｔ［ｊ］（所謂サンプリング周期）に適合する離散時間系の部分分数（伝達関数）に再変換することで行うことができる。以下では、このようにして、演算周期Ｔ０で設計された部分分数Ｗｑ［ｍ］の係数を修正して、部分分数Ｗｑ［ｍ］を、演算周期Ｔ［ｊ］に適合する部分分数に変換した場合の、当該変換後の部分分数を、特に部分分数Ｗｑ［ｍ，ｊ］と表現する。
【００５４】
例えば、演算周期１／１２５０で設計された式（６ｂ）に示す関数Ｗ２を、演算周期１／６２５に対応する部分分数に変換すると、次のようになる。
【００５５】
【数７】
2009110376.tif 000009
同様に、演算周期１／１２５０で設計された式（６ｃ）に示す関数Ｗ３を、演算周期１／６２５に対応する部分分数に変換すると、次のようになる。
【００５６】
【数８】
2009110376.tif 000010
この後には、各部分分数Ｗｑ［ｍ］（ｍ＝１，２，…，Ｍ）について、各演算周期Ｔ［ｊ］に対応した（Ｊ＋１）個の部分分数Ｗｑ［ｍ，ｊ］（ｊ＝０，１，２，…，Ｊ）の内の一つを、評価対象の部分分数として選択し（Ｓ１６０）、選択した評価対象の部分分数を用いて、評価対象の制御プログラムを生成する（Ｓ１７０）。但し、Ｔ［ｊ＝０］は、演算周期Ｔ０であり、Ｗｑ［ｍ，０］は、演算周期Ｔ０の部分分数Ｗｑ［ｍ］であるものとする。
【００５７】
図６は、生成する制御プログラムの構成を、ブロック線図の形態で表した説明図である。具体的に、Ｓ１７０では、「演算周期Ｔ０で繰返し、入力値Ｘをサンプリングして、このサンプリング値に基づき、式Ｙｒ［ｎ］＝Ｗｒ［ｎ］・Ｘに従い、出力値Ｙｒ［ｎ］を算出する処理」を、ＣＰＵ３１に実行させるための演算プログラムＰｒ１を、部分分数Ｗｒ［ｎ］（ｎ＝１，２，…，Ｎ）毎に設計すると共に、「演算周期Ｔ［ｊ］で繰返し、入力値Ｘをサンプリングして、このサンプリング値に基づき、式Ｙｑ［ｍ，ｊ］＝Ｗｑ［ｍ，ｊ］・Ｘに従い、出力値Ｙｑ［ｍ，ｊ］を算出する処理」を、ＣＰＵ３１に実行させるための演算プログラムＰｒ２を、部分分数Ｗｑ［ｍ，ｊ］（ｍ＝１，２，…，Ｍ）毎に設計する。
【００５８】
更に、「演算周期Ｔ０で、演算プログラムＰｒ１による演算結果としてのＮ個の出力値Ｙｒ［ｎ］（ｎ＝１，２，…，Ｎ）と、演算プログラムＰｒ２による演算結果としてのＭ個の出力値Ｙｑ［ｍ，ｊ］（ｍ＝１，２，…，Ｍ）と、を加算して、この加算値Ｙを、操作量Ｕとして出力する処理」を、ＣＰＵ３１に実行させるための演算プログラムＰｒ３を設計する。そして、これらの演算プログラムＰｒ１，Ｐｒ２，Ｐｒ３を組み合わせて、制御プログラムを生成する。
【００５９】
この後、当該制御プログラムを、マイコン３０のフラッシュメモリ３３に登録し、この制御プログラムを、ＣＰＵ３１に実行させることにより、制御プログラムの定量評価を行う（Ｓ１８０）。
【００６０】
ここでは、定量評価として、Ｓ１７０で生成した制御プログラムをＣＰＵ３１に実行させて、入力値Ｘに対する制御量（制御出力）のデータを、採りえる入力値Ｘの範囲について取得し、取得したデータから当該制御プログラムが制御目的を達成しているか否かを判定する。
【００６１】
例えば、制御システム１が、車両制御システムであって、運転者の操舵操作に対する車両ヨー速度の応答性を、５％向上させるためのシステムである場合には、定量評価として、Ｓ１７０で生成した制御プログラムをＣＰＵ３１に実行させて、操舵入力Ｘに対する制御量（車両ヨー速度）のデータを取得し、車両ヨー速度の応答性が５％向上しているか否かを判定する。
【００６２】
また、定量評価にて、制御目的が達成されていると判定された場合には（Ｓ１８５でＹｅｓ）、必要に応じて、制御プログラムの定性評価を行う（Ｓ１９０）。例えば、制御システム１が、車両制御システムであって、運転者の操舵操作に対する車両ヨー速度の応答性を、５％を向上させるためのシステムである場合には、定性評価として、評価ドライバを複数人用意し、定性的に車両ヨー速度の応答性が向上していること、及び、車両運動に悪影響を与えていないことを官能評価する。そして、評価結果を、例えば、満点を１００として、点数化する。尚、このような、制御プログラムの定性評価は、省略してもかまわない。
【００６３】
そして、これらの処理を終えると、再度、評価が未完了の部分分数の組み合わせを選択し（Ｓ１６０）、この組み合わせで、制御プログラムを生成する（Ｓ１７０）。その後、この制御プログラムについて、Ｓ１８０で定量評価を行い、Ｓ１９０で、必要に応じて定性評価を行う。即ち、全ての組み合わせについて、評価を行うまで（Ｓ２００でＮｏ）、Ｓ１６０〜Ｓ１９０の処理を繰返し実行する。換言すれば、（（Ｊ＋１）M−１）回、Ｓ１６０〜Ｓ１９０の処理を繰返し実行する。
【００６４】
例えば、図４に示す例では、関数Ｗ１を、演算周期を長くしない部分分数Ｗｒ［１］に決定し、関数Ｗ２を演算周期を長くする部分分数Ｗｑ［１］に決定し、関数Ｗ３を演算周期を長くする部分分数Ｗｑ［２］に決定するが、この場合に、演算周期Ｔの候補として、２つの候補Ｔ［１］，Ｔ［２］を設定したときには、部分分数の組み合わせとして、｛Ｗｒ［１］，Ｗｑ［１，０］，Ｗｑ［２，１］｝｛Ｗｒ［１］，Ｗｑ［１，０］，Ｗｑ［２，２］｝｛Ｗｒ［１］，Ｗｑ［１，１］，Ｗｑ［２，０］｝｛Ｗｒ［１］，Ｗｑ［１，１］，Ｗｑ［２，１］｝｛Ｗｒ［１］，Ｗｑ［１，１］，Ｗｑ［２，２］｝｛Ｗｒ［１］，Ｗｑ［１，２］，Ｗｑ［２，０］｝｛Ｗｒ［１］，Ｗｑ［１，２］，Ｗｑ［２，１］｝｛Ｗｒ［１］，Ｗｑ［１，２］，Ｗｑ［２，２］｝の組み合わせが考えられる。
【００６５】
従って、この場合には、これら計８つの各組合せについて、対応する演算をＣＰＵ３１に実行させるための制御プログラムを生成し、これを、Ｓ１７０〜Ｓ１９０で定量評価及び定性評価する。
【００６６】
同様に、変更する演算周期Ｔの候補として、周期Ｔ［１］のみを設定したときには、部分分数の組み合わせとして、｛Ｗｒ［１］，Ｗｑ［１，０］，Ｗｑ［２，１］｝｛Ｗｒ［１］，Ｗｑ［１，１］，Ｗｑ［２，０］｝｛Ｗｒ［１］，Ｗｑ［１，１］，Ｗｑ［２，１］｝の組み合わせが考えられる。
【００６７】
従って、この場合には、これら計３つの各組合せについて、対応する演算をＣＰＵ３１に実行させるための制御プログラムを生成し、これを、Ｓ１７０〜Ｓ１９０で定量評価及び定性評価する。尚、図７は、変更する演算周期Ｔの候補として、周期Ｔ［１］のみを設定したときに、評価すべき制御プログラムのパターンを、ブロック線図で表した説明図である。
【００６８】
そして、全ての組み合わせについて評価が終了した場合には（Ｓ２００でＹｅｓ）、評価した制御プログラムであって、制御目的が達成されていると判定された制御プログラム群の中から、マイコン３０の処理負荷が最も低い制御プログラムを、マイコン３０に実装する制御プログラムに決定する（Ｓ２１０）。
【００６９】
尚、制御プログラムの処理負荷は、具体的に、次のようにして算出することができる。即ち、四則演算動作に要する処理時間がＴＭ１であり、前回値保持動作に要する処理時間がＴＭ２である場合に、制御プログラムで、所定時間内に実行される四則演算動作の平均実行回数がＡＮ１、前回値保持動作の平均実行回数がＡＮ２である場合には、処理負荷値Ｌとして、Ｌ＝ＴＭ１・ＡＮ１＋ＴＭ２・ＡＮ２を算出する。そして、この処理負荷値Ｌが一番小さい制御プログラムを、マイコン３０に実装する制御プログラムに決定する。
【００７０】
そして、上記決定した制御プログラムをフラッシュメモリ３３に登録し、マイコン３０を、ディジタル制御器として完成させ、制御システム１を完成させる（Ｓ２２０）。
尚、定性評価を行っている場合には、制御目的が達成されていると判定された制御プログラムであって、定性評価での評価点が閾値を超える高評価の制御プログラム群の中から、マイコン３０の処理負荷が最も低い制御プログラムを、マイコン３０に実装する制御プログラムに決定すればよい。
【００７１】
以上、本発明の実施例について説明したが、本実施例では、伝達関数Ｗ（ｚ）を、複数の部分分数（演算単位）に分解し、各部分分数に対応する演算器（演算プログラム）の実行周期を、各部分分数のゲイン特性に応じて変更するようにした。具体的には、ゲインの小さい部分分数の演算周期を長く設定して、マイコン３０の処理負荷を抑えるようにした。
【００７２】
従って、本実施例の手法にて、制御プログラムを設計（生成）し、これをマイコン３０に搭載して、制御システム１を構築すれば、安価なマイコン３０を用いて、制御目的を達成する制御システム１を構成することができ、結果として、当該制御システム１を、安価に消費者に提供することができる。
【００７３】
尚、本発明のディジタル制御器が備える演算器としての機能は、本実施例において、ＣＰＵ３１が実行する演算プログラムＰｒ１，Ｐｒ２により実現される。また、本発明のディジタル制御器が備える出力器としての機能は、本実施例において、ＣＰＵ３１が実行する演算プログラムＰｒ３により実現される。
【００７４】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。
例えば、上記実施例では、演算周期Ｔを長くすると決定した各部分分数Ｗｑ［ｍ］についても、演算周期を長くしない場合Ｗｑ［ｍ，０］の制御プログラムを評価して、最終的に好適な制御プログラムを、マイコン３０に実装する制御プログラムとして決定するようにしたが、演算周期を長くしない場合Ｗｑ［ｍ，０］については、評価対象とせずに、Ｓ１６０〜Ｓ２００の処理を実行して、マイコン３０に実装する制御プログラムを決定するようにしてもよい。また、演算周期を長くする部分分数の個数を所定個に制限する場合には、ゲインの小さい部分分数から所定個の部分分数を、演算周期を長くする部分分数に決定すればよい。
【図面の簡単な説明】
【００７５】
【図１】本発明を適用した制御システム１の構成を表すブロック図である。
【図２】制御プログラムの設計手順を表すフローチャートである。
【図３】検討帯域の設定方法に関する説明図である。
【図４】部分分数の周波数応答の例を表す説明図である。
【図５】部分分数の周波数応答の例を表す説明図である。
【図６】生成する制御プログラムの構成を表すブロック線図である。
【図７】生成する制御プログラムの構成を表すブロック線図である。
【図８】ディジタル制御器の設計方法に関する説明図である。
【符号の説明】
【００７６】
１…制御システム、１０…制御対象、２０…センサ、３０…マイコン、３１…ＣＰＵ、３３…フラッシュメモリ、３５…ＲＡＭ、３７…入出力回路
【図１】
2009110376.tif 000011
【図２】
2009110376.tif 000012
【図３】
2009110376.tif 000013
【図４】
2009110376.tif 000014
【図５】
2009110376.tif 000015
【図６】
2009110376.tif 000016
【図７】
2009110376.tif 000017
【図８】
2009110376.tif 000018