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

Тема: Критическая ошибка в среде программирования Овен ЛОДЖИК или это я д-ак

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

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

    По умолчанию

    Цитата Сообщение от wal79 Посмотреть сообщение
    Задержка и обновляется в конце, это верно... Может так более понятно будет... 0наВходе.png1наВходе.png
    Переменная 3 на первом скрине и переменная 1 на втором...
    Проблема в том что чтение переменной идет до записи в нее константы.
    Тут скорей всего нужно будет пересмотреть обход ЛЗ. Покумекаю...
    Ну, да, хрень какая-то.
    На всякий случай, упростил схему. Действительно воспроизводится на одном XOR элементе.

    Снимок экрана 2017-08-10 в 16.07.14.png
    Вложения Вложения

  2. #2

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Ну и как тут вычисляется?
    Пошагово?
    По всем канонам здравого смысла:
    Начало
    1. Конст1:=1* (может быть ещё при компилляции, и запись в тело программы, в пзу)
    2. ЛЗ1:=0
    3. ЛЗ2:=0
    Инициализировали все переменные.
    НЦ
    4. Выход:=ЛЗ1
    5. ЛЗ2- В стек
    6. Константа - в стек
    7. XOR
    8. Результат - в ЛЗ1
    9. Константа - в ЛЗ2
    КЦ

    3 дерева:
    1.От выхода(шаг 4)
    2. От ЛЗ1 (на выходе)(шаги 5-8)
    3. От ЛЗ2 (на входе)(шаг 9)

    Если 3е выполняется раньше второго, то на вход хоr с линии задержки прилетит 1 к моменту расчёта xor.
    Но ни при каких условиях на второй вход не прилетит 0 от константы.

  3. #3

    По умолчанию

    Цитата Сообщение от pop70 Посмотреть сообщение
    Ну и как тут вычисляется?
    По всем канонам здравого смысла:
    Да хватит привязываться к константам и ПЗУ.
    Рассмотрите лучше пример, где я воспроизвёл баг на "входе" макроса.
    Значение входа-то уж никак в ПЗУ не запишешь.

  4. #4

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Да хватит привязываться к константам и ПЗУ.
    Рассмотрите лучше пример, где я воспроизвёл баг на "входе" макроса.
    Значение входа-то уж никак в ПЗУ не запишешь.
    Значения входа пишутся в переменные в начале цикла - до расчёта. Это тот же самый баг-багище чтения из ненужной и неинициализированной переменной.

  5. #5

    По умолчанию

    Цитата Сообщение от pop70 Посмотреть сообщение
    5. ЛЗ2- В стек
    6. Константа - в стек
    7. XOR
    Да посмотрите же на лог.
    В конкретном случае ОЛ приняло решение константу 1 сохранить в переменную. Наверное, из-за того, что используется в нескольких местах.
    Поэтому и последовательности операций "константа-в стек; xor" вообще нет в логе.

    Цитата Сообщение от pop70 Посмотреть сообщение
    Если 3е выполняется раньше второго, то на вход хоr с линии задержки прилетит 1 к моменту расчёта xor.
    Но ни при каких условиях на второй вход не прилетит 0 от константы.
    Здесь у вас ошибка.

    Судя по логу, секция "инициализации начальных значений до цикла" отсутсвует как класс. Да, это может звучать "не по канонам", но это неважно, ведь точно такая же ошибка может возникнуть и при любых других вычислениях (обработке входов, например)

  6. #6

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Да посмотрите же на лог.
    В конкретном случае ОЛ приняло решение константу 1 сохранить в переменную. Наверное, из-за того, что используется в нескольких местах.
    Поэтому и последовательности операций "константа-в стек; xor" вообще нет в логе.


    Здесь у вас ошибка.

    Судя по логу, секция "инициализации начальных значений до цикла" отсутсвует как класс. Да, это может звучать "не по канонам", но это неважно, ведь точно такая же ошибка может возникнуть и при любых других вычислениях (обработке входов, например)
    Не может. Входы по определению пишутся до расчёта цикла.
    Отсутствие инициализации констант и статических переменных при запуске программы (до первого цикла) - это путь к непредсказуемому поведению ПР при включении.
    На время первого цикла, на выходах может оказаться любой мусор, никак не связанный с запрограммированным поведением. Это БАГИЩЕ, недопустимый в промавтоматике.

  7. #7

    По умолчанию

    Цитата Сообщение от pop70 Посмотреть сообщение
    Не может. Входы по определению пишутся до расчёта цикла.
    Похоже, вы не поняли сущность бага: значение, к которому подключено несколько связей, сохраняется во вспомогательную переменную.
    Поэтому не так важно что находится на входе, а будет использовано именно значение из вспомогательной переменной.

    То же самое будет и в любом другом вычислении. Надо просто результат вычисления подключить двумя связями (простой и ЛЗ) и можно получить баг (в зависимости от указанного приоритета ЛЗ).

  8. #8

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Похоже, вы не поняли сущность бага: значение, к которому подключено несколько связей, сохраняется во вспомогательную переменную.
    Поэтому не так важно что находится на входе, а будет использовано именно значение из вспомогательной переменной.

    То же самое будет и в любом другом вычислении. Надо просто результат вычисления подключить двумя связями (простой и ЛЗ) и можно получить баг (в зависимости от указанного приоритета ЛЗ).
    Приоритет ЛЗ тут никаким боком вообще.
    Эдак и приоритет выходов может привести к тому, что в расчёте будет использована "промежуточная переменная", которую ещё никто не посчитал.
    А эта "промежуточная переменная" должна быть посчитана при первом же проходе через неё, не важно с какой стороны разветвления расчёт к ней пришёл.

Похожие темы

  1. Два вопроса по ОВЕН-Лоджик.
    от Sargon в разделе Среда программирования OWEN Logic
    Ответов: 33
    Последнее сообщение: 06.02.2017, 15:45
  2. ФИЧИ И БАГИ ОВЕН ЛОДЖИК
    от rovki в разделе Программируемые реле
    Ответов: 649
    Последнее сообщение: 29.07.2016, 10:33
  3. Универсальные макросы для ОВЕН ЛОДЖИК
    от rovki в разделе Программируемые реле
    Ответов: 197
    Последнее сообщение: 28.06.2016, 09:53
  4. Пожелания по развитию овен лоджик
    от rovki в разделе Программируемые реле
    Ответов: 146
    Последнее сообщение: 25.04.2013, 23:47
  5. Драйвер для ОВЕН ТРМ210 в среде LabVIEW
    от tzpp в разделе Помощь Разработчикам
    Ответов: 3
    Последнее сообщение: 16.02.2010, 13:06

Ваши права

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