以下、本発明の実施の形態を図面に基づいて説明する。図1は、本願発明に係る温度制御装置のハードウェア構成を示すブロック図である。図1に示す温度制御装置100は、温度検出素子(温度検出手段、温度センサ)200から出力信号を読み込んで、温度出力素子300(制御対象)の操作量を出力する装置である。
前記温度出力素子300は、例えば、発熱抵抗素子やペルチェ素子などで構成され、半導体レーザや非線形光学素子を含む光共振器などの加熱又は冷却を行う電気素子であり、この温度出力素子300の発熱量又は吸熱量を、温度出力素子300に与える電力(電圧及び/又は電流)を制御することで調整して、半導体レーザなどの温度T(制御量)を目標温度Teに制御する。尚、前記目標温度Teは、例えば、半導体レーザの波長に応じて決定される。
一方、温度検出素子200は、前記温度出力素子300又は温度出力素子300で加熱・冷却される半導体レーザ(制御対象)の温度情報を電気信号に変換するための素子であり、例えばサーミスタや熱電対などで構成される。また、温度制御装置100は、MPU(マイクロプロセッサ)101、RAM102、不揮発性メモリ103、D/A変換器104、A/D変換器105、ドライバ回路106、検出増幅回路107などを含んで構成される。
前記温度検出素子200から出力される、制御対象の温度を示すアナログ信号は、前記検出増幅回路107で増幅された後、A/D変換器105でデジタル信号に変換され、前記MPU101に読み込まれる。また、MPU101から出力される前記温度出力素子300のデジタル操作信号Wは、D/A変換器104でアナログ操作信号Wに変換され、更に、D/A変換器104から出力されるアナログ操作信号Wが前記ドライバ回路106に出力される。
そして、前記ドライバ回路106は、前記アナログ操作信号Wに応じて前記温度出力素子300に対して駆動電力(操作量)を与える。尚、本実施形態では、前記操作信号Wが高くなるほど、温度出力素子300に与えられる電力(W)が大きくなり、発熱抵抗素子などによる加熱制御における発熱量、ペルチェ素子などによる冷却制御における吸熱量が増えるものとする。
前記MPU101におけるソフトウェア構成として、目標温度Teと実際の温度Tとの偏差e(e=Te−T)に基づく比例・積分・微分動作(PID動作)で操作信号Wを更新するPID制御プログラムや、前記偏差eと閾値との比較によって判断される制御段階毎に、前記PID動作における制御定数(制御ゲイン)を変更する多段階制御アルゴリズムなどが備えられている。即ち、前記MPU101は、後述するように、フィードバック制御手段、起動出力値設定手段、起動手段、ゲイン変更手段としての機能をソフトウェアとして備え、学習記憶手段は、不揮発性メモリ103と前記MPU101のソフトウェアとによって構成される。
前記PID動作では、操作信号Wが、W=比例動作出力+積分動作出力+微分動作出力として算出され、詳細には、偏差をeとすると、操作信号Wは、数1に示すようにして算出される。
上記数1において、KPは比例ゲイン(比例定数)、TI は積分時間、TD は微分時間であり、KP/TI を積分ゲインKI(積分定数)、KP*TD を微分ゲインKD(微分定数)と称するものとする。前記不揮発性メモリ103は、EEPROMなどの書き換え可能な不揮発性メモリであり、後述するように、積分動作出力の初期値とする起動出力値Wsの設定に用いるテーブルなどが記憶される。
尚、温度制御装置100が、MPU(マイクロプロセッサ)101、RAM102、不揮発性メモリ103で構成され、D/A変換器104,A/D変換器105,ドライバ回路106及び検出増幅回路107が、温度制御装置100に対して外部接続される構成とすることができる。また、MPU(マイクロプロセッサ)101、RAM102、不揮発性メモリ103、D/A変換器104、A/D変換器105が、同一チップに搭載される所謂ワンチップマイコンを用いれば、装置の小型化・標準化・コストダウンを同時に図れる。
以下では、前記温度制御装置100による温度制御を詳細に説明する。図2のフローチャートは、前記温度制御の第1実施形態を示す。図2のフローチャートに示すプログラムは、温度制御装置100の電源スイッチのオン、又は、オペレータによる温度制御の開始指令(開始を指令するスイッチの操作)などに基づいて起動される。
まず、ステップS501では、積分動作出力を零にリセットするなどのイニシャライズ処理を実行する。換言すれば、図2のフローチャートに示すプログラムの起動時が、温度制御の起動時に相当する。ステップS502では、そのときの前記温度検出素子200の出力から制御対象の温度Tを検出し、この検出した温度Tを、制御対象の初期温度Ts(℃)として記憶する。前記初期温度Tsは、温度制御を起動する直前の制御対象(半導体レーザなど)の温度であり、常温(室温)に相当する。
ステップS503では、前記不揮発性メモリ103に記憶されているテーブルを参照し、前記ステップS502で記憶した初期温度Tsに対応して記憶されている最終出力値Weを検索する。前記テーブルは、制御対象の温度を目標温度Te(設定値)にするために最終的に要求される操作信号W(又は操作量)である最終出力値Weを、初期温度Ts毎に記憶するものである。尚、制御対象の目標温度Teが複数種に切り替えられる場合には、前記テーブルを、複数の目標温度Te毎に備えるか、又は、目標温度Teと初期温度Tsとに応じて最終出力値Weを記憶するマトリックステーブルを備えるようにする。
前記テーブルにおける初期温度Ts毎の最終出力値Weは、予め実験やシミュレーションなどによって求めたものであっても良いし、後述するように、実際に温度制御を行わせた結果に基づいて更新記憶(学習)される値であってもよい。また、初期温度Ts毎に最終出力値Weを記憶させる代わりに、後述するようにして最終出力値Weに基づき設定される起動出力値Wsを、初期温度Ts毎に記憶させることができる。
ステップS504では、前記ステップS503で求めた最終出力値Weに所定比率Rs(Rs<100%であり、例えばRs=90%)を乗算して、起動出力値Ws(Ws=We×Rs)を設定し、積分動作出力の初期値を前記起動出力値Wsとすることで、PID動作で更新される操作信号Wを、初期値(零)から前記起動出力値Wsまでステップ的に変化させると共に、前記PID動作における各制御定数(制御ゲイン)KP,KI,KDとして、起動直後(第1段階)に適用される値として予め記憶されているKP1,KI1,KD1を設定する(KP=KP1,KI=KI1,KD=KD1)。
前記PID動作によって実際の温度Tが目標温度Te付近に収束すると、偏差eは零に漸近することで、比例動作出力(比例成分)及び微分動作出力(微分成分)が零に漸近し、積分動作出力(積分成分)が残ることになり、実際の温度Tを目標温度Teにするために要求される操作信号W、即ち、最終出力値Weは、比例動作出力(比例成分)及び微分動作出力(微分成分)が零に漸近した状態(定常状態)での積分動作出力(積分成分)となる。
従って、前記定常状態での積分動作出力に相当する操作信号Wを最終出力値Weとして、この最終出力値Weにまで、温度制御の起動時に操作信号Wをステップ的に変化させれば(換言すれば、目標温度Teにまで温度変化させることができる電力にまでステップ的に増大変化させれば)、制御対象の温度(制御量)を、速やかに目標温度にまで到達させることが可能である。
但し、最終出力値Weは、実際の温度Tが目標温度Teになるものと予測される操作信号Wではあるが、環境条件の違いなどによって、最終出力値Weの出力状態で目標温度よりも高くなることがある。そのため、予測される範囲の環境条件の違いがあっても、目標温度Teを超えることにならないように、最終出力値Weよりも低い起動出力値Wsにまで操作信号Wをステップ変化させ、その後は、操作信号W(操作量)の不足分を積分動作で補って、最終的に実際の温度Tを目標温度Teに一致させる。
即ち、温度制御に起動時に起動出力値Wsにまで操作信号Wをステップ変化させれば、フィードバック制御(PID動作)によって徐々に操作信号Wを増大変化させる場合に比べて、温度変化の応答を速められる。しかし、起動出力値Ws=最終出力値Weとすると、環境条件によっては、実際の温度Tが目標温度Teを超えてしまうことがあり得るので、定常的に与え続けても実際の温度Tが目標温度Teを超えることがない、最終出力値Weよりも低い起動出力値Wsを設定し、起動出力値Wsでは目標温度Teに届かない分だけ、フィードバック制御(PID動作)で操作信号Wを増大変化させる。
尚、本実施形態では、起動出力値Wsを積分動作出力の初期値として与えるが、起動出力値WsとPID動作出力との加算値を最終的な操作信号Wとして出力させても良い。また、前記KP1,KI1,KD1を全て零に設定して、PID動作による操作信号Wの更新を第1段階で停止させても良いし、KP1,KI1,KD1>0として、PID動作による操作信号Wの更新を起動直後から開始させるようにしてもよい。
ここで、第1段階においては、起動出力値Wsが最終出力値Weに近いほど、換言すれば、所定比率Rsが高いほど、KP1,KI1,KD1を小さくする(零を含む)ことで、操作信号Wの変化に対する実際の温度変化の遅れによって、温度Tが過剰に高く制御されてしまうことを回避することができる。
また、前記所定比率Rsは一定値に限らず、例えば、初期温度Tsが高いほど(目標温度に対する偏差が小さいほど)前記所定比率Rsを小さい値に設定し、初期温度Tsが高いときと低いときとで、フィードバック制御で補う操作量が大きく異なることがないようにすることができる。更に、最終出力値Weに所定比率Rsを乗算した値を起動出力値Wsとする代わりに、最終出力値Weから所定値(例えば5℃相当値)を減算した値を起動出力値Wsとすることができる。
ステップS505では、前記偏差eの絶対値が閾値Thよりも小さくなったか否かを判断し、前記偏差eの絶対値が閾値Thよりも小さくなるまでは、ステップS504で設定したPID動作(第1段階の制御)を継続させる。即ち、KP1,KI1,KD1を全て零に設定してPID動作を停止させる場合には、操作信号Wが起動出力値Wsに維持され、KP1,KI1,KD1>0としてPID動作による操作信号Wの更新を行わせる場合には、起動出力値WsにPID動作による更新分が加算されることで、操作信号Wが漸増することになる。
ステップS505で、前記偏差eの絶対値が閾値Thよりも小さくなったと判断された場合、即ち、起動出力値Wsにまで操作信号Wをステップ的に変化させたことで期待される温度付近にまで変化し、実際の温度Tが目標温度Teに充分に近づいた第2段階になると、ステップS506へ進む。尚、制御対象が半導体レーザ等である場合には、前記偏差eの絶対値が閾値Thよりも小さくなったと判断された時点で、動作を開始させることができる。
ステップS506では、実際の温度が目標温度に対してオーバーシュートすることなく、目標温度付近にまで変化させるのに適した値として予め記憶されているKP2,KI2,KD2を、PID動作の各制御定数(制御ゲイン)KP,KI,KDとして設定する。
そして、前記制御定数(制御ゲイン)KP2,KI2,KD2によるPID動作で操作信号Wを更新させて、実際の温度Tを目標温度Teに収束させ、目標温度Teに維持させる。
ステップS507では、電源スイッチがオフされたか(又はオペレータによって温度制御終了指令が発せられたか)、即ち、温度出力素子300の駆動停止要求時であるかを判断する。そして、電源スイッチがオフされると、ステップS508の終了処理へ進んで、温度制御を終了させる。
尚、第1段階からPID動作で操作信号Wを変化させる場合、第2段階での制御定数KP2,KI2,KD2を、第1段階での制御定数KP1,KI1,KD1と同じ値に設定することができ、また、第1段階では、KP1,KI1,KD1>0としてPID動作で操作信号Wを変化させ、第2段階では、KD2=0、かつ、KP2,KI2>0(KP1,KI1>KP2,KI2>0)として、PI動作で操作信号Wを変化させることができる。
図3は、実施形態における基本的な制御機能を示すブロック図である。図3において、温度出力素子300(制御対象)の温度Tが温度検出素子200で検出され、該検出温度Tは検出増幅回路107を介して減算器601に出力され、該減算器601では、目標温度Teと検出温度Tとの偏差eを算出する。減算器601で算出された偏差eは、比例動作部602、積分動作部603、微分動作部604にそれぞれ出力され、前記偏差eに基づき、比例動作出力(比例成分)、積分動作出力(積分成分)、微分動作出力(微分成分)をそれぞれ出力する。
前記比例動作出力(比例成分)、積分動作出力(積分成分)、微分動作出力(微分成分)は加算器605に出力され、該加算器605は、比例動作出力と積分動作出力と微分動作出力との総和を操作信号Wとして、ドライバ回路106に出力する。前記ドライバ回路106では、前記操作信号Wに応じて前記温度出力素子300(制御対象)の駆動電力(操作量)を制御する。
前記加算器602とドライバ回路106との間には、スイッチング回路606が設けられており、該スイッチング回路606は、前記加算器602からの操作信号Wと、そのときの初期温度Tsに基づいて不揮発性メモリ103から読み出された最終出力値Weに対し、乗算器607で前記所定比率Rsを乗算した結果である起動出力値Ws(Ws=We*Rs)とのいずれか一方を選択して、前記ドライバ回路106に出力する回路である。
ここで、前記スイッチング回路603は、温度制御の起動時には、前記起動出力値Wsを前記ドライバ回路106に出力し、比較器608で、前記偏差eの絶対値と閾値Thとを比較して、「偏差eの絶対値」≧閾値Thであると判断される間は、前記起動出力値Wsを継続して出力させる。そして、「偏差eの絶対値」<閾値Thになると、前記起動出力値Wsを積分動作出力の初期値とし、前記PID動作で更新された操作信号Wを前記ドライバ回路106に出力させる。
即ち、図3のブロック図は、「偏差eの絶対値」≧閾値Thである間は、フィードバック制御(PID動作)を停止させ、操作信号Wを前記起動出力値Wsに維持させる場合に対応しているが、前述のように、起動時に、操作信号W(積分動作出力)を起動出力値Wsにまでステップ的に変化させ、直ちに、フィードバック制御(PID動作)を開始させるようにし、「偏差eの絶対値」<閾値Thになった時点でフィードバック制御の制御定数(制御ゲイン)を切り替えるようにすることができる。
また、後述の第2実施形態に示すように、PID動作によって実際の温度Tが目標温度Teに収束した状態での操作信号W(積分動作出力)を、最終出力値Weとして初期温度Ts毎に前記不揮発性メモリ103に更新記憶させるか、又は、前記最終出力値Weに所定比率Rsを乗算して求めた起動出力値Wsを初期温度Ts毎に前記不揮発性メモリ103に更新記憶させる、最終出力値We又は起動出力値Wsの学習処理を行わせることができる。
図4のタイムチャートは、前記第1実施形態における操作信号W及び制御対象の温度Tの変化を示す。図4のタイムチャートにおいて、時刻t1が温度制御の起動時であり、このときに温度検出素子200で検出された温度を初期温度Tsとする。前記初期温度Tsが検出されると、不揮発性メモリ103に記憶されているテーブルを参照し、そのときの初期温度Tsに対応する最終出力値We(又は起動出力値Ws)を検索する。
図4に示す例では、目標温度が50℃であるため、初期温度50℃に対応する最終出力値Weとして、We=0が記憶されている一方、実際の初期温度Tsは25℃であり、この初期温度Ts=25℃に対応する最終出力値Weとして、We=63が記憶されているので、起動出力値Wsは、Ws=We*Rs=63*0.9=56.7に設定される。前記時刻t1(温度制御の起動時)において、操作信号Wを初期値である零から前記起動出力値Ws=56.7にまでステップ的に変化させ(積分動作出力の初期値に起動出力値Wsを設定し)、該起動出力値Wsからフィードバック制御による操作信号の更新を直ちに開始させる。
そして、時刻t2で、「偏差eの絶対値」<閾値Thであると判断されると、PID制御における制御定数(制御ゲイン)KP,KI,KDを切り替えてフィードバック制御を継続させ、実際の温度Tを目標温度Thに収束させる。尚、「偏差eの絶対値」≧閾値Thである間である第1段階において、制御定数(制御ゲイン)KP,KI,KDを全て零として、PID動作(フィードバック制御)を停止させれば、前記第1段階で操作信号が起動出力値Wsに維持させ、「偏差eの絶対値」<閾値Thとなった第2段階からPID動作(フィードバック制御)が開始されることになるが、図4のタイムチャートは、起動時からPID動作(フィードバック制御)を開始させる場合の例を示す。
上記のように、第1実施形態では、操作信号Wを初期値(=0)からPID動作で徐々に変化させるのではなく、初期値から起動出力値Wsにまでステップ変化させてからPID動作で変化させる。操作信号Wを初期値からPID動作で徐々に変化させる場合、比例動作及び積分動作の制御定数(制御ゲイン)を高くすることで、温度の立ち上がり応答を速くできるが、制御安定性が悪化することで、オーバーシュートやハンチングが発生してしまう。また、制御ゲインの設定によって、立ち上がり応答と制御安定性とを両立させようとすると、制御ゲインの適合に多くの時間を要してしまう。
これに対し、上記第1実施形態において、起動出力値Wsへのステップ変化は、実際の温度Tが目標温度Te(設定値)になる最終出力値Weの近傍にまでステップ変化させることになり、温度変化の立ち上がり応答を速めることができる。そして、実際の温度が目標に充分に近づいてからのPID動作では、制御安定性を優先させればよいので、オーバーシュートやハンチングが発生することを回避でき、かつ、制御定数(制御ゲイン)の適合も容易である。
尚、上記第1実施形態におけるフィードバック制御は、PID動作によって行われるが、PI動作やI動作のみでフィードバック制御を行わせることができる。但し、微分動作Dを加えることで、安定性を確保しつつ比例動作P及び積分動作Iの制御ゲインを上げることができ、応答速度を上げることができる。
ところで、上記第1実施形態では、偏差eの絶対値と閾値Thとの比較に基づいて第1段階と第2段階とに判別して、制御パターンを切り替えるようにしたが、実際に目標温度Teに向けて制御した結果としての操作信号Wを、前記最終出力値Weとして学習させる場合には、後述する第2実施形態に示すように、より多段階に制御パターンを切り替えることが好ましい。
図5及び図6は、第2実施形態における温度制御の流れを示すフローチャートである。図5及び図6のフローチャートに示すプログラムは、温度制御装置100の電源スイッチのオン、又は、オペレータによる温度制御開始指令などに基づいて起動され、まず、ステップS701では、積分動作出力を零にリセットするなどのイニシャライズ処理を実行する。
ステップS702では、そのときの前記温度検出素子200の出力から制御対象の温度Tを検出し、この検出した温度Tを、制御対象の初期温度Ts(℃)として記憶する。ステップS703では、前記不揮発性メモリ103に記憶されているテーブルを参照し、前記ステップS702で求めた初期温度Tsに対応して記憶されている最終出力値We(又は起動出力値Ws)を検索する。
ステップS704では、今回の初期温度Tsに対応する最終出力値We(又は起動出力値Ws)が記憶されていたか否かを判断する。そして、今回の初期温度Tsに対応する最終出力値We(又は起動出力値Ws)が記憶されていた場合には、ステップS705へ進み、検索した最終出力値Weに所定比率Rsを乗算した結果を、今回の起動出力値Wsに設定する。
また、初期温度Ts毎に起動出力値Wsを記憶させる場合には、ステップS704で今回の初期温度Tsに対応する起動出力値Wsが記憶されていたと判断されると、ステップS705へ進み、ステップS703で検索した起動出力値Wsをそのまま最終的な起動出力値Wsに設定する。
一方、ステップS704で、今回の初期温度Tsに対応する最終出力値We(又は起動出力値Ws)が記憶されていないと判断された場合には、ステップS706へ進む。ステップS706では、今回の初期温度Tsとは異なる初期温度Tsに対応して記憶されている最終出力値We(又は起動出力値Ws)に基づいて、今回の初期温度Tsに対応する最終出力値We(又は起動出力値Ws)を設定する。
具体的には、最終出力値We(又は起動出力値Ws)が記憶されている初期温度Tsの中で、今回の初期温度Tsに最も近い初期温度Tsを選択し、該選択した初期温度Tsに対応して記憶されている最終出力値We(又は起動出力値Ws)を、今回の初期温度Tsにも適用させる。
また、最終出力値We(又は起動出力値Ws)が記憶されている初期温度Tsの中で、今回の初期温度Tsに近い2つ以上の初期温度Tsを選択し、該選択した初期温度Tsに対応して記憶されている最終出力値We(又は起動出力値Ws)から、今回の初期温度Tsに対応する最終出力値We(又は起動出力値Ws)を、補間演算などに基づいて推定させることができる。
数2は、今回の初期温度Tsに近い2つの初期温度Ts’,TS”にそれぞれ対応する最終出力値We(Ts’),We(Ts”)から、今回の初期温度Tsに対応する最終出力値We(Ts)を演算する式の一例を示す。
上記のようにして推定演算される最終出力値We(Ts)に、所定比率Rsを乗算して、今回の初期温度Tsに対応する起動出力値Wsを設定する。尚、初期温度Ts毎に起動出力値Wsを更新記憶させる場合には、数2における最終出力値We(Ts’),We(Ts”)を、起動出力値Ws(Ts’),Ws(Ts”)に置き換えて、今回の初期温度Tsに対応する起動出力値Ws(Ts)を演算させることができる。
尚、そのときの初期温度Tsに対応する最終出力値We(又は起動出力値Ws)の推定においては、最終出力値We(又は起動出力値Ws)が記憶されている3つ以上の初期温度TsでのWe(Ws)データから、初期温度Tsと最終出力値We(又は起動出力値Ws)との相関を示す多項式を求め、該多項式に基づいて、そのときの初期温度Tsに対応する最終出力値We(又は起動出力値Ws)を推定させることができる。
また、テーブルに記憶されている最終出力値Weの数が規定数に満たない場合には、今回の初期温度Tsに対応する最終出力値Weの推定、及び、起動出力値Wsへのステップ変化をキャンセルし、操作信号Wを初期値=0からPID動作で徐々に変化させることができる。また、推定に用いる最終出力値Weを、今回の初期温度Tsを中心とする所定温度範囲内の初期温度Tsに対応して記憶されている最終出力値Weに限定し、推定に用いることができる最終出力値Weがない場合には、起動出力値Wsへのステップ変化をキャンセルすることができる。
更に、推定に用いる最終出力値Weが対応している初期温度Tsと、今回の初期温度Tsとの差が大きいほど、最終出力値Weの推定誤差が大きくなるものと予測されるので、前記初期温度Tsの差が大きいほど、推定結果をより小さく補正して、起動時のステップ変化に用いるようにすることができる。
図7のタイムチャートは、今回の初期温度Tsに対応する最終出力値Weが記憶されていない場合における、最終出力値We(Ts)の推定演算の様子を示すものである。図7に示す例では、初期温度Tsが23℃であるが、初期温度Ts毎に最終出力値Weを記憶するテーブルの初期温度Ts=23℃に対応する最終出力値Weの欄には、最終出力値Weが記憶されていない。
但し、23℃以外の初期温度Tsでは、対応する最終出力値Weが記憶されている温度条件が存在し、23℃より高い温度域の中では、対応する最終出力値Weが記憶されている初期温度Tsのうち23℃に最も近いのが初期温度Ts=25℃であり、また、23℃より低い温度域の中では、対応する最終出力値Weが記憶されている初期温度Tsのうち23℃に最も近いのが初期温度Ts=20℃である。
そして、初期温度Ts=25℃に対応して記憶されている最終出力値Weは63であり、初期温度Ts=20℃に対応して記憶されている最終出力値Weは80である。ここで、今回の初期温度Ts=23℃は、温度範囲20℃〜25℃を、3:2に分ける境界値であり、最終出力値Weの範囲80〜63を3:2に分ける境界値は69.8であるので、初期温度Ts=23℃に対応する最終出力値Weを、69.8に設定する。即ち、上記推定演算は、今回の初期温度Ts=23℃を挟む2つの温度条件それぞれの最終出力値Weから、直線補間で今回の初期温度Ts=23℃に対応する最終出力値Weを推定することになる。
上記のように、今回の初期温度Ts=23℃に対応する最終出力値Weが69.8であると推定すると、該推定値に基づいて設定した起動出力値Wsにまで操作信号Wをステップ変化させて、フィードバック制御(PID動作)を開始させる。そして、実際に目標温度Teになったときの操作信号Wが例えば71であったとすると、後述するように、初期温度Ts=23℃に対応する最終出力値Weとして「71」を記憶させ、次回、初期温度Tsが23℃であった場合には、初期温度Ts=23℃に対応する最終出力値Weとして「71」が読み出されるようになる。
ステップS707では、温度制御の起動直後の第1段階における処理として、まず、積分動作出力の初期値として前記起動出力値Wsを設定することで、操作信号Wをステップ的に増大変化させ、また、前記PID動作における各制御定数(制御ゲイン)KP,KI,KDとして、起動直後(第1段階)に適用される値として予め記憶されているKP1,KI1,KD1を設定する(KP=KP1,KI=KI1,KD=KD1)。ここで、前記KP1,KI1,KD1を全て零に設定し、PID動作(フィードバック制御)を停止させることができる他、KP1,KI1,KD1>0として、温度制御の起動時からPID動作(フィードバック制御)を開始させることができる。
ステップS708では、偏差eの絶対値が閾値Th未満であるか否かを判別し、「偏差eの絶対値」≧閾値Thである間は、KP=KP1,KI=KI1,KD=KD1でのPID動作を継続させる。そして、「偏差eの絶対値」<閾値Thとなると、ステップS709へ進み、第2段階の設定として、前記PID動作における各制御定数(制御ゲイン)KP,KI,KDを、第2段階に適用される値として予め記憶されているKP2,KI2,KD2(KP2,KI2,KD2>0)に設定する(KP=KP2,KI=KI2,KD=KD2)。
尚、第1段階からPID動作で操作信号Wを変化させる場合、第2段階での制御定数KP2,KI2,KD2を、第1段階での制御定数KP1,KI1,KD1と同じ値に設定することができ、また、第1段階では、KP1,KI1,KD1>0としてPID動作で操作信号Wを変化させ、第2段階では、KD2=0、かつ、KP2,KI2>0(KP1,KI1>KP2,KI2>0)として、PI動作で操作信号Wを変化させることができる。
ステップS710では、「偏差eの絶対値」<閾値ε1(ε1<Th)になったか否かを判断し、「偏差eの絶対値」≧閾値ε1である場合、即ち、閾値ε1≦「偏差eの絶対値」<閾値Thである間(第2段階)は、KP=KP2,KI=KI2,KD=KD2としたPID動作を継続させる。
一方、第2段階のフィードバック制御によって実際の温度Tが更に目標温度Teに近づき、「偏差eの絶対値」<閾値ε1になると、ステップS711へ進む。ステップS711では、第3段階の設定として、微分動作Dの制御定数(制御ゲイン)KDを零にして微分動作Dを停止させ、また、比例動作Pの制御定数(制御ゲイン)KPを、第3段階用の制御定数KP3(0<KP3<KP2)を初期値として徐々に零にまで減少させるか又は直ちに零にし、更に、積分動作Iの制御定数KIを、第3段階用の制御定数KI3(0<KI3<KI2)に設定する。即ち、「偏差eの絶対値」<閾値ε1になってからの第3段階は、積分動作Iで実際の温度Tを目標温度Teに近づけるようにし、目標温度Teにするために必要な定常的な操作信号Wを、積分動作Iによって確定させる。
ステップS712では、比例動作Pの制御定数(制御ゲイン)KPを、第3段階用として予め記憶されている制御定数KP3(0<KP3<KP2)を初期値として徐々に零にまで減少させる処理の経過を判断するために、その時点での制御定数KPが零よりも大きいか否かを判断する。そして、制御定数KPが零よりも大きい(KP>0)場合には、ステップS713へ進んで、制御定数KPから所定値αだけ減算した結果を新たに制御定数KPとする、制御定数KPの漸減処理を実行する。
尚、ステップS713における制御定数KPの漸減処理においては、制御定数KPを零以上に制限し、零よりも小さい値(マイナスの値)に設定されることがないようにしてある。また、第3段階に入った時点で、制御定数KPを零にする場合には、ステップS712,ステップS713の処理は省略される。
ステップS714では、「偏差eの絶対値」<閾値ε2(0<ε2<ε1)になっていて、かつ、比例動作Pの制御定数KPが零にまで減算されているか否かを判断する。そして、「偏差eの絶対値」≧閾値ε2である場合、即ち、閾値ε2≦「偏差eの絶対値」<閾値ε1である間、及び/又は、制御定数KPが零にまで減算されていない場合には、ステップS711へ戻り、KI=KI3,KD=0とし、また、制御定数KPとしてKP3からの減算処理値を用いるPID動作を継続させる。
一方、「偏差eの絶対値」<閾値ε2で、かつ、KP=0であると判断された場合、ステップS715へ進む。ステップS715では、第4段階の制御パターンとして、比例動作P及び微分動作Dの制御定数KP,KDを零にし、積分動作Iにおける制御定数KIを、第4段階用として予め記憶されている制御定数KI4(KI4≦KI3)に設定し、積分動作Iのみで操作信号Wを更新させるようにする。
次のステップS716では、「偏差eの絶対値」<閾値ε2である状態を設定時間teだけ維持しているか否かを判断し、「偏差eの絶対値」<閾値ε2である状態の継続時間が前記設定時間te未満であれば、ステップS714へ戻る。そして、「偏差eの絶対値」≧閾値ε2になっている場合には、ステップS711へ戻って、再び第3段階における制御定数の設定に戻してフィードバック制御を行わせる。
ステップS716で、「偏差eの絶対値」<閾値ε2である状態の継続時間が前記設定時間teに達したと判断されると、ステップS717へ進み、そのときの操作信号Wを最終出力値Weとして、ステップS702で求めた初期温度Tsに対応させて前記不揮発性メモリ103に記憶させる。
第4段階では、前述のように、積分動作Iで目標温度Teに収束させるから、ステップS717で最終出力値Weとして記憶されるのは、実際の温度Tを目標温度Teにするのに要した積分動作出力であって、目標温度Teに対して定常的に要求される操作信号Wである。換言すれば、目標温度Teに対して定常的に要求される操作信号Wを精度良く求めるために、比例動作P及び微分動作Dを停止させ、積分動作Iでフィードバック制御を行わせる。
尚、前記ステップS717で記憶させる最終出力値Weは、前記設定時間teが経過した時点での操作信号Wとすることができる他、前記設定時間te内における操作信号Wの平均値とすることができる。また、ステップS717での記憶処理においては、常に新たに求められた最終出力値Weにテーブルデータを書き換えるようにすることができる他、今回の初期温度Tsに対応する最終出力値Weが書き込まれていない場合に今回求めた最終出力値Weをそのまま記憶させ、既に書き込みがなされている場合には、更新を行わずに元のデータのままとしたり、記憶済みの最終出力値Weと新たに求めた最終出力値Weとの加重平均値や単純平均値に書き換えたりすることができる。
また、初期温度Tsに対応する最終出力値Weとして、予め実験やシミュレーションの結果を初期値として記憶させ、これを実際の制御結果に基づいて更新させることができる。更に、実際の制御の結果として求めた最終出力値Weが、予め実験やシミュレーションで求めておいた値やそれまでに学習された値に対して、予測されるばらつき幅を超えた大きな偏差を示す場合に、新たに求めた最終出力値Weに基づくテーブルデータの書き換えを禁止したり、異常の発生をランプの点灯などでオペレータに警告したりすることができる。また、初期温度Tsに対応させて記憶させるデータとして、操作信号Wに代えて、該操作信号Wで温度出力素子300に与えられる電力(電圧・電流)とすることができる。
ステップS717で最終出力値Weの更新記憶を行わせると、次のステップS718では、最終出力値Weの更新記憶完了後の第5段階として、積分動作I及び微分動作Dの制御定数KI,KDを零にして、積分動作I及び微分動作Dによる操作信号Wの更新を停止させる一方、比例動作Pにおける制御定数KPとして、第5段階用として予め記憶されている制御定数KP5を設定する。
即ち、第4段階では、当初から比例動作Pを停止させるか、又は、比例動作Pの制御定数KPを徐々に減らして、積分動作Iで実際の温度を目標温度に収束させるようにしたが、第5段階では、積分動作Iを停止させて、比例動作Pで外乱などによる温度変化を収束させるようにする。尚、積分動作Iの停止は、停止直前の積分動作出力、即ち、目標温度Teになったときの積分動作出力を維持することを示し、外乱などで実際の温度Tが目標温度Teからずれた場合には、比例動作出力で前記積分動作出力を増減補正して、目標温度Teを維持する。
ステップS719では、電源スイッチがオフされたか(又はオペレータによって温度制御終了指令が発せられたか)、即ち、温度出力素子300の駆動停止要求時であるかを判断する。そして、電源スイッチのオン状態が継続している場合(又は温度制御終了指令が発せられていない場合)には、ステップS720へ進み、「偏差eの絶対値」<閾値ε1であるか否かを判断する。
「偏差eの絶対値」<閾値ε1であれば、ステップS719へ戻ることで、制御定数KP5による比例動作Pで、偏差eの縮小を図る。また、「偏差eの絶対値」≧閾値ε1になると、ステップS709へ戻って、第2段階のPID動作によるフィードバック制御を再開させ、閾値ε1以上になった偏差eの速やかな収束を図る。
即ち、第4段階は、最終出力値Weの学習精度を確保するために、「偏差eの絶対値」<閾値ε2<閾値ε1であることを条件としたが、学習完了後の第5段階では、より大きな偏差の発生を許容し、「偏差eの絶対値」<閾値ε1である間は、比例動作Pのみで操作信号Wを更新させる第5段階の制御状態を維持させる。換言すれば、前記閾値ε1は、制御対象の温度の許容ばらつき幅に相当する。
一方、「偏差eの絶対値」≧閾値ε1になった場合には、制御定数KP5による比例動作Pのみでは、偏差eを高い安定性で速やかに解消させることは困難であるため、PID動作によって操作信号を更新させる第2段階の制御パターンに戻し、「偏差eの絶対値」<閾値ε1の状態に速やかに復帰させるようにする。ステップS719で、電源スイッチがオフされたこと(又はオペレータによって温度制御の終了指令が発せられたこと)が判定されると、ステップS721へ進み、終了処理へ進んで温度制御を終了させる。
図8のタイムチャートは、第2実施形態による温度制御を実行した場合の操作信号W及び温度Tの変化の一例を示す。図8のタイムチャートにおいて、時刻t1で温度制御が起動され、初期温度Tsが25℃に検出されたことに基づき、初期温度Ts=25℃に対応して記憶されている最終出力値We=63がテーブルから読み出される。そして、初期温度Ts=25℃に対応する最終出力値We=63から起動出力値Ws(Ws=We×0.9=63×0.9)が設定され、積分動作出力の初期値が前記起動出力値Wsに設定されることで、操作信号Wが時刻t1の時点でステップ的に増大変化する。
偏差e≧閾値Thである第1段階では、前記起動出力値Wsに基づき実温度Tが目標温度Teに近づくのを待ち、時刻t2で「偏差eの絶対値」<閾値Thになったことが判定されると、第2段階に移行し、PID動作で操作信号Wを変化させて、実温度Tを目標温度Teにより近づけるようにする。この第2段階の制御の結果、時刻t3の時点で「偏差eの絶対値」<閾値ε1(閾値ε1<閾値Th)になったことが判定されると、第3段階への移行を判定し、フィードバック制御の不安定要因になる微分動作Dを停止させると共に、操作信号Wの定常値を確定させるために、比例動作Pにおける制御定数KPを徐々に減少させて零にまで変化させ、最終的に積分動作Iのみで操作信号Wを更新させる。
積分動作Iのみで操作信号Wを更新させる第3段階の制御によって、「偏差eの絶対値」<閾値ε2(閾値ε2<閾値ε1)になったことが時刻t4の時点で判定されると、最終出力値Weを学習する第4段階に移行し、「偏差eの絶対値」<閾値ε2である状態が時間teだけ安定していることを確かめ、時間teが経過した時点である時刻t5において、その時点の操作信号W又は時間te内の操作信号Wの平均値を、初期温度Ts=25℃に対応する最終出力値Weとして更新記憶させる。最終出力値Weの更新記憶を終えた時刻t5以降は、比例動作Pのみで実際の温度Tを目標温度Te付近に維持させる第5段階に移行し、外乱などによって「偏差eの絶対値」≧閾値ε1になった場合には、第2段階のPID動作に戻すようにする。
上記第2実施形態によると、装置毎のばらつきや使用環境の違いによる最終出力値Weのばらつきが学習され、実際の温度制御に反映されるので、温度制御の起動時に、起動出力値Wsによって高精度かつ応答良く目標温度Te付近まで温度変化させることができる。また、積分動作Iのみで操作信号Wが更新され、かつ、目標温度Te付近に安定的に収束している状態での操作信号Wを最終出力値Weとして学習するので、最終出力値Weを高い精度で学習することができる。
尚、上記第2実施形態では、第1段階〜第5段階に区別して制御パターンを切り替えたが、係る制御パターンの切り替えに限定されるものではなく、より多い段階に区別して制御パターンを切り替え、又は、より少ない段階に区別して制御パターンを切り替えることもできる。具体的には、例えば、第2段階を省略したり、第3段階での制御で「偏差eの絶対値」<閾値ε2になり、かつ、比例動作Pの制御定数KPが零になって時点の操作信号Wを最終出力値Weとして学習させることで、第4段階を省略したりして、段階数を減らすことができる。また、例えば、第1段階でのPID動作を停止させる一方で、閾値Thと閾値ε1との中間値で第2段階を2つの段階に更に分け、偏差eの絶対値が前記中間値以上である場合に比べて前記中間値未満である状態での制御定数を小さくすることができる。
更に、そのときの初期温度Tsに対応する最終出力値Weが記憶されていると判断された場合や、そのときの初期温度Tsに対応する最終出力値Weの更新回数が所定数に達していると判断された場合など、最終出力値Weを学習する必要がないと判断される場合に、例えば第3段階・第4段階を省略したり、第1実施形態の2段階の制御を行わせたりすることができる。
ところで、上記第1,第2実施形態では、起動出力値Wsとして最終出力値Weよりも小さい値を設定し、温度制御の起動時に、積分動作出力の初期値を前記起動出力値Ws(<最終出力値We)とすることで、操作信号Wを起動出力値Wsまでステップ変化させたが、温度制御の起動時に最終出力値Weよりも高い値にまでステップ的に増大変化させることが可能であり、これによって更に温度変化の立ち上がり応答を、より速めることができる。但し、温度制御の起動時に最終出力値Weよりも高い値にまでステップ的に増大変化させる場合には、目標温度Teを超えてオーバーシュートすることがないように、偏差eの絶対値が閾値にまで縮小した時点で最終出力値Weよりも低い値にまでステップ的に戻すことが必要である。
図9のフローチャートは、温度制御の起動時に最終出力値Weよりも高い値にまでステップ的に増大変化させる構成とした第3実施形態を示す。図9のフローチャートに示すプログラムは、温度制御装置100の電源スイッチのオン、又は、オペレータによる温度制御開始指令などに基づいて起動され、まず、ステップS801では、積分動作出力を零にリセットするなどのイニシャライズ処理を実行する。換言すれば、図9のフローチャートに示すプログラムの起動時が、温度制御の起動時に相当する。
ステップS802では、そのときの前記温度検出素子200の出力から制御対象の温度Tを検出し、この検出した温度Tを、制御対象の初期温度Ts(℃)として記憶する。
前記初期温度Tsは、温度制御を起動する直前の制御対象(半導体レーザなど)の温度であり、常温(室温)に相当する。ステップS803では、前記不揮発性メモリ103に記憶されているテーブルを参照し、前記ステップS802で記憶した初期温度Tsに対応して記憶されている最終出力値Weを検索する。
前記テーブルにおける初期温度Ts毎の最終出力値Weは、予め実験やシミュレーションなどによって求めたものであっても良いし、前述の第2実施形態のように、実際に温度制御を行わせた結果に基づいて更新記憶(学習)される値であってもよい。また、初期温度Ts毎に最終出力値Weを記憶させる代わりに、最終出力値Weに基づき設定される起動出力値Wsを、初期温度Ts毎に記憶させることができる。
ステップS804では、前記ステップS803で求めた最終出力値Weに所定比率Rs1(Rs1>100%であり、例えばRs1=120%)を乗算して、最終出力値Weよりも高い第1起動出力値Ws1(Ws1=We×Rs1)を設定し、積分動作出力の初期値を前記起動出力値Ws1とすることで、PID動作で更新される操作信号Wを、初期値(零)から最終出力値Weよりも高い起動出力値Ws1までステップ的に変化させる。但し、制御定数KP,KI,KDを全て零に設定し、PID動作を停止させ、操作信号Wが起動出力値Ws1に保持されるようにする。
ステップS805では、前記起動出力値Ws1の操作信号Wを与えたことで、偏差eの絶対値が閾値Thよりも小さくなったか否かを判断し、前記偏差eの絶対値が閾値Thよりも小さくなるまでは、操作信号W=Ws1の状態を保持させる。そして、ステップS805で、前記偏差eの絶対値が閾値Thよりも小さくなったと判断された場合、即ち、起動出力値Wsにまで操作信号Wをステップ的に変化させたことで期待される温度付近にまで変化し、実際の温度Tが目標温度Teに充分に近づいた第2段階になると、ステップS806へ進む。
ステップS806では、前記ステップS803で求めた最終出力値Weに所定比率Rs2(Rs2<100%であり、例えばRs2=80%)を乗算して、前記最終出力値Weよりも低い第2起動出力値Ws2(Ws2=We×Rs2)を設定し、それまで第1起動出力値Ws1に保持されていた積分動作出力を、第2起動出力値Ws2に切り替えることで、第1起動出力値Ws1から第2起動出力値Ws2にまでステップ的に減少させる。
また、ステップS806では、実際の温度が目標温度に対してオーバーシュートすることなく、目標温度付近にまで変化させるのに適した値として予め記憶されているKP2,KI2,KD2(>0)を、PID動作の各制御定数(制御ゲイン)KP,KI,KDとして設定する。そして、前記制御定数(制御ゲイン)KP2,KI2,KD2によるPID動作で、操作信号Wを、第2起動出力値Ws2から変化させて、実際の温度Tを目標温度Teに収束させ、目標温度Teに維持させる。
ステップS807では、電源スイッチがオフされたか(又はオペレータによって温度制御終了指令が発せられたか)、即ち、温度出力素子300の駆動停止要求時であるかを判断する。そして、電源スイッチがオフされると、ステップS808の終了処理へ進んで、温度制御を終了させる。上記第3実施形態において、偏差eの絶対値が閾値Thになった時点から、前記第2実施形態における第2段階〜第5段階の制御パターンを実施させ、最終出力値Weを学習させることができる。
図10のタイムチャートは、起動時に最終出力値Weよりも高い値にまで操作信号Wをステップ変化させる第3実施形態における、温度T及び操作信号Wの変化の一例を示す。図10のタイムチャートにおいて、時刻t1で温度制御が起動されると、そのときの制御対象の温度である初期温度Tsに対応する最終出力値Weがテーブルから読み出され、この最終出力値Weに所定比率Rs1(Rs1>100%、例えば、Rs1=120%)を乗算した結果を、第1起動出力値Ws1(Ws1=We×120%)とする。
そして、積分動作出力の初期値を前記第1起動出力値Ws1に設定することで、操作信号W(PID動作出力)を、ステップ的に第1起動出力値Ws1にまで増大変化させる。その後、偏差eの絶対値が閾値Th以下になるまで、PID動作による操作信号Wの更新を停止させておく(制御定数KP,KI,KD=0とする)ことで、操作信号W=Ws1を維持させる。
そして、偏差eの絶対値が閾値Thに達すると、前記最終出力値Weに所定比率Rs2(Rs2<100%、例えば、Rs2=80%)を乗算した結果を、第2起動出力値Ws2(Ws2=We×80%)とし、前記積分動作出力の値を前記第1起動出力値Ws1から第2起動出力値Wsに切り換えることで、操作信号W(PID動作出力)を第1起動出力値Ws1から第2起動出力値Wsにまでステップ的に減少変化させる。偏差eの絶対値が閾値Thになった時点で、積分動作出力の値を第2起動出力値Wsに設定すると、PID動作における制御定数KP,KI,KD>0として、その後、PID動作による操作信号Wの更新によって、実温度Tを目標温度Teに近づけるようにする。
上記第3実施形態によれば、起動時に最終出力値Weよりも高い値にまで操作信号Wをステップ変化させるから、起動時に最終出力値Weよりも低い値にまで操作信号Wをステップ変化させる第1,第2実施形態よりも更に温度変化の応答性を改善することができ、また、偏差eに応じて、最終出力値Weよりも高い操作信号Wを最終出力値Weよりも低い値にまでステップ的に減少させるから、温度Tが目標温度Teを超えてオーバーシュートすることを回避できる。
尚、前記第1〜第3実施形態は、温度出力素子300を発熱させることで、初期温度Tsから昇温させる温度制御(初期温度Ts<目標温度Te)を示すが、温度出力素子300を吸熱動作させることで、初期温度Tsから温度低下させる温度制御(初期温度Ts>目標温度Te)においても、第1〜第3実施形態のように、温度制御の起動時に前記起動出力値Wsまでステップ変化させる制御を適用でき、同様な作用効果が得られる。
また、上記実施形態では、偏差eの大きさに応じてPID動作の制御定数KP,KI,KDを可変とし、また、第1起動出力値Ws1から第2起動出力値Wsへの切り替えタイミングを決定するが、例えば、温度Tの変化速度に応じて制御定数KP,KI,KDを可変とし、第1起動出力値Ws1から第2起動出力値Wsへの切り替えタイミングを決定することができる。
更に、最終出力値Weに対する起動出力値Wsの割合を決定する所定割合Rsや、各段階でのPID動作の制御定数(制御ゲイン)を、実際の温度制御で得られた温度変化における過渡特性(時定数、むだ時間、行過ぎ量、行過ぎ回数など)に応じて変更し、次回以降の温度制御で用いるようにすることができる。