SA0047:直接アドレスへのアクセス 実装コードでの直接アドレスアクセスを決定します。 理由:シンボリックプログラミングが常に望ましい:変数には意味を持つこともできる名前があります。アドレスが何に使用されているかはわかりません。 重要性:高い PLCopenルール:N1 / CP1 例 58 . 例 PROGRAM PLC_PRG VAR xVar : BOOL; byVar : BYTE; E
SA0048:直接アドレスのAT宣言 決定 AT -直接アドレスに関する宣言。 コード内で直接アドレスを使用すると、アドレスが複数の場所に出現するため問題が発生します。 最初のコントローラー構成では、物理オブジェクトのアドレスへの割り当てが定義されます。 プログラムの 2 番目では、変数がこれらのアドレスに割り当てられます。 構成の変更によりアドレスが再配置された場合は、プログラム内のまったく別の
オペレーターのためのルール このセクションの内容 :
SA0051:BOOL変数の比較演算 タイプの変数の比較演算を決定します BOOL 。 理由: CODESYS このような種類の比較が可能になります。しかし、それらは非常に珍しいため、混乱を招く可能性があります。 IEC 61131-3 規格では、これらの比較は規定されていません。これらを回避すると、他の開発システムへのコードの移植性が高まります。 重要性:中 例 60 . 例 PROGRAM P
SA0052:異常なシフト操作 符号付き変数のシフト演算(ビットシフト)を決定します。ビットフィールドデータ型のシフト操作の場合( Byte 、 DWORD 、 LWORD 、 WORD )エラーは出力されません。 理由: CODESYS 署名されたデータ型のシフト操作を許可します。ただし、これらの操作は一般的ではなく、混乱を招く可能性があります。 IEC-61131-3規格はそのような操作を規定
SA0064:ポインタの追加 ポインタの追加を決定します。 位置揃え: で CODESYS 、ポインター演算は一般に許可されており、適切に使用することもできます。ただし、これはエラーの原因でもあります。したがって、一般にポインター演算を禁止するプログラミング規則が存在します。このテストでは、そのような要件を確認できます。 重要性:中 例 74 . 例 PROGRAM PLC_PRG VAR iTe
SA0065:ポインタの追加がベースサイズと一致しません 追加される値がポインターの基本サイズと一致しないポインターの追加を検出します。基本データ サイズとその倍数のリテラルのみをエラーなく追加できます。 位置揃え: で CODESYS (C および C++ とは対照的に) 整数値を持つポインターを追加する場合、整数値に基本サイズを乗算したものではなく、この整数値のみがバイト数として追加されます。
SA0066:中間結果の使用 レジスタ サイズより小さいデータ型を持つステートメントでの一時結果の使用を検出します。この場合、暗黙的なキャストによって望ましくない結果が生じる可能性があります。 正当な理由: パフォーマンス上の理由から、 CODESYS Static Analysis プロセッサのレジスタ幅に対して演算を実行します。中間結果は切り捨てられません。これは、次のような誤解を招く可能性が
SA0072:カウンタ変数の使用が無効です 内のカウンター変数の使用を決定します FOR -リボン。 理由: でのカウンタ変数の操作 FOR ループすると簡単に無限ループが発生する可能性があります。カウンタ変数の特定の値に対するループの実行を防ぐには、次を使用します。 CONTINUE または単に IF 。 重要性:高い PLCopenルール:L12 例 79 . 例 PROGRAM PLC_PR