Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

OPC-технология. Оптимизация обработки дан

 Ответить Ответить
Автор
Сообщение
D. Ushkin Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 69
Свойства публикации Свойства публикации   Ответить, цитируя автора - D. Ushkin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: OPC-технология. Оптимизация обработки дан
    Опубликовано: 07 Март 2006 16:14

Здравствуйте, господа специалисты!

Существуют ли какие-нибудь общие рекомендации по количеству тегов в группах при работе с OPC-сервером? Интересует в первую очередь быстродействие, как сервера так и клиента.

Иван Данилушкин
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 27 Апрель 2006 05:35

Приблизительно можно расчитать скорость передачи данных:

Протокол PLCnet

1 старт бит, 8 бит "символ", 1 стоп бит - итого 10 бит на "символ".

Заголовок пакета 11 - символов (примерно)

Данные до 512 символов (данные "Float 4 байта")

Скорость передачи (38400 или другая)

Это ответ контроллера на запрос данных, но до этого нужно отправить пакет запроса данных, он из двоек (1 длина данных, адрес переменной в контроллере 2 байта).

На практике при скорости 38400, около 1000 тегов обновляются раз в 1.5 - 2 секунды

Vel
Наверх
D. Ushkin Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 69
Свойства публикации Свойства публикации   Ответить, цитируя автора - D. Ushkin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Май 2006 12:13

Попробую ещё раз .

Не интересует период опроса нижнего уровня. Вопрос относительно реализации верхнего уровня на OPC-технологии. Какой смысл изначально вкладывался разработчиками OPC-технологии в возможность объединить тэги по группам? И как определить оптимальное количество групп и тэгов в группах при разработке своего клиента?

С уважением.

Иван Данилушкин
Наверх
s_smirnov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 322
Свойства публикации Свойства публикации   Ответить, цитируя автора - s_smirnov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 10 Май 2006 12:30

В форуме(http://forum.cta.ru/forum_posts.asp?TID=1313&PN=6) писали на эту тему вот что:

sermon
Новичок
Новичок


Зарегистрирован: 07 Сентябрь 2005
Страна: Russian Federation
Всего сообщений: 26
Хотя есть одна причина: в Genesis32 при использовании групп тегов удобно распределять права доступа - можно запретить изменять сразу всю группу (правда, то же самое можно легко сделать, если использовать определенную систему префиксов в именах тегов).
наверх -^

Сергей
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 11 Май 2006 06:18

Мы в основном работаем с PLKNet OPC сервером, но принцип должен работать и с любым ОРС.

На основании проб и ошибок получается такая картина:

В ОРС сервере при конфигурировании создаются группы тегов, которые должны быть распределены по контроллерам, т.е. одна группа тегов, один контроллер. Если в одной группе теги с разных контроллеров, то опрос нижнего уровня замедляется, тем сильнее чем больше разных "контроллеров" в группе.

Когда клиент ОРС присоединяется к серверу, то он создает свою отдельную группу тегов в памяти ОРС сервера в которую тот передает данные из свох групп. Genesis32 создает группы для каждого окна, сервера аварий и архивации. В итоге одни и теже данные считываются из разных групп и скорость падает. На практическом опыте установлено, если не принимать специальных мер, если больше 500 тегов в проекте, то вы получите улитку, а не визуализацию тех. процесса.

К тому же установлено, что Genesis32 не уничтожает созданые группы при закрытии окна Gwx32. Они остаются в ОРС сервере. Попробуйте открывать и закрывать всплывающее окно с данными в режиме исполнения. В итоге ОРС сервер до того будет перегружен неиспользуемыми группами тегов, что передача замедлится неимоверно. Единственный выход перезагрузить ОРС сервер.

Vel
Наверх
Mr Pit Смотреть выпадающим
Участник
Участник


Присоединился: 09 Июнь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 55
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mr Pit Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 11 Май 2006 09:07
Для того, чтобы избежать ситуацию, описанную Vel_, в Genesis 32 существует утилита DataWorx. В DataWorx создаются ОРС-теги, а внутри проекта везде ссылаются на теги DataWorx. Таким образом можно избежать многократного открытия одних и тех же тегов.
Наверх
D. Ushkin Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 69
Свойства публикации Свойства публикации   Ответить, цитируя автора - D. Ushkin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 12 Май 2006 17:07

Первоначально опубликовано Vel_


...На практическом опыте установлено, если не принимать специальных мер, если больше 500 тегов в проекте, то вы получите улитку, а не визуализацию тех. процесса...

Вот как раз самое интересное: а какие специальные меры могут приниматься? Или эти меры справедливы только в рамках конкретной Genesis32?

 

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

Получается, что на стороне клиента приходится сопоставлять поэлементно два списка, что приводит к процедуре поиска, которая при большом количестве элементов в списках занимает довольно много времени .

Вот мы и думаем: может, есть какие-то другие способы решения? Или в OPC-технологии какое-то стандатное решение предполагается?

 

С уважением,

Иван Данилушкин
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2006 06:09

1) Конкретно для Genesis32 это использование "промежуточного" ОРС сервера DataWorx который считывает необходимые теги и передает их в приложения Genesis. Сам DataWorx может выдавать данные по ОРС технологии, но (по моему мнению) в приложения Genesis он передает данные по другому, какой то свой внутренний механизм. И еще дополнительно мы по возможности избавляемся от всех встраиваемых объектов в проекте и переводим все в статический рисунок (фон). Остаются только флажки, кнопки и окошки с значениями. В больших проектах только так возможно бороться с тормозами (в проекте 1264 тега, скоро будет 1580).

