ラダー図の作成
PLCで使用できる言語(図)は複数あり、IEC1161-3で規格化されています。ラダー言語が多く利用されています。
PLCの状態
PLCには、停止状態(STOP)と運転状態(RUN)があります。プログラムを書き込むときや、設定を変更するときは停止状態で行います。
PLCは機械を制御します。安全のため必ず停止状態で作業を行います。やむを得ず停止できないときは、「RUN中書込み」機能でプログラムの修正ができますが、慎重に行う必要があります。
ラダー図で使う基本記号
- a接点 : 押すと導通となるスイッチです。
- b接点 : 押すと非導通となるスイッチです。
- 出力 : 信号を出力します。
プログラミング(基本)
次のラダー図を作成します。
- スイッチ(X0)を押すとランプ(Y0)が点灯します。スイッチ(X1)を押すとランプ(Y1)が点灯します。
- スイッチ(X0)と(X1)を両方同時に押すとランプ(Y0)が点灯します。
- スイッチ(X0)または(X1)を押すとランプ(Y0)が点灯します。
- スイッチ(X0)を押すとランプ(Y0)が点灯します。スイッチから手を離しても点灯を続けます。スイッチ(X1)を押すと消灯します。
自動制御のシステムは、押している間だけオンするスイッチ(モーメンタリ型)が多く利用されます。非常停止や停電でシステムが停止した後、機械を立上げるときにスイッチが保持(押されたまま)だと、機械が自動で動作して危険な場合があります。そのため、モーメンタリ型のスイッチが多く用いられています。非常停止ボタンなどは手を離しても押されたまま(オルタネイト型)です。2つの状態(自動と手動など)を切り替えるセレクタ型のスイッチなどもあります。
コメント
デバイスやプログラムブロックにコメントを記述できます。

デバイス
入力Xや出力Yをデバイスと呼びます。PLCのプログラムで使用される内部補助リレーM、タイマーT、カウンタCやシステムの状態を表すSMもデバイスです。これらのデバイスはON/OFFの状態しかないので、ビットデバイスと呼ばれます。
数値データを扱うためのデータレジスタDやシステム情報や状態を扱う特殊なシステムデバイスSDなどのデバイスがあります。PLCの数値は16ビットが基本単位でワードと呼びます。ワードを扱うデバイスをワードデバイスと呼びます。
一部のビットデバイスは、16ビット単位(例 M0~M15)で扱うことができます。データレジスタDを32bitに拡張してダブルワードとして扱うことができます。
4bit単位で使えるビットデバイスもあります。例えばX0~X3をまとめて4bitで扱うときはK1X0、8bitのときはK2X0(X0~X7)と記述します。
タイマとカウンタ
制御系のソフトウェアは時間管理とカウントが重要です。時間の管理にタイマーデバイスT、カウントの管理にカウンターCを使います。
三菱電機のPLCは、定数を10進数で表現するときは「K+数字」を使います。16進数は「H+数字」です。
タイマの単位は機種、デバイスの番号や設定で単位が異なります。K50と指定しても、0.5秒や5秒など異なる単位になることがあります。
図のタイマは、FX3UのT0は0.1秒単位のタイマなので、K50は5秒を意味します。T0に5秒間通電を続けるとタイマの接点が動作します。5秒経過する前に通電を止めると、タイマの計数は0に戻ります。
カウンタCはタイマTと違い、通電を続ける必要はありません。1度通電すると1カウントになります。設定した値になると、カウンタの接点が動作します。カウンタをリセットするためにRST命令を使う必要があります。
プログラミング(タイマとカウンタ)
- スイッチ(X0)を押すとランプ(Y0)が5秒間点灯します。
- スイッチ(X0)から手を離すとランプ(Y0)が5秒後に消灯します。
- スイッチ(X0)を押すと、ランプ(Y0)と(Y1)が1秒間隔で交互に点灯します。スイッチ(X1)を押すと消灯します。
- スイッチ(X0)が5回押されたらランプ(Y0)を点灯します。スイッチ(X1)を押して回数をリセットします。
データレジスタ
プログラム中に定数を書き込むと、編集するときにプログラムの修正が必要です。データレジスタを使用するとプログラムの修正を行う必要がありません。
データレジスタの初期値はデバイス初期値機能で設定します。プログラムと一緒に書き込みます。
ワンスキャン命令
命令の最後にP(パルス)を付けると、指示が入り続けても、1スキャンだけ命令が実行されます。プログラムの最初から最後まで解析することをスキャンと呼びます。通常、1スキャンに必要な時間は1ミリ秒未満です。 INC命令だと、スキャンされるたびに1が加算されます。1スキャンが1ミリ秒だと、0.5秒間ボタンを押すと500が加算されます。INCP命令を使うと、実行され続けても1しか加算されません。
a接点やb接点をパルス化(1スキャンだけオン)できます。矢印のある接点を使います。
矢印が上向きは「押されたとき」、下向きは「離されたとき」にワンスキャンだけオンします。
次の回路は、開始ボタンを押すとタイマに設定した時間だけランプが点灯する回路です。開始ボタンを押し続けるとどうなるでしょうか。

開始ボタンを押し続けると、タイマに設定した時間が経過した後もランプは点灯を続けます。開始ボタンを押したら1度だけ動作するようにするにはどうしたらよいでしょうか。
ワンスキャンだけオンするa接点 (PLS) を使うと簡単に解決することができます。

数値を扱う命令
PLCで数値演算や比較命令などを使うことができます。
- 「INC(P)」命令で1を加算、「ADD(P)」命令や「+(P)」命令を使うと加算ができます。
- 「DEC(P)命令で1を減算、「SUB(P)」命令や「-(P)」命令を使うと減算ができます。
- 「
<、>、<=、>=」命令で比較ができます。
🤔プログラミング(データレジスタと数値)
- スイッチ(X0)を押すとランプ(Y1)が1秒間点滅、1秒間消灯を繰り返します。スイッチ(X1)を押すと点滅を停止します。停止中はランプ(Y0)が点灯します。(回答例1: データレジスタと数値1.gx3)
- 入力にスイッチ(X2)を追加します。停止中にスイッチ(X2)を押すと1秒加算します。上限は10秒とします。(回路例2: データレジスタと数値2.gx3)
- 出力にブザー(Y2)を追加します。タイマの値に1秒が追加されると、0.1秒間ブザーを鳴らします。
回答例1は、停止ボタン(X1)を押すと、ランプの点滅が1周期終了したら停止します。 回答例2は、追加の機能を「increment」として別の回路に記述しています。 回答例3は、追加の機能を「buzzer」として別の回路に記述しています。