MELSEC iQ-R シリーズでは、GX Works3 を使ったラベルベースのプログラミングが可能です。これにより、従来のデバイス番号ではなく、変数(ラベル)を使ってプログラムを記述することができます。
このラベルが実際にどのような内部構造を持ち、どのようにメモリへ割り当てられているのかを、本記事では掘り下げて解説していきます。
ラベルメモリとは?
GX Works3で使用されるラベルは、内部では「ラベルメモリ」と呼ばれる特別なメモリ領域にマッピングされます。
参考動画(公式)
三菱電機公式のYouTubeチャンネルでもラベル機能の解説がありますので、あわせて視聴することをおすすめします。
🔗 GX Works3 ラベルプログラミング講座(YouTube)
ラベルメモリの正体とは?
ラベルは、実際には以下のような専用のデバイスに割り当てられています。
記号 | 意味 | 用途 |
---|---|---|
GV | Global Variable | グローバルラベルに割り当て |
UV | Unit Variable | ユニットラベルに割り当て |
LV | Local Variable | ローカルラベルに割り当て |
LLV | Local Latch Variable | ラッチ付きローカルラベル(VAR_RETAIN) |
LLP | Local Label Pointer | ポインタ型のローカルラベル |
GLP | Global Label Pointer | ポインタ型のグローバルラベル |
これらの情報は「GX Works3 オペレーティングマニュアル(SH-081214)」に記載されています。
このエリアを直接モニタする方法はありません。
ラベルメモリのバックアップ方法
ラベルの割付け情報を確認・保存するには、以下の手順で行います。
実行後、指定したフォルダにBackupDataというフォルダが作成されラベルのバックアップファイルが保存されます。
LabelChg_before.csv
というファイルに、ラベルごとの割り当てメモリアドレスが記載されており、内部的なラベルとデバイスの対応関係が把握できます。
GV,LV,LLVについてはこの方法で確認できます。
stGLBL3[0].AAA00 GV:7800.0 BOOL 1 60 0
stGLBL3[0].AAA01 GV:7800.1 BOOL 1 60 0
stGLBL3[0].AAA02 GV:7800.2 BOOL 1 60 0
stGLBL3[0].AAA03 GV:7800.3 BOOL 1 60 0
MAIN/ProgPou/stLLBL1[0].AAA00 LV:0.0 BOOL 1 10 0
MAIN/ProgPou/stLLBL1[0].AAA01 LV:0.1 BOOL 1 10 0
MAIN/ProgPou/stLLBL1[0].AAA02 LV:0.2 BOOL 1 10 0
MAIN/ProgPou/stLLBL1[0].AAA03 LV:0.3 BOOL 1 10 0
MAIN/ProgPou/stLLBL2[0].AAA00 LLV:0.0 BOOL 1 12 0
MAIN/ProgPou/stLLBL2[0].AAA01 LLV:0.1 BOOL 1 12 0
MAIN/ProgPou/stLLBL2[0].AAA02 LLV:0.2 BOOL 1 12 0
MAIN/ProgPou/stLLBL2[0].AAA03 LLV:0.3 BOOL 1 12 0
UVについてはユニットラベルの割付を確認するとシステムで割り付けられているアドレスを見ることができます。
ただこのUVから始まるラベルが何に使えるかはマニュアルに記載がない気が…?
このようにコメントで説明はありますが。
GLP,LLPについてはgx3のプロジェクトファイルを解凍し、中のLabelDataをSQLiteブラウザで読み出すことで、確認することはできます。
lp01,gp01がラベル名でLLP2,GLP0が割付されたデバイス
デバイス/ラベルメモリエリア設定
R00CPUの場合です。デバイス/ラベルメモリは仕様で252Kバイト(126Word)が上限となります。
これを各それぞれのデバイスで分け合うことになります。
デバイスエリアは下記の設定で点数が設定できます、MELSEC-Qと同じですね。
ラベルエリアは下記の設定で点数が設定できます。
ラベルエリア=GV,LV
ラッチラベルエリア=GV(VAR_RETAIN指定時),LLV の事です。
現状このラベルの使用率はコンパイル正常完了時に見ることができます。
ファイル格納エリアを使用するファイルレジスタは下記の設定で点数が設定できます。
64Kワード領域があるので、最大64Kワードまで設定可能です。
MELSEC iQ-Fの場合
MELSEC iQ-Fのデバイス/ラベルメモリエリア設定です。
MELSEC iQ-Fは容量が少ないためこのような機能になっているようです。