Показано с 1 по 9 из 9

Тема: Программирование кнопки

  1. #1

    Smile Программирование кнопки

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

  2. #2

    По умолчанию

    Такой вам вариант. Вот вам на 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
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  3. #3

    По умолчанию

    Большое спасибо за подсказку. Блок не стал делать, так на языке ST и переписал.

  4. #4

    По умолчанию

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

  5. #5
    Пользователь
    Регистрация
    21.01.2007
    Адрес
    г. Барнаул
    Сообщений
    9

    По умолчанию

    Цитата Сообщение от Илья ИТ Посмотреть сообщение
    ... рабочий при нажатии на кнопку (кнопка без фиксации) замыкает реле, реле остается замкнутым до момента нажатия на кнопку "Сброс".
    Это же обычный RS - триггер. Входит в standard.lib.
    Переключатель с доминантой выключения:
    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 триггер сбрасывается в ноль.

  6. #6

    По умолчанию

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

  7. #7
    Пользователь
    Регистрация
    09.10.2014
    Адрес
    Киров
    Сообщений
    735

    По умолчанию

    Цитата Сообщение от 2s19 Посмотреть сообщение
    А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?
    в библиотеке oscat есть блок TOGGLE

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

  8. #8

    По умолчанию

    Цитата Сообщение от 2s19 Посмотреть сообщение
    А как тоже самое но сделать одной кнопкой без фиксации, один раз нажал включилось, опять нажал выключилось?
    Можно так, кнопка без фиксации, первое нажатие- включено, 2 нажатие -выключено 1 Кнопка без фиксации.jpg

  9. #9

    По умолчанию

    Спасибо большое за помощь!!!!

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •