0

我刚刚开始使用结构化文本在PLC上工作,我必须在每次延迟 1 分钟后将值存储在温度变量数组中,但我无法做到这一点。

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

这是一种伪代码。我只需要在循环中引入延迟,每隔 1 分钟它就可以读取该值并将其存储在数组位置中。
即使有任何其他方式,我也会非常感激。

4

2 回答 2

3

尝试这个

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 个温度值并索引数组。如果它到达数组的末尾,它将从开头开始写入。

于 2019-10-22T11:57:10.247 回答
0

每分钟循环一次数组并设置值。

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;
于 2019-10-20T05:59:19.657 回答