伝達関数の差分化の話(その3)

 そろそろ終わりにしたい気もするけど、やっぱりグラフの比較くらいほしいのと、自分流+=戦法の話をもう少し書いておく。もうちっとだけ続くんじゃ。

3.1. 1次遅れ系の実装と波形の比較

 さて、(1)の実装として、(2)と(3)を比較してみよう。

 \displaystyle Y(s) = \frac{1}{1+sT}U(s) ...... (1)

 \displaystyle y_n=(1-a)y_{n-1}+a u_{n-1} ...... (2)

 \displaystyle y_n=(1-2b)y_{n-1}+b u_n+b u_{n-1} ...... (3)

 a=\frac{ΔT}{T} b=\frac{ΔT}{2T+ΔT}とおいた)

 

 (2)のいい所は u_nが出てこないところ。

 

タイマ「CPUさん、時間です!」

CPU「よし、 y_nを計算するか。ADCよ、 u_nはまだか?」

ADC「すいません!ただ今取ってきますので少々お待ちください!」

CPU「ちっ、これだからのろまなやつと組むのは嫌いなんだ。」

 

みたいな事にならずにCPUの手元に残ってる一個前のyとuの値で済む。一方で(3)のいい所は何にも考えずに実装できるわりにはそれなりに使えるところ。え?茶番よりグラフ?はい。

f:id:TEFSOM:20200710234346p:plain

Fig.1. 一次遅れ系(ΔT/T=0.1)

f:id:TEFSOM:20200710235111p:plain

Fig.2. 一次遅れ系(ΔT/T=0.3)

ΔTが細かい場合と粗い場合。双一次変換は一次遅れ系ならほぼ誤差は気にしなくてよさげ。+=戦法はΔT/Tが0.1くらい以下ならいいかなって感じ。

3.2. 2次遅れ系の実装と波形の比較

 以上で良いかと思ったんだけどエクセルで遊んでたら色々思い出してきたのでもうちょっと書く。以下の二次遅れ系を実装してみる。

 \displaystyle Y(s) = \frac{ω^ 2}{s^ 2 + 2ξωs + ω^ 2}U(s) ...... (4)

双一次変換は何も考えずに(4)に(5)をぶち込んでぐつぐつ煮て(6)を得ましょう。

 \displaystyle s ≒ \frac{2}{ΔT}\frac{z-1}{z+1} ...... (5)

 y_n = \frac{2(1-c)}{1+c+d}y_{n-1} +\frac{d-c-1}{1+c+d}y_{n-2}+ \frac{c}{1+c+d}(u_{n}+2u_{n-1}+u_{n-2}) ...... (6)

 c=\frac{ΔT^ 2ω^ 2}{4} d=ξωΔTとおいた)

頭は使わず手だけ動かせば良いのがいい所。

 一方で+=戦法はそのまま代入しちゃいけない。なぜか? sが2個以上出てくる式にそのまま入れると z多項式になって y_{n-2}とかが出てきてしまう。一個前のだけで書ける事だけが利点なのでちょっと頭を使おう。一言で書くと1元高次の方程式を多元1次の方程式にすればいい。

 \displaystyle \ddot{y} + 2ξω\dot{y} + ω^ 2 y = ω^ 2 u ...... (4') 

とりあえずyの時間微分をxとおく。

 \displaystyle \begin{cases} \; \dot{x}= -2ξωx -ω^ 2 y + ω^ 2 u \\ \; \dot{y}=x\end{cases} ...... (4'') 

 \displaystyle \begin{cases} \; x_n=x_{n-1} -2ξωΔTx_{n-1} -ΔTω^ 2 y_{n-1} + ΔTω^ 2 u_{n-1} \\ \; y_n=y_{n-1}+ΔTx_n \end{cases} ...... (5)

できた。(5)の2行目の最後がx_{n-1}じゃなくでx_{n}なのはずるい気もするけど、2行目みたいに微分だけの時は1行目の結果が使えるからできる。当然お互いにお互いの行の結果を使うようなときは全部_{n-1}にするしかないけど。

f:id:TEFSOM:20200711122521p:plain

Fig.3. 二次遅れ系(ΔTω=0.1)

f:id:TEFSOM:20200711122524p:plain

Fig.4. 二次遅れ系(ΔTω=0.3)

どっちもΔTω=0.3くらいが限界ぽい。周波数の補正とかすれば使えなくもないけど。

f:id:TEFSOM:20200711123517p:plain

Fig.4. ずるしない矩形近似の場合(ΔTω=0.03)

添え字が全部_{n-1}のずる無し版+=戦法だとΔTω=0.03くらいが限界ぽい。そして周波数じゃなくて振幅がずれるのか。なるほど。

 

(ちなみに勘の良い読者は「(4'')って状態方程式ぽくね?」とか思ったかもしれない。実はその通りで伝達関数状態方程式にして一階微分方程式にしちゃえば+=戦法以外もやりたい放題(4次ルンゲクッタとか)なんだけど余白が足りないので今回はここまで。もう飽きたけど需要があれば続くかも。)