2016-09-27 17 views
2

センサ値を分析するために移動平均アルゴリズムで作業しており、値が配列に格納されています。しかし、Arrayの長さは可変です(1つのモーターの速度に依存します)。可変サイズのCoDeSysでアレイを作成する

どのように変更可能なサイズのCoDeSysでアレイを作成できますか? Arrayを定義するのは間違いです。

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

答えて

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 [*]のような配列を定義し、開始と終了のキーワードを持ち、インスタンス化するときの実際の開始と終了のサイズを定義するために、何度も機能を何度も要求しました。これはコンパイル時にサイズが定義されるため、動的メモリ割り当てを行うことはできません。

2

私はあなたに次の投稿をお勧めします。

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

ステファンは可変長配列で行うことが可能であるものを段階的に説明しています。

ので、私はフェリックスが推薦し何をお勧めしません:あなたは、可変スキャン時間を持つようにしたいことはありません:

まず。

第2の理由:何らかの理由で、何かが壊れてしまい、あなたの配列の上限にしたいSpeedValueが到達できないとすれば、デッドロックまたは出力が悪いが間違っています

+0

投稿が何を含んでいるかを要約することを忘れないでください。非アクティブな/が削除されているため、 –

関連する問題