Доброго времени суток!
Существует несложная задача - вычисление температуры посредством указанного девайса и термопары ТХА(к). При этом прописывается следующий код.


PROGRAM PLC_PRG
VAR
C:ARRAY[0..9] OF REAL;
i: INT;
Temp:REAL;
END_VAR

Temperature:=0;
Temp := T3/10;
IF (Temp >= -5.891) AND (Temp < 0) THEN
C[0] := 0;
C[1] := 2.5173462E1;
C[2] := -1.1662878;
C[3] := -1.0833638;
C[4] := -8.9773540E-1;
C[5] := -3.7342377E-1;
C[6] := -8.6632643E-2;
C[7] := -1.0450598E-2;
C[8] := -5.1920577E-4;
FOR i := 0 TO 8 DO
Temperature := Temperature + C[i] * EXPT(Temp, i);
END_FOR;
END_IF;

IF (Temp >=0) AND (Temp < 20.644) THEN
C[0] := 0;
C[1] := 2.508355E1;
C[2] := 7.860106E-2;
C[3] := -2.503131E-1;
C[4] := 8.315270E-2;
C[5] := -1.228034E-2;
C[6] := 9.804036E-4;
C[7] := -4.413030E-5;
C[8] := 1.057734E-6;
C[9] := -1.052755E-8;
FOR i := 0 TO 9 DO
Temperature := Temperature + C[i] * EXPT(Temp, i);
END_FOR;
END_IF;

L1 := s1 OR s5;
L2 := s2 OR (s5 AND s6);
L3 := s3 OR Pump;
L4 := Valve OR (s4 AND s5 AND s6);

Глобальные переменные

VAR_GLOBAL
s1 AT %IX0.0:BOOL; (* %IX0.0 - привязка к конкретному канала *)
s2 AT %IX0.1:BOOL;
s3 AT %IX0.2:BOOL;
s4 AT %IX0.3:BOOL;
s5 AT %IX0.4:BOOL;
s6 AT %IX0.5:BOOL;
L1 AT %QX1.0:BOOL;
L2 AT %QX1.1:BOOL;
L3 AT %QX1.2:BOOL;
L4 AT %QX1.3:BOOL;
Temperature: REAL := 0;
Pump: BOOL := 0;
Valve: BOOL := 0;
END_VAR


1. Так вот, при этих вычислениях, разумеется цикл работы увеличивается и работа с дискретными входами/выходами замедляется достаточно ощутимо - примерно до 1 с. Так вот вопрос: существуют ли какие-либо методы оптимизации для улучшения быстродействия? В дальнейшем планируется управление процессами посредством данного сочетания устройств.
2. Также интереснует тот факт, почему необходима строка "Temp := T3/10;". Опытным путем проверено, что без нее не работает Хотя в конфирурации входа прописан мВ.


П.С. опыта программирования в кодесисе не имею, диска от ПЛК нет (потеряли), а задачу поставленную решать надо!