Как в содесис на языке ст сделать следующее:
Процесс1 ( здесь алгоритм)
Процесс 2 ( здесь другой алгоритм)
Процесс 3 (здесь 3 алгоритм)
А потом если выполнился первый процесс через 10 секунд начать выполнять 2 процесс . и Т.Д.
Вид для печати
Как в содесис на языке ст сделать следующее:
Процесс1 ( здесь алгоритм)
Процесс 2 ( здесь другой алгоритм)
Процесс 3 (здесь 3 алгоритм)
А потом если выполнился первый процесс через 10 секунд начать выполнять 2 процесс . и Т.Д.
Например так
Вложение 26185
Здесь вызов процессов зациклен, т.е. после выполнения Процесс 3 через 10 секунд цепочка процессов будет повторятся
Или так
Вложение 26186
Здесь процессы будут выполнены по очереди один раз и в дальнейшем не выполняются. Для повторного выполнения цепочки нужно принудительно задать state:=0 в любом месте программы.
Люди добрые в чем косяк кода посмотрите уже задолЦитата:
PROGRAM oo
VAR
oa: LIN_TRAFO;
temp_delta_real:REAL;
temp_delta_3X:REAL;
TON_3X:TON;
time_3x:TIME;
step_3x:BYTE;
out_ao:REAL;
END_VAR
oa(
IN:=(REAL_TO_WORD(AO_1)) ,
IN_MIN:=0,
IN_MAX:=32768 ,
OUT_MIN:=0 ,
OUT_MAX:=100 ,
OUT=>out_ao,
ERROR=> );
temp_delta_real:= TEMP_K1 - TEMP_GI1;
CASE STEP_3x OF (*управление 3x*)
0:
IF START_CAM1 AND NOT ERROR_SET THEN
STEP_3x:=1;
END_IF;
1:
IF Ton_3x.Q AND temp_delta_real > temp_delta_3x THEN
out_ao:=5;
step_3x:=2;
END_IF;
2:
IF temp_delta_real <= temp_delta_3x THEN
step_3x:= 1;
END_IF;
END_CASE;
TON_3x(IN:=(STEP_3x =0), PT:= time_3x);
Уже бошка трящит. не хочет работать и все тут.
Люди добрые в чем косяк кода посмотрите уже задолТех задание.Цитата:
PROGRAM oo
VAR
oa: LIN_TRAFO;
temp_delta_real:REAL;
temp_delta_3X:REAL;
TON_3X:TON;
time_3x:TIME;
step_3x:BYTE;
out_ao:REAL;
END_VAR
oa(
IN:=(REAL_TO_WORD(AO_1)) ,
IN_MIN:=0,
IN_MAX:=32768 ,
OUT_MIN:=0 ,
OUT_MAX:=100 ,
OUT=>out_ao,
ERROR=> );
temp_delta_real:= TEMP_K1 - TEMP_GI1;
CASE STEP_3x OF (*управление 3x*)
0:
IF START_CAM1 AND NOT ERROR_SET THEN
STEP_3x:=1;
END_IF;
1:
IF temp_delta_real > temp_delta_3x THEN
out_ao:=5;
step_3x:=2;
END_IF;
2:
IF Ton_3x.Q then
step_3x:=1;
3:
IF temp_delta_real <= temp_delta_3x THEN
out_ao:=0;
END_IF;
END_CASE;
TON_3x(IN:=(STEP_3x =0), PT:= time_3x);
У нас есть 2 температуры и 1 дельта по которым должен работать 3х ходовой клапан.
1 температура - это температура входящего гликоля в 3х ходовой клапан.
2 температура- это температура камеры
3.температура дельты - для гликоля входящего.
Устройство управление электродвигатель на 04 20 мА с ходом 20 шток управляющейся 1 AO сигналом.
Принцип работы :
Если температура камеры - температура входящего гликоля > чем температура дельты то
Открыть клапан на 5%
следующий этап это таймер например с выдержкой 30 секунд после прохождения времени условие проверяется еще раз и если не равно то клапан открывается еще то есть будет плавный гистерезис.
Следующие условие если температура камеры - температура входящего гликоля <= температуры дельты то
Клапан возвращается в исходную точку то есть закрывается в ноль. тем самым закрываю подачу входящего гликоля.
Следующие условие если воздухохладитель и насос выключаются то клапан также возвращается в состояние ноль. и при старте программы клапан должен находиться в состоянии ноль.
Гидравлическая схема приложена.
AO сигнал типа WORD 04 20 мА.
Павел, проблема была есть и осталась.
Проблема (ИМХО) кроется в том, что Вы слабо представляя ту задачу, которая Вам нужна, пытаетесь её программировать не имея достаточного опыта.
Почему Вы так упорно сопротивляетесь графически изложить Ваш алгоритм?
И не надо притворяться новичком, по коду Вы давно не новичок.
Нарисовав и поняв то, что нужно сделать - намного проще программировать.
Давай тебя бесплатно поучу этой рисовайке. Дам примеры (только по почте). Не все же ради денег)
Шаг за шагом.
Process_N() - вызов одноименной программы
Вложение 26196
Таких программ здесь три.
Естественно " туда можно свой алгоритм записать"