1. MELSEC iQ-RプロセスCPUとは?PLC計装・PID制御・
二重化で使うCPUユニットを解説
本記事では、MELSEC iQ-RのプロセスCPU(R08PCPU/R16PCPU/R32PCPU/R120PCPU)を使ったPLC計装、PID制御、二重化システム、FBDでのタグFB設定方法を解説します。DCSの代替やSCADA連携を検討している方に向けて、プロセスCPUの特徴と実際の設定手順を整理します。
1.1. プロセスCPUユニットとは
通常のCPUと異なり、型式の末尾に「-P」が付きます。
ラインナップはR08PCPU、R16PCPU、R32PCPU、R120PCPUとなります。
従来はプロセス制御をDCS(分散制御システム:Distributed Control System)というメーカー専用のシステムで行うことが多く、DCSと同等のシステム設計を行いたいときに使用するPLCです。DCSは横河電機やアズビル(Azbil)などのメーカーのエンジニアしか扱えないことが多いため、一般ユーザーにも普及しているPLCで似たような計装制御を実現しようというのがコンセプトですね。
小規模から大規模までの計装制御向けシステムを構築する上で、PLC+SCADA(監視制御およびデータ収集:Supervisory Control And Data Acquisition)の組み合わせで使うことが多いです。
DCSとの比較はCopilotにまとめてもらいました。

1.2. 特徴
① 専用命令によるループコントロール制御による設計工数削減
通常のCPUでは、速度制御型PID制御がありますが、プロセスCPUでは外乱に強い2自由度PID制御があります。
PIDの他にもプロセス制御のためのメーカー提供の専用FBが複数あります。記事3~4で作った工学値変換のプログラムもメーカー提供されています。これで設計工数が大幅に削減されます。
通常のCPUはPIDループの点数に制約があり、32点/CPUとなりますが、プロセスCPUでは通常CPUより多い最大300制御ループまで対応可能です。
②二重化システムによる信頼性向上
CPUの二重化ができます。プロセスCPUと二重化ユニット(R6RFM)を組み合わせることで、信頼性の高いシステム構築が可能となります。
二重化システムを組むケース自体が珍しいこともあり、工場新設の現場でも見かけることは多くありません。(あとはコストの問題で、二重化システムの採用が見送られることが非常に多いです)
③フェースプレート機能
プロセスCPUのメーカー提供FBには、フェースプレート機能というものがあります。これによって、GX Works3でPIDループのモニタが可能となります。ほかにもSoftGOTでこのフェースプレートを表示、パラメータ設定することができ、画面作成工数が削減できます。

1.3. 用途
PIDループを多く使う装置に最適だと思います。大規模システムでは発電機関連などで使われますが、小規模システムでも、カスケード制御を用いてオーバーシュートを抑制しながらプロセスの冷却水を制御したい場合などに使用されます。
二重化機能は通常のCPUでは不可能なので、おのずとプロセスCPUを採用することになります。二重化して工場設備全体を動かす場合もありますし、生産設備のCPUはシングルで、各生産設備データをCC-LinkIEでつないで、SCADAと接続する際のゲートウェイとして、PLCを二重化して安定的なシステム構成とする場合があります。
発電機などは単体でも二重化しますが、工場の生産設備単体で二重化する場合は、珍しいかもしれませんね。
2. 動作モード
動作モードとしては、二種類になります。
2.1 プロセスモード
通常の動作モードです。専用FBが使えること以外は、通常のCPUと使い勝手は変わらないです。
2.2 二重化モード
PLCの二重化で使用するモードです。PLCの他にもCC-Link IE CONTROL、CC-Link IE Field、Ethernetなども二重化して使用できます。
二重化の際は部品選択が通常と異なるところがあります。
二重化CPUのA系(主系)、B系(待機系)では、A系ダウン時にB系へ切り替わる際のデータ同期として、トラッキングデータの設定があります。
二重化モードに関しては、のちのちの記事で紹介していきます。
3 使ってみよう(FBD編)
3.1 設定
まずはツールバーの「プロジェクト」から「新規作成」をクリック。機種を「R08P」、動作モードを「プロセス」、プログラム言語を「FBD/LD」を選択して「OK」をクリック。
※今回の内容はシミュレーションモードでもできるはずなので、手元にプロセスCPUがない方もお試しください。

続いて、ナビゲーションウィンドウの「プログラム」を右クリックして、「MAIN」の「プロパティ」をクリック。
「プロセス制御拡張を使用する」を「はい」にする。

設定を変更すると、

「MAIN」のアイコンがこのように水色背景のシンボルに変わります。

続いて、ナビゲーションウィンドウの「CPUパラメータ」をクリック。
「ファイル設定」→「ファイルレジスタ設定」をクリック。
ファイルレジスタ設定で「全プログラムで共通のファイルレジスタを使用する」を選択。
容量とファイル名を設定してください。
ここでは、容量:50kワード、ファイル名:MAINとします。

プロセスCPUではタグFBという専用FBを登録する際にファイルレジスタのデバイスが割り付けられることから、ファイルレジスタ設定が必要となります。
タグFBに登録してファイルレジスタが設定されていないと、全変換を実施した際にエラーになります。
ツールバーの「ツール」から「オプション」をクリック。
「変換」→「基本設定」から「全変換実行時、ラベルを再割り付けする」を「はい」に変更。この設定を実行しないと、ラベルの容量オーバーのエラーが発生することがあります。
また、モニター時のフェースプレートが表示されない場合があります。

3.2 プログラム作成
今回は流量センサのフィードバックを受けて、制御弁で流量制御するPIDループを作成します。
PID制御はアナログ入力ユニット、アナログ出力で行う想定で考えていますが、実機がない場合もあるので、FBのシミュレーションを使っていきたいと思います。
シミュレーション時はPV値の変化を遅延させる回路を作成します。
今回の回路は、下記のマニュアルを参照して作成しています。
三菱電機スクールテキスト_MELSEC-Q計装基礎
余談ですが、筆者は三菱電機のFATECセミナーはQシリーズ(PX Developer)の時とiQ-Rの計装基礎と二重化のすべてを受講しています。
感想としては、Qシリーズ(PX Developer)の時のほうが、良かったですね。
Qシリーズ(PX Developer)の時は、受講日数が2日だったのですが、iQ-Rは1日になってしまったので、内容がかなり省略されています。
ぜひiQ-Rの内容も2日でやってもらいたいなと思いました。余談でした。

さて、まずはツールバーで「タグFB」をクリック。![]()
タグ名に「FIC001」と入力。タグFBで「メーカ定義」の中から「M+M_2PIDH_」を選択。
最後に右下の「適用」をクリック。

割付けデバイスを見るとZR3000から1タグあたりファイルレジスタ130点ずつ割り振られています。タグFBは1タグあたり130ワードのタグデータ領域を持ちます。
今回登録したFIC001も、その領域がファイルレジスタに割り付けられています。
ファイルレジスタ130個の中のどれがどのデータかわからないと思います。
そんな時は、下記のマニュアルの付録を参照します。
MELSEC iQ-R プログラミングマニュアル (プロセス制御FB/命令編) _付1_タグデータ一覧

ラベルで宣言する場合は、記事5.で紹介した構造体タグを参照して、FB内のデータにアクセスするので、ファイルレジスタのアドレスは気にならないのですが、ファイルレジスタでアクセスしないといけない場合、タグデータでアドレスを知ラベル必要があります。例えばGOTの場合は、SoftGOTのようにフェースプレートが表示できないので、アドレスで入出力画面を作成する必要があります。(GOT画面生成ツールや、GOTもラベルでアクセスできるというのがありますが)
タグFBに登録すると、「部品選択」の「タグFB」の欄に先ほど登録した「FIC001」がFBとして登録されています。これをFBDのシートにドラッグします。

FBをシートに置くと、FB/FUNと構造体に「M+M_2PIDH_」のデータが追加されます。

FBの中身は構造体を見ると、コメント付きで確認することができます。
ツールバーの「表示」→「ドッキングウィンドウ」→「FBプロパティ」をクリックすると、各FBをクリックした際にFBの設定値を閲覧・編集することができます。

「FIC001_FB」の値を下図のように変更します。


他は初期値のままです。
初期値からパラメータを変更すると黒太字になります。

アナログ値はINT型なのに対して、FIC001_FB(M+M_2PIDH_)の入力端子PVNと出力端子MVNはREAL型(単精度小数)になります。
このため、型変換のFB「INT_TO_REAL」と「REAL_TO_INT」が必要になります。
またアナログ入出力の変換で工学値変換「M+P_ENG」と逆工学値変換「M+P_IENG」を使って、入出力値を変換します。
記事3~5までで工学値変換といっていたものが、プロセスCPUでは工学値逆変換とされていますね。。。
メーカー資料や他ブログを見ても、デジタル値→PV値へ変換しているものを工学値変換と呼んでいる例もあるようなので、どちらが正解か難しいところですね。
アナログ入力ユニット(R60AD4)とアナログ出力ユニット(R60DA4)も設定(設定方法はこちらをご覧ください)して、ユニットラベルを使用します。
アナログ出力ユニットは出力許可フラグがあるので、「R60DA_1.bCH1OutputEnableDisableFlag」をONさせないと出力しません。

つづいて、シミュレーション用の回路です。「M+P_DED」と「M+P_LLAG」の回路を追加します。
「M+P_DED」は、入力信号を遅延させる回路です。

