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

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы

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

Postby sergrlager on 28 Nov 2013, 10:34

ситуация следующая. Есть две vi одна читает из одного OPC сервера, другая записывает во второй OPC сервер. При независимом запуске они работают, если запускать вместе или последовательно- то либо чтение либо запись не работает. Пробовал Выставить при открытии DataSocket чтение -запись, а сами теги в OPC серверах тоже сделал чтение-запись. Все тоже самое- по отдельности работает - вместе нет!!!! Такое впечатление что DataSocket не может одновременно и читать и писать даже в разные теги, в один тег не пробовал и читать и писать.
sergrlager
beginner
beginner
 
Posts: 12
Joined: 14 Nov 2013, 18:26
LabVIEW Version: 2011;2013
Karma: 0

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

Postby Borjomy_1 on 28 Nov 2013, 14:25

Ищете, какая из функций, хранящая локальные переменные между вызовами (это может быть неинициализированные сдвиговые регистры, фидбаки и пр), у вас вызывается и в одной и в другой VI, и делаете ее реентрантной.
Borjomy_1
expert
expert
 
Posts: 1827
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby sergrlager on 29 Nov 2013, 12:56

решил проблему - путем отказа от DataSocket, чтение и запись произвожу через shared variables напрямую в OPC без IO servera.
В примерах этого не нашел - наковырял сам- все работает.
sergrlager
beginner
beginner
 
Posts: 12
Joined: 14 Nov 2013, 18:26
LabVIEW Version: 2011;2013
Karma: 0

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

Postby sergrlager on 29 Nov 2013, 12:58

из поддержки 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
sergrlager
beginner
beginner
 
Posts: 12
Joined: 14 Nov 2013, 18:26
LabVIEW Version: 2011;2013
Karma: 0

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

Postby olib35 on 01 Dec 2016, 09:43

Добрый день всем. По-поводу DataSocket есть вопрос. Я соеденил два компа на гигабитной сетке (crossover), оба вин7. На одном запустил DataSocketserver от NI, на другом считываю значения. Сервер получает данные от рандом генератора с периодом 1 мс. На другом компе значение отображаются на иникаторе, но смена значений идет значительно медленнее, период где-то 100 мс. Это я сделал для теста. В техническом задании стоит, что на приемник будут сыпаться данные 5 мегабит/с. Получается я писать эти данные без потерь в реале не имею возможности? Перерыл интернет- везде стоит, что датасок обеспечивает скорость передачи чуть-чуть меньше tcp/ip, Андрей Дмитриев в своем посте писал, что на гигабитной сетке можно получить до 60 мегабайт/с. На обоих Виндах ничего кроме :labview: не запужено, компы дуалкор 2,7 Ггц, пиоритет Лабвиев поставил на максимальный. Кто-нибудь может это объяснить- в чем засада?
olib35
beginner
beginner
 
Posts: 17
Joined: 07 May 2013, 23:27
Location: Bielefeld
LabVIEW Version: 2015
Karma: 0

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

Postby Blackman on 01 Dec 2016, 22:30

Почему DataSocket?
Lossless Communication with Network Streams: Components, Architecture and Performance
http://www.ni.com/white-paper/12267/en/
Blackman
leader
leader
 
Posts: 798
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 229
VIP

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

Postby olib35 on 02 Dec 2016, 09:46

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

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

Postby olib35 on 02 Dec 2016, 09:51

Небольшое дополнение. Я на серверной машине отправляю 20000 пакетов (2 байта) на клиенте получаю переменно от 4000 до 6000, около 3/4 пакетов теряются. :think:
olib35
beginner
beginner
 
Posts: 17
Joined: 07 May 2013, 23:27
Location: Bielefeld
LabVIEW Version: 2015
Karma: 0

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

Postby Borjomy_1 on 02 Dec 2016, 15:59

