チームで構築する場合、最終的にはFB(ファンクションブロック)でまとめるようになると思うので、FBをメインで書いていきます。
あとは、計算式はST言語での表現が簡単です。
なぜか検索で出てくるものは国際規格版を使ってるのにラダーばかりなのでFBを推進していきます
なので、ラダーのみで職人技巧を極めても意味なくね?的な発想で配信します
暫定公開中
(現在作成中で未完です。)
折角のすばらしいフリーソフトが一般の初心者にはハードル高そうなので
標準ライブラリの取扱説明書を作っていこうと思います。
OpenPLCはこちらのサイトからダウンロードしてください。
https://www.openplcproject.com/
PLCopen JAPAN 参考:企業向け
標準関数
標準関数【Standard Function Blocks】
スイッチ操作系
SR【セット優先自己保持回路】
SR BISTABLE
INTRODUCTION
This function block maintains its output in one of two stable states TRUE or FALSE.
The output can be set or reset by applying a TRUE signal to the Set or Reset inputs.
If both inputs are TRUE the output is TRUE.
引用元:OpenPLC リファレンスより
なんとなく翻訳すると
自己保持回路でONスイッチが優先される回路
RS【リセット優先自己保持回路】
RS BISTABLE
INTRODUCTION
This function block maintains its output in one of two stable states TRUE or FALSE. The output can be set or reset by applying a TRUE signal to the Set or Reset inputs. If both inputs are TRUE the output is FALSE.
引用元:OpenPLC リファレンスより
SEMA【 】
R_TRIG 【立ち上がりエッジの取得】
RISING TRIGGER
INTRODUCTION
This function block is a rising edge detector. The output Q is FALSE when the input CLK is FALSE. As soon as CLK is set to TRUE, Q is activated to TRUE for a single pulse.
引用元:OpenPLC リファレンスより
- スイッチを押した瞬間に一瞬だけ信号が出ます
- スイッチをOFFにしないと次の信号は入りません
- スイッチを押したままで信号が繰返し入るのを防ぎます
F_TRIG 【立ち下りエッジの取得】
(スマホのアプリ起動するときにアイコンから指を離すと起動する あれです)
FALLING TRIGGER
INTRODUCTION
This function block is a falling edge detector. The output Q is FALSE when the input CLK is TRUE. As soon as CLK is set to FALSE, Q is activated to TRUE for a single pulse.
引用元:OpenPLC リファレンスより
- スイッチを離した瞬間に一瞬だけ信号が出ます
- スイッチをOFFにしないと次の信号は入りません
- スイッチを切ったままで信号が繰返し入るのを防ぎます
- 実行中のプログラムブロックが終了した確認をする場合に使用します
**外部機器使用時はこれが重要

プログラム例
スイッチを
押すと
一瞬 ON_PLS_FLGが点灯
離すと
一瞬 OFF_PLS_FLGが点灯
カウンター カウントアップ用
CTU
COUNTER UP
INTRODUCTION
The up-counter can be used to count the number of rising edge FALSE to TRUE transitions of the preceding logic and signal when a count has reached a maximum value. Each time the input CU is set to TRUE, the counter CV is incremented by 1, provided that CV is less than the maximum value PV. The output Q is set to TRUE when CV is greater than or equal to PV. CV is initialized to 0 when the application starts and resets to 0 when R becomes TRUE.
引用元:OpenPLC リファレンスより
カウントアップ最小値版
カウントアップで数える

プログラム例
countをオンするたびに
monitor値が+1
PVの値になるとoutが出力する
CTU_DINT
ちょっと多く数えれるやつ
CTU_LINT
もうちょっと多く数えれるやつ
CTU_UDINT
マイナスが数えれないちょっと多く数えれるやつ
CTU_ULINT
マイナスが数えれないが、もうちょっと多く数えれるやつ
カウンター カウントダウン用
CTD
CTD_DINT
CTD_LINT
CTD_UDINT
CTD_ULINT
カウンター アップ、ダウン両方付き
CTUD
CTUD_DINT
CTUD_LINT
CTUD_UDINT
CTUD_ULINT
時間操作系
TP 【タイムパルス】
- 指定時間分を出力します
- 警報ブザーを1秒鳴らす
- 選択スイッチのタイムアップに使用する
TON 【オンディレイタイマー】
- スイッチONで指定時間後に出力します
- 機械起動で警報後にモーター回転を行う
- 振動でのセンサー誤検知の予防に使います
ST言語版
IN:タイマー起動
PT:タイマー数値設定
Q:タイムアップで出力
ET:タイマー現在値モニタ
TON_1(
IN := switch1,
PT := timer_v1,
Q => timeup_out1,
ET => timer_mon1);
TOF 【オフディレイタイマー】
- スイッチOFFで指定時間後に出力します
- ポンプ汲み上げで無くなった判定後にちょっと待って停止する等

TONとTP
の組み合わせ例
3秒後に1秒出力する
TOFにすると動作が変わります
型変換関数 Type conversion
一般演算関数 Arithmatic
ADD 足し算
FB版足し算
入力を増やすと足せる要素が増えます


MUL 掛け算


SUB 引き算
DIV 割り算
MOD 余りを出す
EXPT べき乗
MOVE 代入
時間の演算
比較演算
GT a>b
aはbより大きい時on
GE a>=b
aはb以上の時on
EQ a==b
等しい時on
LT a<b
aはbより小さい時on
LE a<=b
aはb以下のときon
範囲内で出力する例
下限と上限の間で条件成立します


NE a!=b
等しくない





コメント