OPC Data Socket чтение и запись одновременно

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
sergrlager
beginner
beginner
Сообщения: 12
Зарегистрирован: 14 ноя 2013, 18:26
Версия LabVIEW: 2011;2013
Контактная информация:

OPC Data Socket чтение и запись одновременно

Сообщение sergrlager »

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

Activity Professionalism Silver
doctor
doctor
Сообщения: 2206
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: OPC Data Socket чтение и запись одновременно

Сообщение Borjomy_1 »

Ищете, какая из функций, хранящая локальные переменные между вызовами (это может быть неинициализированные сдвиговые регистры, фидбаки и пр), у вас вызывается и в одной и в другой VI, и делаете ее реентрантной.
sergrlager
beginner
beginner
Сообщения: 12
Зарегистрирован: 14 ноя 2013, 18:26
Версия LabVIEW: 2011;2013
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение sergrlager »

решил проблему - путем отказа от DataSocket, чтение и запись произвожу через shared variables напрямую в OPC без IO servera.
В примерах этого не нашел - наковырял сам- все работает.
sergrlager
beginner
beginner
Сообщения: 12
Зарегистрирован: 14 ноя 2013, 18:26
Версия LabVIEW: 2011;2013
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение sergrlager »

из поддержки Ni написали следующее (работаю как раз с массивами данных, в общем Data Socket -not good:))))))

1. на что необходимо обратить внимание, так это что для каждого OPC сервера необходимо иметь свое соединение Data Socket
http://digital.ni.com/public.nsf/allkb/ ... enDocument
http://digital.ni.com/public.nsf/allkb/ ... enDocument
2.если вы работаете с массивами то одновременно чтение и запись не возможно
http://digital.ni.com/public.nsf/allkb/ ... enDocument

Так же есть возможность одновременно писать и читать данные через data socket От нескольких клиентов (но в данном случае - скорее всего один opc сервер и один data socket)
http://digital.ni.com/public.nsf/allkb/ ... enDocument

Рекомендую вам посмотреть примеры (ниже) на одновременное считывание и запись.
http://digital.ni.com/public.nsf/allkb/ ... enDocument
olib35
beginner
beginner
Сообщения: 17
Зарегистрирован: 07 май 2013, 23:27
Версия LabVIEW: 2015
Откуда: Bielefeld
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение olib35 »

Добрый день всем. По-поводу DataSocket есть вопрос. Я соеденил два компа на гигабитной сетке (crossover), оба вин7. На одном запустил DataSocketserver от NI, на другом считываю значения. Сервер получает данные от рандом генератора с периодом 1 мс. На другом компе значение отображаются на иникаторе, но смена значений идет значительно медленнее, период где-то 100 мс. Это я сделал для теста. В техническом задании стоит, что на приемник будут сыпаться данные 5 мегабит/с. Получается я писать эти данные без потерь в реале не имею возможности? Перерыл интернет- везде стоит, что датасок обеспечивает скорость передачи чуть-чуть меньше tcp/ip, Андрей Дмитриев в своем посте писал, что на гигабитной сетке можно получить до 60 мегабайт/с. На обоих Виндах ничего кроме :labview: не запужено, компы дуалкор 2,7 Ггц, пиоритет Лабвиев поставил на максимальный. Кто-нибудь может это объяснить- в чем засада?
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: OPC Data Socket чтение и запись одновременно

Сообщение Blackman »

Почему DataSocket?
Lossless Communication with Network Streams: Components, Architecture and Performance
http://www.ni.com/white-paper/12267/en/
olib35
beginner
beginner
Сообщения: 17
Зарегистрирован: 07 май 2013, 23:27
Версия LabVIEW: 2015
Откуда: Bielefeld
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение olib35 »

Добрый день Bleckman. Разработчик прибора (ОС Linux) организовал Datasocket OPC для передачи данных. Я не хочу разработчику ставить условия, так как это затормозит весь проект, он (разработчик) и так уже опаздывает со сроками на 2 месяца. Де-факто- останется Datasocket. Всё-таки меня интересует, почему я получаю скорость намного ниже, чем теоретически возможно и как бы я мог проконтроллировать, где вставлены тормоза- на клиенте, сервер или сам виндовс тормозит. :dntknw:
olib35
beginner
beginner
Сообщения: 17
Зарегистрирован: 07 май 2013, 23:27
Версия LabVIEW: 2015
Откуда: Bielefeld
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение olib35 »