olib35, На каждое обновление значения приходится как минимум 1 TCP пакет (с подтверждением). Что такое пинг и что он означает, надеюсь, вам известно. Socket TCP не может выполняться бесконечно быстро даже при низкоуровневых операциях типа DataSocket. Вам действительно необходимо передавать каждый отсчет отдельно??? Не хотите передавать вместо одного отсчета пакет из N отсчетов? Естественно, тип данных меняется на массив.
Borjomy_1
expert
expert
 
Posts: 1827
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby olib35 on 03 Dec 2016, 23:15

Приветствую Вас Borjomy_1. Данные будут передаваться именно массивами по 250 2-х байтовых значений, но тактовая чатота 5 мбит/с. Если я правильно считаю то 5мбит / (250значений х 16бит) получается сменна данных мозможна со скоростью 1250 раз в секунду, откидываю служебную информация при передаче, округляю до 1000 пакетов по 500 байт в секунду. Я пытался протестировать с 2-мя байтами и у меня уже идет потеря 3/4 информации. Мне бы хотя бы узнать направление поисков.
olib35
beginner
beginner
 
Posts: 17
Joined: 07 May 2013, 23:27
Location: Bielefeld
LabVIEW Version: 2015
Karma: 0

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

Postby Borjomy_1 on 04 Dec 2016, 07:58

olib35, Во-первых ничего не мешает вам сформировать пакеты размером по полкилобайта и отправлять их раз по 1 мс. Вы сразу выясните возможности. скиньте тестовые VI, посмотрим. Как вы сконфигурировали переменную?
Во-вторых, я не понимаю, в чем сложность заменить DataSocket на Network Stream. Это работа на полчаса.
Borjomy_1
expert
expert
 
Posts: 1827
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby Blackman on 04 Dec 2016, 15:23

olib35 wrote:... Разработчик прибора (ОС Linux) организовал Datasocket OPC для передачи данных...

Смущает терминология Datasocket OPC.
Как я понимаю должно быть что то одно: или NI DataSocket Server или какой-то OPC Server for Linux.
В обоих случаях посмотрите настройки буфера как на серверной стороне, так и на стороне клиента.
Если данные передаются для мониторинга, то передавать каждый пакет (500 байт) не обязательно. Можно накапливать данные (например за одну секунду) и записывать их на сервер за один раз.
Blackman
leader
leader
 
Posts: 798
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 229
VIP

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

Postby Borjomy_1 on 04 Dec 2016, 18:39

да, и OPC на такие скорости не рассчитан. Его максимум - десятки миллисекунд. OPC предназначен для обмена данными в АСУТП второго уровня и выше.
Если обмен идет между программами на разных платформах, надежнее всего использовать прямое TCP соединение. Вот тут точно можно быть уверенным в скорости обмена.
Borjomy_1
expert
expert
 
Posts: 1827
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby olib35 on 04 Dec 2016, 23:30

Уважаемые Blackman и Borjomy_1. Благодарю Вас за интерес к теме. Еще хочу уточнить, что Датасокет будет организован на linux, но я пока не имею хардваре от разработчика, мне известен только протокол обмена, поэтому попытался симулировать коммуникацию на двух Виндовс компютерах.
olib35
beginner
beginner
 
Posts: 17
Joined: 07 May 2013, 23:27
Location: Bielefeld
LabVIEW Version: 2015
Karma: 0

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

Postby olib35 on 05 Dec 2016, 09:49

Добрый день. Вот, в принципе, как я тестировал. Не уверен обязательно ли указывать размер буфера на сервере, но я на всякий случай сделал так. Запускаю сервер, запускаю клиента. Клиент ждет значений, запускаю генерацию 20000 значений.
Attachments
Server.vi
(14.78 KiB) Downloaded 91 times
Client.vi
(11.12 KiB) Downloaded 102 times
olib35
beginner
beginner
 
Posts: 17
Joined: 07 May 2013, 23:27
Location: Bielefeld
LabVIEW Version: 2015
Karma: 0

Next

Return to Коммуникация с приборами

Who is online

Users browsing this forum: No registered users and 4 guests

cron