Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: Проблема вызова функционального блока в теле условия из другого функц. блока

  1. #1

    По умолчанию Проблема вызова функционального блока в теле условия из другого функц. блока

    Привет, не вызывается адекватно функциональный блок 1 (ST) в теле условия (условие соблюдается) из другого функционального блока 2, при этом, если функциональный блок 1 находится не в теле условия функционального блока 2, то всё хорошо. Owen logic Версия 2.5.337.0, ПР205.

    вызываемый блок:

    function_block funct
    var_input //объявление входных переменных
    in:bool;
    end_var
    var_output //объявление выходных переменных
    out : bool;
    end_var
    var //объявление локальных переменных
    ab:bool;
    end_var
    ab:=in;
    out:=ab;
    end_function_block

    Нерабочий вариант:

    if DI1 then
    qwe(in:=true, out=>DO5);
    end_if;

    При этом слышно кратковременный слабый дребезг релюхи внутри. Само программируемое реле полностью исправно.
    Это так и должно быть, или я чего то не понимаю?

  2. #2

    По умолчанию

    DO5 - это что? Выходная переменная ФБ2, связанная с выходным реле?
    Приведите хоть полностью код из ФБ2.
    Может проблема не в самом вызове ФБ1, а в том, что ещё написано в ФБ2.

  3. #3

    По умолчанию

    Так должно быть.
    Ты забыл о том, что функциональный блок - это тоже программа, и она должна ВСЕГДА выполняться.
    Например, вызов какого-нибудь таймера типа IF (lalala) THEN ton1(IN := true) не приведёт к тому, что таймер потом будет считать. Чтобы таймер считал - надо чтобы он всегда вызывался.
    Поэтому это условие тебе надо внести в твой FB и обрабатывать там.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  4. #4

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    DO5 - это что? Выходная переменная ФБ2, связанная с выходным реле?
    Приведите хоть полностью код из ФБ2.
    Может проблема не в самом вызове ФБ1, а в том, что ещё написано в ФБ2.
    DI вход, DO выход программируемого реле с соответствующими номерами. В независимости от предыдущего кода результат один и тот же, пробовал вообще на пустом проекте.

  5. #5

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Так должно быть.
    Ты забыл о том, что функциональный блок - это тоже программа, и она должна ВСЕГДА выполняться.
    Например, вызов какого-нибудь таймера типа IF (lalala) THEN ton1(IN := true) не приведёт к тому, что таймер потом будет считать. Чтобы таймер считал - надо чтобы он всегда вызывался.
    Поэтому это условие тебе надо внести в твой FB и обрабатывать там.
    А почему в вашем примере таймер не будет вызываться при трушном lalala? Условный переход ведь выполняется.

  6. #6

    По умолчанию

    Цитата Сообщение от qwertyn123456 Посмотреть сообщение
    А почему в вашем примере таймер не будет вызываться при трушном lalala? Условный переход ведь выполняется.
    Пока условие TRUE - будет вызываться. А как только условие станет FALSE - всё. Таймер зависнет в том состоянии, в котором был последний вызов. И, пока его не вызовешь, он ничего не досчитает никогда.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  7. #7

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Пока условие TRUE - будет вызываться. А как только условие станет FALSE - всё. Таймер зависнет в том состоянии, в котором был последний вызов. И, пока его не вызовешь, он ничего не досчитает никогда.
    Согласен, но в моём случае ничего не происходит, на DI1 всегда подаётся 24В перемычкой с питания, а не "импульсно".

  8. #8

    По умолчанию

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

  9. #9

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Это уже не важно: сам концепт вызова FB неверный. Если учиться - то правильно, а не криво.
    Как не важно - то, вы же сами писали, что должно вызываться и "тело условия" должно выполняться пока условие трушно, у меня не вызывается или вызывается но криво (отладчика для st в этой среде нет).

  10. #10

    По умолчанию

    Цитата Сообщение от qwertyn123456 Посмотреть сообщение
    Как не важно - то, вы же сами писали, что должно вызываться и "тело условия" должно выполняться пока условие трушно, у меня не вызывается или вызывается но криво (отладчика для st в этой среде нет).
    Что значит криво? Чего вы ожидали и что получилось?

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 19.02.2021, 07:10
  2. Ответов: 9
    Последнее сообщение: 05.04.2015, 16:18
  3. Запуск функционального блока
    от DanJer в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 26.04.2012, 08:14
  4. Обновление функционального блока
    от kest547 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 17.01.2012, 08:41
  5. Работа функционального блока
    от Алексей11 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 23.04.2007, 10:21

Ваши права

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