コラム「カラクリ」

2020/12/15
非営利活動法人 設備システム研究会
三木秀樹


設備屋には自動制御がつきものだ。でも、実際には、しっかりした自動制御屋さんがいるから、ほとんど丸投げ状態じゃないかなぁ。自動制御って面白いのに、残念だなぁ。
私が新入社員だった頃は、自動制御もそれなりに習ったりしたけど、今はどうなのかな。オカネのことばかり習ったりしていたら、心配だなぁ。
自動制御の基本中の基本と言えば、自己保持の機能を持つ、押しボタン式発停回路だ。これを自動制御図(古い書き方)で書くと、
図 押しボタン式発停回路
押しボタン(運転)はa接点、つまり押せばON、押しボタン(停止)はb接点、つまり押せばOFFになる。
押しボタン(運転)を押せば運転、そのあと、ボタンから手を離しても運転したままで、押しボタン(停止)を押せば停止。この、運転したまま、ってのが、自己保持だ。理屈は、押しボタン(運転)でリレーが動作して接点が閉じた時に、その一部の接点を押しボタン(運転)の代わりに使うものだ。習った時は、何となくカラクリっぽくて、へーっ、と感心したものだ。
私が新入社員だった頃に、すでにPLC(Programable Logic Controller/ 制御用コンピュータ)は存在したが、自分がそれを手にしたのは、5年ほど後だ。
この自動制御図をPLCのラダー(はしご)プログラムで書くと、
図 押しボタン式発停回路
自動制御図とほとんど変わらないので、設備屋にも分かりやすいが、これもプログラムだ。もっとも、これはグラフィカルインターフェースを使う場合で、テキストインターフェースを使う場合は、
LD X400
OR Y30
ANI X401
OUT Y30
こちらのリストプログラムは一気に暗号っぽくなるが、ラダープログラムと同義だ。暗号っぽいのは、文字数の節約を優先したからなのかな。
これを、もしBASIC言語風に書くと、
If (X400=True OR Y30=True) And X401=True Then
Y30=True
Else
Y30=False
End If
同じく、もしPython言語風に書くと、
if (X400==True or Y30==True) and X401==True:
Y30=True
else:
Y30=False
同じく、もしArduino言語風に書くと、
if (((X400==HIGH) || (Y30==HIGH)) && (X401==HIGH)){
digitalWrite(Y30,HIGH);
}else{
digitalWrite(Y30,LOW);
}
要すれば、東北弁、名古屋弁、関西弁、九州弁程度の違いかな。言語は違えど、自動制御図とこれら全てのプログラムは同義だ。つまり自動制御図を書くことは、プログラムを書くことに等しい。つまり、自動制御図を書ける人は、プログラマーなのだ。そして、プログラマーは謙虚な人であると同時に、論理的に物事を考えることができる人なのだ。もちろん、ちゃんと動く自動制御図でないと意味ないけど。
自動制御図もプログラムも書けない設備屋は、すぐに小学生に抜かれそうだ。それがイヤなら、設備屋は自動制御をしっかりと習わないとなぁ。そうすれば、自動制御屋さんの言いなりにならずに済む。