2) ОРС сервер создает по запросу клиента у себя в памяти дополнительные группы тегов в которые и помещает значения (или указатели). Клиент работает с своими создаными группами. Для каждого тега можно получить информацию о: качестве, времени последней модификации, типе и т.д. Сервер только предоставляет информацию по запросу клиента. ОРС технология это OLE и запросы идут от клиента через OLE сервер. Поэтому если ваш клиент сначало считывает время последней модификации тега, то тогда может запросить только изменившиеся теги. По моему проще всегда считывать все значения, конечно если вы пишите свой клиент, а не используете готовый.

Поэтому для конкретики, какой вы используете сервер и клиент ОРС

Vel
Наверх
D. Ushkin Смотреть выпадающим
Участник
Участник
Аватар

Присоединился: 14 Январь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 69
Свойства публикации Свойства публикации   Ответить, цитируя автора - D. Ushkin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2006 14:48
Первоначально опубликовано Vel_

2) ОРС сервер создает по запросу клиента у себя в памяти дополнительные группы тегов в которые и помещает значения (или указатели). Клиент работает с своими создаными группами. Для каждого тега можно получить информацию о: качестве, времени последней модификации, типе и т.д. Сервер только предоставляет информацию по запросу клиента. ОРС технология это OLE и запросы идут от клиента через OLE сервер. Поэтому если ваш клиент сначало считывает время последней модификации тега, то тогда может запросить только изменившиеся теги. По моему проще всегда считывать все значения, конечно если вы пишите свой клиент, а не используете готовый.

Поэтому для конкретики, какой вы используете сервер и клиент ОРС

Обмен данными между клиентом и сервером может осуществляться в двух режимах - синхронном и асинхронном [http://www.cta.ru/pdf/1999-3/software1_1999_3.pdf]. При асинхронном варианте обмена сервер сам оповещает клиента об изменившихся значениях данных, на которые подписался клиент (по возможности с частотой, заданной клиентом при создании группы)...

Мы используем асинхронный вариант обмена, при разработке своего собственного клиента, подключающегося к Simatic WinCC v. 5.0. Собственно и OPC-технология приглянулась только потому, что можно разгрузить слабенького клиента от процедуры периодических запросов и анализа пришедшей информации.

Иван Данилушкин
Наверх
Vel_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 25 Апрель 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 116
Свойства публикации Свойства публикации   Ответить, цитируя автора - Vel_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Май 2006 05:23

Да, в OPC Disp сказано: Когда группа Активна (На Сканировании) или клиент выполняет асинхронную операцию, метод повторного вызова примет уведомления для всех асинхронных операций и уведомлений изменения данных в группе. Значит в этом случае я был не прав.

Когда я пробовал создавать своего клиента ОРС, то не смог добиться приемлемой скорости передачи данных. Небольшие проекты без проблем, а больше 100 тегов уже заметное замедление. Отличные результаты дает прямое чтение из памяти ОРС сервера (5000 тегов за 67 миллисекунд на VB). Только сложно переконфигурировать и с записью данных в контроллер проблемы. Запись и через ОРС "не очень".

 

Vel
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz