SA0169:無視された出口 メソッドまたは関数が呼び出されたときに指定されていないメソッドおよび関数の出口を決定します。 理論的根拠:結果が使用されないため、無視された出口は、未処理のエラーまたは無意味な関数呼び出しを示している可能性があります。 重要性:中 例 126 . 例 FUNCTION Fun1 VAR_INPUT bIn : BOOL; VAR_END VAR_OUTPUT bOut
SA0170: 出力変数のアドレスは使用できません 出力変数のアドレスが含まれるコードの位置を検出します ( VAR_OUTPUT 、 VAR_IN_OUT ファンクションブロックの)を使用します。 理由: ファンクション ブロック出力のアドレスを次の方法で使用することは許可されていません。 経由 ADR -オペレーター によって REF= 例外: 出力変数が同じ関数ブロック内で使用されている場合
SA0171:列挙型には「strict」属性が必要です 属性と一致しない列挙型の宣言を取得します {attribute 'strict'} 提供されています。 理由:属性 {attribute 'strict'} コードが厳密な列挙プログラミングルールに違反している場合、コンパイラエラーがスローされます。デフォルトでは、新しい列挙を作成するときに、宣言は属性を使用して自動的に作成されます 'str
SA0053:ビット単位のシフトが大きすぎます オペランドのビット単位シフト(ビットシフト)を行う場合、オペランドのデータ型幅を超えていないか判断します。 理由:移動操作がデータ型の幅を超えると、定数が作成されます 0 。 回転シフトがデータ型の幅を超えている場合、読み取りが困難であるため、回転値を切り捨てる必要があります。 重要性:高い 例 62 . 例 PROGRAM PLC_PRG VAR
SA0055:符号なしオペランドの不要な比較演算 符号なしオペランドとの不要な比較を検出します。符号なしデータ型がゼロ未満になることはありません。これは、サインチェックとして使用できます。 理由:このチェックで検出された比較は一定の結果を返し、これはコードのエラーを示します。 重要性:高い 例 64 . 例 PROGRAM PLC_PRG VAR byTest: BYTE; END_VAR //
SA0056:定数が範囲外 演算子の範囲外のリテラル(定数)を検索します。 理由:このメッセージは、値がこの値の値の範囲外にある定数と比較された場合に発行されます。その後、比較は定数を返します TRUE また FALSE 。これはプログラミングエラーを示しています。 重要性:高い 例 65 . 例 PROGRAM PLC_PRG VAR byTestVar: BYTE; END_VAR WHILE
SA0057:小数点以下の桁数が失われる可能性 小数点以下の桁数が失われる可能性のある命令を決定します。 理由:次の種類のコードの一部: diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2) 誤解を招く可能性があります。このコード行の作成者または読者は、分割が次のようになると想定する場合があります。 REAL -実行された操作と結果はこの場合になります
SA0058:列挙変数の操作 データ型列挙型の変数に対する操作を決定します。割り当てが許可されます。 理由: 列挙型は通常の整数値として使用すべきではありません。あるいは、エイリアス データ型を定義したり、サブレンジ型を使用したりすることもできます。 重要性:中 例外:属性を持つ列挙型の場合 {attribute 'strict'} がマークされている場合、コンパイラはすでにそのような操作を報告し
SA0059:常にTRUEまたはFALSEを返す比較操作 結果が常に次になるリテラルとの比較を検出します。 TRUE または FALSE 、コンパイル時にすでに処理できます。 理論的根拠:一定の演算 TRUE また FALSE 戻り値はプログラミングエラーを示します。 重要性:高い 例 69 . 例 PROGRAM PLC_PRG VAR byTemp1 : BYTE; END_VAR WHILE
SA0060:無効なオペランドとしてNull オペランドに値が含まれる操作を検出します。 0 無効または無意味な操作を引き起こす 理由:このような式は、プログラミングエラーを示している可能性があります。いずれにせよ、それは不必要に実行時間を要します。 重要性:中 例 70 . 例 PROGRAM PLC_PRG VAR byTemp1 : BYTE; wTemp2 : WORD; dwTemp3