SA0013:同じ変数名の宣言 他の変数によって既に使用されている名前を持つ変数を検出します (たとえば、同じ名前を持つグローバル変数とローカル変数)。同じアクセス範囲内で関数名、アクション名、メソッド名、またはプロパティ名が使用されている変数も検出されます。の GVL で宣言された変数も検出されます。 デバイス ビューまたは POU プール内で。ただし、この場合、 POU ビューはアプリケーショ
SA0107:正式なパラメータがありません 正式なパラメーターが欠落しているかどうかを判別します。 理由: 呼び出しで仮パラメータを指定すると、コードが読みやすくなります。 重要度:低 例 94 . 例 FUNCTION FUNA : BOOL VAR_INPUT bDo : BOOL; bInit : BOOL; bManual : BOOL; END_VAR VAR iInit : INT;
SA0016:構造のギャップ 現在設定されているターゲットシステムのアライメント要件によって引き起こされる構造または機能ブロックのギャップを特定します。可能であれば、構造要素を再配置するか、ダミー要素で埋めることによって、ギャップを削除する必要があります。これが不可能な場合は、プラグマを介して影響を受ける構造のルールを使用できます analysis 非アクティブ化します。 理由:プラットフォームご
SA0018:異常なビットアクセス 符号付き変数へのビットアクセスを検出します。ただし、IEC 61131-3 規格では、ビット フィールドに対するビット アクセスとビット シフト操作のみが許可されています。 厳格なルールも参照してください SA0147 そして SA0148 。 理由:符号付きデータ型をビットフィールドとして使用しないでください。その逆も同様です。 IEC 61131-3規格では
SA0043: 1 つの POU のみでのグローバル変数の使用 単一のビルディングブロックでのグローバル変数の使用を検出します。 理由: 1 つの場所でのみ使用されるグローバル変数も、その場所でのみ宣言する必要があります。 重要性:中 PLCopenルール:CP26 例 51 . 例 VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW1 : IN
SA0044:インターフェース参照付きの宣言 で宣言を決定します REFERENCE TO -インターフェースと宣言 VAR_IN_OUT -インターフェースを備えた変数(暗黙的に REFERENCE TO 気がついた)。 理由:インタフェースタイプは常に、このインタフェースを実装する汎用モジュールのインスタンスへの暗黙の参照です。したがって、インターフェースへの参照は参照への参照であり、非常に望
SA0106:FB_Initでの仮想メソッド呼び出し メソッド内のメソッド呼び出しを検出します FB_Init 基本FBから派生した機能ブロックによって上書きされる基本機能ブロックの。 理由:このような場合、基本FBの上書きされたメソッドの変数が初期化されていない可能性があります。 重要性:高い 例 93 . 例 ファンクションブロック FB_A メソッドがあります FB_Init と Meth_
SA0052:異常なシフト操作 符号付き変数のシフト演算(ビットシフト)を決定します。ビットフィールドデータ型のシフト操作の場合( Byte 、 DWORD 、 LWORD 、 WORD )エラーは出力されません。 理由: CODESYS 署名されたデータ型のシフト操作を許可します。ただし、これらの操作は一般的ではなく、混乱を招く可能性があります。 IEC-61131-3規格はそのような操作を規定
SA0124:宣言部分でのポインターの間接参照 宣言部分の初期化に使用されるポインター逆参照を決定します。 理由: ポインターと参照は初期化に使用しないでください。ポインターが初期化されていない場合、アクセス違反が発生する可能性があります。 重要性:中 例 110 . 例 TYPE TESTSTRUCT : STRUCT xA : BOOL; xB : BOOL; END_STRUCT END_T
SA0148:異常なビットアクセス-strict ビットフィールドのデータ型に基づかないビットアクセスを決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは符号なしデータ型へのビットアクセスも許可します。 重要度: 低 例