ADAM 5510 & LabVIEW8.2 DSC |
Ответить | Страница <123> |
Автор | |
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
Опубликовано: 22 Октябрь 2007 05:57 |
1. Да документации на PLCNET вы не найдете, а я говорил про настройку сети (аппаратную). Наша сеть: С COM1 ADAM5510 (rs232) через ADAM4520 сеть 1 (rs485) на COM1 первого ПК (у ПК ADAM4520 преобразовывает в rs232). С COM2 ADAM5510 сеть 2 (rs485) на COM1 второго ПК (у ПК ADAM4520 преобразовывает в rs232). В обоих концах каждой сети (rs485) стоят терминаторы 120 Ом и сопротивления предустановки логического 0 и 1 (с питания ADAM4520 +24 на DATA+ и -24В на DATA-) по 560 Ом. 2. В PLCNET предусмотрены функции запроса и передачи группы регистров. Когда Вы ставите галочку "Сетевая" в Ultralogik, то Вы создаете массив сетевых переменных (добавляете в массив тег) В программе для ADAM5510 на ASM это выглядит так (Ultralogik генерирует такойже код): VARLIST segment byte public 'DATA' use16 ;(сегмент сетевых переменных) public ERR_SEG_NAME public INTEGER_TYPE public ERR_OFS_NAME public BOOLEAN_TYPE public BIT_0_NAME public $_CntNetworkVar public $_LstNetworkVar ;описание сетевых переменных (offset) VARLIST ends В итоге Вы получаете массив сетевых переменных, которые и запрашивает ОРС сервер с контроллера (данные до 512 байт массива в одном пакете). Похоже запросы идут и в Modbus, так что протокол для скорости не пренципиален. 3. Как повысить скорость обмена по сети? Устраните ошибки в аппаратной реализации сети и в конфигурировании ОРС сервера! Расчеты скорости для вашей сети уже приведены выше и они реальны. |
|
Vel
|
|
Новичок Присоединился: 15 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 18 |
|
Продолжим. Хотелось бы более конкретно об обмене массивом данных с ADAM5510 (UL32) и Fastwel OPC server. Речь об этих двух прогах, о том как заставить их произвести такой обмен, а не о загадках и возможностях протокола PLCNET (очень хорошая вещь, допускаю). Мне не понятно, как из Fastwel считать массив, некий набор сетевых переменных из конкретного контроллера за одну операцию чтения/записи. У меня в LabVIEW открывается соединение с Fastwel через url (так рекомендуют в документации): opc://localhost.Faswel.PLCNetOpc.Net_1.01.A1&updaterate=1000 Можно ли сформировать запрос как-то иначе, чтобы считать несколько переменных через одно соединение? В библиотеке plcdll.dll, которая входит в пакет Fastwel сервера, имеются функции printTrace unetCreateNode unetCreateVarInstance unetDeleteNode unetDeleteVarInstance unetFillTreeView unetFindVarByName unetGetBaudRateName unetGetBaudRateNumber unetGetConfigStatus unetGetFistVarId unetGetNextVarId unetGetNodeStatistics unetGetQueryState unetGetValue unetGetVarDescr unetGetVarInstanceType unetGetVarName unetGetVarNode unetGetVarSegment unetGetVarTypeCode unetGetVarTypeString unetInitCOMPort unetIsMaster unetIsNodeFound unetQuery unetQueryRead unetQueryWrite unetReadNodeConfig unetReadValue unetSerializeSegment unetSetMaster unetWriteValue Если кто-то работал на таком уровне с OPC киньте пример на C, как с ними работать или заголовки (может так догадаюсь ). |
|
С уважением, mrv
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Насчет двойной сети: Это сделано для 100% рерервирования ПК. За период с 2000 по 2007 г. у нас вышел из строя только 1 ADAM5510. На ПК за этот период уже меняли жесткие диски, мониторы, видеокарты, системники в сборе и т.д. Самое слабое звено это ПК. Про ОС и программы я уже и не говорю. Если делать одну сеть и на второй ПК передавать данные через DCOM, то при выходе "базового" ПК из строя не работают оба ПК. Все данные потеряны, архивы, аварийка. Нет управления и оператор не может управлять производством! К томуже 2 ПК позволяют оператору вывести на отдельные мониторы больше экранов процесса. Данные архивируются независимо на разных ПК и всегда можно их сравнить и востановить. Есть гибкость системы и надежность, чего не сделаеш на одной сети. На новых объектах, сделанных с использованием контроллеров Quantum и промышленных ПК, мы также используем данный принцип (2 независимых ПК) и не желеем об этом. Данная система проверена временем! |
|
Vel
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Продолжим! Вы убедились что массив сетевых переменных есть! Конфигурирование ОРС сервера: 1. Производится опрос сети на наличие подключенных контроллеров посылкой пакетов CheckLN по всему диапазону адресов. Например: контроллеру с адресом 1, ждем ответа. Если есть ответ, заносим в память адресс контроллера и следуем дальше. Если нет ответа (таймаут закончился) следуем дальше. Перебераем весь диапазон адресов. 2. Конфигурируем контроллер (по команде "создать"): Запрашиваем количество тегов в контроллере, получаем значение количества тегов (счетчик); Перебираем теги в VARLIST, получаем в итоге: тип тега, имя тега, адресс тега (смещение) и все это заносим в конфигурацию контроллера. 3. Когда все контроллеры в сети сконфигурированы, можем начинать считывание тегов. Считывание, запись тегов: Из конфигурации берется адрес контроллера. Готовится пакет для контроллера: В пакет по очереди (индекс) добавляются теги для опроса (тип-"размер", адресс-"смещение) из конфигурации. При этом просчитывается, не превысит ли ответ контроллера лимит 512 байт данных. Запоминаем последовательность тегов и отправляется запрос в контроллер. Получаем ответ: значения тегов (разбираем по последовательности запроса данные и пакета, по размерам запрошенных данных). Если тегов в контроллере больше чем уместилось в 1 пакете, формируем еще один пакет и т.д. После этого если есть данные для записи, формируем пакет записи данных: собираем теги для записи (дли данных "тип", адрес-"смещение", данные) и отправляем пакет. Переходим к следующему контроллеру и т.д. В итоге: Опрашиваются только контроллеры и теги которые есть в конфигурации. Все остальное игнорируется. Как я уже указывал выше, конфигурацию ОРС сервера, старую, нужно удалять, иначе сервер будет пытаться связаться с контроллерами и тегами которых не существует и на это потратит драгоценное время. Ведь ответа он не получит и будет ждать таймаут для перехода к следующиму контроллеру. Тоже происходит если контроллер сконфигурирован, но отключен. P.S. в Modbus вы не можете получить имя тега и его тип, поэтому конфигурирование у него пропускает эти шаги. А получение данных примерно такое же, но по заранее определенным в ОРС адресам.
|
|
Vel
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Насчет связки ADAM5510 и Fastwel OPC server. Попробуйте в режиме монитора в ОРС сервере посмотреть скорость обновления данных (визуально) не запуская LabVIEW. Если скорость разительно отличается, значит проблема в связке Fastwel OPC server и LabVIEW. В поставке Fastwel OPC server есть пример VB OPC клиента, можете поиграться, основные принципы связи по технологии ОРС там показаны. Можете адаптировать его под С. Мы используем GENESIS32. с этим проблем сейчас нет. Насчет ОРС клиента, даже приемлимой скорости передачи тегов с ОРС сервера я так и не смог добиться (16..20 миллисекунд на тег в среднем). И это не зависит от языка программирования и большие проблемы с записью тегов в контроллер (не пишет с первого раза, до десяти раз в цикле повторяем). Возможно прямое считывание напрямую с памяти ОРС сервера, но это уже "хакерские" методы. Так что не заморачивайтесь на ОРС технологии, слишком сложно... plcdll.dll использовать можно, если разберетесь с ОРС технологией, но она есть только "драйвер" связи с ADAM, все остальное в ОРС сервере. |
|
Vel
|
|
Новичок Присоединился: 15 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 18 |
|
Очень интересно! Мы тоже резервируем верхний уровень, но с ADAM5510 работаем впервые. Планировали в частности сделать на RS485 два OPC сервера, но из-за низкой скорости пока остановились. Скажите, два Fastwel на одну ветку RS485 возможно, или не стоит и пробовать? В доке к Fastwel есть упоминание об этом. |
|
С уважением, mrv
|
|
Новичок Присоединился: 15 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 18 |
|
[QUOTE=Vel_]
Конфигурирование ОРС сервера: 1. Производится опрос сети на наличие подключенных контроллеров посылкой пакетов CheckLN по всему диапазону адресов. Например: контроллеру с адресом 1, ждем ответа. _mrv: Адреса контроллеров начинаются с 01 или 00? Имеет смысл в plcnet смысл адрес 00? 2. Конфигурируем контроллер (по команде "создать"): Запрашиваем количество тегов в контроллере, получаем значение количества тегов (счетчик); Перебираем теги в VARLIST, получаем в итоге: тип тега, имя тега, адресс тега (смещение) и все это заносим в конфигурацию контроллера. _mrv: Понятно. Из конфигурации берется адрес контроллера. Готовится пакет для контроллера: В пакет по очереди (индекс) добавляются теги для опроса (тип-"размер", адресс-"смещение) из конфигурации. При этом просчитывается, не превысит ли ответ контроллера лимит 512 байт данных. Запоминаем последовательность тегов и отправляется запрос в контроллер. Получаем ответ: значения тегов (разбираем по последовательности запроса данные и пакета, по размерам запрошенных данных). Если тегов в контроллере больше чем уместилось в 1 пакете, формируем еще один пакет и т.д. После этого если есть данные для записи, формируем пакет записи данных: собираем теги для записи (дли данных "тип", адрес-"смещение", данные) и отправляем пакет. Переходим к следующему контроллеру и т.д. _mrv:
|
|
С уважением, mrv
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
Планировали в частности сделать на RS485 два OPC сервера, но из-за низкой скорости пока остановились. Скажите, два Fastwel на одну ветку RS485 возможно, или не стоит и пробовать? В доке к Fastwel есть упоминание об этом. В том то и дело, что упоминание! Реально в сети может быть только один мастер, он и делает запросы. Из описания: Активная станция (мастер) должна всегда (во всех пакетах) держать этот бит в 1 (маркер мастера) (даже когда она передает маркер другой). Сброс этого бита в 0 хотя бы в одном пакете приводит к тому, что остальные станции исключат ее из списка активных участников и маркер ей никогда не вернут. Конечно если организовать маркерное кольцо, то это реально, но в Fastwel я этого не нашел, может в самых последних версиях есть, не знаю. Из описания:Существуют правила передачи маркера, правила включения новых активных участников сети в маркерное кольцо и правила исключения активного участника из маркерного кольца. Кроме этого активные станции должны принимать меры для генерации нового маркера, в случае его утраты, и подавлять лишние маркеры, если такие появляются. В UL32 эта технология используется для создания удаленных переменных. |
|
Vel
|
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 25 Апрель 2006 Категория: Russian Federation Online Status: Offline Публикации: 116 |
|
_mrv: Адреса контроллеров начинаются с 01 или 00? Имеет смысл в plcnet смысл адрес 00? Вообще то адрес 00 нежелательно использовать для адреса контроллера, лучше для мастера сети (ОРС сервера), а адрес FF вообще зарезервирован для широковещательных пакетов (всем сразу). _mrv: Но я по-прежнему не могу избавиться от перебора адресов несуществующих контроллеров? Мои действия: открываю сервер,создаю новый конфиг (старый остается на диске, он разве будет использоваться?) Да! Да! Да! Про это я вам и толковал, не раз! Если старый конфиг есть (ОРС сервер смотрит в реестре где лежит предыдущий), то новая конфигурация добавляется к старому конфигу. Легко проверить: не удаляя старый конфиг, создаеш новый, смотриш размер. Удаляешь старый, делаешь новый, смотриш размер. Конфиг - это снимок памяти и когда происходит загрузка ОРС сервера, то он загружает конфиг, который был создан последним. При создании нового, он не очищает память. Глюк! И тогда действительно вся связь тормозит неимоверно!!! |
|
Vel
|
|
Новичок Присоединился: 15 Октябрь 2007 Категория: Russian Federation Online Status: Offline Публикации: 18 |
|
Потратил время на изучение Fastwel OPC server.
Тут кстати подошел LabVIEW 8.5 с DSC 8.5. Выяснилось, что LV 8.0+DSC видит Fastwel OPC server и как-то позволяет работать с ним. Если установить обновление до LV 8.0.1, то с Fastwel можно считать только служебную информацию, теги не видны. Это же происходит и в LV 8.2. При установке LV 8.5+DSC 8.5 глюк исчезает и можно создать OPC клиента и коннектить Shared Variable к тегам, появившимся у клиента. Считаю, что это вызвано тем, что в Fastwel OPC server реализована часть функций из набора OPC DA 2. Может не вся, может криво :) Кстати, может повторюсь, но Matlab 7 также не коннектится к Fastwelу. А вот если качнуть симулятор из Matricon, то его видят все. С обновленной SCADA и осциллографом приступил к опытам над PLCNET. Во-первых, сделать два OPC на один сегмент сети возможно. Для этого использовали ADAM 4570, один порт которого заведен на "начало" шлейфа витой пары, другой --- на "конец". Получилось как бы кольцо. Один порт из ADAM 4570 используется на одном компьютере, второй на другом. Настраиваем OPC на обоих компьютерах, причем оба сервера должны видеть друг друга и помечать другого как "мастер". Но мне обращаться к ним не надо, поэтому в конфигурацию сервера я их не включаю. Адреса серверов естественно разные. Во-вторых, создавая группу в OPC клиенте я вижу, что чтение тегов ведется, как и обсуждалось ранее, пакетами и их updaterate соблюдается. А вот запись в контроллер, занимает гораздо больше времени. Причем запись OPC сервер производит тогда, когда я реально записываю в SCADA значение в тег. Полагаю, что в PLCNET протоколе нет функции записи группы тегов. Передается адрес каждого тега и его значение. Пробовал переместить сетевые переменные в Ultralogik 32 в один блок, так чтобы все переменные на запись находились друг за другом. Но чуда не случилось. Интересно, так и должно быть? Что скажет vel? |
|
С уважением, mrv
|
|
Ответить | Страница <123> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |