線形制御系設計

    線形システムの表現
    線形システムの特性解析
    制御器設計
    観測器設計
    離散時間システム

    モーションコントロール

    加速度制御
    剛体の姿勢制御

    モータドライブ

    駆動制御法
    磁極位置推定法

    システム同定

    ホワイトボックスモデル
    パラメトリックモデル

連続時間システムの離散化

コントローラが離散的に動作するのに対し,制御対象のプラントは連続時間系で動作し,コントローラのサンプル点間でも動作を続けている。 制御則に状態予測が必要なフィードフォワード制御器設計やモデル予測制御,状態観測器の設計ではサンプル点間の振る舞いについても考慮したシステムの離散モデルが要求される。
離散化の方法としては伝達関数表現されるシステムに対してz変換を行う方法と,状態空間表現されるシステムに対して連続時間系の解を求めて離散モデルを求める方法が存在する。 離散化対象が同値なシステムであるならば得られる離散時間システムは同じであるが,状態空間表現を用いた方法は他方と比較して導出が簡潔であるため先に述べる。

状態空間表現の離散化

次の状態空間表現によって支配される連続時間システムについて考える。
x˙(t)=Ax(t)+Bu(t)y(t)=Cx(t)\begin{align} \dot{\bm{x}}(t) &= \bm{A}\bm{x}(t) + \bm{B}\bm{u}(t) \\ \bm{y}(t) &= \bm{C}\bm{x}(t) \end{align}
ただし,A,B,C\bm{A},\bm{B},\bm{C} はシステム行列,入力行列,観測行列を表し,u,x,y\bm{u},\bm{x},\bm{y} は入力,状態量,観測量とする。また,u,x,y\bm{u},\bm{x},\bm{y} は時刻 t<0t<00\bm{0} を取るものとする。状態量に関する微分方程式について解くと,以下のようになる。
x(t)=eAtx(0)+0teA(tτ)Bu(τ)dτ\begin{align} \bm{x}(t) &= e^{\bm{A}t}\bm{x}(0) + \int^{t}_{0}e^{\bm{A}(t-\tau)}\bm{B}\bm{u}(\tau) d\tau \\ \end{align}
ここに周期 hh のサンプラを挿入することを検討する。また,離散モデルとして差分方程式の形式で記述するため,時刻 t=kh, (k+1)ht={\rm k}h,\ ({\rm k}+1)h の時点における状態量について解くと,以下のようになる。
x(kh)=eAkhx(0)+0kheA(khτ)Bu(τ)dτx((k+1)h)=eA(k+1)hx(0)+0(k+1)heA((k+1)hτ)Bu(τ)dτ=eAh(eAkhx(0)+0(k+1)heA(khτ)Bu(τ)dτ)+kh(k+1)heA((k+1)hτ)Bu(τ)dτ=eAhx(kh)+kh(k+1)heA((k+1)hτ)Bu(τ)dτ\begin{align} \bm{x}({\rm k}h) &= e^{\bm{A}{\rm k}h}\bm{x}(0) + \int^{{\rm k}h}_{0}e^{\bm{A}({\rm k}h-\tau)}\bm{B}\bm{u}(\tau) d\tau \\ \bm{x}(({\rm k}+1)h) &= e^{\bm{A}({\rm k}+1)h}\bm{x}(0) + \int^{({\rm k}+1)h}_{0}e^{\bm{A}(({\rm k}+1)h-\tau)}\bm{B}\bm{u}(\tau) d\tau \\ &=e^{\bm{A}h}\left(e^{\bm{A}{\rm k}h}\bm{x}(0) + \int^{({\rm k}+1)h}_{0}e^{\bm{A}({\rm k}h-\tau)}\bm{B}\bm{u}(\tau) d\tau \right) + \int^{({\rm k}+1)h}_{{\rm k}h}e^{\bm{A}(({\rm k} + 1)h-\tau)}\bm{B}\bm{u}(\tau) d\tau \\ &=e^{\bm{A}h}\bm{x}({\rm k}h) + \int^{({\rm k}+1)h}_{{\rm k}h}e^{\bm{A}(({\rm k} + 1)h-\tau)}\bm{B}\bm{u}(\tau) d\tau \end{align}
ここで,変数変換 γ=τkh\gamma = \tau - {\rm k}h を導入すると,以下を得る。
x((k+1)h)=eAhx(kh)+0heA(hγ)Bu(γ+kh)dγ\begin{align} \bm{x}(({\rm k}+1)h) &=e^{\bm{A}h}\bm{x}({\rm k}h) + \int^{h}_{0}e^{\bm{A}(h-\gamma)}\bm{B}\bm{u}(\gamma+{\rm k}h) d\gamma \end{align}
一般に制御器から生成されたシステムへの入力はサンプル点間で一定値を取るため,この条件を基に整理することで以下の特殊解を得る。
x((k+1)h)=eAhx(kh)+0heA(hγ)dγBu(kh)\begin{align} \bm{x}(({\rm k}+1)h) &=e^{\bm{A}h}\bm{x}({\rm k}h) + \int^{h}_{0}e^{\bm{A}(h-\gamma)} d\gamma \bm{B}\bm{u}({\rm k}h) \end{align}
ここで,変数変換 δ=γ+h\delta = - \gamma + h を導入すると,以下を得る。
x((k+1)h)=eAhx(kh)+h0eAδ(dδ)Bu(kh)=eAhx(kh)+0heAδdδBu(kh)\begin{align} \bm{x}(({\rm k}+1)h) &=e^{\bm{A}h}\bm{x}({\rm k}h) + \int^{0}_{h}e^{\bm{A}\delta} (-d\delta) \bm{B}\bm{u}({\rm k}h) \\ &=e^{\bm{A}h}\bm{x}({\rm k}h) + \int^{h}_{0}e^{\bm{A}\delta} d\delta \bm{B}\bm{u}({\rm k}h) \end{align}
以上より,サンプル値を用いた状態空間表現の記述は以下のようになる。
x[k+1]=eAhx[k]+0heAδdδBu[k]y[k]=Cx[k]\begin{align} \bm{x}[{\rm k} + 1] &=e^{\bm{A}h}\bm{x}[{\rm k}] + \int^{h}_{0}e^{\bm{A}\delta} d\delta \bm{B}\bm{u}[{\rm k}] \\ \bm{y}[{\rm k}] &= \bm{C}\bm{x}[{\rm k}] \end{align}
すなわち,離散モデルのシステム行列,入力行列,観測行列は次のように決定される。
Ad=eAhBd=0heAδdδBCd=C\begin{align} \bm{A}_{\rm d} &= e^{\bm{A}h}\\ \bm{B}_{\rm d} &= \int^{h}_{0}e^{\bm{A}\delta} d\delta \bm{B}\\ \bm{C}_{\rm d} &= \bm{C} \end{align}
この離散時間システムの単位ステップ応答は連続時間システムの単位ステップ応答をサンプラで取得したものと等しくなるため,ステップ不変離散化と呼ばれる。

伝達空間表現の離散化

次のように表現されるシステムについて考える。
y(t)=f(u(t))\begin{align} y(t) = f(u(t)) \end{align}
ただし,uu を入力,yy を出力,ff を線形システムとする。また,このシステムのラプラス変換は次のように表現されるものとする。
Y(s)=G(s)U(s)\begin{align} Y(s) = G(s)U(s) \end{align}
離散時間制御器を使用する場合には,入力はサンプラとホールダを介して生成されるため階段状の信号となり,矩形波の組み合わせとして表現できる。周期 hh のサンプラが挿入されると仮定して,入力 uu を以下のように記述する。
u(t)=n=0un(t)un(t)u(nh)(σ(tnh)σ(t(n+1)h))σ(t){1 (t0)0 (t<0)\begin{align} u(t) &= \sum^{\infty}_{{\rm n}=0}u_{\rm n}(t)\\ u_{\rm n}(t) &\equiv u({\rm n}h)\left(\sigma(t - {\rm n}h) - \sigma(t - ({\rm n} + 1)h)\right)\\ \sigma(t)&\equiv\left\{\begin{matrix} 1\ (t\geq0) \\ 0\ (t<0)\end{matrix} \right. \end{align}
線形システムの出力が入力の重ね合わせによって表現されることを考慮し,個々の矩形波関数 unu_{\rm n} について考える。この関数をラプラス変換すれば,以下のようになる。
Un(s)=0un(t)estdt=(1sesnh1ses(n+1)h)u(nh)=1sesnh(1esh)u(nh)\begin{align} U_{\rm n}(s) &= \int^{\infty}_{0} u_{\rm n}(t) e^{-st}dt\\ &= \left(\frac{1}{s}e^{-s{\rm n}h} - \frac{1}{s}e^{-s({\rm n} + 1)h}\right)u({\rm n}h)\\ &= \frac{1}{s}e^{-s{\rm n}h} \left(1- e^{-sh}\right)u({\rm n}h) \end{align}
この矩形波入力 UnU_{\rm n} の出力 YY への寄与を YnY_{\rm n} とすると,次のように表現される。
Yn(s)=G(s)U(s)=G(s)sesnh(1esh)u(nh)=Gs(s)Un,δ(s)Gs(s)G(s)sUn,δ(s)esnh(1esh)u(nh)\begin{align} Y_{\rm n}(s)&=G(s)U(s)\\ &= \frac{G(s)}{s} \cdot e^{-s{\rm n}h} \left(1- e^{-sh}\right)u({\rm n}h)\\ &= G_{\rm s}(s)U_{{\rm n}, \delta}(s)\\ G_{\rm s}(s)&\equiv \frac{G(s)}{s} \\ U_{{\rm n}, \delta}(s)&\equiv e^{-s{\rm n}h} \left(1- e^{-sh}\right)u({\rm n}h) \end{align}
ここで,GsG_{s} はシステムに対する単位ステップ応答のラプラス変換,Un,δU_{{\rm n}, \delta} は入力サンプル値のシフト差分のラプラス変換である。これらの時間領域における表現を,逆ラプラス変換により以下のように記述する。
gs(t)=L1[Gs]un,δ(t)=L1[Un,δ]=(δ(tnh)δ(t(n+1)h))u(nh)\begin{align} g_{s}(t)&=\mathcal{L}^{-1}[G_{s}]\\ u_{{\rm n},\delta}(t)&=\mathcal{L}^{-1}[U_{{\rm n}, \delta}] = \left(\delta(t-{\rm n}h) - \delta(t-({\rm n} + 1)h)\right)u({\rm n}h) \end{align}
この表現を用いれば,yy に対する unu_{\rm n} の寄与は次のように記述される。
yn(t)=0tun,δ(tτ)gs(τ)dτ=u(nh)(0tδ(tnhτ)gs(τ)dτ0tδ(t(nh+1)τ)gs(τ)dτ)=u(nh)(gs(tnh)gs(t(n+1)h))\begin{align} y_{\rm n}(t) &=\int^{t}_{0}u_{{\rm n},\delta}(t-\tau)g_{\rm s}(\tau) d\tau\\ &=u({\rm n}h)\left(\int^{t}_{0}\delta(t-{\rm n}h-\tau)g_{\rm s}(\tau) d\tau - \int^{t}_{0}\delta(t-({\rm n}h + 1)-\tau)g_{\rm s}(\tau) d\tau \right)\\ &=u({\rm n}h)\left(g_{s}(t-{\rm n}h) - g_{s}(t-({\rm n} + 1)h)\right) \end{align}
サンプル点の応答について考えれば,以下のように整理することができる。
yn[k]=u[n](gs[kn]gs[kn1])\begin{align} y_{\rm n}[{\rm k}] &= u[{\rm n}]\left(g_{s}[{\rm k}-{\rm n}] - g_{s}[{\rm k}-{\rm n} - 1]\right) \end{align}
以上より,システムの出力 yy は重ね合わせの原理より次のように記述される。
y[k]=n=0yn[n]=n=0k1u[n](gs[kn]gs[kn1])\begin{align} y[{\rm k}]&= \sum^{\infty}_{{\rm n}=0} y_{\rm n}[{\rm n}]= \sum^{{\rm k}-1}_{{\rm n}=0} u[{\rm n}]\left(g_{s}[{\rm k}-{\rm n}] - g_{s}[{\rm k}-{\rm n} - 1]\right) \end{align}
これをz変換すれば,以下の記述を得る。
Y(z)=k=y[k]zk=k=1y[k]zk=k=1(n=0k1u[n](gs[kn]gs[kn1]))zk\begin{align} Y(z) &= \sum^{\infty}_{{\rm k}=-\infty}y[k]z^{-{\rm k}} = \sum^{\infty}_{{\rm k}=1}y[k]z^{-{\rm k}}\\ &= \sum^{\infty}_{{\rm k}=1} \left(\sum^{{\rm k}-1}_{{\rm n}=0} u[{\rm n}]\left(g_{s}[{\rm k}-{\rm n}] - g_{s}[{\rm k}-{\rm n} - 1]\right) \right)z^{-{\rm k}} \end{align}
ここで m=kn[1,k]{\rm m}={\rm k}-{\rm n} \in[1, {\rm k}] を導入して変数変換を行い,式を整理する。
Y(z)=k=1m=1ku[km](gs[m]gs[m1])zk=m=1k=1u[km](gs[m]gs[m1])zk (Fubinis theorem)=m=1(gs[m]gs[m1])k=mu[km]zk\begin{align} Y(z)&= \sum^{\infty}_{{\rm k}=1} \sum^{\rm k}_{{\rm m}=1} u[{\rm k}-{\rm m}]\cdot\left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) z^{-{\rm k}}\\ &= \sum^{\infty}_{{\rm m}=1} \sum^{\infty}_{{\rm k}={\rm 1}} u[{\rm k}-{\rm m}]\cdot\left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) z^{-{\rm k}}\ (\because {\rm Fubini's\ theorem})\\ &= \sum^{\infty}_{{\rm m}=1} \left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) \cdot \sum^{\infty}_{{\rm k}={\rm m}} u[{\rm k}-{\rm m}] z^{-{\rm k}} \end{align}
右辺第二項について項数シフトを行い,次の記述を得る。
Y(z)=m=1(gs[m]gs[m1])zmk=0u[k]zk=m=1(gs[m]gs[m1])zmZ[u]=m=1(gs[m]gs[m1])zmU(z)\begin{align} Y(z)&= \sum^{\infty}_{{\rm m}=1} \left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) \cdot z^{-{\rm m}}\sum^{\infty}_{{\rm k}=0} u[{\rm k}] z^{-{\rm k}}\\ &= \sum^{\infty}_{{\rm m}=1} \left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) z^{-{\rm m}} \mathcal{Z}[u]\\ &= \sum^{\infty}_{{\rm m}=1} \left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) z^{-{\rm m}} U(z)\\ \end{align}
以上より,伝達関数 G(z)G(z) は次のように記述される。
G(z)=Y(z)U1(z)=m=1(gs[m]gs[m1])zm\begin{align} G(z) &= Y(z)U^{-1}(z) = \sum^{\infty}_{{\rm m}=1} \left(g_{s}[{\rm m}] - g_{s}[{\rm m}- 1]\right) z^{-{\rm m}} \end{align}
これを整理すれば,以下の結果を得る。
G(z)=m=1gs[m]zmm=1gs[m1]zm=(m=0gs[m]zmgs[0])z1m=0gs[m]zm=(1z1)Z[gs] ( gs[0]=0)\begin{align} G(z)&= \sum^{\infty}_{{\rm m}=1} g_{s}[{\rm m}] z^{-{\rm m}} - \sum^{\infty}_{{\rm m}=1} g_{s}[{\rm m-1}] z^{-{\rm m}}\\ &= \left(\sum^{\infty}_{{\rm m}=0} g_{s}[{\rm m}] z^{-{\rm m}} - g_{s}[0]\right) - z^{-1}\sum^{\infty}_{{\rm m}=0} g_{s}[{\rm m}] z^{-{\rm m}}\\ &= (1-z^{-1})\mathcal{Z}[g_{s}]\ (\because\ g_{s}[0]=0) \end{align}
したがって,システムの離散モデルは次のように得られる。
G(z)=(1z1)Z{L1[G(s)s]}\begin{align} G(z) &= (1-z^{-1}) \mathcal{Z}\left\{\mathcal{L}^{-1}\left[\frac{G(s)}{s}\right]\right\} \end{align}