プログラマブルロジックコントローラ
例としてタンクに水を入れる装置を考えてみよう。タンク内の水は別のシステムが必要に応じてくみ上げて使用する。ここで注目するシステムはタンク内の水を一定量に保つシステムである。
デジタル信号だけを使った場合、PLCは、入力としてタンクが空かどうかを示すスイッチと満タンかどうかを示すスイッチを持つ。また、出力としてはタンクに水を入れるバルブを開閉する出力信号をひとつ必要とする。
どちらのスイッチもOFFか「タンクが空」のスイッチだけがONの場合、PLCはバルブを開けて水を入れる。「タンクが満タン」のスイッチだけがONになったらバルブを閉じる。両方のスイッチがONになったら、スイッチの少なくとも一方が故障したと判断できる。満タンかどうかのスイッチだけで判断しないのは、少しずつ水を使うような状況でスイッチがひとつだけだと頻繁にバルブの開閉が行われて機械が消耗するのを避けるためである(そのような状態をフラッターと呼ぶ)。
アナログシステムではタンクの重さを測定する重量計と流量を制御できるバルブを使う。
PLCのプログラムはパーソナルコンピュータ上の特別なアプリケーションで作成し、PLCにダウンロードする。単純なものは現場で作ることも多い。以前はプログラム専用のハードウェアを使用していたがノートパソコン等の発達によりほとんど見られなくなった。プログラムはPLC毎にバッテリーバックアップされたRAMや不揮発性のメモリ(フラッシュメモリ)に格納される。ひとつのPLCで数千のリレーを置換するようプログラムすることもできる。
初期のPLCは電気技術者が使うことを想定して設計され、彼らは業務で使用するうちにPLCのプログラミングを学んだ。専用のプログラミング用パネルや端末があり、PLCプログラムの各種論理要素に対応したファンクションキーが並んでいた。その後PLCはリレー回路の配線に対応するようになっているラダー論理でプログラムされるようになった。最近のPLCはラダー論理だけでなくBASICやC言語を使ってプログラムすることもできる。また、状態遷移図に基づいてPLCのプログラミングをする方式もある。
PLCは PID フィードバックループ(後述)を使ってバルブを制御する。重量計はPLCのアナログ入力に接続され、バルブはPLCのアナログ出力に接続される。このシステムではタンク内の水量が少ないほどバルブを大きく開けて素早く水を満タンにしようとする。水量が素早く減っている場合、バルブも大きく開けられる。ほんの少しだけ水が使われている場合、バルブは少しだけ開けられ、ゆっくりとタンクに水を入れる。
このシステムでバルブのフラッター状態を防ぐために、こういった制御装置では不感帯(デッドバンド)が設けられる。つまり、水の減り具合の変化がある閾値より下ならバルブを開閉しないようにする。そうすることでバルブの動作が最適化され、消耗を防ぐことができる。
実際のシステムは両方を結合して使用するかもしれない。デジタル信号を水があふれるのを防ぐために使用し、水量をなるべく一定に保つためにアナログ信号を使う。さらにバックアップや保守状態を考慮することで実際のシステムは複雑化していく。