1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Бесконечный цикл с ожиданием.

Модераторы: Глоб.модераторы, специалисты Weintek

Ответить
Аватара пользователя

Автор темы
rekkod
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 17 мар 2019, 11:33
Имя: Владимир Дёмин
Страна: Россия
город/регион: Тюмень, Тюменская обл.

Бесконечный цикл с ожиданием.

Сообщение rekkod »

Чтобы избежать большого количества обращений в LW в периодическом макросе и снизить нагрузку на CPU, стал использовать бесконечный цикл с DELAY.

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

Переменные в макросе создаю единоразово, в функциях использую глобальные переменные, дабы не множить.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Бесконечный цикл с ожиданием.

Сообщение Jackson »

rekkod писал(а): 20 июл 2020, 08:56 Чтобы избежать большого количества обращений в LW в периодическом макросе и снизить нагрузку на CPU, стал использовать бесконечный цикл с DELAY.
а почему нельзя было вместо этого отдельный макрос просто сделать периодическим через заданное время?

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

Вообще, исключительно ИМХО, делать так - дурной тон. Каждая операция должна быть единичной и завершаться без исключений.

В отличие от Вашего цикла, при возникновении исключений циклический макрос прервётся с ошибкой сам и перезапустится на следующем периоде (если задано циклическое исполнение), а что будет с бесконечным циклом - даже опытный программист не всегда может предположить.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

vodav
освоился
освоился
Сообщения: 290
Зарегистрирован: 28 авг 2014, 09:30
Имя: Воднев Александр Васильевич
Страна: РФ
город/регион: Томск
Благодарил (а): 22 раза
Поблагодарили: 33 раза

Бесконечный цикл с ожиданием.

Сообщение vodav »

Без зазрения совести почти всегда использую в своих проектах один макрос с бесконечным циклом. Только необходимо соблюдать одно условие: в этом цикле обязательно должна быть задержка на время >=100 мс, иначе панель сильно увлекается этим макросом и начинает тормозить остальные процессы. Работаю с панелями WEINTEK с 12-го года, еще ни одна не закапризничала.
Аватара пользователя

Looker
почётный участник форума
почётный участник форума
Сообщения: 1181
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 351 раз
Поблагодарили: 241 раз

Бесконечный цикл с ожиданием.

Сообщение Looker »

vodav писал(а): 23 июл 2020, 11:34Без зазрения совести почти всегда использую в своих проектах один макрос с бесконечным циклом. Только необходимо соблюдать одно условие: в этом цикле обязательно должна быть задержка на время >=100 мс, иначе панель сильно увлекается этим макросом и начинает тормозить остальные процессы. Работаю с панелями WEINTEK с 12-го года, еще ни одна не закапризничала.
Значит везло - работа на грани фола ("задержка на время >=100 мс").
Я полностью солидарен:
Jackson писал(а): 23 июл 2020, 04:31Вообще, исключительно ИМХО, делать так - дурной тон. Каждая операция должна быть единичной и завершаться без исключений.
Заменить "тост" на "макрос".

PS. Надо что-то еще написать - мое 666-е сообщение.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Бесконечный цикл с ожиданием.

Сообщение Jackson »

vodav писал(а): 23 июл 2020, 11:34 Без зазрения совести почти всегда использую в своих проектах один макрос с бесконечным циклом
Имеет право, наверное, но
Jackson писал(а): 23 июл 2020, 04:31 почему нельзя было вместо этого отдельный макрос просто сделать периодическим через заданное время?
Это ведь то же самое, только печатать меньше и есть контроль исполнения.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

MuadDib
частый гость
частый гость
Сообщения: 462
Зарегистрирован: 31 июл 2010, 09:12
Имя: Павел
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 17 раз

Бесконечный цикл с ожиданием.

Сообщение MuadDib »

Встречный вопрос знатокам Weintek: есть ли смысл экономить на обращении к LW? Можно ли как-то измерить оверхэд этой операции на CPU?
Аватара пользователя

Автор темы
rekkod
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 17 мар 2019, 11:33
Имя: Владимир Дёмин
Страна: Россия
город/регион: Тюмень, Тюменская обл.

Бесконечный цикл с ожиданием.

Сообщение rekkod »

У меня в изначальном варианте было порядка 1000 обращений в LW_bit в периодическом 1с макросе. (Нужно было данные с предыдущего исполнения хранить + красивое функциональное разбиение по функциям) = +15%.
Соответственно, каждый раз обращение и копирование производится.



Отправлено спустя 10 минут 26 секунд:
В итоге про бесконечный цикл: при полной нагрузке память забивается.

В функции одна переменная создаётся, каждый раз, но очень сомневаюсь, что только в ней дело.
Вероятно, внутренние преобразования, промежуточные значения при расчетах и прочее. Но это есть ПРЕДПОЛОЖЕНИЕ.
Последний раз редактировалось rekkod 24 июл 2020, 10:39, всего редактировалось 2 раза.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

Бесконечный цикл с ожиданием.

Сообщение VanMo »

Это абсолютно нормально делать вечный цикл с задержками. Причин такого использования может быть много.
Кроме DELAY, макрос засыпает при считывании данных из внешних устройств. Это можно использовать, например, в Free Protocol для своевременной обработки. Никакой сборки мусора, во всяком случае динамической, по идее, не требуется - все переменные создаются статично и освобождают память при выходе из макроса. Почему возникают проблемы с памятью - нужно смотреть. Существуют, например, проблемные драйверы устройств, которые могут забивать память. К примеру, драйвер Siemens с символьной адресацией.
Аватара пользователя

