今回の記事ではEXORのJMOBILE上でHMIやエッジデバイスがUSB抜かれたときの状態取得・そしてUSBメモリの容量低下するときに自動削除の設定を説明します。
さ、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
http://soup01.com/ja/category/exor-ja/
USBドライブ変数
こちらはデバイスに接続された外部USBドライブに関する情報です。
| 変数 | 説明 | データ型 |
| USB Drive free space | 空き容量(バイト単位) | uint64、読み取り専用 |
| USB Drive Name | USBデバイスの名前 | string、読み取り専用 |
| USB Drive Size | USBポートに接続されたデバイスのサイズ(バイト単位) | uint64、読み取り専用 |
| USB Drive Status | 0 = USBドライブ未接続<br>1 = USBドライブ接続済 | int、読み取り専用 |
DeleteOldFiles
このマクロは、指定した日数より古いファイルを削除します。
PCではパスの使用に制限はありません。パネルでは、ダイナミックメディアおよびデータパーティション(/mnt/data)での使用が許可されています。
| パラメータ | 説明 |
| FolderPath | 削除するファイルを検索するフォルダ |
| FileTypes | 削除するファイルの種類をカンマ区切りで指定する。ワイルドカード使用可。<br>例:*.png, *.jpg |
| OlderDays | 変更がない最小日数 |
Implementation
それではJMOBILE Studioを開き、実際にプロジェクトを構築しましょう。
Protocol追加
今回の記事で作成した構成では、以下の2つのProtocolsを追加する必要があります。
- System Variables:USB状態を取得するProtocolです。
- Variables:画面の内部の変数です。

Tags追加
次は下図のようにUSB関連の変数を追加します。
- USB Drive FreeSpace
- USB Drive Size
- USB Drive Status

EXORのJMOBILE RUNTIMEからアクセスするUSB変数はByte単位なので、Scalingを設定しBytes→GBに変換します。

下図のように現在値を1e+09に割ればGBに変換できます。

Popup
こちらはUSBが抜かれたときの表示POPUPです。

画面
こちらは今回の記事の画面です。

画面から以下の表示ITEMを追加しました。
- USBのありなし表示
- USBの現在容量
- USBの削除リミット

警報設定
次はUSBが抜かれたあとのアラーム表示、そしてUSB容量が少ないときのアラーム表示を設定しましょう。

Alarm1
こちらはUSBメモリが抜かれたときのアラーム設定です。valueAlarmに設定し、Trigger値を0にします。

次はAlarmが発生したとき、ActionにShowDialogのイベントを追加します。

INFO-USB
次はUSB容量低下のアラームです。

こちらのlimitAlarmはタグ値が限界値を超えたときにトリガーされるアラーム、注意するのは値が限界値に達しただけではアラームはトリガーされません。

下記の[ ] 枠にTag名を入れると、アラームが発生したとき該当するTagの現在値を確認できます。

次はトリガーイベントですね。今回はUSBメモリ、.7zで、30日前のFILEを全部削除します。

結果
USBの容量などを確認できます。

下図の動画で動作確認しましょう。