SA0165:プログラム以外のPOUを呼び出すタスク このチェックは、プログラムの代わりに関数ブロックまたは関数を呼び出すタスクを識別します。 理由:このルールはPLCopenコーディングガイドラインの一部であるため、コンプライアンスも含まれています CODESYS チェックしました。で見る CODESYS タスクがプログラム以外のPOUを呼び出す場合、データの整合性に関する問題はありません。ただ
SA0166:input/output/in-out変数の最大数 このチェックは、定義された数の入力変数( VAR_INPUT )、出力変数( VAR_OUTPUT ) また VAR_IN_OUT -ブロック内の変数を超えています。のダイアログで最大数を定義します プロジェクト設定 ルールのある行をダブルクリックしたとき。 理由:個々のプログラミングガイドラインを確認することです。多くのプログラミ
SA0167:一時的な機能ブロックインスタンス このチェックにより、一時変数として宣言されている機能ブロックインスタンスが決定されます。これは、メソッド内、関数内、またはとしてのインスタンスに影響します VAR_TEMP 宣言されているため、各処理サイクルまたは各ブロック呼び出しで再初期化されます。 理由: 機能ブロックには、通常、複数の PLC サイクルにわたって維持される状態があります。スタッ
SA0168:不要な割り当て コードに影響を与えない変数への割り当てを検索します。 理由:割り当て間で変数が評価されることなく、値が変数に複数回割り当てられている場合、最初の割り当てはプログラムに影響を与えません。 重要度:低 例 125 . 例 PROGRAM PLC_PRG VAR dwVal1 : DWORD; dwVal2 : DWORD; END_VAR // unnecessary a
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
SA0054:REAL / LREALを比較して等式/不等式 比較演算子かどうかを決定します = (平等)と <> (不等式)タイプのオペランド REAL また LREAL 比べる。 理由: REAL / LREAL 値は、IEEE 754 標準に従って浮動小数点数として実装されます。この標準は、特定の一見単純な 10 進数を正確に表現できないことを意味します。その結果、以下のように異なる表現が存
SA0055:符号なしオペランドの不要な比較演算 符号なしオペランドとの不要な比較を検出します。符号なしデータ型がゼロ未満になることはありません。これは、サインチェックとして使用できます。 理由:このチェックで検出された比較は一定の結果を返し、これはコードのエラーを示します。 重要性:高い 例 64 . 例 PROGRAM PLC_PRG VAR byTest: BYTE; END_VAR //