Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version » Производительность?

   
Автор / Author Тема / Topic: Производительность?
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, в проекте отображаю запрошенные с устройства данные по 8-ми каналам FLOAT в ГЭ "Текст". В проекте уже чуть более 50-ти каналов (из них 9 программ и 9 всплывающих экранов). В одной из программ реализовал перевод единиц измерения в схожие размерности (именно программа, так как требуется перевод в относительные единицы(дБ), где в атрибут "Множитель" не могу отправить формулу). До недавнего времени перевод единиц работал корректно и без задержек(проверял последний раз когда в проекте было около 30 каналов). Теперь же при нажатии на кнопку, по которой я передаю в программу число, в зависимости от которого выполняется та или иная функция в программе, я наблюдаю в панели МРВ, что реальное значение изменилось как и должно (например входное - 0.5, а реальное - 50), но при этом в ГЭ "Текст", к которым привязаны аргументы экрана, которые в свою очередь привязаны к "Реальному значению" каналов, по которым я передаю значения измерений с устройства, отображают всё те же 0.5 как и до нажатия кнопки. Через некоторое время (пол минуты, минута или две) изменение всё таки происходит и далее, при смене размерностей, таких задержек нет. Выше описанное происходит при стандартных настройках "Пересчет" (Период - 10, Разрешение - 0.055) в узле. Если выставить более долгий цикл монитора (Период - 10, Разрешение - 0.5), то изменения происходят своевременно, но такое время ожидания изменений меня не устраивает.
На моём компьютере всего 2Гб ОЗУ может из-за этого проблема?

Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
или в программе что долго работает
Сообщения / Posts 806 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Да. Разнёс программу на две более простые, стало получше. Существуют рекомендации по объёму/нагрузке программы? Я так понимаю, что лучше всегда стараться пользоваться встроенными средствами и использовать программирование только в крайних случаях, и то, используя несложные алгоритмы.
Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
-можно писать достаточно сложные программы
Сообщения / Posts 806 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Что тогда может долго работать в несложной программе?
У меня написано 3 простых функциональных блока, которые я вызываю суммарно 32 раза (8, 16 и 8 соответственно), передавая туда от 3-х до 8-ми аргументов (включая глобальные переменные).
Понятно, что из-за этих 32-х раз и тормозит, потому и спросил об ограничениях. В любом случае благодарю за ответы.

Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
quote:
Отправитель / Originally posted by vg:
На моём компьютере всего 2Гб ОЗУ может из-за этого проблема?

Проблема не в имеющихся ресурсах, а в их использовании. Эти 2ГБ используются не только Trace Mode 6, но и самой Операционной Системой, запущенными ей службами и приложениями.

Ограничений в выполнении программы нет.

Принципиально одна программа с 32 операциями и тридцать две программы с 1 операцией каждая будут выполняться одно и тоже время. Так как ресурсы на их выполнение необходимы примерно одни.

Сообщения / Posts 17109 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 

Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
- из 2 Гб один резервируется для ОС
- для автоперевода из одних единиц в другие
желательно использовать программу как закон
трансляции
- да и саму программу всегда можно написать неоптимально

Сообщения / Posts 806 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Спасибо за подробные ответы
Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, делаю тестовый проект на большое количество каналов (пока что около 4500).

Создал базовый интерфейс, создал источники и каналы для отображения считываемых данных. Всё работало нормально.

Далее написал довольно объёмный(но менее 4КБ для аргументов) шаблон программы для "задержки индикации" (то есть изменение индикации ячейки только в случае нахождения значения в определённой "зоне" некоторое количество времени), который вызывается в проекте 84 раза.

После этого при запуске МРВ стало появляться сообщение "Calc loop is big(t)" на постоянной основе. Понятно, что машина не справляется с задачей в отведённый цикл пересчёта, но загруженность не предельная (ЦП максимум до 30%, памяти выделяется на 300Mb больше: с 3.4GB до 3.7Gb).

Intel Core i3-4170 @ 3,7GHz
Оперативная память 8Gb

Могу выслать Вам проект? Не понимаю как это исправить. Воспроизведётся ли у Вас эта проблема?

Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
-посмотреть сколько времени выполняется программа
-есть сильное подозрение что в программе
используется цикл ожидания по времени

Сообщения / Posts 806 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Если судить по 45-му атрибуту канала CALL.Program, то между изменениями значения атрибута происходит 3-4 секунды.
Если по переменным Calc_Loop или Calculate_Cycle, то они стабильно возвращают значения больше 3000(3100-3300).

В программе создана глобальная переменная, которая увеличивается на 1 каждый цикл пересчёта. Также написан функциональный блок, в котором есть 3 цикла WHILE по 10 итераций каждый. Всё остальное в программе if-else.

Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
vg
Forum Haunter / Завсегдатай форума
Участник № / Member № 8172


Icon 1 отправлено / posted      Профиль для / Profile for vg           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Проблема была в размере созданных глобальных массивов (во вкладке "Глобальные переменные"). Уменьшив их размер до 1000, переменные Calc_Loop или Calculate_Cycle стали показывать значения не более 600.
Сообщения / Posts 101 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
-программа для задержки реализуется гораздо проще
-попробуйте все-таки использовать стандартно
встроенные решения, а не создавать собственные
-для задержки реакции очень просто и быстро
использовать период пересчета

Сообщения / Posts 806 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2