Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 34

Тема: Странная работа скрипта

  1. #11

    По умолчанию

    это было в Step7
    В LAD в Step7 проверяются все условия в цепочке. Иногда об этом забываю и получаю неприятные ошибки при работе с массивами.

  2. #12

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Khedron так and это и есть И оно и должно проверяться до конца независимо. Вот ИЛИ (or) может дальше не проверяться, если первое условие исполняется.
    С чего вдруг И должно проверяться до конца независимо? Если у вас в условии "false AND var1", то уже по первому false ясно, что условие выполнено не будет и нет нужды проверять var1. Однако же оно проверяется.

    А теперь к вопросу топикстартера.
    Поставьте скобки по-другому:
    Код:
    if ((in_c == true && in_p) == false) then или нагляднее if (in_c == (true && in_p) == false)
    Что у нас тут? Если и in_c и in_p ложно, то в итоге получим сравнение "false == false", а вот это утверждение уже истинно, так как ложь действительно равна лжи. Понятно о чём речь? Можете проверить сами. Codesys на такое условие даже предупреждение не выдал.
    Поэтому и предложил вместо сравнения переменных вариант с инверсией "(in_c && ~in_p)", где нет проверки на true/false, а есть только инверсия (с наивысшим после скобок, присвоения и разыменования приоритетом) и логическая И. Всё предельно ясно, никакой путаницы.

    Если же скобки расставить так,
    Код:
    if ((in_c == true) && in_p == false)
    то:
    если in_c ложно, условие будет истинным вне зависимости от значения in_p, что и происходит у Newcomer,
    если in_c истина, а in_p ложь, то результат истина (который совпадает с ожидаемым),
    если обе переменных true, то результат ложь, что так же совпадает с ожидаемым.
    Тут же Вам и ответ, почему вторая часть с отжатием работает нормально.
    Последний раз редактировалось Khedron; 02.10.2023 в 23:43. Причина: Добавлено

  3. #13

    По умолчанию

    Автор темы скобки верно поставил ?

  4. #14
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    Khedron оно вроде бы и понятно, но ведь первое условие то выполнилось правильно, соответственно надо перейти ко второму и проверить на И
    И главное второе условие то ведь тоже соответствует.
    in_c == true - ведь true же
    in_p == false - ведь false же
    А где И тогда ?
    Тут больше на косяк интерпретатора похоже
    Последний раз редактировалось melky; 03.10.2023 в 08:26.

  5. #15

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Выяснилось, что почему-то нужны дополнительные скобки. FastScript 1.9, C++Script

    if ((in_c == true) && (in_p == false)){out1++; writeValue("_2", out1);} - так работает корректно

    if (in_c == true && in_p == false){out1++; writeValue("_2", out1);} - так работает не корректно
    А можно использовать '&' вместо '&&' ? Какой тогда результат?

  6. #16
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    1exan просто & это побитовые операции должны быть, соответственно if начнет ругаться

  7. #17

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    1exan просто & это побитовые операции должны быть, соответственно if начнет ругаться
    Может он её перегрузит и применительно к входным bool выдаст тоже bool

  8. #18
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    1exan скорее выдаст ошибку, что в if нельзя применять.
    то есть сперва надо bool x := val1 & !val2 (или ~ вместо !)
    А уже потом уже пихать в if(x) чего-то там...
    Последний раз редактировалось melky; 03.10.2023 в 09:53.

  9. #19
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    прежде чем давать ответы на такие вопросы, для начала тестируется в каком нибудь дебагере owen.png
    потом даются рекомендации вот здесь у тебя в коде ошибки или искать ошибку в другом месте
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #20

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    прежде чем давать ответы на такие вопросы, для начала тестируется в каком нибудь дебагере owen.png
    потом даются рекомендации вот здесь у тебя в коде ошибки или искать ошибку в другом месте
    Знать бы ещё где тестировать этот "FastScript 1.9"

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Странная зависимость
    от Ollema в разделе Эксплуатация
    Ответов: 23
    Последнее сообщение: 09.01.2022, 23:35
  2. Странная работа ПИД регулятора
    от Newcomer в разделе ПЛК1хх [М02]
    Ответов: 8
    Последнее сообщение: 02.12.2021, 20:42
  3. странная логика в ФБ COM_SERVICE
    от Ian в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 24.06.2021, 06:38
  4. Странная работа PID
    от skinnbatter в разделе ПЛК1хх
    Ответов: 28
    Последнее сообщение: 14.11.2018, 12:59
  5. странная работа буста
    от Andrupel в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 12.09.2012, 10:16

Ваши права

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