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

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

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

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

    По умолчанию

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

  2. #2

    По умолчанию

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

  3. #3

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    [CODE]
    если бы не потерялось, то было бы 3, но Вы его так и не получили, а получали как раз двойку, потому что 0 + 2 будет 2 По мимо ft1 и ft2, sum тоже всегда равно нулю
    Скрытый текст:
    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;


    Почему тогда если ни одно условие не выполняется напр: i2 & ft2 предыдущее значение "2" сохраняется? Почему так же не переинициализируется и fN_bool_TO_int := sum; не возвращает "0"?

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

    По умолчанию

    Цитата Сообщение от novinky Посмотреть сообщение
    Скрытый текст:
    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;


    Почему тогда если ни одно условие не выполняется напр: i2 & ft2 предыдущее значение "2" сохраняется? Почему так же не переинициализируется и fN_bool_TO_int := sum; не возвращает "0"?
    Функция при каждом вызове выполняется как в первый раз, с чистого листа. Т.е., при каждом вызове у вас будет и sum и ft1 и ft2 равны нулю

  5. #5

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    sum и ft1 и ft2 равны нулю
    Чисто теоретически там может быть что угодно. Что было в памяти то и будет. Другая функция может эту память переписать.

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    чем Вы можете доказать что когда либо выполняется это условие в ФУНКЦИИ? Во второй цикл контроллера, когда i2 равно TRUE, ft2 будет равно FALSE. Эту аксиому Вам неоднократно здесь повторяли разные люди. Вот для наглядности видео
    Это мое недопонимание тут разъяснили.
    Цитата Сообщение от Dimensy Посмотреть сообщение
    Функция при каждом вызове выполняется как в первый раз, с чистого листа. Т.е., при каждом вызове у вас будет и sum и ft1 и ft2 равны нулю
    И я понял, Спасибо.

Похожие темы

  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

Ваши права

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