2次遅れ要素の分解
伝達関数の2次遅れ要素の分解で困っています。
2次遅れ要素は伝達関数として1/(T1s+1)(T2s+1)と記述されますが、これは1/(T1s+1)*1/(T2s+1)
と書きなおせるので、入力Y(s)に対し、G1(s) {1/(T1s+1)}とG2(s){1/(T2s+1)}の直列結合になるかと思います。
1次遅れ要素は微分方程式T*dx/dt+x=yと書け、微分を(x(n)-x(n-1))/dt :dt=サンプル時間、で近似するとx(n)=(dt*y(n)+T*x(n-1))/(T+dt)と変換できるので、入力に対する応答がエクセル上で簡便にできます。
この応答を入力として2段目の伝達関数に入れてやると、すなわち
u(n)=(dt*x(n)+T*u(n-1))/(T2+dt),ただしx(n)は1段目の出力
として計算すると2次遅れ要素の応答が計算されるのではないかと考えます。
実際、ステップ応答では上記2次遅れ要素の逆ラプラス変換の解である
h(t)=1-T1/(T1-T2)*Exp(-t/T1)-T2/(T2-T1)*Exp(-t/T2)
によく合致します。
ところが、これを実システムに置き換えるとずいぶんと実際の値と異なってしまいます。
実システムとは、ヒーターを用いたPIDコントローラーです。ヒーターのステップ入力(電力)に対しヒーター本体の温度(tmp1)と被加熱物質(tmp2)の応答を見てみると、tmp1はヒーターへのステップ入力に対し1次遅れ応答を、tmp2は2次遅れ応答を示し、Excelのソルバーを用いるとtmp1レスポンスの比例定数K1, 時定数T1が、またtmp2レスポンスのK2, T1, T2を求めることができます。
tmp2のパラメーターをソルバーを用いて求める際に、T1はtmp1レスポンスの値に固定してやると、(K2/K1)/(T2s+1)が被加熱物質単体の伝達関数として求められます。(と思っていますが、この辺りが間違い?)
被加熱物質の温度コントロールをしたいのですが、直接被加熱物質の温度をモニターすることが難しいので、何とかヒーターの温度から被加熱物質の温度を計算して、PIDの入力に使えないか、というのがやりたいことです。
すなわちヒーターの温度と上記で求めた被加熱物質単体の伝達関数から被加熱物質の温度を計算したいわけです。
実測値と計算値のグラフを添付いたします。
ここでの計算は次の式で行っています。
BlockTemp = (dt * (K2/K1) * HeaterTemp + T2 * BlockTemp_old ) / (T2 + dt)
BlockTemp_old = BlockTemp
dt:サンプリング時間 K1,K2:ヒーターとブロックのステップ応答から計算した比例定数
T2:上記方法でエクセルのソルバーを用いて導出した時定数
どこが間違っているのか、またどうしたら正しい値を得ることができるのか、ご指摘いただけると助かります。
よろしくお願いいたします。