Просмотр полной версии : Сброс аварии при нажатии кнопки
ПЛК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;
как минимум использовать rs-триггер
Николаев Андрей
17.08.2015, 09:40
1. Перестаньте напрямую работать с адресами - заведите переменным адреса. Лучше в редакторе объявления переменных.
2. По меньшей мере нужен Rtrig. Не перепутали ли Вы входа, с учетом быстрых входов?
Лучше выложить программу.
Вот программа.
1)Если я дискретным выходам присвоил имена D1 и D2 и при их использовании в самой программе ничего не работает, вот и приходится использовать %QX2.0
2)Если я пишу программу на ST как мне использовать RS триггер? Совмещать можно ST и FDB?
Зачем сразу триггер?
лампочка := лампочка OR dat1;
звонок := (звонок OR dat1) AND NOT кнопка;
_Mikhail
17.08.2015, 11:05
Вот программа.
1)Если я дискретным выходам присвоил имена D1 и D2 и при их использовании в самой программе ничего не работает, вот и приходится использовать %QX2.0
2)Если я пишу программу на ST как мне использовать RS триггер? Совмещать можно ST и FDB?
D1 и D2 объявлены и в программе и в конфигурации
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 - дискретный вход в конфигурации
П.С. А у Егора вариант лучше, если кнопка будет с фиксацией :)
Зачем сразу триггер?
лампочка := лампочка OR dat1;
звонок := (звонок OR dat1) AND NOT кнопка;
а когда кнопку отпустите, что будет снова вой сирены?
а когда кнопку отпустите, что будет снова вой сирены?
тогда так:
звонок := (звонок OR (dat1 и нет лампочки)) AND NOT кнопка;
лампочка := лампочка OR dat1;
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot