Страница 361 из 363 ПерваяПервая ... 261311351359360361362363 ПоследняяПоследняя
Показано с 3,601 по 3,610 из 3623

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

  1. #3601

    По умолчанию

    Цитата Сообщение от RomanKk Посмотреть сообщение
    Установил последнюю версию ОЛ, в библиотеке макросов нет описания макросов, хотя раньше были. Баг, глюк или описания убрали?
    Здравствуйте! Описание макросов можно посмотреть в Онлайн базе менеджера компонентов. В последней версии OwenLogic(2.6.348.0) данная функция доступна.
    Рdf-описания макросов из онлайн базы можно скачать и хранить на ПК.
    С уважением, старший инженер технической поддержки, Палехов С.А.

  2. #3602

    По умолчанию

    отличие работы ФуНкции и Функционального Блока.
    Не могу понять почему функция в коде работает не корректно, передает результат условия наименьшего бита равного 1, прим: i1=1 & i2=1 sum=1. Подскажите пожалуйста.
    fN:
    function fN_bool_TO_int: udint;

    var_input
    i1 : bool;
    i2 : bool;
    end_var

    var
    sum : udint; //сумма
    ft1 : bool; //триггер фронта i1
    ft2 : bool; //триггер фронта i2
    end_var

    IF i1 & NOT ft1 THEN
    ft1 := i1;
    sum := sum + 1;
    ELSIF NOT i1 & ft1 THEN
    ft1 := i1;
    sum := sum - 1;
    ELSIF i2 & NOT ft2 THEN
    ft2 := i2;
    sum := sum + 2;
    ELSIF NOT i2 & ft2 THEN
    ft2 := i2;
    sum := sum - 2;
    END_IF

    fN_bool_TO_int := sum;

    end_function


    Практически аналогичный код в ФБ работает без замечаний.
    fB:
    function_block fB_bool_TO_int

    var_input
    i1 : bool;
    i2 : bool;
    end_var

    var_output
    q : udint;
    end_var

    var
    sum : udint; //сумма
    ft1 : bool; //триггер фронта i1
    ft2 : bool; //триггер фронта i2
    end_var

    IF i1 & NOT ft1 THEN
    ft1 := i1;
    sum := sum + 1;
    ELSIF NOT i1 & ft1 THEN
    ft1 := i1;
    sum := sum - 1;
    ELSIF i2 & NOT ft2 THEN
    ft2 := i2;
    sum := sum + 2;
    ELSIF NOT i2 & ft2 THEN
    ft2 := i2;
    sum := sum - 2;
    END_IF

    q := sum;

    end_function_block
    Последний раз редактировалось novinky; 03.05.2024 в 12:07.

  3. #3603

    По умолчанию

    В ФБ все переменные сохраняют свои значения до следующего вызова,
    а в функции нет - инициализируются значениями по-умолчанию!
    Свой ФБ Вы можете вызывать без передачи параметров, например (fB_bool_TO_int()),
    значение входных останутся теми же, которые были при первом вызове.
    А вот функция без параметров - ошибка.
    В ФБ если алгоритм не изменил значения внутренних или выходных переменных,
    то они тоже сохраняются между вызовами.
    По аналогии с ООП ФБ - это объекты со своими полями.
    Последний раз редактировалось EFrol; 03.05.2024 в 12:11.

  4. #3604

    По умолчанию

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

  5. #3605

    По умолчанию

    классическое объяснение про ПЛК гласит:
    - ПЛК опрашивает входа и запоминает их значения,
    - выполняет код,
    - записывает результат в выхода.

    Если i1=1 и i2=1, то согласно учению, ПР должен выдать sum=3
    Последний раз редактировалось novinky; 03.05.2024 в 12:23.

  6. #3606

    По умолчанию

    Цитата Сообщение от novinky Посмотреть сообщение
    классическое объяснение про ПЛК гласит:
    - ПЛК опрашивает входа и запоминает их значения,
    - выполняет код,
    - записывает результат в выхода.

    Если i1=1 и i2=1, то согласно учению, ПР должен выдать sum=3
    Кроме входов и выходов есть еще внутренняя память, которая может быть как статическая, так и динамически выделяемая для текущих расчетов.

  7. #3607

    По умолчанию

    Если i1=1, Затем i2=1, то почему сумму не выдает по последнему вызову?

  8. #3608

    По умолчанию

    Др несоответствие: если i1=1 и i2=1, получается не дойдя до END_IF выдает неверную сумму? Мне думается в др ПЛК результат будет = 3.

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

    По умолчанию

    Цитата Сообщение от novinky Посмотреть сообщение
    отличие работы ФуНкции и Функционального Блока.
    Не могу понять почему функция в коде работает не корректно, передает результат условия наименьшего бита равного 1, прим: i1=1 & i2=1 sum=1. Подскажите пожалуйста.
    Напишите
    Код:
    fN_bool_TO_int.0 := i1;
    fN_bool_TO_int.1 := i2;
    и будет вам счастье

  10. #3610

    По умолчанию

    OK спасибо, попробовали через несколько IF, получили желаемый результат через функцию.
    Тогда почему:
    1 - "сколько раз не вызывайте функцию, ft1 и ft2 будут всегда FALSE, поэтому 3 ни когда не получите, сперва один потом два"все же значение первого сложения не потерялась "внутренняя память" перед вычислением по 2 входу?
    2 - в ФБ, "если всё сделано через ELSIF. Сработает только одно условие", по первому совпавшему условию не прекращает перебирать ELSIF и суммировать?

Страница 361 из 363 ПерваяПервая ... 261311351359360361362363 ПоследняяПоследняя

Похожие темы

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

Ваши права

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