三菱シーケンサを使いこなす
PLCのディジタルPIDの設計
PLCのディジタルPIDは実際にはアナログ理論で設計される。ディジタルPIDの演算式の導出。ブロック図の書き方。プロセスからのAD変換,プロセスへのDA変換,PLC既製のPIDとの接続を設計する手順を説明する。
◆◆このWEBページのオリジナルの
PDFファイルは次を参照のこと◆◆
(PDFファイルの方がきれいで読みやすいです)
https://yamakatsusan.web.fc2.com/hp_software/PLCdigitalPID.pdf
ぜひこちらをダウンロードしてください。
◆ディジタル化にはZ変換を使うべきか?
音楽をディジタル録音する場合,例えば,サンプリング周波数を48kHz,ローパスフィルタのカットオフを16kHzとすると,Z変換を使わないと正確なディジタルフィルタを設計できないであろう。理由は,サンプリング周期に対してローパスフィルタのタイムファクタが3倍しかないので離散値のラプラス変換と言われるZ変換を使うことが必須である。
一方,プロセス制御では,PLCのPIDのスキャンレートが0.01秒ないし0.1秒に対してプロセスのタイムファクタが10倍ないし100倍超なら次の微分積分の定義がそのまま適用できるのである。
つまり,PLCの中ではディジタル演算なのだがアナログ理論がそのまま使えるのである。実際にブロック図ではアナログ扱いになっている。
◆基本形PID
基本形PIDの制御則は,比例項,積分項,微分項を組み合わせて次式のようになる。比例定数
KPをカッコの外にくくり出すのは伝統的な表現である。
これをラプラス変換すれば線形になりEVがカッコの外にくくり出せるので次式のように伝達関数が算出できる。
制御系全体のブロック図は次のようになる。
図 基本形PID
◆PI-DとI-PD
基本形PIDの変形であるPI-D,I-PDのブロック図を次に示す。
図 PI-D(測定値微分型,微分先行型)
図 I-PD(測定値比例微分型,比例微分先行型)
PI-Dは測定値微分型or微分先行型と言われる。I-PDは測定値比例微分型or比例微分先行型と言われる。
これらの変形がつくられた理由は,基本形PIDがSVの変化特にステップのときにMVの変化が敏感すぎてしまうからである。
電磁弁がステップに開くとウォーターハンマーという現象が起き故障の原因になりかねない。このような理由で,微分項または比例項+微分項の入力からSVを除きその入力をPVだけとしたのである。
◆完全微分と不完全微分
基本形PIDの微分項は完全微分と言われ,ステップ入力のとき出力がインパルス(幅0高さ∞)になってしまい,物理的に実現もできないし,できたとしても操作量として適当ではない。そこで,微分項に1次遅れ(ローパスフィルタ)を加味した不完全微分を採用することが多い。
図 完全微分と不完全微分
PLCでは,次のように書くことが多い。
,
KD:微分ゲイン
κ:特に名称なし(不完全微分係数なんてどうですかね)
不完全微分のステップ応答は1次遅れの上下反転となる。
◆基本形PID演算式
微分積分のディジタル化を次のように定義する。
これらを基本形PIDに代入すると次式が得られる。
上式はいわゆる位置型アルゴリズムである。実際のPLCの中では,リアルタイムに演算しなければならないので,速度型アルゴリズムにしなければならない。上式の1スキャン前は,
であり,その差分は,
となる。実際のPLCの中では,リアルタイムに速度型アルゴリズムの次式を演算している。
◆不完全微分の演算式
不完全微分の伝達関数は次式である。
上式の分母をはらって,微分方程式に戻すと,
となり,ディジタル化すると,
となる。整理して,
が得られる。1スキャン前は,
となり,その差分は,
となる。実際のPLCの中では,リアルタイムに速度型アルゴリズムの次式の演算している。
◆PI-DとI-PDの演算式
PI-Dの演算式は微分項のEVを-PVに置き換えるだけである。
I-PDの演算式は比例項と微分項のEVを-PVに置き換えるだけである。
1例として,不完全微分PI-Dの演算式は次のようになる。
PLCでは,次のように書くことが多い。
,
KD:微分ゲイン
κ:特に名称なし(不完全微分係数なんてどうですかね)
◆PVのローパスフィルタ
プロセスから戻る電気信号にノイズが乗る場合には,PVにローパスフィルタを付けるのが望ましい。ローパスフィルタは1次遅れとする。
図 PVのローパスフィルタ
PVのローパスフィルタの伝達関数は次式である。
上式の分母をはらって,微分方程式に戻すと,
となり,ディジタル化して整理すると次式が得られる。
where
,where
αは1に近くなる。1次のローパスフィルタでは気休めに過ぎないであろう。あまり使われていないと考える。使わないときは,α = 0とする。
◆プロセス特性
PIDパラメータの最適調整のためにはプロセス側の特性を特定しなければならないが,普通はステップ応答を次図のジグモイド曲線と仮定する。
図 プロセスの応答特性
上図の伝達関数は次のように1次遅れとむだ時間の結合となる。
K:プロセスゲイン
T:時定数(1次遅れの)
L:むだ時間
多くの専門書では単位ステップ応答(
X = 1)とするので縦軸の表現が上図とは少し異なる。しかし,MVの単位ステップとは何かを定義することは困難である。シンプルにMV=
XとしたときPV=
Y(定常値)になれば,プロセスゲイン
Kは次式となる。
多くの専門書ではジグモイド曲線の傾きを反応速度
Rとしている。単位ステップをきちんと定義できないので混乱の基になるが次式の関係がある。
,
,
R:反応速度
K:プロセスゲイン
T:時定数(1次遅れの)
L:むだ時間
PVが定常値に達するまで待てない場合はプロセスゲイン
Kの代わりに反応速度
Rが使える。上図で反応速度
Rを算出するときは上昇途中の
Yを時間と
Xで除することで得られる。
一般的に,むだ時間
Lが小さいほど,時定数
Tが大きいほど,つまり,
L/Tが小さいほど制御が容易である。
◆PIDパラメータ最適調整
プロセス側の特性が既知ならば数値シミュレーションなどでPIDパラメータは最適調整できる。多くの専門書に掲載されている代表的なものが次表である。係数は無次元であることに注意されたい。
Ziegler & Nichols法では,オーバーシュートの第2波の行過ぎが第1波のそれの1/4になるようにパラメータが選ばれている。CHR法では,オーバーシュートの第1波の行過ぎが 0%または20%になるようにパラメータが選ばれている。
◆PIDパラメータの手動調整
いろいろな理由でプロセス側の特性をきちんと調査できないことも多い。その場合はPIDパラメータを手動調整することになる。
①P→I→Dの順で調整する。予め,Pは最小,Iは最大,Dは最小にしておく。理由は,この状態はPIDがまったく効いていない状態だからである。
②P(比例定数
)は小さい数字から大きい数字へと変える。測定値が振動ぎみになってきたら少し戻す。
③I(積分時間
)は大きい数字から小さい数字へと変える。測定値の振動ぎみなってきたら少し戻す。
④D(微分時間)は小さい数字から大きい数字へと変えていく。測定値の振動ぎみなってきたら少し戻す。
⑤目標値到達時間を重要視するか定常値制定時間を重要視するかによりPIDパラメータを微調整する。
■PLCのディジタルPIDの設計の実際
◆物理空間とPIDの接続の設計
PLCのディジタルPIDはPLCメーカーの既製品であり,ユーザーが設計・製作することはない。ユーザーはPV,SV,MVの物理量と内部変数の関係を設計しなければならない。次図は物理空間とPIDの接続の概略である。
図 PID周辺ブロック図
PIDの入力はPVとSVであり出力はMVであり,普通は2Byteの整数である。一方,物理空間にも,PVとSVとMVがあり,SVは普通パソコン(旧くはCRTと呼ばれていた)から設定される。 PIDの入出力の範囲は,PLCの機種によっては0~2000のように固定のものもあるが,任意に設定できる機種もあり普通は2Byte(-32768~0~+32767)に収まればよい。
◆AD変換,DA変換
AD変換のアナログ入力とDA変換のアナログ出力の電気信号は,1~5V,4~20mAなどいろいろな仕様があり,これをセンサー・アクチュエータの物理量の仕様により,例えば,0~20L/min,0~100%などに割り当てる。次に,PIDのPVを0~200,0~2000,0~10000など任意に選ぶことができる。また,物理量のMVが0~100%であれば,PIDのMVは0~1000,0~2000,0~10000など任意に選ぶことができる。
物理空間のPV,MVとPID内部変数のPV,MVの関係を工学値変換係数と呼ぶ。パソコンで設定される物理量のSVとPIDのSVの関係(工学値変換係数)はPVのそれと同じにしなければならない。ただし,PVのフルスケールとは別にSVにリミットを設定されることが多い。
◆AD変換・DA変換のスケーリングの設計の実際
AD変換のディジタル出力とDA変換のディジタル入力は,普通は4000とか12000などのように固定されている。そこで,スケーリングしてPID内部変数に変換するのである。例えば,物理量PVが0~20L/min,PIDのPVが0~2000の場合,AD変換のアナログ入力がMAXのときのディジタル出力が12000であれば,スケーリングで1/6にすればよいのである。
SVについては,普通はパソコン(CRTともいう)で20.00L/minと入力したときにパソコン側で工学値変換してPLCのレジスタに2000を渡すように設計するのである。
このようにスケーリングしたあとは,AD変換のアナログ入力とDA変換のアナログ出力の電気信号とその変換の仕様は工学値変換係数と全く関係なくなるので,電気信号とその変換の仕様はいつでも仕様変更できるのである。
◆工学値変換係数の設計
PIDの入力と出力のフルスケールを一致させる設計方法と一致させない設計方法がある。工学値変換係数を単位ごとに統一すると必然的に後者になる。前者はPIDのパラメータの設計やスケーリングの設計が統一できるが工学値変換係数の設計が複雑になる。
最初に,PIDの入力と出力の範囲が同じでない例をあげる。
工学値変化係数は10の倍数が望ましい。たまたま,工学値変換係数が同じになる場合もある。
アクチュエータは比例電磁弁やヒーターなどがあり,操作される物理量は流量や電力(温度)であるが,実際には,バルブ開度やヒーター電力をパーセント表示することが多い。理由は,仕様変更しても設計のやり直しがないようにするためである。また,PIDループが複数ある場合は,物理量とPLC内部変数の関係(工学値変換係数)は単位ごとに統一した方がよい。このような設計では必然的にPIDの入力と出力の範囲が同じでなくなる。
物理量のプロセスゲイン
Kは,
であるが,内部変数のプロセスゲイン
Kは,工学値変換係数を考慮して,
となる。最適調整で使うプロセスゲイン
Kは後者であることに注意する。
例えば,PID内部変数のPV,SV,MVを0~2000として,最適調整して得られた比例定数を
KPとすると,あとでMVを0~1000に仕様変更すれば,比例定数は
KPの1/2になるのである。
◆スケーリングのFxと内部変数の整数演算
PLC内部変数のPV,MVの工学値変換のスケーリングに乗除算ではなく関数発生Fxを推奨する理由は,非直線性補正をしたい場合があるからと乗除算より関数発生Fxの方が汎用性があるからである。
一方,PLCの演算速度の関係でスケーリングに関数発生Fxを使いたくない場合は,また,スケーリング以外のすべての演算は整数演算を推奨する。理由はPLCの内部変数はすべて整数だからである。整数演算の例として物理空間で次式の割合演算を考える。
よくやる方法は,すべての数値を浮動小数点にしてから演算して整数に戻す方法である。しかし,内部変数X,Y,Z,X+Yが2Byte(-32768~0~+32767)を越えなければ整数演算が使える。
上式と上表から変数の適当な値を使って次式のAを求める。
,
実際のPLCでは,X×1000を先にやり4Byteにして,X+Yの2Byteで除すればよい。
ほとんどすべての内部変数が2Byteを超えないので必ずこの演算パターンが使えるはずである。
この方法は,数値演算コプロが高価だったころ,工学演算をすべて整数演算にするテクニックであり,三角関数も整数演算でやったものである。
◆バンプレス切替
PID制御を自動,MV直接設定を手動と言うことにすると,自動と手動の切替時にMVが変化しないようにすることをバンプレス切替と言う。その実現にはトラッキングという手法を使う。
図 トラッキング
PLCのPIDループはその手動時には,SVがPVに書き換えられ(偏差が0になる),また,MV MANがMVに出力される。さらに,プログラムで自動の設定SVにもPVを書きこんでおく。こうしておけば,手動から自動への切替時にMVが変化しなくなる。
自動時には,プログラムで手動の設定MVにPIDのMVを書きこむ。こうすれば,自動から手動への切替時にMVは変化しない。
さらに,自動の設定SVをステップ状に変化したときはPIDのSVの変化率を制限する。そうすることによって,手動時に自動の設定SVを設定・書換えたあと,手動から自動への切替すると,その瞬間はMVは変化せず,その後はPLCのSVは手動のSV(つまりPV)から自動の設定SVに変化率が制限されながら到達する。
◆非直線性補正
次図のようにバルブ開度と流量の関係が直線になるとは限らない。0付近に不感帯があるものもある。本来,PID制御はそのような非直線性の特性があっても問題なく制御でき, PVはSVに必ず一致させることができるのである。が,どの部分でも最適調整したい場合は非直線性補正をする必要がある。
図 バルブ開度と流量の特性曲線の1例
1例をあげる。
次図のブロック図を設計するとき最初に決めるべきは,自動の設定SVと手動の設定MVの工学値変換係数であろう。つまり,物理量と内部変数の関係を決めるのである。複数のPIDループがある場合,単位ごとに工学値変換係数を統一すれば必然的にPVとMVの内部変数の範囲が異なることになり,スケーリング(関数発生)Fxを2連にしなければならない。PVとMVの内部変数の範囲が同じであればスケーリング(関数発生)Fxを1連できるが,工学値変換係数の設計が複雑になる。
この例の設計では,PIDのMVはバルブ開度であり,最初のFxで流量に直線変換して,次のFxで特性曲線の縦軸を入力,横軸を出力としてバルブ開度に変換する。例えば,0付近でMVが少し上がればプロセスMVが大きく上がるような非直線性補正をしてくれるのである。MV MANのトラッキングのFxはその逆になる。
図 非直線性補正
もし,PVとMVの内部変数の範囲を同じにすれば,スケーリングの関数発生Fxは1連でよい。PVとMVの内部変数の範囲を一致させるメリットは,内部変数のプロセスゲイン
KがすべてのPIDループで1となり,比例定数
KPの設定が判り易くなることである。
ただし,このような設計では,工学値変換係数(特に手動の設定MV)やPIDパラメータ(特にMV制限)やDA変換に渡すFxの設計がPIDループごとに変わり混乱をまねくおそれがある。特に,MVの直接設定(手動のこと)(リミットも)の単位をどう表現するかが悩ましいことになる。
さらに,Fxを減らしたいときは次図の構成でもよいが,PIDループごとに注意深く設計してほしい。
図 Fxの少ない構成
もし,PVとMVの内部変数の範囲を同じにする設計を採用するならば,MVの工学値の単位をPVのそれと同じにするという設計も可能である。つまり,MVのバルブ開度やヒーター出力の工学値の単位をパーセントとするのではなく,PVと同じL/minやkWなどとするのである。
このようにすれば,バルブ開度・流量特性やヒーター出力・温度特性の横軸と縦軸の単位は同じになり,ブロック図の中で工学値の単位が見かけ上統一されることになる。そして,非直線性補正も横軸と縦軸の単位は同じまま設計することになる。これはプロセスゲイン
Kが1に統一されたことを意味する。
その代償として,物理空間と内部変数の関係の設計が混乱しやすくなるので注意されたい。特に,MVの直接設定(手動のこと)(リミットも)の単位をどう表現するかが悩ましいことになる。単位変換のためにスケーリングするのは本末転倒になる。
非直線性補正がFxの設計の混乱を招いているのである。念のためにもう一度言うが,非直線性補正がなくてもPID制御は正常に働くのである。