HOME > ソフテックだより > 第119号(2010年8月4日発行) 技術レポート「三菱電機社製プロセスCPUを使用したPID制御開発」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第119号(2010年8月4日発行)
技術レポート

「三菱電機社製プロセスCPUを使用したPID制御開発」

1. はじめに

PA分野において、ループ制御を使用することは多々ありますが、その中でもPID制御は頻繁に使用されます。
今回は、三菱電機社製プロセスCPUを使用したPID制御開発について紹介したいと思います。

2. 三菱電機社製プロセスCPU

三菱電機社製プロセスCPU及び、ループ制御を構築するFBD言語について説明します。

2-1. 三菱電機社製プロセスCPUとは

三菱電機社製プロセスCPUには50種類以上のループ制御用命令が標準搭載されており、それらの命令を組み合わせるだけで様々なループ制御を実現することができます。
もちろんラダープログラムによるシーケンス制御も実装可能です。そのため『PLC(シーケンス制御)+ループコントローラ(ループ制御)』で実現していた制御を、PLC単体で実現することができます。

2-2. ループ制御のプログラミング

ループ制御のプログラミングは専用ツール『PX Developer』を用いてFBD言語(※1)で行います。
FBD言語は視覚的に分かりやすいグラフィカルな言語であるため、比較的簡単にプログラミングが可能です。
FBD言語で作成されるプログラムの総称をFBDプログラムと呼びます。

FBDプログラム
図1. FBDプログラム

3. システム開発事例

以下に、三菱電機社製プロセスCPUを使用したシステム開発事例を紹介します。

3-1. システム構成

図2に示すようなタンク内液の温調制御をする制御系について、プロセスCPUを使用してPID制御を行います。
タンク内液温をアナログ入力で取り込み、PID演算を行って、蒸気バルブの開閉を行うことで温調制御を実現します。

システム構成
図2. システム構成

ユニット名 型式
プロセスCPU Q25PHCPU
アナログ入力ユニット Q64AD
アナログ出力ユニット Q62DA

表1. PLCユニット構成

3-2. 開発フロー

開発の流れを図3に示します。

開発フロー
図3. 開発フロー

(1). PID選定

プロセスCPUに標準搭載されているPIDループ命令の中から対象とする制御系の特性に合ったPIDを選定します。
・・・とは言うものの、実際に現場で動かしてみなければ制御系の特性が分からないというケースも多々あります。そのような場合は複数のPIDを実装し、現場で各PIDの動きを見ながらどれが一番適しているか判断できるようにします。

(2). プロジェクト作成

『PX Developer』からプロジェクト作成を行い、システムリソース(FBDプログラムで占有するデバイス範囲)の設定を行います。
次に、(1)で選定したPIDループをタグFBに登録します(※2)

(3). FBDプログラム作成

(2)で登録したPIDループタグFBを配置し、PIDループ制御を実装します。
併せてPIDループタグデータの初期値を設定します(※3)
プログラムの作成がひととおり完了したら、構成するプログラム毎に実行設定を行います。
実行種別にはタイマ実行(定周期実行)(※4)と割り込み実行が設定できます。

(4). ラダープログラム作成

ラダープログラムでは温調制御のインターロック処理を実装します。
インターロック状態により、PIDループ制御に対してモード切替指示や目標値(Set Variable)/操作量(Manipulative Variable)の書き込みを行います。

(5). シミュレーション

PIDループ命令のシミュレーション機能(※5)を用いてPIDループ制御のシミュレーションを行います。またラダープログラムとの連携動作についても動作確認を行います。

(6). 現場確認

現場での主な作業は、PIDループ制御のパラメータ決定です。
タンク内液温調制御では、液種や温度帯によって特性が変わってくるので、特性に応じて複数のPIDパラメータが必要な場合があり、それぞれに最適なパラメータを決定しなければなりません。
パラメータの決定にはプロセスCPUのオートチューニング機能を活用します。

4. まとめ

前章でプロセスCPUを使用したPID制御開発の一連の流れを説明させていただきました。
最後に私が開発を通して気づいた点をまとめたいと思います。

