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

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

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

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

    По умолчанию

    Я всегда думал что до окончания подпрограммы триггер работает... Может в лоджике и не так...

    Надо проверить, поставить до и после условие сравнения и суммирование переменной и по ней определиться.

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

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Я всегда думал что до окончания подпрограммы триггер работает... Может в лоджике и не так...

    Надо проверить, поставить до и после условие сравнения и суммирование переменной и по ней определиться.
    Функциональный блок работает только в момент его вызова. Все остальное время мы пользуемся результатом его работы.
    Например
    Код:
    var_input //объявление входных переменных
           E : bool; 
        end_var
    
        var_output //объявление выходных переменных
           Q : bool; 
        end_var
    
        var //объявление локальных переменных
           RTrig : SYS.RTRIG; 
        end_var
    
        RTrig.I := E;
        if not RTrig.Q then RТrig(); end_if
        Q := RTrig.Q;
    Здесь триггер взведется по фронту Е и останется таким навсегда (ну, или пока мы его где-нибудь в другом месте опять не вызовем)
    Последний раз редактировалось Dimensy; 15.06.2024 в 07:22.

  3. #3

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Функциональный блок работает только в момент его вызова. Все остальное время мы пользуемся результатом его работы.
    Например
    Код:
    var_input //объявление входных переменных
           E : bool; 
        end_var
    
        var_output //объявление выходных переменных
           Q : bool; 
        end_var
    
        var //объявление локальных переменных
           RTrig : SYS.RTRIG; 
        end_var
    
        RTrig.I := E;
        if not RTrig.Q then RТrig(); end_if
        Q := RTrig.Q;
    Здесь триггер взведется по фронту Е и останется таким навсегда (ну, или пока мы его где-нибудь в другом месте опять не вызовем)
    Был грешен... Вы мне открыли глаза.
    Проверил на codesys 3.5, выход триггера остаётся взведенным до его повторного вызова. Я всегда думал, что он работает до окончания цикла программы/подпрограммы. Т.е. по циклу программы он сбросится только когда снова в него упрется...

    Или я знал это раньше, или не знал и забыл)

    Надо это всё переосмыслить. Так знал я это или нет...

Похожие темы

  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

Ваши права

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