はじめに
この記事では、PLCでのプログラムを使って、ボタンを押すとカウンタが1ずつインクリメントされ、その数値を7セグメントLEDに表示する方法について解説します。
使用機材
機種など | |
---|---|
PLC | Q02CPU, QX41, QY41P, Q62P, Q38B |
アプリ | GX Works 2 |
I/O割り付けはこちらを参照してください。
サンプルコード
ボタン1を押すとカウンタが1ずつインクリメントされるプログラムを作成します。以下がそのサンプルコードです。
PLS(X1, M0);
IF M0 THEN
INC(K1, CN1);
END_IF;
K4Y40 := CN1 + CN1 / 10 * 6;
カウントアップ処理
PLS(X1, M0);
IF M0 THEN
INC(K1, CN1);
END_IF;
このプログラムは、ボタン1(X1)が押されると、カウンタCN1が1ずつインクリメントされます。
7セグメントLEDへの表示
最後に、変換した数値を7セグメントLEDに表示します。ここでは、Y40からY4Fのアドレスに接続されたLEDを使用します。
K4Y40 := CN1 + CN1 / 10 * 6;
(* 9の次にある A〜Fを飛ばして繰り上げるための処理をしています *)
このコードは、変換した16進数をDPLに反映させます。DLPが16進数表示のため、見た目が10進数になるように数値データを盛っています。これにより、7セグメントLEDに数字が表示されます。
K4Y40とY40の違い
K4Y40は、整数値などを16進数で格納し、ワードデバイスとして扱います。一方、Y40はON/OFFの状態を直接BOOL型で格納し、ビットデバイスとして扱います。
コード例
1. ワードデバイスに整数値を代入
K1Y40 := 3;
このコードは、K1Y40アドレスに3という値を代入しています。Y40は出力の端末番号なので、そのままではBOOL型のデータしか扱えません。
しかし、K1を頭につけることでY40から数えて4ビット分をまとまりとして扱えるようになります。K1Y40の場合はY43, Y42, Y41, Y40が対象となります。これは0000から1111までですので、16進数の一桁分となります。
K2ならば8ビット分、Y40〜Y47となります。これは16進数の00からFFです。
2. ビットデバイスを個別に変更
Y40 := TRUE;
Y41 := TRUE;
このコードは、Y40とY41のビットにTRUEを代入しています。これにより、7セグメントLEDの表示器に数字の3が表示されるようになります。
まとめ
この記事では、PLCでボタンを押すとカウンタが1ずつインクリメントされ、その数値を10進数から16進数に変換し、7セグメントLEDに表示する方法について解説しました。その際にビットデバイスをワードデバイスとして扱うことにより、処理を簡略化する方法を使用しました。これを参考にして、自身のプロジェクトでの活用をお試しください。