e-Manual Viewer_引用
パラメータは下図のようにします。入力に対して、3秒遅れで出力される設定です。

「M+P_LLAG」はフィルタ回路になります。入力信号を折れ線の形から滑らかにしたり、リンギングした信号にします。

e-Manual Viewer_引用
パラメータは下図のようにします。T1だけなので、信号がなまった形で出力されます。

最後に「FIC001_FB」の構造体にアクセスして、「FIC001_FB.SIMOUT」と「FIC001_FB.SIMIN」を入出力に接続します。

3.3 テスト
では、テストしていきます。
PLCに書き込んでモニター状態にします。
モニター状態で「FIC001_FB」にカーソルを合わせると、![]()
モニターアイコンが表示されますので、クリックするとフェースプレートが表示されます。

「SV」をクリックすると、SV値設定画面が出てきますので、「50」にします。

続いて、「MANUAL」をクリックすると、制御モード変更画面が出てくるので、「AUTO」にします。

AUTOにするとPID制御が始まるので、PV値に合わせて、MV値が変化します。
続いて、シミュレーション機能を使ってみたいと思います。
「NOR」をクリックするとI/Oモード変更画面が出てきます。「SIMULATION」を選択してください。
シミュレーションが開始されると、PV値が変化して、SV値近辺で安定します。(おそらく今のパラメータでは安定しないので調整してみてください)
テストとしては、ここまでなのですが、DEDやLLAGの波形がどんなものなのか気になるので、波形観測回路を作りました。
波形はSoftGOTのヒストリカルトレンドグラフ機能を使って観測しました。
下図のような波形が観測されました。(赤線がFIC001の値、緑がDEDの出力、黄色がLLAGの出力です。)
DEDの出力がハンチングしているため、GOTのロギング周期を1秒にすると、ロギングできないタイミングにはまってしまうことがありました。
ロギングできるまで、リセットを繰り返すと波形が観測できました。
DEDの遅延は3秒にしていましたが、GOT上では2秒に見えました。おそらく意図した遅延はできていると思います。
LLAGは複雑な計算式で値を出さないと、なんとも言えませんが、今回は波形イメージの理解だけでご容赦頂ければ幸いです。



今回はプロセスCPUについてご紹介しました。
次回はユーザー定義FBについて解説します。
FBDで作成したFBを一つのパーツにするとともに、フェースプレート表示に対応させることができます。
これで、PIDループの共通処理ができるようになります。
FB自体が、一つの制御ループ処理ですが、それをさらに大きなグループにまとめることで、メーカー提供のFBに新たな機能を実装することができます。
次回もぜひご一読ください。
SMATEXエンジニアリングでは、MELSEC iQ-Rを用いたPLC計装、PID制御、アナログ入出力、SCADA連携、二重化システムの設計相談を承っています。
プロセスCPUやGX Works3での計装制御に関するご相談があれば、お問い合わせください。






非常にわかりやすい説明で、経験者にとって、「そこそこ!」と言いたい内容があり面白く拝見させて頂かいました。
1-1の表ですが、構成するモジュールの信頼性や故障時のフェールーセイフも重要な項目だと思いました。
FBDのパラメータの扱いもわかりやすかったですが、パラメータの保存や復元も重要だと思います。
FBDだけで構成できるなら良いのですが、ラダーを使うとスキャン速度の違いでうまくいかないケースや
STとFBDの馬相付き合い方なども重要です。
実際DCSでは、バッチプロセスだと、演算式がてんこ盛りなので、どのタイミングで実行させるかや計算式の移植も考えないといけません
今後の記事に期待です。
案件がありましたら相談させてください。
>>生川様
お世話になっております。
コメントありがとうございます。
実務経験者の視点でご覧いただき、大変嬉しく思います。
「そこそこ!」と言っていただける内容があったとのこと、励みになります。
ご指摘いただいた、
・モジュール信頼性や故障時のフェールセーフ
・パラメータの保存/復元
・ラダーとFBDのスキャン速度差異
・STとFBDの役割分担
・バッチ制御における演算タイミング
いずれも、実案件では非常に重要なテーマだと感じております。
特にPLC計装は、
「異常時にどう振る舞うか」
「演算をどの周期・順番で実行するか」
「停止・復旧時に状態をどう保持するか」
まで含めて設計しないと、安定稼働に繋がらないケースも多いですよね。
DCSの考え方とPLCの自由度の両方を理解しながら、
現場で“実際に使える制御”をどう実装するかは、非常に奥が深い領域だと思っています。
今後も、机上の説明だけでなく、
実際の現場で問題になりやすいポイントや、
制御設計時の考え方についても記事化していきたいと思います。
ぜひ今後ともよろしくお願いいたします。
案件のご相談につきましても、お気軽にご連絡ください。