OPC-технология. Оптимизация обработки дан |
Ответить |
Автор | ||||||||
Участник Присоединился: 14 Январь 2005 Категория: Russian Federation Online Status: Offline Публикации: 69 |
Опубликовано: 07 Март 2006 16:14 |
|||||||
Здравствуйте, господа специалисты! Существуют ли какие-нибудь общие рекомендации по количеству тегов в группах при работе с OPC-сервером? Интересует в первую очередь быстродействие, как сервера так и клиента. |
||||||||
Иван Данилушкин
|
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
||||||||
Приблизительно можно расчитать скорость передачи данных: Протокол PLCnet 1 старт бит, 8 бит "символ", 1 стоп бит - итого 10 бит на "символ". Заголовок пакета 11 - символов (примерно) Данные до 512 символов (данные "Float 4 байта") Скорость передачи (38400 или другая) Это ответ контроллера на запрос данных, но до этого нужно отправить пакет запроса данных, он из двоек (1 длина данных, адрес переменной в контроллере 2 байта). На практике при скорости 38400, около 1000 тегов обновляются раз в 1.5 - 2 секунды |
||||||||
Vel
|
||||||||
Участник Присоединился: 14 Январь 2005 Категория: Russian Federation Online Status: Offline Публикации: 69 |
||||||||
Попробую ещё раз . Не интересует период опроса нижнего уровня. Вопрос относительно реализации верхнего уровня на OPC-технологии. Какой смысл изначально вкладывался разработчиками OPC-технологии в возможность объединить тэги по группам? И как определить оптимальное количество групп и тэгов в группах при разработке своего клиента? С уважением. |
||||||||
Иван Данилушкин
|
||||||||
Действительный член Присоединился: 14 Январь 2005 Категория: Russian Federation Online Status: Offline Публикации: 322 |
||||||||
В форуме(http://forum.cta.ru/forum_posts.asp?TID=1313&PN=6) писали на эту тему вот что:
|
||||||||
Сергей
|
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
||||||||
Мы в основном работаем с PLKNet OPC сервером, но принцип должен работать и с любым ОРС. На основании проб и ошибок получается такая картина: В ОРС сервере при конфигурировании создаются группы тегов, которые должны быть распределены по контроллерам, т.е. одна группа тегов, один контроллер. Если в одной группе теги с разных контроллеров, то опрос нижнего уровня замедляется, тем сильнее чем больше разных "контроллеров" в группе. Когда клиент ОРС присоединяется к серверу, то он создает свою отдельную группу тегов в памяти ОРС сервера в которую тот передает данные из свох групп. Genesis32 создает группы для каждого окна, сервера аварий и архивации. В итоге одни и теже данные считываются из разных групп и скорость падает. На практическом опыте установлено, если не принимать специальных мер, если больше 500 тегов в проекте, то вы получите улитку, а не визуализацию тех. процесса. К тому же установлено, что Genesis32 не уничтожает созданые группы при закрытии окна Gwx32. Они остаются в ОРС сервере. Попробуйте открывать и закрывать всплывающее окно с данными в режиме исполнения. В итоге ОРС сервер до того будет перегружен неиспользуемыми группами тегов, что передача замедлится неимоверно. Единственный выход перезагрузить ОРС сервер. |
||||||||
Vel
|
||||||||
Участник Присоединился: 09 Июнь 2005 Категория: Russian Federation Online Status: Offline Публикации: 55 |
||||||||
Для того, чтобы избежать ситуацию, описанную Vel_, в Genesis 32 существует утилита DataWorx. В DataWorx создаются ОРС-теги, а внутри проекта везде ссылаются на теги DataWorx. Таким образом можно избежать многократного открытия одних и тех же тегов.
|
||||||||
Участник Присоединился: 14 Январь 2005 Категория: Russian Federation Online Status: Offline Публикации: 69 |
||||||||
Вот как раз самое интересное: а какие специальные меры могут приниматься? Или эти меры справедливы только в рамках конкретной Genesis32?
Дело в том, что OPC-сервер передает клиенту информацию только по тем тэгам группы, которые изменились. И, насколько мы разобрались, далеко не факт, что элементы одного списка (списка изменившихся тэгов) располагаются в том же порядке, что и элементы другого списка (всей группы). Получается, что на стороне клиента приходится сопоставлять поэлементно два списка, что приводит к процедуре поиска, которая при большом количестве элементов в списках занимает довольно много времени . Вот мы и думаем: может, есть какие-то другие способы решения? Или в OPC-технологии какое-то стандатное решение предполагается?
С уважением, |
||||||||
Иван Данилушкин
|
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
||||||||
1) Конкретно для Genesis32 это использование "промежуточного" ОРС сервера DataWorx который считывает необходимые теги и передает их в приложения Genesis. Сам DataWorx может выдавать данные по ОРС технологии, но (по моему мнению) в приложения Genesis он передает данные по другому, какой то свой внутренний механизм. И еще дополнительно мы по возможности избавляемся от всех встраиваемых объектов в проекте и переводим все в статический рисунок (фон). Остаются только флажки, кнопки и окошки с значениями. В больших проектах только так возможно бороться с тормозами (в проекте 1264 тега, скоро будет 1580). 2) ОРС сервер создает по запросу клиента у себя в памяти дополнительные группы тегов в которые и помещает значения (или указатели). Клиент работает с своими создаными группами. Для каждого тега можно получить информацию о: качестве, времени последней модификации, типе и т.д. Сервер только предоставляет информацию по запросу клиента. ОРС технология это OLE и запросы идут от клиента через OLE сервер. Поэтому если ваш клиент сначало считывает время последней модификации тега, то тогда может запросить только изменившиеся теги. По моему проще всегда считывать все значения, конечно если вы пишите свой клиент, а не используете готовый. Поэтому для конкретики, какой вы используете сервер и клиент ОРС |
||||||||
Vel
|
||||||||
Участник Присоединился: 14 Январь 2005 Категория: Russian Federation Online Status: Offline Публикации: 69 |
||||||||
Обмен данными между клиентом и сервером может осуществляться в двух режимах - синхронном и асинхронном [http://www.cta.ru/pdf/1999-3/software1_1999_3.pdf]. При асинхронном варианте обмена сервер сам оповещает клиента об изменившихся значениях данных, на которые подписался клиент (по возможности с частотой, заданной клиентом при создании группы)... Мы используем асинхронный вариант обмена, при разработке своего собственного клиента, подключающегося к Simatic WinCC v. 5.0. Собственно и OPC-технология приглянулась только потому, что можно разгрузить слабенького клиента от процедуры периодических запросов и анализа пришедшей информации. |
||||||||
Иван Данилушкин
|
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
||||||||
Да, в OPC Disp сказано: Когда группа Активна (На Сканировании) или клиент выполняет асинхронную операцию, метод повторного вызова примет уведомления для всех асинхронных операций и уведомлений изменения данных в группе. Значит в этом случае я был не прав. Когда я пробовал создавать своего клиента ОРС, то не смог добиться приемлемой скорости передачи данных. Небольшие проекты без проблем, а больше 100 тегов уже заметное замедление. Отличные результаты дает прямое чтение из памяти ОРС сервера (5000 тегов за 67 миллисекунд на VB). Только сложно переконфигурировать и с записью данных в контроллер проблемы. Запись и через ОРС "не очень".
|
||||||||
Vel
|
||||||||
Ответить |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |