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

Тема: разные вопросы новичка

Комбинированный просмотр

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

    По умолчанию

    Вариант 2:
    Owen.jpg
    Код:
    function_block TP
        
        var_input
            I : bool;       // Входной импульс
            T : udint;      // Время в мс
        end_var
        
        var_output 
            Q : bool;       // Выход
            ET : udint;     // Текущее значение таймера с обратным отсчетом
        end_var
        
        var
            ts, d : udint;  // Фиксация системного времени и дельты
            rt : SYS.RTRIG; // Тригер фронта 
        end_var
    
        rt(I := I and not Q);       // Фиксируем начало нового импульса
        if rt.Q then
            ts := time_to_udint(get_time()); ET := T; Q := true;  // Фиксируем продолжительность и начало импульса
        end_if
        if ET > 0 then
            d := time_to_udint(get_time()) - ts; ts := ts + d;    // Прошло времени в мc
            if ET > d then
                ET := ET - d;           // Уменьшаем ET на это время
            else
                ET := 0; Q := false;    // Иначе фиксируем завершение импульса
            end_if
        end_if    
    
    end_function_block

  2. #2

    По умолчанию

    Вот этот подошел, работает как надо, у Dimensy тоже работает как положено, но отсчет времени прямой, это не претензия, просто мне нужон обратный , будет время постараюсь вникнуть и модифицирую под себя, ну типа булевое значение введу, типа 0 прямой счет, 1 обратный или наоборот, но все равно спасибо, буду начинать изучать ST...
    А вот у kondor3000, сначала не понял, потом дошло, в общем нужно в ms, там в коде "PT:=PT*1000" тыщу заменил на единицу и стало как надо, или эту строку вообще можно убрать?
    В общем всем спасибо!
    Последний раз редактировалось Traveller; 01.09.2025 в 14:21.

  3. #3

    По умолчанию

    Цитата Сообщение от Traveller Посмотреть сообщение
    А вот у kondor3000, сначала не понял, потом дошло, в общем нужно в ms, там в коде "PT:=PT*1000" тыщу заменил на единицу и стало как надо, или эту строку вообще можно убрать?
    В общем всем спасибо!
    Если нужны мс, то строку можно удалить или закоментировать //

  4. #4

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Если нужны мс, то строку можно удалить или закоментировать //
    Ок! Я так и понял...

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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