PDA

Просмотр полной версии : МВА8, OPC-ModBus сервер и загрузка процессора...



KruFFT
13.12.2009, 22:50
Здравствуйте.

Используем 4 модуля МВА8 подключенных к аппаратному COM-порту RS-485 на скорости 19200 бод. На компьютере (Core 2 Duo 2 ГГц, 2 ГБ) установлена Windows XP SP3 Rus, Siemens WinCC 7.0 SP1 HF3. Связь стабильна, зависаний нет. Но за OPC-ModBus сервером ОВЕН наблюдается повышенная загрузка процессора, доходящая до 50% (по сути – полностью одно ядро). :( В то время, как остальные программы (работающая SCADA, обрабатывающая около 450 тегов, непрерывный контроль по различным параметрам и ежесекундное архивирование около полусотни тегов), потребляют в сумме не более 10% ресурсов процессора. В дальнейшем планируется повышение нагрузки на этот компьютер, поэтому хотелось бы выяснить, с чем связан настолько непомерный аппетит ОВЕН OPC-ModBus сервера?

PS: Прилагаю полноразмерный скриншот (http://img7.imageshost.ru/imgs/091213/74b544d44a/4ff7a.png) с программы Process Explorer, где выделен OPC_ModBus.exe с загрузкой процессора в данный момент около 43%. Ниже, в статусной строке программы, видно, что суммарная загрузка процессора в данный момент около 53%.

PS2: OwenOPC версии 1.4 (последняя доступная версия на данный момент на сайте). Но как припоминаю, при установке именно OPC-ModBus из этого пакета, там он бета версии...

Малышев Олег
14.12.2009, 09:12
приведите лучше скриншот конфигурации Opc. надеюсь справку Opc - сервера заглянули и последовали рекомендациям?

Малышев Олег
14.12.2009, 13:36
Ключевой параметр - период опроса. Рассчет для модбас RTU на 19200,8,n,1 - 1) Расчет времени опроса 1 байт = (1 старт + 8 данные + 0 четности + 1 стоп )/ 19200 бит/сек = (1/1920)сек
2) Один параметр 4 байта - плавающее = 7 запрос+3.5 пауза +11 ответ (могу ошибаться но порядок такой)= 22/1920 сек ~11.5 мсек
3) 8 параметров с прибора = (11.5+3.5+20)*8=0.28 сек
4) 4 модуля *0.28 =1.120 сек
По умолчанию стоит 1000 мс -соответственно, времени на отдых у процессора нет. Вот и соотв. загрузка

