「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
PA分野において、ループ制御を使用することは多々ありますが、その中でもPID制御は頻繁に使用されます。
今回は、三菱電機社製プロセスCPUを使用したPID制御開発について紹介したいと思います。
三菱電機社製プロセスCPU及び、ループ制御を構築するFBD言語について説明します。
三菱電機社製プロセスCPUには50種類以上のループ制御用命令が標準搭載されており、それらの命令を組み合わせるだけで様々なループ制御を実現することができます。
もちろんラダープログラムによるシーケンス制御も実装可能です。そのため『PLC(シーケンス制御)+ループコントローラ(ループ制御)』で実現していた制御を、PLC単体で実現することができます。
ループ制御のプログラミングは専用ツール『PX Developer』を用いてFBD言語(※1)で行います。
FBD言語は視覚的に分かりやすいグラフィカルな言語であるため、比較的簡単にプログラミングが可能です。
FBD言語で作成されるプログラムの総称をFBDプログラムと呼びます。
図1. FBDプログラム
以下に、三菱電機社製プロセスCPUを使用したシステム開発事例を紹介します。
図2に示すようなタンク内液の温調制御をする制御系について、プロセスCPUを使用してPID制御を行います。
タンク内液温をアナログ入力で取り込み、PID演算を行って、蒸気バルブの開閉を行うことで温調制御を実現します。
図2. システム構成
ユニット名 | 型式 |
---|---|
プロセスCPU | Q25PHCPU |
アナログ入力ユニット | Q64AD |
アナログ出力ユニット | Q62DA |
表1. PLCユニット構成
開発の流れを図3に示します。
図3. 開発フロー
プロセスCPUに標準搭載されているPIDループ命令の中から対象とする制御系の特性に合ったPIDを選定します。
・・・とは言うものの、実際に現場で動かしてみなければ制御系の特性が分からないというケースも多々あります。そのような場合は複数のPIDを実装し、現場で各PIDの動きを見ながらどれが一番適しているか判断できるようにします。
『PX Developer』からプロジェクト作成を行い、システムリソース(FBDプログラムで占有するデバイス範囲)の設定を行います。
次に、(1)で選定したPIDループをタグFBに登録します(※2)。
(2)で登録したPIDループタグFBを配置し、PIDループ制御を実装します。
併せてPIDループタグデータの初期値を設定します(※3)。
プログラムの作成がひととおり完了したら、構成するプログラム毎に実行設定を行います。
実行種別にはタイマ実行(定周期実行)(※4)と割り込み実行が設定できます。
ラダープログラムでは温調制御のインターロック処理を実装します。
インターロック状態により、PIDループ制御に対してモード切替指示や目標値(Set Variable)/操作量(Manipulative Variable)の書き込みを行います。
PIDループ命令のシミュレーション機能(※5)を用いてPIDループ制御のシミュレーションを行います。またラダープログラムとの連携動作についても動作確認を行います。
現場での主な作業は、PIDループ制御のパラメータ決定です。
タンク内液温調制御では、液種や温度帯によって特性が変わってくるので、特性に応じて複数のPIDパラメータが必要な場合があり、それぞれに最適なパラメータを決定しなければなりません。
パラメータの決定にはプロセスCPUのオートチューニング機能を活用します。
前章でプロセスCPUを使用したPID制御開発の一連の流れを説明させていただきました。
最後に私が開発を通して気づいた点をまとめたいと思います。
FBDプログラムで占有するデバイスは、デバイスの先頭アドレスと点数を指定すると自動割付されます。当たり前ですがFBDプログラムで使用しているデバイスをラダープログラムで使用してはいけません。特にインデックスレジスタはFBDプログラム側で7つ占有してしまうので注意が必要です。
ループ制御に関してのプロセスCPUとシーケンスCPUの比較を、スペックが同程度であるQ06PHCPUとQ06UDHCPUを例にして表2に示します。
プロセスCPU(Q06PHCPU) | シーケンスCPU(Q06UDHCPU) | |
---|---|---|
プロセス制御用命令 | 52種類 | 1種類(速度型PIDループ) |
最大ループ数 | 制限なし (但しデバイスメモリ容量と制御周期の組み合わせにより制限あり) |
最大32ループ |
制御周期 | 10ms〜/ループ (ループ毎に可変設定可) |
10ms〜60000ms/ループ (ループ毎に可変設定可) |
1ループあたりの処理速度 | 400μs(速度型PIDループ) | 35.8μs(速度型PIDループ) |
1ループあたりのパラメータ数 | 35(速度型PIDループ) | 11 |
構築言語 | FBD言語 | ラダー言語 |
定価 | \330,000 | \220,000 |
表2. ループ制御比較
表2よりプロセスCPUとシーケンスCPUの比較結果についてまとめます。
プロセスCPUは52種類のプロセス制御用命令を標準搭載しているため、それらを組み合わせるだけで様々なプロセス制御を構築できます。
シーケンスCPUに搭載されている命令は速度形PID命令のみであるため、ほぼ単ループ制御しか構築できません。
設定できる制御周期で両者に違いはありません。
プロセスCPUは52種類のプロセス制御用命令を標準搭載しているため、それらを組み合わせるだけで様々なプロセス制御を構築できます。
シーケンスCPUに搭載されている命令は速度形PID命令のみであるため、ほぼ単ループ制御しか構築できません。
プロセスCPUはシーケンスCPUより処理速度が遅いです。
おそらくループ内の処理で単純なPID命令以外の命令処理も行っているためだと思います。
プロセスCPUは1ループあたりのパラメータ数が多くきめ細かいループ制御を実現できます。
その反面、1ループあたりのパラメータの数が多さから、シーケンスCPUと比べて立ち上げまでに時間がかかってしまうという側面もあります。私も開発当初はパラメータの多さに大変苦労しました。また現場でのパラメータ決定の際もオートチューニング機能で調整しきれない制御系であったことも手伝って、最適なパラメータにたどり着くまで大変時間がかかってしまいました。
プロセスCPUでは可視性の高いFBD言語でループ制御を構築します
設計者でない人間が見ても容易に制御内容が分かるというメリットはあります。
プロセスCPUの方が約1.5倍割高です。
ただしプロセスCPUは計装システムで必須であるマンマシンインターフェースの設計/製作において、『PX Developer』の機能としてGOT画面自動生成機能及びSCADA連携機能(※6)が搭載されているため、コストの削減が期待できます。
以上、プロセスCPUは、プロセス制御用命令の豊富さ、最大ループ数に制限がないこと、パラメータによりきめ細かなループ制御を実現できることから、シーケンスCPUでは規模・性能的に実現できない計装システムの構築が可能であることがわかります。
ただし、単ループ制御のみで32ループ以内に納まるような収まる中・小規模の計装システムでは、立ち上げまでにかかる時間、価格面、を考慮するとプロセスCPUを使用するメリットは少ないと言えます。シーケンスCPU、もしくは、シーケンスCPU+ループコントローラの組合せで代用できます。
(Y.S.)
関連ページへのリンク
関連するソフテックだより