Страница 72 из 75 ПерваяПервая ... 22627071727374 ... ПоследняяПоследняя
Показано с 711 по 720 из 742

Тема: Функциональные блоки на языке ST

  1. #711

    По умолчанию

    Как-то так, вероятно:
    Owen.jpg
    задержка на 10 сек.

    Код:
    function_block Delay
        
        var_input
            in : bool;                          // Входной сигнал
            t : udint;                          // Сдвиг сигнала
        end_var
        
        var_output 
            Q : bool;                           // Выходной сигнал
        end_var
        
        var 
            dTS : array [0..100] of udint;      // Время фиксации состояния сигнала
            dS : array [0..100] of bool;        // Состояние сигнала
            nState, i : udint;                  // Номер последнего зафисированного состояния и итератор
            rtStart : SYS.RTRIG;                // Триггер начала записи
        end_var
        
        rtStart(I:=true);                       // Фиксируем начальное состояние
        if rtStart.Q then
            nState := 0; dTS[0] := time_to_udint(get_time()); dS[0] := in;
        end_if
        
        if in <> dS[nState] then                // При каждом изменении входного сигнала
            nState := nState + 1;               // Фиксируем новое состояние
            // Ограничим число фиксируемых состояний на всякий случай
            // если частота смены будет больше запланированной
            if nState > 100 then nState := 100; end_if
            dTS[nState] := time_to_udint(get_time());   // Метка времени
            dS[nState] := in;                           // Состояние
        end_if
        
        // Через время t выдаем следующее состояние на выход и смещаем массив
        if time_to_udint(get_time()) - dTS[0] >= t then
            Q := dS[0];
            if nState > 0 then  // Подготовим следующий переход, если есть
                nState := nState - 1;
                for i := 0 to nState do
                    dTS[i] := dTS[i+1]; dS[i] := dS[i+1];
                end_for
            end_if
        end_if
    
    end_function_block
    Последний раз редактировалось EFrol; 08.05.2026 в 19:41.

  2. #712
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    2,106

    По умолчанию

    Мой вариант
    Вложения Вложения

  3. #713

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    У вас на входе и паузы могут быть разными, а выход включается на то же время, что был включен вход.
    Так что тут ASo прав, это задержка бинарного сигнала.
    Выход необязательно включается на то же время, что и вход. это непринципиально и некритично.
    Принципиально и критично то, что на вход поступает следующий сигнал до того момента, когда будет отработан на выход предыдущий сигнал.

  4. #714

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Мой вариант
    на вход I2 сигнал подаётся от датчика, верно?
    Датчик через 300мс отключается и БЛИНК с ним тоже и далее ничего не происходит.

  5. #715

    По умолчанию

    Вот что у меня получилось из "стандартных кубиков".
    совсем не универсальное и не изящное решение.
    Изображения Изображения
    Последний раз редактировалось Андрей Владимиров сын; 08.05.2026 в 19:15.

  6. #716

    По умолчанию

    Цитата Сообщение от Андрей Владимиров сын Посмотреть сообщение
    Вот что у меня получилось из "стандартных кубиков".
    совсем не универсальное и не изящное решение.
    Это вообще полная лажа, выше EFrol выложил рабочий блок запоминает 50 импульсов любой длительности и задержка работает.

  7. #717
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,164

    По умолчанию

    Массив булей не нужен. Только время

  8. #718

    По умолчанию

    Немного скорректировал код. Он просто запоминает время смены состояния и само состояние. А через заданное время его подает на выход.
    Если частота смены не превышает 100 за 10 сек. конечно.
    Массив булей - на случай если число смен превысит 100 и будет нечётным.
    Последний раз редактировалось EFrol; 08.05.2026 в 20:06.

  9. #719
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    2,106

    По умолчанию

    Цитата Сообщение от Андрей Владимиров сын Посмотреть сообщение
    на вход I2 сигнал подаётся от датчика, верно?
    Датчик через 300мс отключается и БЛИНК с ним тоже и далее ничего не происходит.
    Блинк просто имитирует серию импульсов от датчика

  10. #720
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,164

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    Он просто запоминает время смены.
    Да

    Цитата Сообщение от EFrol Посмотреть сообщение
    и само состояние.
    Нет

    Если частота смены не превышает 100
    Я бы сказал - если период за выполнение 100 п.фронтов больше чем та самая задержка
    Но это проблемы автора. Как и меж-импульс входа меньший чем время для выхода.
    Цитата Сообщение от Андрей Владимиров сын Посмотреть сообщение
    ...Выход необязательно включается на то же время, что и вход..
    То что полный повтор не нужен - и слава богу. Может сохранить 2x п.фронтов


    Цитата Сообщение от EFrol Посмотреть сообщение
    Массив булей...
    Говорю же не нужен))
    Цитата Сообщение от EFrol Посмотреть сообщение
    .. если число смен превысит 100 и будет нечётным.
    Про смены - выше, нечетность - все равно если циклически. 1й индекс по кругу. 2й за ним с задержкой.

Страница 72 из 75 ПерваяПервая ... 22627071727374 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК73 (Функциональные кнопки)
    от necro в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 18.05.2022, 10:03
  2. Функциональные блоки
    от ribamuka в разделе СПК2xx (архив)
    Ответов: 4
    Последнее сообщение: 08.04.2018, 15:01
  3. Функциональные блоки насосов в CoDeSys
    от Алексей Ермолаев в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.03.2017, 13:50
  4. Функциональные блоки- где искать?
    от Xops в разделе ПЛК1хх
    Ответов: 16
    Последнее сообщение: 01.03.2016, 11:07
  5. СПК функциональные клавиши
    от Lyohin в разделе Трёп (Курилка)
    Ответов: 0
    Последнее сообщение: 30.03.2015, 15:10

Ваши права

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