こちらは新しい記事シリーズで、ILC社のINTALOGIC5を使用し様々な検証を行います。第6話はファンクションの作成を説明します。
さ、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
Implementation
それでは実際INTALOGIC5からファンクションを作成してみましょう。
ファンクション追加
INTALOGIC5ツールを起動すると、POU→ユーザ定義ファンクションという項目があります。

ユーザ定義ファンクションを右クリック→新規作成→POUします。

こちらはファンクションの作成画面になります。

ファンクション名
ファンクション名を設定します。

種別
種別にはファンクションを選び→戻り値をDrop-ListからReal(実数)を選択します。

言語
今回記事ではFBDでファンクションを作成します。

最後はOKでファンクションを作成していきましょう。

Result
Done!

またファンクションにのプログラム画面にいま修正してるファンクション名・戻り値形を確認できます。

入出力パラメータ定義
次はいつもと同じ操作でパラメータ変数を定義します。

スコープはPOUと異なり、VAR_OUTPUT/VAR_INPUT/VAR_IN_OUTを設定できます。

まずVAR_INPUTスコープの変数を定義します。それはファンクションの入力変数になります。

変数名・データ型を設定します。

初期値付きのパラメータ定義
次は初期値付きの変数を定義します。その場合は変数にある”初期値”の欄で設定してください。

ファンクション内部ロジック作成
今度は掛け算MULブロックをネットワークに追加します。

Done!

VAR_OUTPUTスコープの変数を定義します。それはファンクションの出力になります。

今度は変数をそのままネットワークにDropしてください。

Done!

iData(このファンクションの入力パラメータ)をMULの入力端子と接続します。

下図のようにfcCalDiameterをデータターミナル→戻り値から追加します。
また、FBDでは1つのブロックを複数のターミナルに出力でき、下図のようにMULブロックの計算結果を2箇所に同時出力させます。

今度はもう1つのMULブロックを追加し、rPiと掛け算します。

最後にMULブロックの出力をVAR_OUTPUTスコープの変数と紐付ければOKです。

もし変数が長すぎるとデータターミナルが表示しきれない場合があります。

該当するデータターミナルを選択し→マウスで大きさを調整しましょう。

Done!

設計チェック
設計チェックでプロジェクトエラーがないかを確認します。

FBDプログラムに呼び出し
次は先程作成したファンクションをFBDプログラムから呼び出してみましょう。

ユーザ定義ファンクション→先ほど作成したfcCalDiameter ファンクションをネットワークに追加します。

Done!先ほど作成したfcCalDiameterが追加されました。

もしファンクションのパラメータ名が表示しきれないとき、マウスで大きさを調整していきましょう。

Done!

最後は変数に割り付けましょう。

プロジェクトをRuntimeにDownloadします。ファンクションは正しく動いてます!

ラダープログラムに呼び出し
ファンクションはFBDだけではなくラダープログラムからの呼び出しも可能です。新しいRungをダブルクリックします。

命令入力POPUPが表示され、Drop-ListからFUN/FBを選択します。

ユーザ定義ファンクション→先ほど作成したファンクションを選択します。

次はファンクションのパラメータと変数を割り付けましょう。

Done!

プロジェクトをRuntimeにDownloadします。ファンクションは正しく動いてます!

フォルダ追加
プロジェクトが大きくなると、作成するファンクションも増えます。INTALOGIC5にはフォルダ機能があり、ファンクションを用途などに応じて分別できます。新規作成→フォルダをクリックします。

フォルダ名を入力します。

Done!新しいフォルダが追加されました。次はフォルダ内に新しいファンクションを追加しましょう。

下図のように、Editorから新しいファンクションを追加したとき、フォルダが分けられるようになりました。
