Цитата Сообщение от Дмитрий_Кирсанов Посмотреть сообщение
Не компилируется код: "Ошибка 4010: Несоответствие типов: невозможно преобразовать '9000' в 'TIME'''. Подскажите, пжл, как задать переменную типа TIME?

Скрытый текст:
PHP код:
PROGRAM PLC_PRG
VAR CONSTANT
        Low_Setpoint 
INT := 10;
        
High_Setpoint INT := 15;
END_VAR

VAR
        
BoilersOn INT;
        
TimerWAIT;
END_VAR

Moving1 
:= 1;
Moving2 := 1;
Moving3 := 2;
Moving4 := 2;
Moving5 := 2;
BoilersOn := 0;
IF (
Is_Boiler1THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler2THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler3THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler4THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler5THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler6THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler7THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler8THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler9THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler10THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler11THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler12THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler13THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler14THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler15THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler16THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler17THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler18THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler19THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler20THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler21THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler22THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler23THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler24THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler25THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler26THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler27THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler28THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler29THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler30THEN
        BoilersOn 
:= BoilersOn 1;
END_IF
IF (Is_Boiler31THEN
        BoilersOn 
:= BoilersOn 1;
END_IF

IF  NOT (Is_Door_OpenTHEN
        
IF (Curr_Pressure <= Low_Setpoint THEN
                
IF(BoilersOn <= 10THEN
                         Frequency2 
:= 2500;
                
ELSIF(BoilersOn 10) AND (BoilersOn <= 20THEN
                         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 <= 10THEN
                        Frequency5 
:= 2500;
                
ELSIF(BoilersOn 10) AND (BoilersOn <= 20THEN
                        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
        
ZABTP;
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.