Читать справку!Не компилируется код: "Ошибка 4010: Несоответствие типов: невозможно преобразовать '9000' в 'TIME'''. Подскажите, пжл, как задать переменную типа TIME?
Скрытый текст:PHP код:PROGRAM PLC_PRG
VAR CONSTANT
Low_Setpoint : INT := 10;
High_Setpoint : INT := 15;
END_VAR
VAR
BoilersOn : INT;
Timer: WAIT;
END_VAR
Moving1 := 1;
Moving2 := 1;
Moving3 := 2;
Moving4 := 2;
Moving5 := 2;
BoilersOn := 0;
IF (Is_Boiler1) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler2) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler3) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler4) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler5) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler6) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler7) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler8) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler9) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler10) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler11) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler12) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler13) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler14) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler15) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler16) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler17) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler18) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler19) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler20) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler21) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler22) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler23) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler24) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler25) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler26) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler27) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler28) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler29) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler30) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF (Is_Boiler31) THEN
BoilersOn := BoilersOn + 1;
END_IF
IF NOT (Is_Door_Open) THEN
IF (Curr_Pressure <= Low_Setpoint ) THEN
IF(BoilersOn <= 10) THEN
Frequency2 := 2500;
ELSIF(BoilersOn > 10) AND (BoilersOn <= 20) THEN
Frequency2 := 5000;
ELSE
Frequency2 := 7500;
END_IF
Frequency1 := 7500;
Frequency3 := 0;
Frequency4 := 0;
Frequency5 := 0;
ELSIF (Curr_Pressure > Low_Setpoint ) AND (Curr_Pressure <= High_Setpoint ) THEN
Frequency1 := 7500;
Frequency2 := 0;
Frequency3 := 7500;
Frequency4 := 7500;
Frequency5 := 0;
ELSE
IF(BoilersOn <= 10) THEN
Frequency5 := 2500;
ELSIF(BoilersOn > 10) AND (BoilersOn <= 20) THEN
Frequency5 := 5000;
ELSE
Frequency5 := 7500;
END_IF
Frequency1 := 0;
Frequency2 := 0;
Frequency3 := 7500;
Frequency4 := 7500;
END_IF
ELSE
[B][U]Timer.TIME_IN := 9000;[/U][/B]
Frequency1 := 7500;
Frequency2 := 0;
Frequency3 := 7500;
Frequency4 := 7500;
Frequency5 := 0;
END_IF
PHP код:FUNCTION_BLOCK WAIT
VAR_INPUT
TIME_IN: TIME;
END_VAR
VAR_OUTPUT
OK: BOOL := FALSE;
END_VAR
VAR
ZAB: TP;
END_VAR
LD ZAB.Q
JMPC mark
CAL ZAB(IN := FALSE)
LD TIME_IN
ST ZAB.PT
CAL ZAB(IN := TRUE)
JMP END
mark:
CAL ZAB
end:
LDN ZAB.Q
ST OK
RET
TIME константы:TIME константы
Константы типа TIME в CoDeSys всегда начинаются с префикса "t" или "T" (длинная форма "time" или "TIME") и знака числа "#". Далее следует собственно время, которое может включать дни "d", часы "h", минуты "m", секунды "s" и миллисекунды "ms". Нет необходимости обязательно определять все составляющие времени, но присутствующие поля обязаны следовать именно в таком порядке (d, затем h, затем m, затем s, затем m, затем ms).
Правильные примеры TIME констант в ST:
TIME1 := T#14ms;
TIME1 := T#100S12ms;
(*Старший компонент может выходить за свой предел*)
TIME1 := t#12h34m15s;
Ошибочные примеры:
TIME1 := t#5m68s;
(*Младший компонент вышел за предел*)
TIME1 := 15ms;
(*T# iпропущено*)
TIME1 := t#4ms13d;
(*Ошибочная последовательность*)
См. также:
Типы данных Time Data
По этому должно быть
Timer.TIME_IN := t#9000ms;
или не "ms", а "s", ведь х.з. в каких единицах у Вас время нужно отсчитывать.
Ведь для ФБ Timer у Вас для входной переменной TIME_IN тип не INT, а TIME.





Ответить с цитированием