4-1. プログラムを製作する上での注意点

FBDプログラムで占有するデバイスは、デバイスの先頭アドレスと点数を指定すると自動割付されます。当たり前ですがFBDプログラムで使用しているデバイスをラダープログラムで使用してはいけません。特にインデックスレジスタはFBDプログラム側で7つ占有してしまうので注意が必要です。

4-2. 汎用シーケンスCPUとの比較

ループ制御に関してのプロセス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命令のみであるため、ほぼ単ループ制御しか構築できません。

「1ループの処理速度」

プロセスCPUはシーケンスCPUより処理速度が遅いです。
おそらくループ内の処理で単純なPID命令以外の命令処理も行っているためだと思います。

「1ループあたりのパラメータ数」

プロセスCPUは1ループあたりのパラメータ数が多くきめ細かいループ制御を実現できます。
その反面、1ループあたりのパラメータの数が多さから、シーケンスCPUと比べて立ち上げまでに時間がかかってしまうという側面もあります。私も開発当初はパラメータの多さに大変苦労しました。また現場でのパラメータ決定の際もオートチューニング機能で調整しきれない制御系であったことも手伝って、最適なパラメータにたどり着くまで大変時間がかかってしまいました。

「構築言語」

プロセスCPUでは可視性の高いFBD言語でループ制御を構築します
設計者でない人間が見ても容易に制御内容が分かるというメリットはあります。

「定価」

プロセスCPUの方が約1.5倍割高です。
ただしプロセスCPUは計装システムで必須であるマンマシンインターフェースの設計/製作において、『PX Developer』の機能としてGOT画面自動生成機能及びSCADA連携機能(※6)が搭載されているため、コストの削減が期待できます。

以上、プロセスCPUは、プロセス制御用命令の豊富さ、最大ループ数に制限がないこと、パラメータによりきめ細かなループ制御を実現できることから、シーケンスCPUでは規模・性能的に実現できない計装システムの構築が可能であることがわかります。
ただし、単ループ制御のみで32ループ以内に納まるような収まる中・小規模の計装システムでは、立ち上げまでにかかる時間、価格面、を考慮するとプロセスCPUを使用するメリットは少ないと言えます。シーケンスCPU、もしくは、シーケンスCPU+ループコントローラの組合せで代用できます。

(Y.S.)

[参考文献]
三菱電機 -
PX Developer Version1プログラミングマニュアル(SH-080261)
[注釈]
※1
ファンクション・ブロック・ダイアグラム(Function Block Diagram)言語。
IEC 61131-3(国際電気標準会議が1993年12月に発行した標準規格で、PLC用のプログラム言語を定義したもの)で定義されます。
FBD言語によるプログラミングは、特定処理を行うブロック(ファンクション部品、FB部品)、変数部品、定数部品を、データや信号の流れに沿って結線することでプログラミングを行います。
※2
FBはFunction Blockの略でFBDプログラムにおける機能ブロックのことです。プロセスCPUは設定最大タグFB数分のタグデータエリアが確保されているため、そのデータエリアに(1)で選定したPIDループを割り付けていくイメージです。
※3
『PX Developer』からでしか設定できないデータ(ラダープログラムからはアクセスできないデータ)があるので注意が必要です。
※4
タイマ実行では「優先度」と「位相」の設定もできます。
同じ実行種別の中で優先して起動したいプログラムがある場合には「優先度」を高く設定します。
また確実に定周期で起動したいプログラムがある場合は「位相」を他プログラムと異なる設定にします。「位相」とは実行周期を200ms単位(位相)に分割するもので、他プログラムと異なる位相で実行させることにより、他プログラムの処理時間のバラつきに左右されずに定周期性を保てます。
※5
シミュレーション機能とは、入出力ユニットからの信号を切り離して、MV出力をフィードバック入力することでPIDループ制御の動作を模擬確認できる機能です。
※6
下記のSCADAに限る
・ジェイティエンジニアリング株式会社製 「JoyWatcherSuite」
・Wonderware製 「InTouch」

関連ページへのリンク

関連するソフテックだより

ページTOPへ