SA0062:式でのTRUEまたはFALSEの使用 リテラルの使用法を決定します TRUE また FALSE 式で。 正当性: ブール値リテラルを使用した演算 TRUE または FALSE 、繰り返し計算され、毎回同じ結果が返されることは避けるべきです。この種の表現は余分なので置き換えるべきです。その存在はエラーを示します。いずれの場合も、式はプログラムの実行時間に不必要に負担をかけます。 重要性
SA0063:おそらく16ビット互換ではない操作 中間結果で16ビット演算を決定します。背景:32ビットの中間結果は、16ビットシステムでは切り捨てることができます。例: (int+10) 16ビットを超えることができます。 理由:このメッセージは、16ビットプロセッサと32ビットプロセッサの両方で実行する必要があるコードを記述しなければならないという非常にまれなケースでの問題から保護することを目
SA0019:暗黙のポインタ変換 暗黙的に生成されたポインタ変換を取得します。 位置揃え: で CODESYS 、ポインタは厳密に型指定されておらず、任意の方法で相互に割り当てることができます。これは頻繁に使用されるため、コンパイラによって報告されません。ただし、誤って予期しないアクセスが発生する可能性もあります。を割り当てると、 POINTER TO BYTE に POINTER TO DWOR
SA0130: 暗黙的な拡張変換 算術演算中に小さいデータ型から大きいデータ型への変換が暗黙的に実行されるコードの位置を検出します。 理由: ソース型の値の範囲がターゲット型の値の範囲内に完全に含まれている場合、コンパイラは異なる型の代入を許可します。ただし、コンパイラは、できる限り遅いタイミングでコードへの変換を構築します。タイプの割り当ての場合 lint := dint * dint の場合、
SA0133:明示的なナローイング変換 大きいデータ型から小さいデータ型への明示的に実行された変換を決定します。 根拠: 多数の型変換が行われる場合は、変数に間違ったデータ型を選択したことを示している可能性があります。このため、データ型変換の明示的な理由を要求するプログラミング ガイドラインがあります。 重要度:低 例 55 . 例 PROGRAM SA0133 VAR siVar:SINT; d
SA0134:明示的な符号付き/符号なし変換 明示的に実行された、符号付きデータ型から符号なしデータ型への変換、およびその逆の変換を検出します。 正当性: 型変換を過度に使用すると、変数に対して間違ったデータ型が選択された可能性があります。このため、データ型変換の明示的な理由を要求するプログラミング ガイドラインがあります。 重要度:低 例 56 . 例 PROGRAM PLC_PRG VAR b
SA0005:無効なアドレスとデータ型 無効なアドレスとデータ型の指定を検出します。アドレス内の有効なサイズプレフィックス:X for BOOL 、Bは1バイトのデータ型、Wは2バイトのデータ型、Dは4バイトのデータ型です。 理由:直接アドレスにある変数は、データ型の範囲に対応するアドレスに関連付ける必要があります。たとえば、次の場合、コードの読者を混乱させる可能性があります。 DWORD に B
SA0047:直接アドレスへのアクセス 実装コードでの直接アドレスアクセスを決定します。 理由:シンボリックプログラミングが常に望ましい:変数には意味を持つこともできる名前があります。アドレスが何に使用されているかはわかりません。 重要性:高い PLCopenルール:N1 / CP1 例 58 . 例 PROGRAM PLC_PRG VAR xVar : BOOL; byVar : BYTE; E
SA0048:直接アドレスのAT宣言 決定 AT -直接アドレスに関する宣言。 コード内で直接アドレスを使用すると、アドレスが複数の場所に出現するため問題が発生します。 最初のコントローラー構成では、物理オブジェクトのアドレスへの割り当てが定義されます。 プログラムの 2 番目では、変数がこれらのアドレスに割り当てられます。 構成の変更によりアドレスが再配置された場合は、プログラム内のまったく別の
SA0051:BOOL変数の比較演算 タイプの変数の比較演算を決定します BOOL 。 理由: CODESYS このような種類の比較が可能になります。しかし、それらは非常に珍しいため、混乱を招く可能性があります。 IEC 61131-3 規格では、これらの比較は規定されていません。これらを回避すると、他の開発システムへのコードの移植性が高まります。 重要性:中 例 60 . 例 PROGRAM P