SA0018:異常なビットアクセス 符号付き変数へのビットアクセスを検出します。ただし、IEC 61131-3 規格では、ビット フィールドに対するビット アクセスとビット シフト操作のみが許可されています。 厳格なルールも参照してください SA0147 そして SA0148 。 理由:符号付きデータ型をビットフィールドとして使用しないでください。その逆も同様です。 IEC 61131-3規格では
属性: nameprefix この属性は、構造化データ型の変数のプレフィックスを定義します。プレフィックスは、このタイプで宣言された変数の識別子の前に置く必要があります。この命名規則は、 静的コード分析 。 挿入位置 :構造化データ型の宣言前の行 構文 : {attribute 'nameprefix' := '<prefix>'} 例 次の例では、変数名が「point」で始まっていないため、静的
SA0004:出力への複数の書き込みアクセス 複数の場所に書き込まれる出力を検索します。 理論的根拠:出口がコード内のさまざまな場所に書き込まれると、保守性が低下します。その場合、どの書き込みアクセスが実際にプロセスに影響を与えるのかは不明です。補助変数で出力変数の計算を行い、サイクルの最後の1つのポイントで計算値を割り当てることをお勧めします。 重要性:高い PLCopenルール:CP12 ヒン
SA0130: 暗黙的な拡張変換 算術演算中に小さいデータ型から大きいデータ型への変換が暗黙的に実行されるコードの位置を検出します。 理由: ソース型の値の範囲がターゲット型の値の範囲内に完全に含まれている場合、コンパイラは異なる型の代入を許可します。ただし、コンパイラは、できる限り遅いタイミングでコードへの変換を構築します。タイプの割り当ての場合 lint := dint * dint の場合、
SA0052:異常なシフト操作 符号付き変数のシフト演算(ビットシフト)を決定します。ビットフィールドデータ型のシフト操作の場合( Byte 、 DWORD 、 LWORD 、 WORD )エラーは出力されません。 理由: CODESYS 署名されたデータ型のシフト操作を許可します。ただし、これらの操作は一般的ではなく、混乱を招く可能性があります。 IEC-61131-3規格はそのような操作を規定
SA0066:中間結果の使用 レジスタ サイズより小さいデータ型を持つステートメントでの一時結果の使用を検出します。この場合、暗黙的なキャストによって望ましくない結果が生じる可能性があります。 正当な理由: パフォーマンス上の理由から、 CODESYS Static Analysis プロセッサのレジスタ幅に対して演算を実行します。中間結果は切り捨てられません。これは、次のような誤解を招く可能性が
SA0148:異常なビットアクセス-strict ビットフィールドのデータ型に基づかないビットアクセスを決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは符号なしデータ型へのビットアクセスも許可します。 重要度: 低 例
CODESYS Development System
オペレーター:ROR IEC演算子は、オペランドを右にビット単位でローテーションするために使用されます。 許可されるデータ型: BYTE 、 WORD 、 DWORD 、 LWORD erg := ROR(in,n) CODESYS 動く in 右に1ビットをn回追加し、左から右端の位置にビットを追加します。 ヒント ビット数 CODESYS この操作の用途は、のデータ型によって定義されます。 i
CODESYS Development System
オペレーター:SHL IEC演算子は、オペランドをビット単位で左にシフトするために使用されます。 erg := SHL (in, n) in :左にシフトしたオペランド n :シフトするビット数 in 左の方です 重要 もしも n データ型の幅を超える場合は、ターゲットシステムによって異なります。 BYTE 、 WORD 、 DWORD 、 と LWORD オペランドはパディングされます。ターゲッ
CODESYS Development System
オペレーター:SHR IEC演算子は、オペランドをビット単位で右にシフトするために使用されます。 erg := SHR (in, n) in :右にシフトしたオペランド n :シフトするビット数 in 右の方へ 重要 もしも n データ型の幅を超える場合は、ターゲットシステムによって異なります。 BYTE 、 WORD 、 DWORD 、 と LWORD オペランドはパディングされます。ターゲット