HOME > ソフテックだより > 第13号(2006年3月1日発行) 技術レポート「見やすい・わかりやすいラダーにするために2 〜実践編〜」

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

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


ソフテックだより 第13号(2006年3月1日発行)
技術レポート

「見やすい・わかりやすいラダーにするために2 〜実践編〜」

メールマガジン第5号の技術レポートで「見やすい・わかりやすいラダーにするために」をテーマに、基本的なルールや作成するにあたり気を付ける事をいくつかご紹介しました。
今回は第2弾・実践編としてより具体的に、「少しの工夫で見やすい回路」をテーマにいくつかご紹介します。

※三菱製PLCのラダー作成ツールを使用して説明いたします。

1.スイッチ回路の工夫

PLCソフトを作成する際に、スイッチの操作でランプや工程をON・OFFする回路を作成する機会があると思います。

以下の例は、「スイッチA(X0)」のONで「ランプA(Y0)」を点灯、「スイッチB(X0)」のONで「ランプA(Y0)」を消灯する回路です。(スイッチはモーメンタリ動作)

スイッチには大きく分けてモーメンタリ動作とオルタネート動作の2種類あります。モーメンタリ動作はスイッチを押している間だけ動作状態を維持し、スイッチを離すと元の解放状態に戻る動作の事です。オルタネート動作は、一度スイッチを押して離しても動作状態を維持し、再度スイッチを押す事により解放状態になる動作の事です。

このように、ランプをONするスイッチとOFFするスイッチが別々になっていれば、特に悩む必要はありません。

では、「スイッチA(X0)」1つで「ランプA(Y0)」をON・OFFするにはどうしたら良いでしょう?「スイッチA(X0)」を押す度に、「ランプA(Y0)」の出力を反転させる回路です。
タイムチャートで表すと、以下の様になります。

この回路を実現させるには、「ランプA(Y0)」の状態により、出力をONさせるのか、OFFさせるのかを判断させなければなりません。また、ボタンはモーメンタリ動作である為、パルス出力を使う必要があります。
以上の事を踏まえて、回路にすると以下の例の様になります。

ランプのON・OFF条件が無い場合はこの回路で良いですが、たいていの場合ON・OFF条件が必要になる事が多いです。
その場合には、見やすい回路にする為に、以下の例の様にします。

2.AND回路での工夫

AND条件が多いビットを出力する回路を作成する時に、1つの回路に納まらない時があります。

以下の例は、多くの条件をただ単純に並べただけの回路です。
折り返し番号が付いてしまい、わかりにくいです。さらにAND条件やOR条件が追加になったりすると、折り返し番号がさらに追加になってしまい、見づらい上に回路の変更も容易ではなくなってしまいます。

このような時は、以下の例のように一区切り毎にいくつかの条件に分けてビット出力し、最後にまとめて出力するようにします。
そうすると、回路が見やすくなり、変更等も容易に出来ます。

3.OR回路での工夫

先程はAND条件が多いビット出力回路の場合でしたが、今度はOR条件が多い場合を見てみましょう。

以下の例は、たくさんあるA接点のOR条件をただ単純に並べただけの回路です。
画面内におさまらない為、どのような条件があるかひと目ではわからなくなっています。

このような時は「ド・モルガンの定理」を利用し、以下の例のようにB接点のAND回路を作成し、その結果を反転して出力すれば、どのような条件があるのか非常にわかりやすくなります。
これだとかなりの数の条件が画面内に納まります。

※ 「ド・モルガンの定理」とは、「複数の入力の積の否定は、それらの入力の否定の和と等価」「複数の入力の和の否定は、それらの入力の否定の積と等価」の事。

4.演算時の工夫

アナログ入力のレンジ変換や帳票等のデータ処理の為、PLCソフト内で演算をする事が良くあります。

以下の例は流量計からアナログ−デジタル変換ユニットを通して入力された値をレンジ変換している回路ですが、この回路だと1回のレンジ変換で6ワードも消費してしまいます。
また、コメント入力等の作業が発生し、演算する毎にデバイスが変わる為、デバイスの入力間違い等も発生しやすくなってしまいます。

演算内容が複雑で途中経過の値をモニタしたい時にはこのような使い方でもかまいませんが、簡単な演算で済む場合はなるべくデバイスを節約したいものです。

こんな時には途中の演算結果を代入するテンポラリ用のデバイスを確保し、共通でそのテンポラリ用のデバイスを使用します。
このようにすると、何度レンジ変換を行っても4ワードしか消費しません。さらに他の演算でもこのデバイスを使用する事により、ワードデバイスの節約をする事が出来ます。
ただし、テンポラリ用のデバイスはいたる所で使われる様になる為、なるべく同回路内、最低でも次の回路内で演算結果を別のデバイスに格納して下さい。

いかがだったでしょうか?

ただ単に条件を並べるだけでなく、ちょっと考え方を変えただけで見やすく・間違い等の発見しやすいプログラムになる事がわかったと思います。
また、「1.スイッチ回路の工夫」の様にステップ数が増えても、見やすい回路、今後の変更にすぐに対応できる回路を作成する事の方が重要です。
動作結果は同じでも、もっと見やすくできないか・簡単にできないかを意識してソフト作成していると、どんどんと力が付いていきます。また、他の人が作ったソフトを眺めるのも、こんな作り方があるんだなぁと新しい発見があり、とても参考になります。

以上、簡単ではありましたが、少しでもPLCソフトを作成する方の参考になれば幸いです。

(T.T.)


関連ページへのリンク

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

ページTOPへ