Показано с 1 по 10 из 742

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    По умолчанию

    Как-то так, вероятно:
    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.

Похожие темы

  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

Ваши права

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