こちらのシリーズではSysmac Studioの様々なFC・FBをプログラム例付きで解説します。今回はStackInsという関数を紹介します。
さ、FAを楽しもう。

Reference Link
前書き
いつも私の技術ブログと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
技術はひとりじゃもったいない。
StackIns
StackIns 命令は、スタック配列 InOut[] に Num 個の要素が格納されていると想定しています。In(挿入値)は、Offset で指定された InOut[Offset]の位置に挿入されます。
すべての上位要素、すなわちInOut[Offset]からInOut[Num-1]までの各要素は、スタック配列の次の上位要素に移動されます。そして、Num変数が加算されます。
Size(スタック要素の数)には、スタックに使用するInOut[]要素の数を指定してください。

変数
|
Meaning |
I/O |
Description |
Valid range |
Unit |
Default |
---|---|---|---|---|---|---|
In |
挿入値 |
Input |
スタックに挿入する値、構造体、または構造体メンバー |
Depends on data type. |
— |
☆*1 |
Size |
スタック要素数 |
スタック配列の要素数 |
1 | |||
Offset |
オフセット |
スタックに挿入する位置 |
0 | |||
InOut[] (array) |
スタック配列 |
In-out |
スタックとして機能する配列 |
Depends on data type. |
— |
— |
Num |
保存要素数 |
スタックに格納されている要素数 | ||||
Out |
戻り値 |
Output |
常にTRUE |
TRUEのみ |
— |
— |
Implementation
次はStackIns関数を使用し配列にデータの挿入を実装します。
変数
こちらは今回プログラム例で定義した変数です。arrstDataは実際StackInsを使用し操作するデータになります。

プログラム
こちらは今回の記事のプログラムになります。注意するのは今回StackIns関数を呼び出すときには@マークがついてるため、EN入力xStackInsが立ち上げのみで、関数を実行します。

結果
こちらが結果です。今回はxStackIns=TRUEで、StackInsOffset=2のことで、arraDataの2つ目のデータにmyDataが挿入されます。
そしてuiStackNo2は現在arrDataに存在してるデータ数を表しています。

myDataの現在値は以下になります。

下図の通り、Index2にはMyDataの値が挿入されました。
