線形化フィードバックと組み合わせたスライディングモード制御

線形化フィードバックと組み合わせたスライディングモード制御

はじめに

スライディングモード制御は符号関数を利用した制御手法の一つで1960年代あたりから研究されています.概念は非常にシンプルで,もし外乱の上限がわかっているのならそれを上回る入力で塗りつぶしてしまえばシステムは安定するだろうというかなり力任せの発想です.この手法は正体不明でとても大きな外乱に対して有効な一方,符号関数を使っているので解が存在しないことと振動するため機器への負荷が大きいという欠点があります.ここでは線形化フィードバックを組み合わせ,外乱に対してロバストな制御器を設計してみます.

スライディングモード制御

今回考える非線形システムを

\begin{align}
\dot{x}_1 &= x_2 \newline
\dot{x}_2 &= – x_1^2 + x_2 + u + d \newline
y &= x_1
\end{align}

とします.\(x_1(t)\),\(x_2(t)\)は状態変数,\(y(t)\)は出力,\(d(t)\)は外乱,\(u(t)\)は制御入力です.\(c\)を定数,\(\delta\)を目標値とし,切換関数\(s(t)\)を

\begin{equation}
s = c (x_1 – \delta) + x_2
\end{equation}

とすると

\begin{align}
\dot{s} &= – x_1^2 + (c+1)x_2 + u + d \newline
\dot{x}_1 &= s – c (x_1 – \delta)
\end{align}

と式変形することができます.ここで\(K\)を定数とし,\(u(t)\)を

\begin{equation}
u = – K \textrm{sgn}(s) + x_1^2 – (c+1)x_2
\end{equation}

となるように選ぶと

\begin{equation}
\dot{s} = – K \textrm{sgn}(s) + d
\end{equation}

となります.証明は割愛しますが\(K\)を

\begin{equation}
K > \displaystyle \sup_{[0, \infty) \in t} \left| d(t) \right|
\end{equation}

となるように選び,\(T_0 \geq 0\)を定数,\(T\)をシミュレーション時間とすると

\begin{equation}
\displaystyle \lim_{t \rightarrow T} s(t) = 0, \; T_0 \leq T
\end{equation}

となり,\(s(t)\)は有限時間で\(0\)に収束します.よって

\begin{equation}
\dot{x}_1 = – c(x_1 – \delta)
\end{equation}

となるため

\begin{equation}
c > 0
\end{equation}

となるように選べばシステムは大域的漸近安定となります.

シミュレーション

シミュレーションでは\(\delta = 5\),\(d(t)\)は\(-1000\)から\(1000\)までの値をランダムにとるとします.\(c = 2\),\(K = 1200\),初期値を\(x_1(0) = 0\),\(x_2 = 10\)としたときのシミュレーション結果は下図となります

sliding-mode

また,比較のために入力を

\begin{equation}
u = – K s + x_1^2 – (c+1)x_2
\end{equation}

のように線形化フィードバックとP制御を組み合わせた結果が下図になります.

p

図を見比べて分かる通りスライディングモード制御のほうが外乱を抑制しています.

まとめ

非干渉化と組み合わせてスライディングモード制御を利用した制御器を実装しました.外乱が存在しても目標値に収束していることがわかります.P制御と比較しても良い結果になっていると思います.最後にソースコードを載せておきます.

コメントを残す

メールアドレスが公開されることはありません。