PDA

Просмотр полной версии : Сброс аварии при нажатии кнопки



Stas
17.08.2015, 09:08
ПЛК110-220.30
Суть в том, что при превышении Dat1 загораются выхода 1 и 2 на контроллере(1- лампочка 2-звонок)
при нажатии на кнопку загорается вход 3 и звонок должен сбрасываться (выход 2 отключаться), но никак не получается это реализовать. Что можно придумать?

IF Dat1>=27 THEN %QX2.0:=1; %QX2.1:=1;
ELSE %QX2.0:=0;
END_IF;

IF %IX1.0.0=1 THEN %QX2.1:=0;
END_IF;

capzap
17.08.2015, 09:38
как минимум использовать rs-триггер

Николаев Андрей
17.08.2015, 09:40
1. Перестаньте напрямую работать с адресами - заведите переменным адреса. Лучше в редакторе объявления переменных.
2. По меньшей мере нужен Rtrig. Не перепутали ли Вы входа, с учетом быстрых входов?

Лучше выложить программу.

Stas
17.08.2015, 10:49
Вот программа.
1)Если я дискретным выходам присвоил имена D1 и D2 и при их использовании в самой программе ничего не работает, вот и приходится использовать %QX2.0
2)Если я пишу программу на ST как мне использовать RS триггер? Совмещать можно ST и FDB?

Yegor
17.08.2015, 10:54
Зачем сразу триггер?

лампочка := лампочка OR dat1;
звонок := (звонок OR dat1) AND NOT кнопка;

_Mikhail
17.08.2015, 11:05
Вот программа.
1)Если я дискретным выходам присвоил имена D1 и D2 и при их использовании в самой программе ничего не работает, вот и приходится использовать %QX2.0
2)Если я пишу программу на ST как мне использовать RS триггер? Совмещать можно ST и FDB?

D1 и D2 объявлены и в программе и в конфигурации

amn
17.08.2015, 11:21
VAR
R_TRIG1: R_TRIG;
R_TRIG2: R_TRIG;
dat1: REAL;
alm: BOOL;
END_VAR


----------------
alm:=dat1>=27; (*авария при превышении*)
out1:= alm; (*выход 1 включается при превышении*)

R_TRIG1(CLK:= alm ); (*триггер отлавливает момент превышения*)
IF R_TRIG1.Q THEN
out2:=TRUE; (*включаем 2 выход*)
END_IF
R_TRIG2(CLK:= knopka ); (*триггер отлавливает нажатие кнопки*)
IF R_TRIG2.Q THEN
out3:= TRUE; (*включаем выход 3*)
out2:= FALSE; (*отключаем выход 2*)
END_IF


out1, out2, out3 - дискретные выходы в конфигурации
knopka - дискретный вход в конфигурации

П.С. А у Егора вариант лучше, если кнопка будет с фиксацией :)

capzap
17.08.2015, 11:36
Зачем сразу триггер?

лампочка := лампочка OR dat1;
звонок := (звонок OR dat1) AND NOT кнопка;
а когда кнопку отпустите, что будет снова вой сирены?

Валенок
17.08.2015, 22:47
а когда кнопку отпустите, что будет снова вой сирены?
тогда так:

звонок := (звонок OR (dat1 и нет лампочки)) AND NOT кнопка;
лампочка := лампочка OR dat1;