Автор темы
rekkod
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 17 мар 2019, 11:33
Имя: Владимир Дёмин
Страна: Россия
город/регион: Тюмень, Тюменская обл.

Бесконечный цикл с ожиданием.

Сообщение rekkod »


VanMo писал(а):Существуют, например, проблемные драйверы устройств, которые могут забивать память. К примеру, драйвер Siemens с символьной адресацией.
Подскажите, с ModbusTCP подобной проблемы нет? Я опрашиваю по 500 слов с 8 ПЛК, каждые 0,5 секунд. Может, буфер на передачу забивает?

При отключённой передаче данных те же скрипты не забивают память.

Панель MT8071iE

П.С. Есть ли какие-то мануалы в открытом доступе о работе панели под капотом, например, организация исполнения макросов, отрисовка графики параллельно или в моменты простоя, о словах состояния макросов? Чтобы не из метода тыка было, а из надежных источников.

Отправлено с моего HD1900 через Tapatalk






VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

Бесконечный цикл с ожиданием.

Сообщение VanMo »

rekkod писал(а): 29 июл 2020, 18:48 Подскажите, с ModbusTCP подобной проблемы нет? Я опрашиваю по 500 слов с 8 ПЛК, каждые 0,5 секунд. Может, буфер на передачу забивает?
При отключённой передаче данных те же скрипты не забивают память.
Нет, это стабильный драйвер.
Как Вы определили, что забивается память?
rekkod писал(а): 29 июл 2020, 18:48
П.С. Есть ли какие-то мануалы в открытом доступе о работе панели под капотом, например, организация исполнения макросов, отрисовка графики параллельно или в моменты простоя, о словах состояния макросов?
Более-менее принцип работы макросов расписан здесь: http://www.rusavtomatika.com/articles/m ... -pro-1.php
Подробнее только в основном руководстве по EasyBuilder. В панели стоит Линукс, поэтому конечно там многозадачность.
Аватара пользователя

Автор темы
rekkod
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 17 мар 2019, 11:33
Имя: Владимир Дёмин
Страна: Россия
город/регион: Тюмень, Тюменская обл.

Бесконечный цикл с ожиданием.

Сообщение rekkod »


VanMo писал(а):Нет, это стабильный драйвер.
Как Вы определили, что забивается память?
По процентам загрузки оперативной памяти.
Стабильно увеличивается, без взаимодействия с панелью.
LW-11159
При разрыве связи с контроллерами, скрипты исполняются по тем же веткам, но увеличение загрузки памяти прекращается. Так же прекращаются постоянные изменения на экране.
Опрашиваю контроллеры через "время-зависимую передачу данных".

Буду копать макросы и понаблюдаю при более длительной непрерывной эксплуатации, посмотрю, как это в конечном счёте повлияет на производительность.

Спасибо.

Отправлено с моего HD1900 через Tapatalk
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 18758
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 973 раза
Поблагодарили: 1854 раза

Бесконечный цикл с ожиданием.

Сообщение Jackson »

rekkod писал(а): 29 июл 2020, 18:48 Подскажите, с ModbusTCP подобной проблемы нет?
VanMo писал(а): 30 июл 2020, 12:44 Нет, это стабильный драйвер.
Подтверждаю. 20+ устройств с непрерывным циклическим опросом, проблем не заметил.

Может это та же проблема с последней версией EBPro (проект надо пересоздать) ?
По вопросам работы Форума можно обратиться по этим контактам.

mik
здесь недавно
здесь недавно
Сообщения: 27
Зарегистрирован: 10 сен 2015, 23:17
Имя: Полтораков Михаил Васильевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 4 раза
Поблагодарили: 6 раз

Бесконечный цикл с ожиданием.

Сообщение mik »

VanMo писал(а): 30 июл 2020, 12:44 В панели стоит Линукс
Вроде бы где-то на форуме пробегало, что в панелях Weintek установлен Windows Embedded?
Аватара пользователя

Автор темы
rekkod
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 17 мар 2019, 11:33
Имя: Владимир Дёмин
Страна: Россия
город/регион: Тюмень, Тюменская обл.

Бесконечный цикл с ожиданием.

Сообщение rekkod »

mik писал(а):
VanMo писал(а): 30 июл 2020, 12:44 В панели стоит Линукс
Вроде бы где-то на форуме пробегало, что в панелях Weintek установлен Windows Embedded?
Вроде, на сМТ серии win.
Можно попробовать nmapом банер чекнуть. Так иногда про начинку узнаю.

Отправлено с моего HD1900 через Tapatalk

Аватара пользователя

Автор темы
rekkod
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 17 мар 2019, 11:33
Имя: Владимир Дёмин
Страна: Россия
город/регион: Тюмень, Тюменская обл.

Бесконечный цикл с ожиданием.

Сообщение rekkod »

ИТОГ. От Выборки данных (в высоком приоритете каждую секунду 40x8 слов) забивалась оператива (если LW11159 ОЗУ).
Они у меня по наличию связи пишутся, потому обрыв связи давал такой эффект.
С бесконечным циклом всё окей.




Ответить

Вернуться в «WEINTEK (операторские панели)»