Просмотр полной версии : Программирование кнопки
Подскажите как в программе (на языке 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
Большое спасибо за подсказку. Блок не стал делать, так на языке 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 триггер сбрасывается в ноль.
А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?
А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?
в библиотеке oscat есть блок TOGGLE
Ну или D- триггер поставьте
kondor3000
18.03.2022, 10:49
А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?
Можно так, кнопка без фиксации, первое нажатие- включено, 2 нажатие -выключено 59752
Спасибо большое за помощь!!!!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot