OPC Data Socket чтение и запись одновременно
-
- beginner
- Сообщения: 12
- Зарегистрирован: 14 ноя 2013, 18:26
- Версия LabVIEW: 2011;2013
- Контактная информация:
OPC Data Socket чтение и запись одновременно
ситуация следующая. Есть две vi одна читает из одного OPC сервера, другая записывает во второй OPC сервер. При независимом запуске они работают, если запускать вместе или последовательно- то либо чтение либо запись не работает. Пробовал Выставить при открытии DataSocket чтение -запись, а сами теги в OPC серверах тоже сделал чтение-запись. Все тоже самое- по отдельности работает - вместе нет!!!! Такое впечатление что DataSocket не может одновременно и читать и писать даже в разные теги, в один тег не пробовал и читать и писать.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: OPC Data Socket чтение и запись одновременно
Ищете, какая из функций, хранящая локальные переменные между вызовами (это может быть неинициализированные сдвиговые регистры, фидбаки и пр), у вас вызывается и в одной и в другой VI, и делаете ее реентрантной.
-
- beginner
- Сообщения: 12
- Зарегистрирован: 14 ноя 2013, 18:26
- Версия LabVIEW: 2011;2013
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
решил проблему - путем отказа от DataSocket, чтение и запись произвожу через shared variables напрямую в OPC без IO servera.
В примерах этого не нашел - наковырял сам- все работает.
В примерах этого не нашел - наковырял сам- все работает.
-
- beginner
- Сообщения: 12
- Зарегистрирован: 14 ноя 2013, 18:26
- Версия LabVIEW: 2011;2013
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
из поддержки 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
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
-
- beginner
- Сообщения: 17
- Зарегистрирован: 07 май 2013, 23:27
- Версия LabVIEW: 2015
- Откуда: Bielefeld
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
Добрый день всем. По-поводу DataSocket есть вопрос. Я соеденил два компа на гигабитной сетке (crossover), оба вин7. На одном запустил DataSocketserver от NI, на другом считываю значения. Сервер получает данные от рандом генератора с периодом 1 мс. На другом компе значение отображаются на иникаторе, но смена значений идет значительно медленнее, период где-то 100 мс. Это я сделал для теста. В техническом задании стоит, что на приемник будут сыпаться данные 5 мегабит/с. Получается я писать эти данные без потерь в реале не имею возможности? Перерыл интернет- везде стоит, что датасок обеспечивает скорость передачи чуть-чуть меньше tcp/ip, Андрей Дмитриев в своем посте писал, что на гигабитной сетке можно получить до 60 мегабайт/с. На обоих Виндах ничего кроме не запужено, компы дуалкор 2,7 Ггц, пиоритет Лабвиев поставил на максимальный. Кто-нибудь может это объяснить- в чем засада?
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: OPC Data Socket чтение и запись одновременно
Почему DataSocket?
Lossless Communication with Network Streams: Components, Architecture and Performance
http://www.ni.com/white-paper/12267/en/
Lossless Communication with Network Streams: Components, Architecture and Performance
http://www.ni.com/white-paper/12267/en/
-
- beginner
- Сообщения: 17
- Зарегистрирован: 07 май 2013, 23:27
- Версия LabVIEW: 2015
- Откуда: Bielefeld
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
Добрый день Bleckman. Разработчик прибора (ОС Linux) организовал Datasocket OPC для передачи данных. Я не хочу разработчику ставить условия, так как это затормозит весь проект, он (разработчик) и так уже опаздывает со сроками на 2 месяца. Де-факто- останется Datasocket. Всё-таки меня интересует, почему я получаю скорость намного ниже, чем теоретически возможно и как бы я мог проконтроллировать, где вставлены тормоза- на клиенте, сервер или сам виндовс тормозит.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 07 май 2013, 23:27
- Версия LabVIEW: 2015
- Откуда: Bielefeld
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
Небольшое дополнение. Я на серверной машине отправляю 20000 пакетов (2 байта) на клиенте получаю переменно от 4000 до 6000, около 3/4 пакетов теряются.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: OPC Data Socket чтение и запись одновременно
olib35, На каждое обновление значения приходится как минимум 1 TCP пакет (с подтверждением). Что такое пинг и что он означает, надеюсь, вам известно. Socket TCP не может выполняться бесконечно быстро даже при низкоуровневых операциях типа DataSocket. Вам действительно необходимо передавать каждый отсчет отдельно??? Не хотите передавать вместо одного отсчета пакет из N отсчетов? Естественно, тип данных меняется на массив.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 07 май 2013, 23:27
- Версия LabVIEW: 2015
- Откуда: Bielefeld
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
Приветствую Вас Borjomy_1. Данные будут передаваться именно массивами по 250 2-х байтовых значений, но тактовая чатота 5 мбит/с. Если я правильно считаю то 5мбит / (250значений х 16бит) получается сменна данных мозможна со скоростью 1250 раз в секунду, откидываю служебную информация при передаче, округляю до 1000 пакетов по 500 байт в секунду. Я пытался протестировать с 2-мя байтами и у меня уже идет потеря 3/4 информации. Мне бы хотя бы узнать направление поисков.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: OPC Data Socket чтение и запись одновременно
olib35, Во-первых ничего не мешает вам сформировать пакеты размером по полкилобайта и отправлять их раз по 1 мс. Вы сразу выясните возможности. скиньте тестовые VI, посмотрим. Как вы сконфигурировали переменную?
Во-вторых, я не понимаю, в чем сложность заменить DataSocket на Network Stream. Это работа на полчаса.
Во-вторых, я не понимаю, в чем сложность заменить DataSocket на Network Stream. Это работа на полчаса.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: OPC Data Socket чтение и запись одновременно
Смущает терминология Datasocket OPC.olib35 писал(а):... Разработчик прибора (ОС Linux) организовал Datasocket OPC для передачи данных...
Как я понимаю должно быть что то одно: или NI DataSocket Server или какой-то OPC Server for Linux.
В обоих случаях посмотрите настройки буфера как на серверной стороне, так и на стороне клиента.
Если данные передаются для мониторинга, то передавать каждый пакет (500 байт) не обязательно. Можно накапливать данные (например за одну секунду) и записывать их на сервер за один раз.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: OPC Data Socket чтение и запись одновременно
да, и OPC на такие скорости не рассчитан. Его максимум - десятки миллисекунд. OPC предназначен для обмена данными в АСУТП второго уровня и выше.
Если обмен идет между программами на разных платформах, надежнее всего использовать прямое TCP соединение. Вот тут точно можно быть уверенным в скорости обмена.
Если обмен идет между программами на разных платформах, надежнее всего использовать прямое TCP соединение. Вот тут точно можно быть уверенным в скорости обмена.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 07 май 2013, 23:27
- Версия LabVIEW: 2015
- Откуда: Bielefeld
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
Уважаемые Blackman и Borjomy_1. Благодарю Вас за интерес к теме. Еще хочу уточнить, что Датасокет будет организован на linux, но я пока не имею хардваре от разработчика, мне известен только протокол обмена, поэтому попытался симулировать коммуникацию на двух Виндовс компютерах.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 07 май 2013, 23:27
- Версия LabVIEW: 2015
- Откуда: Bielefeld
- Контактная информация:
Re: OPC Data Socket чтение и запись одновременно
Добрый день. Вот, в принципе, как я тестировал. Не уверен обязательно ли указывать размер буфера на сервере, но я на всякий случай сделал так. Запускаю сервер, запускаю клиента. Клиент ждет значений, запускаю генерацию 20000 значений.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 0 Ответы
- 926 Просмотры
-
Последнее сообщение Juri
-
- 0 Ответы
- 953 Просмотры
-
Последнее сообщение Juri
-
- 7 Ответы
- 2239 Просмотры
-
Последнее сообщение ujin1
-
- 0 Ответы
- 503 Просмотры
-
Последнее сообщение Juri
-
- 12 Ответы
- 600 Просмотры
-
Последнее сообщение Sergey Puzanov