クラス'VAR_RETAIN'のタイマ

V2.3.56以降では、旧バージョンのプログラムをコンパイルすると次のような問題が発生します。タイマは、旧バージョンではコンパイラで保持型メモリエリアに割り付けられていましたが、V2.3.56以降では非保持型メモリエリアの先頭アドレスに割り付けられます。

この原因は以下のとおりです。V2.3.56以降では、ファンクションブロックインスタンスを保持型または非保持型のメモリに割り付けられるようになりました。コンパイラは、ファンクションブロック"TM_xxs_FB"のVAR_RETAINインスタンスに対して、FPシリーズPLCのタイマを、"タイマ/カウンタ保持型メモリエリア"の範囲で、"保持型メモリエリアの最終アドレス-1"から先頭アドレス(システムレジスタNo.6で設定)に向かって、順に割り付けていきます。VARインスタンスに対しては、"タイマ/カウンタ非保持型メモリエリア"の範囲で、非保持メモリエリアの最終アドレス(システムレジスタNo.6の値-1)からタイマの先頭アドレスに向かって順に割り付けていきます。

システムレジスタNo.5とNo.6を次の例のように割り付けると、上記のような現象が起きます。したがって、システムレジスタNo.5またはNo.6の割り付けを変更するか、ファンクションブロックインスタンスのクラスを変更する必要があります。

V2.3.56より前のバージョンでは、保持型メモリに置かれたタイマの番号を2999に割り付けられていました。V2.3.56以降は、コンパイラがタイマを非保持型メモリに割り付けようとし、タイマ番号2499が割り付けられます。

対策: プログラムヘッダのクラスを変更し、インスタンスを保持エリアに割り付ける。

最終修正日: 2019-05-29このページに関するフィードバックお問い合わせ窓口