Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Порядок исполнения блоков

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    22.02.2012
    Адрес
    Челябинск
    Сообщений
    194

    По умолчанию Порядок исполнения блоков

    Не нашел понятного объяснения, как исполняются блоки, расположенные на рабочем поле.
    Есть только описание для выходов и обратных связей. Но вот у меня на поле несколько блоков, на выходе у них присваиваются значения переменным, какие раньше, а какие позже присвоятся, как узнать?
    Мне это важно для построения программы. Делаться это должно именно в одном цикле, поэтому обратные связи не подходят. Процессор контроллера обрабатывает эти присвоения последовательно, т.е. он "знает" какое сначала, а какое потом. А мне как узнать это?

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

    По умолчанию

    Проверять в пошаговом варианте онлайн. Вообще на холсте слева направо сверху вниз заявляется.
    Еще есть кнопка нумерации или типа того в программе.

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

    По умолчанию

    Расположение блоков на холсте никак не влияет на порядок их выполнения - все вычисляется единой картинкой.
    Энергонезависимые переменные и экранные переменные у которых в свойстве стоит "Запись в конце цикла" записываются в конце цикла, т.е. после того как вся схема посчитана. Такой же результат будет, если мы обычную переменную запишем через линию задержки.

    Безымянный.png
    Последний раз редактировалось Dimensy; 22.02.2023 в 12:55.

  4. #4

    По умолчанию

    Цитата Сообщение от starmos Посмотреть сообщение
    Не нашел понятного объяснения, как исполняются блоки, расположенные на рабочем поле.
    Есть только описание для выходов и обратных связей. Но вот у меня на поле несколько блоков, на выходе у них присваиваются значения переменным, какие раньше, а какие позже присвоятся, как узнать?
    Мне это важно для построения программы. Делаться это должно именно в одном цикле, поэтому обратные связи не подходят. Процессор контроллера обрабатывает эти присвоения последовательно, т.е. он "знает" какое сначала, а какое потом. А мне как узнать это?
    Я думаю, что если на холсте нет обратных связей (обнаруженных системой или добавленных специально), то будут обрабатываться только данные текущего цикла

  5. #5
    Пользователь
    Регистрация
    22.02.2012
    Адрес
    Челябинск
    Сообщений
    194

    По умолчанию

    А почему собственно "переменная может иметь только один блок записи значения"? Чтобы жизнь пользователей продукции ОВЕН не была слишком легкой что ли?

  6. #6

    По умолчанию

    Цитата Сообщение от starmos Посмотреть сообщение
    А почему собственно "переменная может иметь только один блок записи значения"? Чтобы жизнь пользователей продукции ОВЕН не была слишком легкой что ли?
    Наверное это напрямую связано с построением порядка обработки блоков в OL: если на холсте будет два присваивания одной и той-же переменной, то как определить, в каком порядке они будут/должны выполняться?

  7. #7

    По умолчанию

    Цитата Сообщение от starmos Посмотреть сообщение
    А почему собственно "переменная может иметь только один блок записи значения"? Чтобы жизнь пользователей продукции ОВЕН не была слишком легкой что ли?
    Больше и не нужно, только поначалу кажется, что должно))

  8. #8
    Пользователь
    Регистрация
    22.02.2012
    Адрес
    Челябинск
    Сообщений
    194

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Больше и не нужно, только поначалу кажется, что должно))
    Все это взаимосвязано. Если вы знаете порядок исполнения блоков, то вы можете иметь сколько угодно блоков записи значения. Да, это предъявляет определенные требования к программисту, но они не являются чрезмерными. Но если вы не знаете порядок исполнения, то все блоки на поле могут быть выполнены когда угодно, по отношению друг к другу и конечно тут неизбежно будут ошибки, связанные с неправильным присвоением. Истина в том, что контроллер обрабатывает все блоки строго последовательно, т.к. у него один процессор, который в каждый конкретный момент работает только с парой операндов. Возможно наверное создание ПР с многоядерными процессорами и параллельными вычислениями, но думаю здесь не тот случай. Если человеку не важен порядок выполнения, то он может просто не ориентироваться на него, при создании программы. Но если важен, то по факту у него нет возможности это учесть, не смотря на то, что по умолчанию такая возможность присутствует. Иначе говоря, инженеры ОВЕН сознательно приложили усилия, чтобы исключить возможность учета порядка вычисления блоков и тем самым СОЗНАТЕЛЬНО усложнили жизнь программистам.

  9. #9

    По умолчанию

    Цитата Сообщение от starmos Посмотреть сообщение
    Все это взаимосвязано. Если вы знаете порядок исполнения блоков, то вы можете иметь сколько угодно блоков записи значения. Да, это предъявляет определенные требования к программисту, но они не являются чрезмерными. Но если вы не знаете порядок исполнения, то все блоки на поле могут быть выполнены когда угодно, по отношению друг к другу и конечно тут неизбежно будут ошибки, связанные с неправильным присвоением. Истина в том, что контроллер обрабатывает все блоки строго последовательно, т.к. у него один процессор, который в каждый конкретный момент работает только с парой операндов. Возможно наверное создание ПР с многоядерными процессорами и параллельными вычислениями, но думаю здесь не тот случай. Если человеку не важен порядок выполнения, то он может просто не ориентироваться на него, при создании программы. Но если важен, то по факту у него нет возможности это учесть, не смотря на то, что по умолчанию такая возможность присутствует. Иначе говоря, инженеры ОВЕН сознательно приложили усилия, чтобы исключить возможность учета порядка вычисления блоков и тем самым СОЗНАТЕЛЬНО усложнили жизнь программистам.
    Делал макрос расчёта по реальному времени Unix Time.
    При пуске записывается Т_0, далее считаем разницу и потом рассчитываем время работы. Разница считается при паузе, работа при пуске таймера.
    Всё работает по порядку сверху вниз. При желании можете повторить и проверить.

    PS: При пошаговой проверке, именно линиями задержки, заставил блоки работать по порядку. Dimensy оказался прав, см. следующий пост.

    Вывод: Заставить работать по порядку можно, даже в Лоджике.
    Последний раз редактировалось kondor3000; 28.02.2023 в 12:45.

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

    По умолчанию

    Цитата Сообщение от starmos Посмотреть сообщение
    Все это взаимосвязано. Если вы знаете порядок исполнения блоков, то вы можете иметь сколько угодно блоков записи значения. Да, это предъявляет определенные требования к программисту, но они не являются чрезмерными. Но если вы не знаете порядок исполнения, то все блоки на поле могут быть выполнены когда угодно, по отношению друг к другу и конечно тут неизбежно будут ошибки, связанные с неправильным присвоением. Истина в том, что контроллер обрабатывает все блоки строго последовательно, т.к. у него один процессор, который в каждый конкретный момент работает только с парой операндов. Возможно наверное создание ПР с многоядерными процессорами и параллельными вычислениями, но думаю здесь не тот случай. Если человеку не важен порядок выполнения, то он может просто не ориентироваться на него, при создании программы. Но если важен, то по факту у него нет возможности это учесть, не смотря на то, что по умолчанию такая возможность присутствует. Иначе говоря, инженеры ОВЕН сознательно приложили усилия, чтобы исключить возможность учета порядка вычисления блоков и тем самым СОЗНАТЕЛЬНО усложнили жизнь программистам.
    Наоборот, разработчики Лоджика упростили жизнь, потому что не надо учитывать порядок выполнения блоков.
    Т.к. у нас может быть только одна запись в переменную, то связи формируют единственное решение. Грубо говоря, Лоджик на основе схемы формирует уравнения, типа
    У1 (Х1, Х2, Х3); У2(Х4, Х5, У1), У3(У1, У2) и считает их. А, вот, если попадается запись типа У4(Х6, У5) и У5(Х7, У4), то Лоджик просит поставить линию задержки

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Порядок выполнения
    от Anatoly.snjrs в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 25.04.2022, 13:26
  2. Порядок байт FLoat в ПР200
    от KaScada в разделе Программируемые реле
    Ответов: 12
    Последнее сообщение: 02.09.2018, 00:37
  3. СМИ2 - порядок байтов
    от Владислав Г. в разделе Панели оператора (HMI)
    Ответов: 13
    Последнее сообщение: 25.11.2016, 13:48
  4. Порядок расположения приборов
    от Qween в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 23.04.2013, 11:10
  5. Замена ПЛК - каков порядок действий?
    от 3BEPEB в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 15.03.2010, 19:14

Ваши права

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