Страница 55 из 66 ПерваяПервая ... 545535455565765 ... ПоследняяПоследняя
Показано с 541 по 550 из 658

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

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

    По умолчанию

    Цитата Сообщение от hawkey Посмотреть сообщение
    Спасибо вам!
    Ну, если полный круг, то важность места размещения детектора внутри кода сильно падает. ))) Вот если бы импульс действовал только до конца текста...
    Ну, так, размещаете вызов RTRIG самым первым и он будет действовать только до конца текста

  2. #542

    По умолчанию

    Спасибо, уже понял принцип работы. Мне нужно было именно уяснить принцип. Я имел в виду, что если бы импульс действовал только до конца текста, то на код, расположенный выше вызова, он бы не влиял. В этом случае место расположения имело бы большое значение. Ну а поскольку импульс работает полный круг, так тут и обсуждать уже нечего, по сути. Где ни размести, результат будет один. В моей программе, по крайней мере.

  3. #543

    По умолчанию

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

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

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

    По умолчанию

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

    Надо проверить, поставить до и после условие сравнения и суммирование переменной и по ней определиться.
    Функциональный блок работает только в момент его вызова. Все остальное время мы пользуемся результатом его работы.
    Например
    Код:
    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.

  5. #545

    По умолчанию

    Цитата Сообщение от 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, выход триггера остаётся взведенным до его повторного вызова. Я всегда думал, что он работает до окончания цикла программы/подпрограммы. Т.е. по циклу программы он сбросится только когда снова в него упрется...

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

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

  6. #546

    По умолчанию

    Камрады-новички (я без иронии). Я вот вас читаю и понимаю, что надо у себя на сайте, что ли, написать простую статью о том, чем Функциональнй Блок от Функции отличается... Прям этот вопрос заново возник у кучи народа на форуме.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  7. #547

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Камрады-новички (я без иронии). Я вот вас читаю и понимаю, что надо у себя на сайте, что ли, написать простую статью о том, чем Функциональнй Блок от Функции отличается... Прям этот вопрос заново возник у кучи народа на форуме.
    А я и правда думал, что триггер возведён до конца цикла именно подпрограммы. Везде на диаграммах указан период работы - цикл. Но этот цикл не до окончания подпрограммы, а до того места, пока код в программе опять не увидит этот триггер.

    Да, я туп оказался. Позор на мои седины.

  8. #548

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    А я и правда думал, что триггер возведён до конца цикла именно подпрограммы. Везде на диаграммах указан период работы - цикл. Но этот цикл не до окончания подпрограммы, а до того места, пока код в программе опять не увидит этот триггер.

    Да, я туп оказался. Позор на мои седины.
    А я всегда выдумываю всякие эксперименты с кодом, если в чем-то сомневаюсь или недопонимаю. Такие баги в башке иногда вылавливаю - ужас!

  9. #549

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    А я и правда думал, что триггер возведён до конца цикла именно подпрограммы.
    Ну, если по серьёзному, без шуточек, то мнемонически можно запомнить, что во всей программе/задаче ПЛК цикл - это всё-всё целиком. Причём сначала считываются входы, обрабатывается программа, потом выдаются значения на выходы.
    Наверное когда-нибудь я про это напишу всё же, так как сам тупил: думал что FB - автономны, и какой-нибудь таймер сам по себе будет считать, если его не вызывать в коде
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  10. #550

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    А вот и небольшой косячок на ST: слово constant не является зарезервированным, но редактор почему-то его выделяет как служебное и, при этом, обрабатывает как переменную

    Вложение 76571
    Да, это немного сбивает с толку

Страница 55 из 66 ПерваяПервая ... 545535455565765 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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