KruFFT
14.12.2009, 15:55
К сожалению такую (http://img7.imageshost.ru/imgs/091214/1a0b28a91e/f74f4.png), такую (http://img7.imageshost.ru/imgs/091214/3c811637cc/46d50.png) и такую (http://img7.imageshost.ru/imgs/091214/b5fbad9157/52551.png) справку мне прочитать не удалось (ни на одном из четырех компьютеров, где я пробовал). :(

Вот скриншот настроек СОМ-порта (http://img7.imageshost.ru/imgs/091214/5eb4bd65b7/93d39.png), а вот настройки одного МВА8 (http://img7.imageshost.ru/imgs/091214/394790c1ec/fbd62.png).

Интервалы опроса попробую подстроить. Как я понял это для СОМ-порта надо сделать?

PS: Доводилось программировать работу с устройством через СОМ-порт, но программировал это на .NET 2.0. Там вообще без проблем, никакой загрузки процессора не было, даже при интенсивном обмене на высоких скоростях. Да и вообще, мне видится крайне неграмотным, подход при опросе СОМ-порта, вызывающий такую большую загрузку на процессор. Ведь даже древние 286 процессоры справлялись с этой задачей без таких нагрузок.

Малышев Олег
15.12.2009, 10:07
поясняю - почему большая загрузка - поток опроса запускается с приоритетом выше текущего и не дает выполнятся процессам с приоритетом равным стандартному. это сделано для гарантированного выполнения чтения записи переменных в указанные таймауты. соответственно, для освобождения времени процессора манипулируйте параметрами время опроса и задержка при опросе.

Александр Ч.
15.12.2009, 23:03
кстати по файлам справок такая же проблема-что то с русским текстом. где можно скачать нормальн. или как преобразовать имеющиеся?

Малышев Олег
16.12.2009, 10:43
проблема в системной кодировке установленной в виндах. да поможет вам великий яндекс

KruFFT
16.12.2009, 12:14
проблема в системной кодировке установленной в виндах. да поможет вам великий яндекс

В это не верю! Чтобы русская система и не смогла прочитать русский текст. :eek: Причем голая система, на которой даже ничего не устанавливалось лишнего и нигде ничего не крутилось. Да, и что делать тем кто яндексом не пользуется? :)

Вообще сделал интервал опроса 10 секунд - не помогло. Теперь стали всплески загрузки процессора, вместо постоянной загрузки, но их уровень столь же высок. Похоже надо не программные циклы задержек крутить в OPC-сервере, а делать на событиях или системных таймерах.

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

Малышев Олег
17.12.2009, 09:43
Вопрос лицензионная ли винда и откуда у вас она взялась я так понимаю некорректный. На моем компе win xp sp3 лицензионная с оригинального диска MS. Сам сливал драйверы OPC с сайта овен. Выкладываю файлы справки от них - работают и показывают то что надо.
По поводу циклов задержки и прочего бреда...(это лично от себя ) Далее отвечаю как профессиональный программист с дипломом по специальности 22.04 и стажем 15 лет и официальное лицо - докладываю - предположения неверны. Торможения идут из-за многочисленных синхронизаций (с помощью Win32 функций). Все задержки во первых реализованы вызовом Win32 sleep, во вторых - не нравится OPC овен - купите за $600 Matricon OPC(matricon OPC) или 4130 руб Lectus OPC(http://www.owen.ru/device/55338270). (Подсказываю - там тоже свои сверчки). Попытки доказать что - либо плохое упираются в то что продукт бесплатный. Мы не навязываем вам эту программу и альтернатив - масса.

Дмитрий Егоренков
17.12.2009, 12:33
раз уж мы перешли на личности... лицензионная windows 7 ru, xp mode (фактически -- виртуальная машина с xp). справка кривая. кто виноват?

ну и про синхронизацию. она как раз процессор не жрет, а тормозит само приложение.

KruFFT
17.12.2009, 16:53
Cофт тоже весь лицензионный (промышленный объект, тут строго с этим). Kучи других справок разных происхождений читаются отлично. Hу, да ладно с ними.

Cпоры о "стажах", о том "я знаю" - считаю не по теме, будем прекращать их. Я тоже с немалым опытом программирования, но мне уже не до копания во внутренностях программ, чтобы доказывать, как это работает (хотя меня это и задело). K тому же я повязан условиями заказчика, они выбирают "чем" и "как" делать. 3аметив настолько высокую загрузку процессора от программы, от которой никак этого не ожидали - конечно же задали вопрос мне. Hу а мне куда обращаться уже было?

Tо что продукт бесплатный: такого не бывает. Kонечная стоимость продукта, в данном случае купленные мва8 уже включают в свою стоимость затраты на программный продукт к нему, пусть и бесплатный (и не только к нему). Tут больше вопрос в объемах этих долей в стоимостях. А ведь официально распостраняемая программа, на официальном сайте.

A на уровне Api-функций всё же правильно подмечено выше, блокировки не приводят к загрузке процессора. Sleep() тем более просто поток приостанавливает.

Bот такой "официальный" ответ... Mда...

Малышев Олег
17.12.2009, 17:05
A на уровне Api-функций всё же правильно подмечено выше, блокировки не приводят к загрузке процессора. Sleep() тем более просто поток приостанавливает.

Т.е. у меня виндовс грузится от 10 до 30 за счет вызова не API функций - это оптический обман зрения? Word загружается от 2 до 5 секунд за счет вызова не API функций??? Простите, но не имея понятия что и как делает программа предполагать что в ней косяки - "Мда".

KruFFT
17.12.2009, 19:59
Ого как! Когда ОС грузится, она занята несколько другими делами (хотя бы инициализация не меньше десятка различных устройств и настройка их параметров), а не опросом одного СОМ-порта. И грузится она хотя бы с жетского диска, который имеет свои физические ограничения. Да и любая программа грузится с диска впервый раз дольше, чем последующие разы их кеша системы. И честно говоря: сравнивать ОС с продуктом, в котором работает кое-как один поток с всего одним физическим портом - это крайне некорректно. Да и назначение программы по количеству исполняемых инструкций куда меньше, чем у той же ОС, раз уж с ней сравнивать (ну пусть даже с Word-ом сравнить).

"Понятия не имея" - я и не говорю, как работает ОРС-сервер, я всего лишь предполагаю, какие могут быть недочеты в его архитектуре. Там ведь нет сложных мат.вычислений на FPU, нет передачи многих мегабайт в памяти, сложной обработки, сравнимых с шифрованием... Там по сути работа на уровне передачи 19200 бод. Но даже она вызывает такие нагрузки. Ведь остаются только временные выдержки, необходимые для обеспечения работы протокола. Вот и предположение на этом, что именно с временными выдержками есть недочет в реализации.

malabiker
06.02.2011, 11:40
Если ещё актуально.
Была подобная проблема с wincc, которая вызывала lectus opc и по истечению некоторого времени этот lectus "съедал" весь процессор, а поскольку тот был одноядерный - то висло всё и вся. Аналагисная ситуация наблюдалась при подключении к opc-серверу от NI. Все стояло на одной машине. Я решил, что проблема в приоритетах и немецкий wincc методично отбирает процессорное время у остальных, за счет чего они раздуваются. Так же на всякий случай не дай вам кто делать архивирование в wincc через юсерархив, ибо это создаёт огромный ком отложеных действий.