はじめに
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)」に記載されています。
このエリアを直接モニタする方法はありません。
ラベルメモリのバックアップ方法
注意: FX5CPUは非対応です。読出し/書込み可能な条件については「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については、ユニットラベルの割付を確認すると、システムで割り付けられているアドレスを見ることができます。
ただ、このUVから始まるラベルが何に使えるかはマニュアルに記載がない気がします。
このようにコメントで説明はありますが、詳細な使用方法は不明です。
GLP、LLP(ポインタ型ラベル)の確認方法
GLP、LLPについては、GX Works3のプロジェクトファイルを解凍し、中のLabelDataをSQLiteブラウザで読み出すことで、確認することができます。
lp01、gp01がラベル名で、LLP2、GLP0が割付されたデバイスです。
デバイス/ラベルメモリエリア設定
R00CPUの場合
R00CPUの場合です。デバイス/ラベルメモリは仕様で252Kバイト(126Word)が上限となります。これを各それぞれのデバイスで分け合うことになります。
デバイスエリアの設定
デバイスエリアは下記の設定で点数が設定できます。MELSEC-Qと同じですね。
ラベルエリアの設定
ラベルエリアは下記の設定で点数が設定できます。
- ラベルエリア: GV、LV
- ラッチラベルエリア: GV(VAR_RETAIN指定時)、LLV
現状、このラベルの使用率はコンパイル正常完了時に見ることができます。
ファイル格納エリアの設定
ファイル格納エリアを使用するファイルレジスタは下記の設定で点数が設定できます。
64Kワード領域があるので、最大64Kワードまで設定可能です。
MELSEC iQ-Fの場合
MELSEC iQ-Fのデバイス/ラベルメモリエリア設定です。
MELSEC iQ-Fは容量が少ないため、このような機能になっているようです。
参考資料:https://www.mesw.co.jp/technology/archives/techlib-msw_35_04.html
ファンクションブロック内にローカルラベルを追加する場合の注意事項
**テクニカルニュース(FA-D-0232)**に記載の内容です。
予約領域について
ファンクションブロックは、ローカルラベルを追加するための領域として、下記の予約領域を持っています。
ラベルの種別 | 予約領域容量 |
---|---|
ローカルラベル | 48ワード |
ローカルラッチラベル | 16ワード |
重要な注意事項
**RUN中のCPUユニットにローカルラベルの追加操作を行った場合、追加したローカルラベルは、本予約領域内に割り付けられます。**そのため、ファンクションブロックの予約領域容量を超えるローカルラベルの追加はできません。
ファンクションブロックの予約領域容量を超えるローカルラベルの追加を行う場合は、GX Works3にて全変換(再割付)を実施後、CPUユニットをSTOPにして書込みを行ってください。
予約領域容量を超えてローカルラベルの追加を行った場合は、予約領域容量が足りない旨の変換エラーが発生します。ローカルラベルを変更した場合も対象となります。
予約領域容量を超えてローカルラベルを追加する場合の対処方法
ファンクションブロックの予約領域容量を超えてローカルラベルを追加する場合は、必ず下記の手順で全変換(再割付)を実施してください。全変換(再割付)を実施すると予約領域容量を再確保します。
- CPUユニットをSTOPにして、全変換(再割付)後のプログラムを書き込んでください。
- ラベルデータの現在値をクリアしてください。
ラベルを使用したプログラムを変換する場合の注意事項
**テクニカルニュース(FA-D-0202)**に記載の内容です。
変換方法の種類
ラベルを使用したプログラムの変換方法は、変換種別とラベル割付設定の組合せにより、下記の3種類があります。
- 全変換(再割付)
- 全変換(維持)
- 変換
ラベルデータの仕様
下表は、それぞれの変換方法で変換したプログラムをSTOP中のRCPUに書き込み、RCPUをRUN状態に切り換えた場合のラベルデータの仕様です。
ラベルデータの現在値を維持しない変換を行った場合(下表の△部分に該当する変換を行った場合)は、ラベルデータのクリアを行ってから、RCPUをRUN状態に切り換えてください。
- 〇: ラベルデータの現在値を維持
- △: ラベルデータの現在値を維持しない
プロジェクトに対する変更内容 | 全変換(再割付) | 全変換(再割付) | 全変換(維持) | 全変換(維持) | 変換 | 変換 |
---|---|---|---|---|---|---|
グローバル | ローカル | グローバル | ローカル | グローバル | ローカル | |
ラベル定義の追加/変更 | △ | △ | 〇 | 〇 | 〇 | 〇 |
ラベル定義の一部を削除 | △ | △ | 〇 | 〇 | 〇 | 〇 |
ラベル定義の追加/変更/削除なし(プログラムのみを変更) | △ | △ | 〇 | 〇 | 〇 | 〇 |
重要な注意事項
- ラベル定義の変更とは、あらかじめ定義されているラベルのラベル名やデータ型、クラス、ラベル初期値など、ラベルエディタで設定した情報を変更することです。
- 追加/変更対象のラベルについては、新しいメモリを割り付けるため、ラベルデータの現在値がありませんので、追加/変更対象のラベルをGX Works3のウォッチウィンドウへ登録し、現在値を初期化してください。
- 追加/変更対象外のラベルデータの現在値を維持する必要がある場合は、「変換+RUN中書込み」を実施してください。
まとめ
MELSEC iQ-Rのラベルメモリは、内部で専用のデバイスに割り当てられており、その構造を理解することで、より効率的なプログラミングが可能になります。
重要なポイント
- ラベルメモリの種類: GV、UV、LV、LLV、LLP、GLPの6種類
- バックアップ方法: CPUメモリ操作から実行可能
- 容量制限: R00CPUでは252Kバイトが上限
- 予約領域: ファンクションブロックには予約領域がある
- 変換時の注意: ラベルデータの現在値維持に注意
このような内部構造を理解しておくことで、より確実なPLCプログラミングが可能になります。