「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
過去の技術レポート第261号(2016年7月6日発行)「各社PLC比較〜IEC 61131-3編〜」で触れている通り、ここ最近ソフテックでも「IEC61131-3」に関わる機会が増えてきました。
「国際電気標準会議(IEC)」が1993年に発行した国際規格「IEC61131-3」では、「LD言語」を含めた5つの言語が規定されています。
その一つである「ST言語」について、第247号(2015年12月2日発行)「ST言語を使用したPLCプログラミング」で紹介しています。
今回は第二弾として、「FBD言語」を取り上げます。
本題に入る前に、おさらいになりますがIEC61131-3で規定されている5つの言語の概要をご紹介します。
IEC61131-3で規定されている言語は、IL(= Instruction List)、LD(= Ladder Diagram)、SFC(= Sequential Function Chart)、FBD(= Function Block Diagram)、ST(= Structured Text)の5つです。
それぞれの言語の概要を、表1に示します。
名称 |
特徴・用途 |
記述イメージ |
---|---|---|
IL | アセンブリ言語のような記述方法 使用頻度は少ない |
|
LD | ハードウェアによるリレー回路をイメージした、いわゆる「ラダー」言語 PLCプログラミングでは最も一般的 ILと切り替えて表示できることが多い |
|
SFC | ラダーとは違い、上から下へ記述する形 条件による分岐が記述しやすく、順次動作する処理に向いている |
|
FBD | 様々な機能を持ったブロックをつなげて組み合わせることによりプログラミングする 設計書類の様式の1つであるIBD(インターロックブロック図)に近い形 |
|
ST | BASICやCなど、高級言語の文法に似た形で記述する Windows用プログラムなどを手がけてきた人には馴染みやすいと思われる |
表1. 各言語の比較
FBD言語の“FBD”は“Function block diagram(ファンクション・ブロック・ダイアグラム)”の略です。
FB(ファンクション・ブロック)は機能をもった箱で、それらを接続する配線で組み合わせ、電子回路を設計するようにプログラムを記述できるため、データの流れがわかりやすいという利点があります。ファンクションの左側には入力パラメータの変数を、右側には演算結果である出力パラメータの変数をおきます。
FBは実績のあるプログラムを再利用することが容易になります。
計装分野を中心に使われており、最近では制御適用範囲の拡大や、プログラムの可読性を上げるためにPLCでも使われる事が多くなってきました。
ここからは、三菱電機製PLC開発ソフト「GX Works3」を使用し、FBD言語の特徴をご紹介したいと思います。
まずは、基本命令を使用したプログラミングをして見たいと思います。
今回は、第247号(2015年12月2日発行)「ST言語を使用したPLCプログラミング」にて紹介した台形の面積を求めるプログラミングについて、FBD言語にて記述してみました。
図1. 基本命令を使用した記述例
「ADD」や「MUL」等と記載された箱がFB(ファンクション・ブロック)になります。 左側に入力パラメータとして、上底の長さや高さ等を入力しています。右側が出力パラメータとなり、次のFBの入力パラメータとしたり、演算結果として台形の面積に出力します。
基本命令だけであれば、ST言語を使用した方がシンプルでよいと思いますが、FBD言語では、FBをプロジェクト毎で作成する事ができます。
下図の様に、台形の面積を求める計算式をFBとして作成し、そのFBを使用する事により、シンプルで解りやすい回路になります。
図2. プロジェクトFB命令を使用した記述例
FBD言語の特徴の1つとして、作成したFBを他のプロジェクトで再利用しやすいという特徴があります。
例えば、下図の様にアナログデジタル入力ユニットから変換値を読み出し、スケール変換するというプログラムは、色々なプロジェクトで作成する事になると思います。
FBを1回作成し流用すれば、次回以降再度プログラミングする必要は無くなり、プログラミング作業の効率化を図る事ができます。
図3. アナログデジタル入力ユニットの記述例
また、特殊ユニットや関連機器との通信などは、これまでマニュアルのサンプルプログラム等をみて作成する必要がありましたが、メーカーにてFBの配布を行っており、入力パラメータと出力パラメータを入力するだけで良くなったりしています。
LD言語やST言語よりも、可読性が高い事が解ったと思いますが、逆にFBの中身がブラックボックス化してしまうというデメリットもあります。
例えば、「4.3. 再利用を考慮したプログラミング」の記述例をみて、PLCのプログラミングをした事がある人は気付いたと思いますが、アナログデジタル入力ユニットには入力レンジ(電流4〜20mAとか電圧1〜5V等)や、変換値のサンプリング処理や平均処理の設定がありますが、その設定がどの様になっているかが解りません。
他の人が作成したFBを流用する場合は、その中身を読み解き、意図しないプログラムがされていないかを確認する必要があります。
その為、流用を前提としたFBを作成する場合、ドキュメントを多く残さないと使われないFBになる恐れもあります。
また、他のプロジェクトにも流用しやすいFBを作成する為には、よりオブジェクト指向を意識したエンジニアリングが必要となってきます。
今回は、IEC61131-3で規定されている5つの言語の1つ、FBD言語について取り上げました。
簡単な回路であればラダー言語やST言語を使用した方が良い場合もあり、それぞれの特徴によってそれらを組み合わせて作成していく事が良いと感じます。
今回の取り上げた内容が、FBD言語を始め「構造化プログラミング」を実現するための理解の一助となれば幸いです。
最後までお読みいただき、ありがとうございました。
(T.T.)
関連ページへのリンク
関連するソフテックだより