製造ラインなどの状態遷移を記述するのに適したグラフィック言語です。SFCは演算機能や入出力機能を持たないため、厳密には言語ではなく「要素」と規定されていますが、言語要素を併せ持つため、ここでは言語として扱います。図3に図1の自己保持回路と等価なSFCプログラム例を示します。
図3の四角の箱のS001、S002は「ステップ」と呼ばれ、工程の状態を示します。特に2重四角のS001のことは「初期ステップ」と呼んでいます。SFC内では同時に1つだけのステップが実行され、実行状態にあることを「活性化」と呼びます。ステップの下に位置する横棒は「トランジション」と呼ばれ、次のステップへ移行するための遷移条件となっています。
S001からS002への遷移条件は「IN1」がTRUEかつ「IN2」がFALSEとなることです。この条件が成立したときにS001が非活性化されると同時にS002が活性化されます。S002の右横の四角は「アクション」と呼ばれ、S002で行う処理を記述します。S002が活性化状態の時、「OUT1」にTRUEが出力されます。「OUT1」へのTRUE出力は、S002の下に記述されたトランジション「IN2」がTRUEになるまで継続します。「IN2」がTRUEになると、S002は非活性化状態になり、最初のS001が活性化状態となります。
このように工程間の遷移条件や工程内の処理を分けて記載できるところがSFCの利点です。
従来ツールにあるニーモニックに相当する言語で、マイコンで言えばアセンブラのようなテキスト言語です。
アプリケーションの小型化や高速化に有効ですが、プログラミングの生産性やメンテナンス性に劣るため、使用する機会は減ってきていると思われます。図1の自己保持回路をILで記述すると図4のようになります。
PASCALをベースに設計された構造化テキスト言語で、PCの高級言語に慣れ親しんだマイコンボードの開発者やC、C++などの教育を受けてきた新卒のエンジニアに向いています。特に数値演算式やデータ処理など、LDが苦手としている用途で効果を発揮します。
仮にLDで多項式あるいはかっこ付きの計算式を処理しようとした場合は、最初に2つの項式に分解し、次に分解されたそれぞれの演算結果を一時的にメモリに格納してから、最後にそれらをつなげるといった処理が必要になってしまいます。このことは処理内容の可読性を著しく阻害してしまいます。
図5は図2のFBDと同じ処理です。「INPUT1」と「INPUT2」を加算した値を「INPUT3」から「INPUT4」を引いた値で除算し、結果を「RESULT」に代入しています。
以上のようにプログラミング言語にはそれぞれ得手・不得手があり、適材適所で使い分けることによりコーディング時間の短縮や可読性の向上を図ることができるのです。
JEMA(社団法人日本電機工業会)によって作成された5言語の適正表(表1)を目安にすると理解しやすいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.