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

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

  1. #1

    По умолчанию Странная работа скрипта

    Добрый день

    Bool in_c;
    Bool in_p;
    int out1;
    int out2;

    in_c = readValue("_1"); // Чтение состояния кнопки

    if (in_c == true && in_p == false){out1++; writeValue("_2", out1);}; // Если нажали кнопку, то инкремент out1 и вывод значения
    if (in_c == false && in_p == true){out2++; writeValue("_3", out2);}; // Если отжали кнопку, то инкремент out2 и вывод значения

    in_p = in_c;


    Почему-то инкремент out1 происходит при нажатии и отжатии кнопки (должно быть только при нажатии). Инкремент out2 происходит только при отжатии кнопки как и должно быть.
    Изображения Изображения
    • Тип файла: jpg 1.jpg (13.8 Кб, Просмотров: 12)
    Последний раз редактировалось Newcomer; 30.09.2023 в 10:10.

  2. #2

    По умолчанию

    Выяснилось, что почему-то нужны дополнительные скобки. 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);} - так работает не корректно
    Последний раз редактировалось Newcomer; 30.09.2023 в 13:43.

  3. #3

    По умолчанию

    Очевидно, что-то не так с приоритетом операций сравнения и логической И.
    Если попробовать так?
    Код:
    if (in_c && ~in_p){out1++; writeValue("_2", out1);}

  4. #4

    По умолчанию

    Цитата Сообщение от Khedron Посмотреть сообщение
    Очевидно, что-то не так с приоритетом операций сравнения и логической И.
    Если попробовать так?
    Код:
    if (in_c && ~in_p){out1++; writeValue("_2", out1);}
    Вопрос уже решен. Скобки наше все.

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

    По умолчанию

    Khedron а чем отличается ваш код, кроме неявного указания ==true или ==false ? И там все равно присутсвует
    Newcomer что интересно, вторая то часть работает нормально

  6. #6

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Newcomer что интересно, вторая то часть работает нормально
    Со скобками все работает, больше мне ничего и не надо.

  7. #7

    По умолчанию

    melky, у инверсии ~ приоритет выше, чем у сравнения ==false

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

    По умолчанию

    Khedron а какая разница, если там И на два условия? если бы было ИЛИ я еще мог бы понять, сперва проверяется то, что с большим приоритетом, если выполняется, то второе условие даже не проверяется.
    Но при И проверка двух условий обязательна, независимо от приоритетов, разве нет ?

  9. #9

    По умолчанию

    Вопрос был в том, почему скобки исправляют ситуацию, очевидно здесь нарушение приоритетов. И тут я хотел проверить, как выполнится условие, если заменить "сравнение" с одним приоритетом на "инверсию" с более высоким. Лучший способ проверить - посмотреть, какие инструкции использовал компилятор для этого условия.
    Но при И проверка двух условий обязательна, независимо от приоритетов, разве нет ?
    Где-то мне попадалась информация, что выражение условия проверяется до конца независимо от того, когда уже известно что оно не выполнится (например "if false and var1 then", здесь var1 всё равно проверится). То ли это было в Step7, то ли в Codesys, сейчас не могу найти подтверждение.

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

    По умолчанию

    Khedron так and это и есть И оно и должно проверяться до конца независимо. Вот ИЛИ (or) может дальше не проверяться, если первое условие исполняется.

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

Похожие темы

  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

Ваши права

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