データフローによる自動実行順序 POUの実行順序は、テキストベースおよびネットワークベースのエディタで一意に決定されます。ただし、CFCエディターでは要素を自由に配置できるため、実行順序は最初は一意ではありません。このために、 CODESYS データフローを使用して実行順序を決定し、複数のネットワークの場合は、要素のトポロジ上の位置を使用します。上位の要素とネットワークは、上から下、左から右に並べ
静的コード分析を構成して実行する 単純なサンプルプロジェクトに基づいて、静的コード分析を構成および実行するための最も重要な手順とオプションを以下に示します。 要件: CODESYS Static Analysis インストールされています。 サンプルプロジェクト サンプルプロジェクトを再プログラムする場合は、標準プロジェクトを作成し、アプリケーションの下にある以下に示すブロックをデバイスツリーに挿
属性:analysis この属性は、プログラミングオブジェクト全体の特定のルールを無効にして、それらがに適用されないようにします。 静的コード分析 考慮されません。ルール番号と前のマイナス記号( "-")を指定して、コーディングルールを非アクティブ化します。属性には、ルールをいくつでも指定できます。 挿入位置 :1行目のプログラミングブロックの宣言部分。 構文 : {attribute 'anal
SA0013:同じ変数名の宣言 他の変数によって既に使用されている名前を持つ変数を検出します (たとえば、同じ名前を持つグローバル変数とローカル変数)。同じアクセス範囲内で関数名、アクション名、メソッド名、またはプロパティ名が使用されている変数も検出されます。の GVL で宣言された変数も検出されます。 デバイス ビューまたは POU プール内で。ただし、この場合、 POU ビューはアプリケーショ
SA0001:到達不能コード たとえば、次のような理由で実行されないコード行を検出します。 RETURN または CONTINUE 声明 理由:到達不能コードはどのような場合でも避ける必要があります。多くの場合、 テスト 再度削除する必要のあるテストコードがまだ含まれていることを示します。 重要性:高い PLCopenルール:CP2 例 14 . 例 PROGRAM PLC_PRG VAR xRe
SA0034:割り当てが正しくない列挙型変数 列挙型変数に割り当てられた値を取得します。定義された列挙定数のみを列挙変数に割り当てることができます。 理由: 列挙型の変数には、意図した値のみが含まれている必要があります。そうでないと、この変数を使用するコードが正しく動作しない可能性があります。プラグマでは常に列挙型を使用することをお勧めします。 {attribute 'strict'} 。その後、
SA0060:無効なオペランドとしてNull オペランドに値が含まれる操作を検出します。 0 無効または無意味な操作を引き起こす 理由:このような式は、プログラミングエラーを示している可能性があります。いずれにせよ、それは不必要に実行時間を要します。 重要性:中 例 70 . 例 PROGRAM PLC_PRG VAR byTemp1 : BYTE; wTemp2 : WORD; dwTemp3
SA0051:BOOL変数の比較演算 タイプの変数の比較演算を決定します BOOL 。 理由: CODESYS このような種類の比較が可能になります。しかし、それらは非常に珍しいため、混乱を招く可能性があります。 IEC 61131-3 規格では、これらの比較は規定されていません。これらを回避すると、他の開発システムへのコードの移植性が高まります。 重要性:中 例 60 . 例 PROGRAM P
SA0075:ELSEがありません 決定 CASE -なしの指示 ELSE -ブランチ。 理論的根拠:防御的なプログラミングには、 ELSE それぞれに CASE -命令。もし私が ELSE -何もすることがない場合は、コメントでマークする必要があります。そうすれば、コードの読者には、事件が単に忘れられたのではないことが明らかになります。 重要度:低 PLCopenルール:L17 重要 For C
SA0118:定数を使用しない初期化 定数を割り当てない初期化子を検索します。 理由:初期化は可能な限り一定であり、他の変数を参照しないようにする必要があります。特に、初期化中の関数呼び出しは、初期化されていないデータへのアクセスにつながる可能性があるため、避ける必要があります。 重要性:中 例 109 . 例 PROGRAM PLC_PRG VAR dwTemp : DWORD := 22; d