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言語ことはじめ】カウンタの数値をDPLに表示する

Last updated at Posted at 2024-02-03

はじめに

この記事では、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に表示する方法について解説しました。その際にビットデバイスをワードデバイスとして扱うことにより、処理を簡略化する方法を使用しました。これを参考にして、自身のプロジェクトでの活用をお試しください。

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?