記述関数法シミュレーター 戻る
制御工学

記述関数法シミュレーター — 非線形制御

リレー・飽和・不感帯などの非線形要素を振幅依存の等価ゲイン N(A) に置き換え、線形部の軌跡 L(jω) と臨界曲線 −1/N(A) の交点からリミットサイクル(自励振動)の振幅・周波数を予測するツールです。非線形要素やパラメータを変えると、振動の発生有無がリアルタイムで分かります。

パラメータ設定
非線形要素
記述関数 N(A) の種類を選択
非線形パラメータ p
飽和レベル M または不感帯幅 δ
入力正弦波の振幅 A
N(A) を評価する現在の振幅
線形部のゲイン K
L(s)=K/(s(τs+1)²) の比例ゲイン
線形部の時定数 τ
s
二重ラグの時定数。ωpc=1/τ
計算結果
記述関数 N(A)(現在の振幅)
リミットサイクル周波数 ω (rad/s)
リミットサイクル振幅 A_lc
リミットサイクル周期 T (s)
位相交差での線形利得 |L|
リミットサイクル判定
複素平面 — L(jω) と臨界曲線 −1/N(A)

青い曲線が線形部の軌跡 L(jω)、橙の曲線が臨界曲線 −1/N(A)。両者の交点(黄)が予測されるリミットサイクル、白い点が −1 点です。マーカーは ω の増加に沿って L(jω) 上を移動します。

記述関数 N(A) と入力振幅の関係
予測されるリミットサイクル波形
理論・主要公式

$$N(A)=\frac{4M}{\pi A}\ (\text{リレー}),\qquad \text{リミットサイクル}:\ L(j\omega)=-\frac{1}{N(A)}$$

N(A) は非線形要素の振幅依存の等価ゲイン(出力の基本波成分/入力の比)。L(jω) が臨界曲線 −1/N(A) と交わる点でリミットサイクルが予測される。

$$L(s)=\frac{K}{s\,(\tau s+1)^{2}},\qquad \omega_{pc}=\frac{1}{\tau},\qquad |L(j\omega_{pc})|=\frac{K}{\omega_{pc}\,((\tau\omega_{pc})^{2}+1)}$$

線形部は型1(積分器付き)二重ラグ系。位相が −180° に達する位相交差周波数 ωpc とそこでの利得 |L|。

$$N(A_{lc})=\frac{1}{|L(j\omega_{pc})|},\qquad T_{lc}=\frac{2\pi}{\omega_{pc}}$$

リミットサイクル振幅 A_lc は N(A)=1/|L| を解いて求める。リレーでは A_lc=4M|L|/π、他の要素は二分法で数値的に解く。周期 T_lc は ωpc から決まる。

記述関数法とは

🙋
「記述関数法」って、制御工学の授業で名前だけ聞いたんですけど…結局なにをする方法なんですか?
🎓
ざっくり言うと「非線形な部品を、線形系のフリをさせる」テクニックだよ。リレーや飽和、不感帯みたいに入出力がカクッと曲がる要素があると、ナイキスト線図のような周波数解析がそのままだと使えない。そこで非線形要素に正弦波を入れたとき、出てくる出力のうち「同じ周波数の成分(基本波)」だけを取り出して、入力との比をゲインとみなす。これが記述関数 N(A) で、振幅 A に応じて値が変わるのがミソなんだ。
🙋
振幅でゲインが変わる…ふつうの伝達関数とは違うんですね。それで何が嬉しいんですか?
🎓
いちばん嬉しいのは「リミットサイクルが予測できる」こと。リミットサイクルっていうのは、外から何も入れていないのに系が勝手に一定の振幅で振動し続ける現象だ。記述関数法では、線形部の軌跡 L(jω) と、臨界曲線 −1/N(A) を同じ複素平面に描く。この2本が交わったら、その交点の振幅と周波数で振動が起きると読める。上のキャンバスで青い曲線と橙の曲線がぶつかっている黄色い点、あれが予測されたリミットサイクルだよ。
🙋
なるほど。デフォルトのリレーだと「発生する」って出てます。リレー制御ってそんなに振動しやすいんですか?
🎓
しやすいね。リレーの記述関数は N(A)=4M/(πA) で、振幅 A が小さいほどゲインが跳ね上がる。サーモスタットを思い浮かべて。設定温度に近づくとリレーは「全開か全閉か」しか選べないから、つい行き過ぎて、また逆に振れる。この行ったり来たりがハンチングで、まさにリミットサイクルなんだ。記述関数法を使えば「室温が±何度で何分周期に振れるか」を設計段階で見積もれる。左で時定数 τ を大きくすると周期 T=2π/ωpc が伸びるのが分かるよ。
🙋
飽和や不感帯に切り替えると、N(A) のグラフの形がぜんぜん違いますね。これは何を意味してるんですか?
🎓
いい観察だ。飽和は小振幅では傾き1(N=1)で、振幅が飽和レベルを超えると N が下がっていく――ゲインが「目減り」していく要素だ。不感帯は逆で、小振幅では出力ゼロ(N=0)、入力が不感帯幅を超えて初めて N が立ち上がる。リレーだけは振幅が小さいほど N が無限大に発散する。この「N(A) がどう動くか」で、リミットサイクルが安定して残るか、振幅がずれたら消えるかまで議論できる。だから N(A) のカーブの形は非線形要素の性格そのものなんだ。
🙋
便利すぎませんか?これだけで非線形制御は全部解けちゃうんですか?
🎓
そこは要注意。記述関数法はあくまで「近似」だ。出力の基本波だけ見て高調波を捨てているから、線形部が高調波をしっかり減衰させる(ローパス特性が強い)ことが前提になる。この条件が弱いと予測がずれる。実務では記述関数法で当たりをつけて、最後は必ず時間領域シミュレーションで確かめる。便利な「先読みの道具」と思っておくのが正解だよ。

