3

センサー値を分析する移動平均アルゴリズムに取り組んでおり、値は配列に格納されています。ただし、配列の長さは可変です (1 つのモーターの速度に依存します)。

CoDeSys で変更可能なサイズの配列を作成する方法を教えてください。Array を次のように定義するのは間違っています。

名前: ARRAY[1...SpeedValue] OF INT ;

4

3 に答える 3

3

申し訳ありませんが、Codesys V2/V3 では配列のサイズを変更できません。一般的な説明は、動的メモリ割り当ては信頼性が低すぎると考えられているため、PLC で使用できる動的メモリ割り当てがないということです。

唯一の選択肢は、定数ARRAY[1..N_MAX_SPEED_VALUE]で配列を定義し、 SpeedValueまで配列を使用することです。

VAR
    arrnValues          : ARRAY[1..N_MAX_SPEED_VALUE] OF INT;
END_VAR
VAR CONSTANT
    N_MAX_SPEED_VALUE   : INT := 100; (*Max Array Size*)
END_VAR

私自身、この制限に本当に悩まされています。ARRAY[*] のような配列を定義し、start と end のキーワードを持ち、インスタンス化時に実際の start と end のサイズを定義する機能を、私はすでに何度も要求しました。サイズはコンパイル時に定義されるため、これは動的メモリ割り当てとは関係ありません。

于 2016-09-27T18:10:36.120 に答える
2

次の投稿をお勧めします。

https://stefanhenneken.wordpress.com/2016/09/27/iec-61131-3-arrays-with-variable-length/

Stefan は、可変長配列で何ができるかを順を追って説明しています。

フェリックスが提案したことはお勧めしません。理由は次のとおりです。

最初に: スキャン時間を可変にしたくありません。

2番目:何らかの理由で、何かが壊れて、配列の上限にしたいSpeedValueに到達できないとしましょう。何かが間違っているかどうかを本当に知らずに、デッドロックまたは悪い出力があります

于 2016-11-29T02:16:45.813 に答える