Небольшое дополнение. Я на серверной машине отправляю 20000 пакетов (2 байта) на клиенте получаю переменно от 4000 до 6000, около 3/4 пакетов теряются. :think:
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2206
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: OPC Data Socket чтение и запись одновременно

Сообщение Borjomy_1 »

olib35, На каждое обновление значения приходится как минимум 1 TCP пакет (с подтверждением). Что такое пинг и что он означает, надеюсь, вам известно. Socket TCP не может выполняться бесконечно быстро даже при низкоуровневых операциях типа DataSocket. Вам действительно необходимо передавать каждый отсчет отдельно??? Не хотите передавать вместо одного отсчета пакет из N отсчетов? Естественно, тип данных меняется на массив.
olib35
beginner
beginner
Сообщения: 17
Зарегистрирован: 07 май 2013, 23:27
Версия LabVIEW: 2015
Откуда: Bielefeld
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение olib35 »

Приветствую Вас Borjomy_1. Данные будут передаваться именно массивами по 250 2-х байтовых значений, но тактовая чатота 5 мбит/с. Если я правильно считаю то 5мбит / (250значений х 16бит) получается сменна данных мозможна со скоростью 1250 раз в секунду, откидываю служебную информация при передаче, округляю до 1000 пакетов по 500 байт в секунду. Я пытался протестировать с 2-мя байтами и у меня уже идет потеря 3/4 информации. Мне бы хотя бы узнать направление поисков.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2206
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: OPC Data Socket чтение и запись одновременно

Сообщение Borjomy_1 »

olib35, Во-первых ничего не мешает вам сформировать пакеты размером по полкилобайта и отправлять их раз по 1 мс. Вы сразу выясните возможности. скиньте тестовые VI, посмотрим. Как вы сконфигурировали переменную?
Во-вторых, я не понимаю, в чем сложность заменить DataSocket на Network Stream. Это работа на полчаса.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: OPC Data Socket чтение и запись одновременно

Сообщение Blackman »

olib35 писал(а):... Разработчик прибора (ОС Linux) организовал Datasocket OPC для передачи данных...
Смущает терминология Datasocket OPC.
Как я понимаю должно быть что то одно: или NI DataSocket Server или какой-то OPC Server for Linux.
В обоих случаях посмотрите настройки буфера как на серверной стороне, так и на стороне клиента.
Если данные передаются для мониторинга, то передавать каждый пакет (500 байт) не обязательно. Можно накапливать данные (например за одну секунду) и записывать их на сервер за один раз.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2206
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: OPC Data Socket чтение и запись одновременно

Сообщение Borjomy_1 »

да, и OPC на такие скорости не рассчитан. Его максимум - десятки миллисекунд. OPC предназначен для обмена данными в АСУТП второго уровня и выше.
Если обмен идет между программами на разных платформах, надежнее всего использовать прямое TCP соединение. Вот тут точно можно быть уверенным в скорости обмена.
olib35
beginner
beginner
Сообщения: 17
Зарегистрирован: 07 май 2013, 23:27
Версия LabVIEW: 2015
Откуда: Bielefeld
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение olib35 »

Уважаемые Blackman и Borjomy_1. Благодарю Вас за интерес к теме. Еще хочу уточнить, что Датасокет будет организован на linux, но я пока не имею хардваре от разработчика, мне известен только протокол обмена, поэтому попытался симулировать коммуникацию на двух Виндовс компютерах.
olib35
beginner
beginner
Сообщения: 17
Зарегистрирован: 07 май 2013, 23:27
Версия LabVIEW: 2015
Откуда: Bielefeld
Контактная информация:

Re: OPC Data Socket чтение и запись одновременно

Сообщение olib35 »

Добрый день. Вот, в принципе, как я тестировал. Не уверен обязательно ли указывать размер буфера на сервере, но я на всякий случай сделал так. Запускаю сервер, запускаю клиента. Клиент ждет значений, запускаю генерацию 20000 значений.
Вложения
Server.vi
(14.78 КБ) 193 скачивания
Client.vi
(11.12 КБ) 203 скачивания
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»