よくある質問

記述関数 N(A) とは、リレーや飽和、不感帯のような静的非線形要素を「振幅 A に依存する等価ゲイン」で近似したものです。振幅 A の正弦波を非線形要素に通したとき、出力に含まれる基本波(同じ周波数の正弦波成分)だけを取り出し、入力に対する比をとって求めます。これにより非線形系をあたかも線形系のように扱え、ナイキスト線図に近い形でリミットサイクルを予測できます。
リミットサイクル(自励振動)は、線形部の周波数応答 L(jω) が臨界曲線 −1/N(A) と交わる点で発生します。本ツールの線形部 L(s)=K/(s(τs+1)²) では位相が −180° になる位相交差周波数 ωpc=1/τ が一つだけ存在し、そこで L(jωpc) は負の実数になります。N(A)=1/|L(jωpc)| を満たす振幅 A が存在すれば、その振幅と周波数 ωpc でリミットサイクルが生じると予測されます。
リレー(オンオフ)要素の記述関数は N(A)=4M/(πA) で、振幅 A が小さいほどゲインが大きくなります。サーモスタットやオンオフ弁のように出力が ±M しか取れない系では、誤差が小さいうちはゲインが高く制御が強く効きすぎ、行き過ぎてはまた逆向きに振れる、を繰り返します。この自励振動がハンチングで、記述関数法は振動の振幅と周期を事前に見積もる手段になります。
記述関数法は近似法です。前提は、線形部が十分なローパス特性を持ち非線形要素の出力高調波を減衰させること(フィルタ仮説)、非線形要素が静的(記憶を持たない)で奇対称であることなどです。線形部の高調波減衰が弱い場合、複数のリミットサイクルが近接する場合、入力が正弦波から大きく外れる場合には予測がずれます。最終確認は時間領域シミュレーションで行うのが原則です。

実世界での応用

リレー制御・オンオフ制御の設計:家庭用サーモスタット、冷蔵庫のコンプレッサ制御、電気ヒーターのオンオフ制御など、アクチュエータが「全開/全閉」しか取れない系は世の中に無数にあります。これらは本質的にリミットサイクルを持ち、室温やプロセス量が一定振幅で振れ続けます。記述関数法を使えば、ヒステリシス幅や線形部の時定数から「振れ幅」と「振動周期」を設計段階で見積もり、許容範囲に収めるための定数を選べます。

アクチュエータの飽和とリミットサイクル:サーボモータ、油圧バルブ、電力増幅器などはすべて出力に上限(飽和)があります。高ゲインのフィードバック系では、この飽和が原因で持続振動が起きることがあります。記述関数法で飽和要素を等価ゲイン N(A) に置き換えれば、ゲインをどこまで上げると振動に入るか、入った場合の振幅はどれくらいかを予測でき、ゲイン設計の指針になります。

