PLCプログラムにおける変数と構造体の使用は、プログラムの可読性と保守性を向上させる上で非常に有効です。しかし、使い方を誤るとスキャンタイムの遅延など、予期せぬ問題を引き起こす可能性があります。ここでは、PLCプログラムで変数と構造体を使用する際の注意点と、スキャンタイムへの影響について詳しく解説します。
変数と構造体の適切な使用方法
データ型の適切な選択:
PLCで扱うデータ型は、ビット、整数、浮動小数点数など多岐にわたります。変数の用途に合わせて、適切なデータ型を選択することが重要です。
例えば、ON/OFFの状態を表す場合はビット型、カウント値などの整数値を扱う場合は整数型、温度や圧力などの実数値を扱う場合は浮動小数点数型を使用します。
構造体の活用:
関連性の高い変数をまとめて構造体として定義することで、プログラムの可読性と保守性を向上させることができます。
例えば、モーターの制御に関する変数(運転フラグ、速度、電流値など)を一つの構造体として定義することで、プログラムの構造が明確になります。
変数のスコープの明確化:
変数のスコープ(有効範囲)を適切に設定することで、予期せぬ変数の競合や誤った値の書き換えを防ぐことができます。
グローバル変数、ローカル変数、入力変数、出力変数など、変数のスコープを明確に区別して使用します。
シンボリックアドレスの使用:
物理アドレスではなく、シンボリックアドレス(変数名)を使用することで、プログラムの可読性と保守性を向上させることができます。
シンボリックアドレスを使用することで、物理アドレスの変更によるプログラムの修正を最小限に抑えることができます。
スキャンタイムへの影響と対策
データ量の増加:
構造体を多用すると、プログラムで扱うデータ量が増加し、スキャンタイムが遅延する可能性があります。
不要な変数の定義を避け、必要なデータのみを構造体に含めるようにします。
複雑なデータ処理:
構造体に含まれるデータの処理が複雑になると、スキャンタイムが遅延する可能性があります。
複雑なデータ処理は、ファンクションブロック(FB)やファンクション(FC)に分割し、プログラムの構造を簡素化します。
データ型の変換:
異なるデータ型間の変換は、PLCの処理負荷を高め、スキャンタイムを遅延させる可能性があります。
可能な限り、同じデータ型でデータを扱い、データ型の変換を最小限に抑えます。
メモリの使用効率:
構造体の定義方法によっては、PLCのメモリ使用効率が悪化し、スキャンタイムが遅延する可能性があります。
構造体のメンバ変数のデータ型や配置を最適化し、メモリの使用効率を高めます。
スキャンタイム:
キーエンスKV8000の運転記録設定では、プログラムで使用しているワード数が確認できます。
RECIPEプログラムでは、レシピのデータ、レシピに紐づくティーチングデータを扱うため、非常にワード数が多く処理に負担をかけます。
対策方法
1)変数、構造体で2,3次元のたくさんのデータを取りあつかう場合は、特定のプログラムユニットのみで使用する
他のユニットで使う条件は、必要最低限に集約して使う
2)FBやFCとローカル変数を活用する
その他注意点
PLCの機種やバージョンによって、変数や構造体の扱いが異なる場合があります。使用するPLCのマニュアルをよく読み、適切な方法で変数と構造体を使用してください。
プログラムの可読性と保守性を高めるために、変数や構造体の命名規則を統一し、適切なコメントを記述するように心がけましょう。
これらの注意点を守ることで、PLCプログラムにおける変数と構造体の適切な使用と、スキャンタイムの遅延防止に繋がります。