0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ST言語ことはじめ】マスターコントロールを使ってみる

Posted at

はじめに

この記事では、モーションコントロール(MC)の利用例をラダー図とST言語で比較します。モーションコントロールは、PLCでのモーション制御を容易にするための機能であり、さまざまなアプリケーションで活用されています。

使用機材

機種など
PLC Q02CPU, QX41, QY41P, Q62P, Q38B
アプリ GX Works 2

I/O割り付けは[こちら](https://qiita.com/so2/items/0f0cab2e324179718b89 "I/O割り付け表")を参照してください。

ラダー図とST言語での比較

サンプルプログラムの動作

起動後にランプ0が常時点灯します。ボタン1が押されている間、ランプ1が点灯します。その後、ボタン2が押されると、ランプ2が点灯します。ただし、ボタン2はボタン1がオンの状態でないと機能しません。

ラダー図の例

ラダー図
  (+)                                               (-)
   |    X1                                  MC N0 M0   |
   +----| |----------------------------------(    )----+
   |                                                   |
N0 = M0                                                |
   |                                                   |
   |   SM400                                  Y71      |
   +----| |----------------------------------(    )----+
   |                                                   |
   |    X2                                  MC N1 M1   |
   +----||---+------------------------------(    )----+
   |          |                                        |
   |    M1    |                                        |
   +----| |---+                                        |
   |                                                   |
N1 = M1                                                |
   |                                                   |
   |   SM400                                  Y72      |
   +----| |----------------------------------(    )----+
   |                                                   |
   |                                         MCR N1    |
   +-----------------------------------------(    )----+
   |                                                   |
   |                                         MCR N0    |
   +-----------------------------------------(    )----+
   |                                                   |
   |   SM400                                  Y70      |
   +----| |----------------------------------(    )----+
   |                                                   |

上記のラダー図では、MC1の実行はMC0の状態に依存し、MC0がオンでない場合はMC1も実行されません。具体的には、MC0がオンでなければMC1の条件が満たされず、MC1の出力も実行されません。
N0とN1は入れ子構造になっている上、一箇所にまとまっているため、最も小さい番号のMCR N0だけを残してMCR N1を削除しても同様の動きとなる。

SM400 : RUN中は常にオンとなる特殊リレー。

ST言語の例

MC(X1, 0, M0);
    Y71 := TRUE;

    MC(X2, 1, M1);
        (* 空っぽの回路。ラダー図に合わせてMCの入れ子状態にするため *)
    MCR(TRUE, 1);

    IF M1 THEN
        Y72 := TRUE;
    END_IF;
            
MCR(TRUE, 0);

Y70 := TRUE;

ST言語のコードでは、同様の動作をST言語で記述しています。MC命令を使用してモーションコントロールを実行し、その後に各出力を制御します。

MC(入力デバイス, 深度, 出力デバイス) : 入力デバイスと出力デバイスはビットデバイス。深度は後述のMCRとのペアリングのための識別番号

MCR(TRUE, 深度) : マスタコントロールの解除命令。MCからMCRまでの間がマスターコントロールの範囲となる。深度に使用した番号でペアを識別する。

MCの内部でSET構文を用いてデバイスの状態を設定した場合は、MCの状態とは独立して設定を保持します。

MC(X2, 2, M2);
    SET(M2, Y73); (* MCがOFFになってもY73のデバイスはONのまま *)

    Y7 := TRUE;  (* MCがOFFになるとY74のデバイスも連動してOFF *)
MCR(TRUE, 2);

まとめ

この記事では、ラダー図とST言語でのモーションコントロールの利用例を比較しました。どちらの方法も同じ動作を実現することができますが、ラダー図はグラフィカルな表現であり、ST言語はテキストベースの表現であるため、利用者の好みやプロジェクトの要件に応じて選択することが重要です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?