SA0102: 外部からのプログラム/FB 変数へのアクセス プログラムまたは機能ブロックのローカル変数への外部アクセスを決定します。 理由: CODESYS プログラムまたは機能ブロックのローカル変数への外部読み取りアクセスを有効にします。これは、データのカプセル化(データの非表示)の原則に違反し、IEC61131-3規格に準拠していません。 重要性:中 例 90 . 例 PROGRAM PLC
SA0103:非アトミックデータへの同時アクセス 非アトミック変数(データ型など)かどうかを判断します STRING 、 WSTRING 、 ARRAY 、 STRUCT 、FBインスタンス、64ビットデータ型)は、複数のタスクで使用できます。 理由:アクセス中に同期がない場合、あるタスクでの読み取りと別のタスクでの書き込みにより、読み取られる値に一貫性がなくなる可能性があります。 重要性:中 ヒ
SA0105:複数のインスタンス呼び出し 複数回呼び出されるファンクションブロックのインスタンスを検出します。この目的のために、関数ブロックは次のプラグマでマークされる必要があります。 {attribute 'analysis:report-multiple-instance-calls'} 理由: 一部の機能ブロックは、サイクル内で 1 回だけ呼び出せるように設計されています。このテストでは、複
SA0106:FB_Initでの仮想メソッド呼び出し メソッド内のメソッド呼び出しを検出します FB_Init 基本FBから派生した機能ブロックによって上書きされる基本機能ブロックの。 理由:このような場合、基本FBの上書きされたメソッドの変数が初期化されていない可能性があります。 重要性:高い 例 93 . 例 ファンクションブロック FB_A メソッドがあります FB_Init と Meth_
SA0107:正式なパラメータがありません 正式なパラメーターが欠落しているかどうかを判別します。 理由: 呼び出しで仮パラメータを指定すると、コードが読みやすくなります。 重要度:低 例 94 . 例 FUNCTION FUNA : BOOL VAR_INPUT bDo : BOOL; bInit : BOOL; bManual : BOOL; END_VAR VAR iInit : INT;
SA0161:パック構造のアンパック構造 パック構造で使用されるアンパック構造を決定します。 理由: コンパイラは通常、アンパックされた構造体を、構造体内のすべての要素への整列されたアクセスを許可するアドレスに設定します。この構造をパック構造で作成すると、整列アクセスは不可能になります。さらに、アンパックされた構造内の要素にアクセスすると、「不整列例外」が発生する可能性があります。 重要性:高い
SA0162:コメントがありません プログラム内のコメントされていない位置を決定します。 理論的根拠:多くのプログラミングガイドラインでは完全なコメントが必要であり、コードの可読性と保守性が向上します。 重要度:低 PLCopenルール:C2 コメントが必要です 変数の宣言。コメントはその上または右側にあります。 プログラム、関数ブロック、またはメソッドの宣言。コメントは宣言の上にあります(最初の
SA0163:ネストされたコメント ネストされたコメントを検出します。 理論的根拠:ネストされたコメントは読みにくいため、避ける必要があります。 重要度:低 PLCopenルール:C3 例 120 . 例 {attribute 'do-analysis'} (* That is (* nested comment 1 *) *) PROGRAM PLC_PRG VAR (* That is //
SA0164:複数行コメント で始まる複数行のコメントを検索します (* comment *) エンコードされます。で始まる単一行のコメントのみが許可されます // comment エンコードされます。 理論的根拠:一部のプログラミングガイドラインでは、コメントの最初と最後が見えなくなったり、エラーによって終了コメントブラケットが削除されたりする可能性があるため、コード内の複数行コメントを禁止して
SA0165:プログラム以外のPOUを呼び出すタスク このチェックは、プログラムの代わりに関数ブロックまたは関数を呼び出すタスクを識別します。 理由:このルールはPLCopenコーディングガイドラインの一部であるため、コンプライアンスも含まれています CODESYS チェックしました。で見る CODESYS タスクがプログラム以外のPOUを呼び出す場合、データの整合性に関する問題はありません。ただ