機械系の摩擦・バックラッシュによる微小振動:歯車の遊び(バックラッシュ)や静摩擦・クーロン摩擦は不感帯やヒステリシスとしてモデル化できます。位置決めステージや工作機械の送り軸では、これらが原因で目標値付近の微小なリミットサイクル(リミットサイクル振動・スティックスリップ)が生じます。記述関数法は、こうした摩擦起因の振動が消えるか残るかを評価する古典的な手段です。

非線形制御の事前検討と教育:詳細な非線形シミュレーションや位相平面解析を行う前に、記述関数法で「リミットサイクルがありそうか」を素早く当たりづけします。計算が軽く、複素平面上の交点という直感的な描像が得られるため、制御工学の教育でも非線形系の入り口として広く使われます。本ツールのように L(jω) と −1/N(A) を同時に描くと、交点の意味が一目で理解できます。

よくある誤解と注意点

まず最大の誤解が、「記述関数法は厳密解を与える」という思い込みです。記述関数法は出力の基本波成分だけを残し、第3・第5高調波などをすべて捨てる近似です。これが成り立つのは、線形部が高調波を十分に減衰させる「フィルタ仮説」が満たされる場合だけ。高調波の減衰が弱い系では、予測されたリミットサイクルの振幅・周波数が実際とずれます。本ツールの線形部は積分器+二重ラグでローパス性が強いので近似は良好ですが、一般には記述関数法の結果は「目安」であり、最終確認は時間領域シミュレーションで行うのが鉄則です。

次に、「交点があれば必ず持続振動になる」と考えること。L(jω) と −1/N(A) の交点は「リミットサイクルの候補」であって、その振動が安定(外乱で振幅がずれても元に戻る)か不安定(ずれるとそのまま発散・消滅する)かは別問題です。安定性は、交点の近傍で振幅 A を少し増減させたとき、系がその振幅へ戻る向きに動くかどうかで判定します。飽和系では安定なリミットサイクル、不感帯系では不安定なリミットサイクルが現れやすいなど、非線形要素の性格によって挙動が変わります。本ツールは候補点を示すものであり、安定性判定は別途の検討が必要です。

最後に、「N(A) は実数とは限らない」という点。本ツールが扱うリレー(ヒステリシスなし)・飽和・不感帯はいずれも奇対称かつ単一値の静的非線形なので N(A) は実数になります。しかしヒステリシス付きリレーやバックラッシュのように「記憶」を持つ非線形要素では、N(A) は複素数になり、臨界曲線 −1/N(A) が実軸から離れて曲線を描きます。実在のリレーは必ず多少のヒステリシスを持つため、現実の設計では複素記述関数まで踏み込む必要があることを覚えておいてください。

使い方ガイド

  1. 非線形要素タイプ(リレー、飽和、不感帯)と飽和レベル(例:±5V)を設定
  2. 線形部のゲイン(例:K=2.0)、時定数(例:τ=0.5s)を入力してシステムパラメータを確定
  3. 入力信号の振幅範囲(0.1~10A)をスイープし、各振幅での記述関数 N(A) を計算
  4. Nyquist曲線(開ループ特性 -1/N(A))と線形部の周波数応答の交点を探索
  5. 交点が存在する場合、そのときの振幅 A_lc と周波数 ω がリミットサイクル解を示す

具体的な計算例

飽和特性をもつモーター制御系(飽和値±10V)で:線形部ゲイン K=3.5、時定数 τ=0.2s のとき、入力振幅 A=6.8V での記述関数 N(A)=0.62 が計算されます。このとき位相角 φ=-142°、リミットサイクル周波数 ω=8.3rad/s、周期 T=0.76s となり、位相交差による線形利得 |L|=0.99 で安定限界に接近します。制御出力は±10Vで飽和し、自励振動が継続する状態です。

実務での注意点

  1. リレー要素(不感帯幅 Δ=1.0V)を使う場合、振幅 A > Δ の範囲のみで有効な記述関数が成立;小振幅では線形近似が破綻
  2. 時定数が小さい系(τ < 0.1s)では高周波リミットサイクルが発生しやすく、高調波の影響を確認が必須
  3. 複数の交点がある場合は安定性解析(Loeb criterion)で実現可能なリミットサイクルのみを選別
  4. 実測では摩擦やバックラッシュなど2次非線形要素の重ね合わせにより周波数が数%ずれることが常