PDA

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



Илья ИТ
03.03.2009, 14:50
Подскажите как в программе (на языке CFC - желательно) получить на выходе n3 True при кратковременном сигнале True на входе n1, и соответственно при кратковременном сигнале True на входе n2 получить на выходе n3 False. Тоесть рабочий при нажатии на кнопку (кнопка без фиксации) замыкает реле, реле остается замкнутым до момента нажатия на кнопку "Сброс".

Sniper007
03.03.2009, 15:16
Такой вам вариант. Вот вам на ST, сделайте из него функциональный блок и вставьте в CFC.


VAR
Trig: R_TRIG;
Trig1: R_TRIG;
END_VAR
VAR_INPUT
n1: BOOL;
n2: BOOL;
END_VAR
VAR_OUTPUT
n3: BOOL;
END_VAR


сама программа

Trig(CLK:=n1);
IF Trig.Q = TRUE THEN
n3:=TRUE;
END_IF
Trig1(CLK:=n2);
IF Trig1.Q =TRUE THEN
n3:=FALSE;
END_IF

Илья ИТ
04.03.2009, 18:15
Большое спасибо за подсказку. Блок не стал делать, так на языке ST и переписал.:)

Sniper007
04.03.2009, 20:48
Вот! Правильно!
Вообще с моей точки зрения когда есть язык ST, писать на FBD или LD - просто мазохизм (а на IL - садомазохизм).
ИМХО. ST + SFC = любая задача решена за минимум временем.

Mike Osokin
08.03.2009, 18:52
... рабочий при нажатии на кнопку (кнопка без фиксации) замыкает реле, реле остается замкнутым до момента нажатия на кнопку "Сброс".
Это же обычный RS - триггер. Входит в standard.lib. :rolleyes:

Переключатель с доминантой выключения:
Q1 = RS (SET, RESET1) means:
Q1 = NOT RESET1 AND (Q1 OR SET)
Входные переменные SET и RESET1 - как и выходная переменная Q1 типа BOOL.
Ещё для решения этой задачи можно применить D-триггер...

FUNCTION_BLOCK D_TRIG
VAR_INPUT
D : BOOL;
CLK: BOOL;
RES:BOOL;
END_VAR
VAR_OUTPUT
Q: BOOL;
END_VAR
VAR
st_clk: BOOL:=FALSE;
END_VAR
==================================
IF RES=TRUE THEN
Q:=FALSE;
ELSIF st_clk=FALSE AND CLK THEN
Q:= D;
END_IF;
st_clk:=CLK;

По переднему фронту импульса на входе CLK, сигнал с D-входа передаётся на Q-выход. По входу RES триггер сбрасывается в ноль.

2s19
18.03.2022, 09:32
А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?

SA104
18.03.2022, 10:16
А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?

в библиотеке oscat есть блок TOGGLE

Ну или D- триггер поставьте

kondor3000
18.03.2022, 10:49
А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?

Можно так, кнопка без фиксации, первое нажатие- включено, 2 нажатие -выключено 59752

2s19
24.03.2022, 09:37
Спасибо большое за помощь!!!!