Таймер задержки в структурированном тексте - PullRequest
0 голосов
/ 19 октября 2019

Я только что начал работать над PLC , используя структурированный текст, я должен сохранять значения в массиве переменных температуры с задержкой в ​​1 минуту каждый раз, но я не могу сделатьчто.

FOR i := 0 TO 5 DO
    Temp[i] := tempsensor;
END_FOR;

Это своего рода псевдокод. Мне просто нужно ввести задержку в цикле, чтобы через каждые 1 минуту она могла прочитать значение и сохранить его в расположении массива.
Даже если есть какой-либо другой способ, я буду действительно признателен за это.

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Попробуйте это

VAR 
   i:INT;
   Temp: ARRAY[0..10000] OF LREAL; 
   delayTimer: TON;
END_VAR

delayTimer(IN := not delayTimer.Q, PT := T#1m);

IF delayTimer.Q THEN
   Temp[i] := tempsensor;
   i := i + 1;

   IF i > 10000 THEN
       i := 0;
   END_IF;
END_IF;

Через 1 минуту будет записано 1 значение температуры и проиндексирован массив. Если он достигнет конца массива, он начнет перезаписывать в начале.

0 голосов
/ 20 октября 2019

Раз в минуту вы циклически просматриваете массив и устанавливаете значения.

VAR
    i: INT := 1; (* Cycle number *)
    temp: ARRAY[1..5] OF REAL; (* Array of temperatures *)
    ton1: TON; (* Timer *)
END_VAR

ton1(IN := NOT ton1.Q, PT := T#1m);

IF ton1.Q THEN
    temp[i] := tempsensor;
    IF i >= 5 THEN i := 1 ELSE i := i + 1 END_IF;
END_IF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...