ラダー・ロジック
ラダーで書くのに適した制御対象は、インターロックやシーケンス処理といったブール値しか必要としないものである。ラングはプログラムの上から下へ実行されるが、ラング内での実行順序ははっきりと定義されていない場合もある。実行順序が想定と違った場合、予測しない結果をもたらすロジックの「競合」が起こりうる。これを避けるため、複雑なラングはいくつかの等価なラングに分解したほうが良い。
アナログ値や数値演算はラダー・ロジックで記述するのは向いていない。各PLCメーカは独自の記述方法によりこれに対応している。
近年はマイクロプロセッサの進歩により、ラダー・ロジックの代わりにシーケンシャル・ファンクション・チャートやファンクション・ブロック・ダイアグラムといった言語でアプリケーションを記述するケースも出てきた。非常に大規模なPLCではプログラムの一部、もしくは全部をBASIC、C言語をベースにリアルタイムアプリケーション環境に合わせたほかのプログラム言語を利用できるものもある。
PLCメーカは特別な機能を持ったブロックを特殊命令としてラダーロジックの実装に加えている場合がある。特殊命令を母線に接続すると、引数を使った処理を実行できる。 ブロックがこれらの引数を表示できることもある。
上の例のシステムは、interior unlock と remote unlock のボタンを押した回数をカウントするものである。カウント情報は メモリ A とメモリ B に格納される。メモリ C にはドアが自動開錠された合計回数を保持する。
PLCの特殊命令には様々な種類がある。タイマ、数値演算、比較器、データ検索、文字列処理、PID制御、フィルタなどがある。高機能なPLCでは複数の内部メモリセットの処理や、アドレス計算、例えば物理的なドラムコントローラや有限オートマトンをシミュレートできるものもある。ユーザが自分で特殊命令を定義できるものもある(実際にはサブルーチンやマクロである)。充実した特殊命令のライブラリと高速性により、非常に複雑なオートメーションシステムにもPLCが利用できるようになってきている。