その「コピペ作業」、いつまで続けますか?
「この機械にはエアシリンダが10本あるな。よし、1本目の回路を作って…」 「残り9本分はコピペして、デバイス番号を置換しよう」
X0をX10に、Y0をY10に…。 血眼になって置換作業をしている最中に、ふと思うことはありませんか? 「これ、一箇所でも修正が入ったら、10箇所全部直し直しになるのでは…?」
その予感は的中します。
試運転で「センサーの論理を逆にして」と言われた瞬間、あなたは10箇所すべての回路を修正し、再び転送し、デバッグすることになります。 たとえ世界に一台の特注機械だとしても、これは「時間の無駄」以外の何物でもありません。
なぜそんな無駄が起きるのか。 それは、あなたが回路をその場限りの「使い捨て」にしているからです。
私は9年の設計経験の中で、この無駄を徹底的に排除してきました。
プロの設計者は、単純な繰り返し作業を嫌います。回路を「部品(FB)」に変えて資産化します。一度作った「完璧な部品」をポンと置くだけ。中身を知らなくても動く。 これが、バグを根絶し、残業をゼロにする「構造化プログラミング」の真髄です。
今回は、脱・初心者のための「ファンクションブロック(FB)の作り方とメリット」を解説します。
FBとは何か?「たこ焼き」で理解せよ
「ファンクションブロック(FB)」と「インスタンス」。 このカタカナ語を聞いただけで拒絶反応が出る人もいるでしょう。 しかし、これは「たこ焼き」で考えると一発で理解できます。

FB(定義)=「たこ焼き器(金型)」
FBとは、「どう焼くか(どう動くか)」という仕組みそのものです。 たこ焼き器(金型)を想像してください。これだけでは食べられませんし、お腹も膨れません。あくまで「作るための道具(設計図)」です。
インスタンス(実体)=「完成したたこ焼き」
その金型を使って、ポンと作り出された「実物のたこ焼き」。これがインスタンスです。 プログラムの中で実際に配置し、動作するのはこの「たこ焼き(インスタンス)」の方です。
現場でのイメージ
メインのラダー回路(テーブル)の上に、 「シリンダ制御たこ焼き1(fbCyl1)」 「シリンダ制御たこ焼き2(fbCyl2)」 …と、同じ味のたこ焼きを10個並べていくイメージです。
「FUN」と「FB」の決定的違い
ここで、新人が必ず混同する「FUN(ファンクション)」についても触れておきましょう。

- FUN(Function):ただの「調理器具」
- 特徴: 記憶(メモリ)を持ちません。
- 例: 包丁(切るだけ)、ミキサー(混ぜるだけ)。
- PLC命令: 足し算(ADD)、転送(MOV)。
- イメージ:「材料を入れたら、すぐに加工されて出てくる」。それだけです。
- FB(Function Block):進化する「たこ焼き」
- 特徴: 記憶(メモリ)を持ちます。
- 例: たこ焼き(中まで火が通ったか、今の温度は何度か、という「状態」を覚えている)。
- PLC命令: タイマー(TON)、カウンタ(CTU)。
- イメージ:「時間経過」や「順序」を管理したいなら、記憶できるFBが必要です。
【現場の鉄則】
その瞬間の計算だけならFUN。
シリンダやコンベアの動き(シーケンス)を作るなら、迷わずFBを選んでください。
構造化設計 3つのメリット
なぜ、面倒な設定をしてまでFBを作るのか? それは、コピペラダーには絶対に真似できない3つの革命的なメリットがあるからです。
① バグが激減する(品質保証)
1個のFB(金型)を徹底的にテストして「合格」させれば、それを100回使い回してもバグはゼロです。
「コピペミス」や「置換漏れ」という概念そのものが消滅します。
② プログラムが「読書」になる(可読性)
メインのラダー画面から、ごちゃごちゃした接点回路が消えます。
代わりに「シリンダ制御」「モーター制御」と書かれた「意味のある箱」が並ぶだけになります。 他人が見ても、「あ、ここでシリンダを動かしているんだな」と一目で分かります。
③ 変更に強い(メンテナンス性)
ここが最強のメリットです。 もし「シリンダの監視時間を変更したい」となった時、どうしますか?
- コピペラダー: 10台分、あちこちに散らばった回路をすべて修正して回る必要があります。修正漏れのリスクも大です。
- FB(たこ焼き): 「金型(FBの中身)」を1箇所直すだけ。 そうすれば、その金型から作られた10個のたこ焼き全てが、一瞬で「新しい焼き方(修正版)」に変わります。
【判断基準】どこまでFBにする?「ロボットと司令官」の法則

