こちらは新しい記事シリーズで、ILC社のINTALOGIC5を使用し様々な検証を行います。第5
話はFBD言語について紹介します。
さ、FAを楽しもう!

前書き
いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。
技術は独り占めせず、届けるもの
私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。
また、もしあなたの現場で…
- 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
- 「EtherCAT通信でうまくいかない部分を検証してほしい」
- 「新しいリモートI/Oを試したいけど社内に検証環境がない」
など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。
支援のかたち
現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。
メンバーシップ(ラジオの応援)
Fullさんとのラジオをより充実させるための支援プランです。
https://note.com/fulhause/membership/join
Amazonギフトリスト
コンテンツ制作に必要な機材・書籍をリストにしています。
https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share
Patreon(ブログ・動画活動への応援)
月額での小さなご支援が、記事の執筆・検証環境の充実につながります。
https://www.patreon.com/user?u=84249391
Paypal
小さな支援が大きな力になります。
https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP
知ってたら助かること、届けたいだけです
あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。
soup01threes*gmail.com
技術はひとりじゃもったいない。
Reference Link
Implementation1-FBDプログラム
INTERLOGICではラダーだけではなくFBD(Function Block Diagram)を利用し、プログラムを作成することも可能です。
POU→標準実行制御プログラム→右クリック→新規作成→POUします。

言語のDrop-listからFBD(Function Block Diagrm)を選択します。

次はPOUの名前を入力し、OKします。

Done!FBDのPOUが作成されました。

こちらはFBD言語の編集画面になります。

Implementation2-Hallo Worldプログラム!
次はFBD言語でHallo Worldのプログラムを作成してみましょう。
左にあるツールボックス→データターミナル→OMをネットワークにDropしていきます。

Done!ネットワークにデータターミナルが追加されました。

次はデータターミナルにデバイスを入力しましょう。今回の記事ではM300を使用します。

Done!

先ほどと同じ操作でもう1つのデータターミナルを追加していきましょう。

Done!

OMタイプのデータターミナルに青い色とオレンジ色の四角がついています。
- 青い色は他のデータターミナルの出力を受ける入力です。
- オレンジ色は他のデータターミナルに実行結果を渡せる出力です。
下図のようにM300のオレンジ四角とM301の青い四角をつなげて行きましょう。

Done!これでM300がTRUEであれば、そのM300のTRUE値をM301に渡すことができます。

それでは実行結果を確認してきましょう。回路をモニターするときデータターミナルの下にデバイスの現在値が表示されます。

そのデータターミナルの現在値を変更したい場合は、直接入力すればOkです。

Done!いまM300がTRUEなので、M301もTRUEになりました。

Implementation3-編集ロック
INTERLOGICのツールでは編集ロックという機能がありまして、人間の誤操作によるプログラムの変更や削除を避けます。

Implementation リテラル
もちろんFBDはラダーにも同じく定数を別のデバイスに転送できます。その場合はデータターミナル→リテラルを選択し、ネットワークにDropします。

次は転送元の値を設定します。

今回の例では1234を設定しましたが、下図のように定数だと他のプログラムなどから上書き不可能なので、青い色の四角がありません。

次はいつも通りの操作で転送先と繋がりましょう。今回の例では整数の1234をD300に転送します。

Done!

Implementation4-FBDで変数使用
次はFBDプログラムでローカル変数を使ってみます。まず回路の余白のところに右クリック→ネットワークを挿入します。

Done!新しいネットワークが追加されました。

次はパラメータ変数の画面にある+ボタンをクリックします。

Done!新しい変数が追加されました。

次はいつも通りに変数名・データ型などを設定しましょう。

Implementation5-汎用ファンクション使用
次はFBDで汎用ファンクションを使ってみましょう。ビット演算ファンクションをからORファンクションを追加します。

Done!ORファンクションが追加されました。

Default上ではORなどのファンクションの入力が2つだけですが、もしそれ以上の場合はファンクションを右クリック→入力の追加をクリックします。

Done!いまORファンクションの入力パラメータ数は3つになりました。

次はパラメータ変数で定義したローカル変数をそのままネットワークにDropしていきます。

Done!

次はいつも通りの操作でデータターミナルとファンクションを繋がっていきましょう。

下図のように3つのOR条件の中にどっちかONになったらxLampがTRUEになります。

Implementation6-標準ファンクションブロック
最後はFBDプログラムで標準ファンクションブロックを使用します。
標準ファンクションブロック→R_TRIGをDropします。

Done!標準ファンクションブロックR_TRIG(立ち上げ検知)が追加されました。

次はCTU(Counter標準ファンクションブロック)を追加しましょう。

下図のようにPV・リセット・Counter UPなどのパラメータを全部割り付けていきましょう。

また、線の形状を変更したい場合は、該当する線をクリック、Mouseを使えば位置調整できます。

Done!

最後は先ほど私たち作ってたFBDプログラムを確認してみましょう。

いまPV=0なので、xCounterQがTrueになります。

今度はPV=5に設定すれば、xCounterQがFalseになります。

また、CUがONする度に、CVに現在のCounter値を出力されています。
