SA0115:データ型UNIONの宣言 の宣言を取得します UNION -データ型と型aの変数の宣言 UNION 。 根拠: IEC 61131-3 標準には共用体が含まれていません。共用体を使用しないとコードの移植が容易になります。 重要度:低 例 99 . 例 TYPE A_UNION: UNION lrTemp : LREAL; liTemp : LINT; END_UNION END_TY
SA0117:データ型BITの変数 データ型の変数宣言を検出します。 BIT (構造定義内で可能) 根拠: IEC 61131-3 規格にはデータ型が含まれていません。 BIT 。コードは、 BIT 。 重要度:低 例 100 . 例 TYPE Struct1 : STRUCT bitVar : BIT; iVar : INT; bVar : BOOL; END_STRUCT END_TYPE で
SA0119:オブジェクト指向機能 関数ブロック宣言などのオブジェクト指向機能の使用を決定します EXTENDS と IMPLEMENTS 、またはプロパティとインターフェイスの宣言。このルールは、他の61131-3システムに移植するコードを作成するときに役立ちます。 理由:すべてのシステムがオブジェクト指向プログラミングをサポートしているわけではありません。オブジェクト指向を使用しない場合、コー
SA0120:プログラム呼び出し プログラム呼び出しを決定します。 理由:IEC 61131-3規格によると、プログラムはタスク構成でのみ呼び出すことができます。プログラムを他の場所で呼び出さないと、コードの移植性が高まります。 重要度:低 例 102 . 例 PROGRAM prog_control VAR END_VAR ; PROGRAM PLC_PRG VAR END_VAR prog_c
SA0121: VAR_EXTERNAL 宣言がありません 関数ブロックで宣言されていないグローバル変数の使用を検出します。 VAR_EXTERNAL 理由:IEC 61131-3規格によると、グローバル変数へのアクセスは、 VAR_EXTERNAL -宣言は許可されています。 重要度:低 PLCopenルール:CP18 例 103 . 例 VAR_GLOBAL iGlob1 : INT; END
SA0122:式として定義された配列インデックス 配列インデックスを宣言するときの式の使用を検出します。 理由:すべてのシステムが式を配列境界として許可しているわけではありません。 重要度:低 例 105 . 例 PROGRAM PLC_PRG VAR CONSTANT c_iValue : INT := INT#15; END_VAR VAR arr : ARRAY [0..c_iValue +
SA0123:INI、ADR、またはBITADRの使用 の使用を決定します CODESYS Static Analysis -特定の演算子 INI 、 ADR と BITADR 。 理由: CODESYS -特定の演算子は、コードの移植性を妨げます。 重要度:低 例 106 . 例 PROGRAM PLC_PRG VAR uiTemp : UINT; TempVarInFUNC : DWORD;
SA0147:異常な移動操作-strict ビットフィールドデータ型に適用されないビットシフト操作を決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 理由:IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは、符号なしデータ型を使用したビットシフト演算も許可します。 重要
SA0148:異常なビットアクセス-strict ビットフィールドのデータ型に基づかないビットアクセスを決定します( BYTE 、 WORD 、 DWORD 、 LWORD ) それぞれ。 IEC 61131-3規格では、ビットフィールドデータ型へのビットアクセスのみが許可されています。 the CODESYS ただし、コンパイラは符号なしデータ型へのビットアクセスも許可します。 重要度: 低 例
SA0172: 配列の境界外へのアクセス試行の可能性 配列の境界外の配列インデックスへのアクセスの可能性を検出します。 多くの場合、配列インデックスの範囲を超えます。 FOR インデックス変数を使用して配列インデックスにアクセスするループ。 重要度: 高 例 129 . 例 PROGRAM Test VAR_TEMP iIndex: INT; arUSINT: Array[0..10] OF IN