FBのメリットは分かった。でも、いざ作るとなると迷いますよね。
「よくある『掴んで・回して・置く』という動作は、全部まとめて1個のFBにすべきか?」 「特注の一品モノの機械でも、わざわざFBを作る必要があるのか?」
答えは決まっています。 迷った時は、「それは『ロボット』か? それとも『司令官』か?」と問いかけてください。
① FBは「ロボット(Robot)」である
シリンダ、モーター、ハンド…。これらは、どんな機械に取り付けられても「指令が来れば動く」という能力自体は変わりません。 これらは「量産型のロボット兵」です。
- 判定:FB化せよ(◎)
- 理由: ロボットは量産(コピー)できるから。
たとえ世界に一台の特注機でも、シリンダが10本あれば、それは「同じ型のロボットが10体いる」のと同じこと。 あなたは「完璧なロボット(FB)」を1体設計して、あとは10体コピー(インスタンス化)して並べるだけ。 10回プログラミングする必要はありません。作業時間は1/10です。
② ラダーは「司令官(Commander)」である
逆に、「ハンドで掴む」→「反転機を回す」→「ハンドで離す」といった自動運転の流れはどうでしょう?
これは戦況(機械の仕様)によって、「今回は待て」「作戦変更」とコロコロ変わる部分です。 これはロボットではなく、ロボットに命令を出す「司令官」の仕事です。
- 判定:ラダー/SFCのままでよし(×)
- 理由: 作戦(シーケンス)は現場で変わるものだから。
【失敗例:ロボットに作戦を埋め込むな】
もし一連の流れを丸ごと1個のFBにしてしまうと、「ロボットの脳内に作戦を焼き付ける」のと同じことになります。
「ちょっと待機時間を変えて」と言われただけで、あなたはロボット全員の脳(FBの中身)を改造しなければなりません。
「ロボット(FB)」は命令待ちに徹し、「司令官(ラダー)」が矢継ぎ早に指令を出す。
これが、仕様変更に強い最強の布陣です。
タイミングはいつ? プログラミング界の「3回ルール」
「でも、2回出てきたくらいでFBを作るのは面倒くさい…」 その感覚、正しいです。早すぎるFB化は、かえって手間を増やします。
プログラミングの世界には「Rule of Three(3回ルール)」という有名な格言があります。(出典:Martin Fowler『リファクタリング 既存のコードを安全に改善する』)
「3度目の繰り返しでリファクタリング(FB化)せよ」
- 1回目: 普通に書く。(まだただの機能)
- 2回目: コピーして書く。(重複に「うっ」となるが、まだ許す)
- 3回目: 「待てよ、これは増えるぞ」と確信した時。ここで手を止めてFB化します。
もちろん、2回目の時点で「あ、これは次の現場でも絶対に使うな」と予感したら、その時点でFBにしてしまうのがベストです。
「未来の自分が楽になるかどうか」。常にその視点を持ってください。
実践! FBの作り方「禁じ手」だけは守れ
最後に、実際にソフト(GX Works3など)でFBを作る時の「設定」と「中身」の鉄則です。
画面を開くと「VAR_INPUT」や「クラス」といった英語が出てきて面食らうかもしれませんが、恐れる必要はありません。
これらも全て、先ほどの「たこ焼き」で翻訳できます。
覚えるのは3つだけ
| クラス | たこ焼きでの役割 | 実際のプログラム | 外から見える? |
| VAR_INPUT | 材料(タコ・生地) | 入力 (外からデータを受け取る) | 見える |
| VAR_OUTPUT | 完成品(お皿) | 出力 (外へデータを渡す) | 見える |
| VAR | 鉄板の中 | 内部変数 (計算用のメモ) | 見えない |
- VAR_INPUT(材料): 外部からデータをもらう端子。これが無いと動きません。(例:
i_Start) - VAR_OUTPUT(完成品): 外部へデータを渡す端子。計算結果や完了信号です。(例:
o_Done) - VAR(鉄板の中): 内部で計算するためだけのメモ帳。外からは見えません。(例:
w_Timer)
まずはこの3つさえ選べれば、FBは動かせます。
【最重要】やってはいけない「禁じ手」
FBの中身を書くとき、絶対に守らなければならない鉄則があります。
【現場の鉄則】 FBの中で「グローバル変数(X0, Y0, D100など)」を直接書いてはいけない。
もしFBの中に「X0(起動ボタン)」と書いてしまったらどうなるでしょう? そのFBは、「X0が押された時」にしか動かない欠陥品になります。2本目のシリンダ(X10で動かしたい)には使えません。
これは、ICチップの中から勝手にリード線を延ばして、基板の特定の場所(X0)にハンダ付けしてしまうようなものです。 FBの中では必ず「入力変数(i_Start)」を使い、外からX0なりX10なりを接続するようにしてください。
まとめ:資産を作ろう
- コピペラダーは「消費」です。その場しのぎで、将来の自分を苦しめます。
- FBは「資産」です。一度作れば、一生あなたの武器になります。
シリンダ制御、コンベア制御、警報処理…。
よく使う回路をどんどんFB化して、自分の「必殺技ライブラリ(カスタムチップ集)」を貯めていってください。 ライブラリが充実すればするほど、10年後のあなたの仕事は、今の10倍速くなります。