Страница 296 из 381 ПерваяПервая ... 196246286294295296297298306346 ... ПоследняяПоследняя
Показано с 2,951 по 2,960 из 4549

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

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

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

    По умолчанию

    Цитата Сообщение от novinky Посмотреть сообщение
    Можно больше строк пожалуйста, не понял в каком месте это написать и как связать с остальной частью
    Пожалуйста
    Код:
    function fN_bool_TO_int: udint;
    
        var_input
            i1 : bool;
            i2 : bool;
        end_var
        
        fN_bool_TO_int.0 := i1;
        fN_bool_TO_int.1 := i2;
        
    end_function

  2. #2

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Пожалуйста
    Код:
    function fN_bool_TO_int: udint;
    
        var_input
            i1 : bool;
            i2 : bool;
        end_var
        
        fN_bool_TO_int.0 := i1;
        fN_bool_TO_int.1 := i2;
        
    end_function
    Спасибо, очень Интересно, но не понятно. Могли бы весь код или разъяснить

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию

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

  5. #5

    По умолчанию

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

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

  6. #6

    По умолчанию

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

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

  7. #7

    По умолчанию

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

  8. #8

    По умолчанию

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

  9. #9

    По умолчанию

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

  10. #10

    По умолчанию

    Подскажите реализацию несложного функционала (я в этом новичек, поэтому вопросы возникают даже на несложных задачах).
    Есть щит управления и кнопка без фиксации (DO1 на ПР200), также к ПР подключена ESP32 в качестве мастера.
    Суть задачи, кнопкой без фиксации запускать систему с задержкой 2с, статус должен отображатся в ESP. Выключить систему можно как той же кнопкой (также задержка 2с), так и с ESP. Если выключить с ESP, то повторное нажатие на кнопку опять запустит систему. То есть это старт/стоп системы как кнопкий на щите, так и с ESP.

    Кстати, получилось вот такое, вроде работает, но все же на другие варианты хотелось бы посмотреть.
    Screenshot_3.png
    Последний раз редактировалось RomanKk; 05.05.2024 в 12:06.

Страница 296 из 381 ПерваяПервая ... 196246286294295296297298306346 ... ПоследняяПоследняя

Похожие темы

  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

Ваши права

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