Передача данных DVR vs Queue

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Artem.spb

Activity Автор
expert
expert
Сообщения: 1994
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 5 раз
Поблагодарили: 8 раз
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение Artem.spb »

ujin писал(а):
26 авг 2020, 14:32
Artem.spb писал(а):
26 авг 2020, 13:48
а как можно организовать читателя? не нашёл таких суперспособностей в этих узлах
правой кнопкой мыши на правом узле Add Data Value Reference Read / Write Element. (by right-clicking the border node on the right of the structure and selecting Allow Parallel Read-only Access.)
Эта магия недоступна на :labview: 15. :cry:
В 18 нашёл

Artem.spb

Activity Автор
expert
expert
Сообщения: 1994
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 5 раз
Поблагодарили: 8 раз
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение Artem.spb »

Borjomy_1 писал(а):
26 авг 2020, 14:36
Код тестовый. На двух платформах работает одинаково, имеет высокую повторяемость.
даже в тестовом коде не стоит учить людей плохому :)
Две микросекунды на операцию простой записи одного дабла в массив сравните с 50 нс работы с массивом напрямую. Разница в 40 раз.
так вроде как DVR и не позиционируется как супер быстрый метод доступа. Они позиционируются как безопасный. Ну и ещё параллельный. За параллельность и приходится платить скоростью.
вот тут в разныц циклах массивы разные, а данные в DVR одни и те же.
dvr.png
А вот за конкретные цифры скоростей спасибо, буду иметь ввиду.

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1072
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение Kosist »

Странно, что даже NI сравнивает очереди и DVR. Как по мне, они имеют вообще разные предназначения, и DVR - просто способ передачи данных по ссылке, т.к. для :labview: "родным" является передача данных по значению. Т.е. это более подходит для "статических" данных, а не для потока данных. Если нужно передавать полученные массивы данных с устройств, то нужно выбирать между очередями, уведомлениями, CVT, и т.д. А если нужно в приложении иметь ссылку на доступных общий ресурс (например, ссылка на базу данных) в разных процессах, то ее можно "оформить" в DVR.
Кстати, рекомендую ознакомиться с отличной либой для таких целей - Extensible Session Framework (ESF).
Мы делили апельсин - много наших полегло...

ujin
user
user
Сообщения: 92
Зарегистрирован: 28 июл 2019, 13:16
Версия LabVIEW: 19
Благодарил (а): 2 раза
Поблагодарили: 3 раза

Re: Передача данных DVR vs Queue

Сообщение ujin »

Kosist писал(а):
27 авг 2020, 17:37
Странно, что даже NI сравнивает очереди и DVR. Как по мне, они имеют вообще разные предназначения
Немного можно развить тему про разные предназначения.
DVR предназначается для передачи тэговых данных (те прочитались или нет заменяются новыми) преимущественно одного ко многим. Усовершенствование FGV. Однако, как они называют в обучалке, кошмар для отладки, так как использование FGV можно легко отследить (Find Callers), а использование DVR очень сложно. Благодаря поддержке модели dataflow ссылку можно загнать в SubVi или методом Run VI или Call by Reference (call and forget) в фоновые VI и кто по этой ссылке что будет делать отследить можно в основном анализом либо при вызове показать Front Panel.
Один из способов Interprocess communication. В этом компоненте сравнивают с shared переменными. Они более универсальные, отслеживаемые. При снятии флага сетевая переменная работает практически так же быстро как и локальная переменная. Думаю все видели shared variable
В библиотеке MODBUS заменили FGV (видел в 8 версии) на DVR в 15 версии и может ранее. А там идет интенсивный обмен с общим пространством данных.
Очереди для передачи данных, потеря которых недопустима. Это уже другое предназначение. Хорошо использовать для накопления данных перед записью в базу, чтобы реже диск дергать.
Для Interprocess communication появились channels
channels.png
Универсальные каналы. Могут быть тэговыми, очередям, сообщениями. До них пока руки не доходят потестировать.
Последний раз редактировалось ujin 27 авг 2020, 19:56, всего редактировалось 1 раз.

Artem.spb

Activity Автор
expert
expert
Сообщения: 1994
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 5 раз
Поблагодарили: 8 раз
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение Artem.spb »

ujin писал(а):
27 авг 2020, 19:42
Для Interprocess communication появились channelschannels.png
по мне так это сомнительная идея - ломают концепцию потока данных. Видишь провод, думаешь что тут зависимость, а они параллельно работают...

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3529
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2020
Благодарил (а): 2 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение dadreamer »

ujin писал(а):
27 авг 2020, 19:42
Универсальные каналы. Могут быть тэговыми, очередям, сообщениями. До них пока руки не доходят потестировать.
Они ещё и медленнее классических инструментов. По этой причине я ни разу их не использовал в своих программах.
viewtopic.php?p=71025#p71025
Конечно, может в 20-й версии что-то и поменялось, надо будет проверить.

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1072
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение Kosist »

dadreamer писал(а):
27 авг 2020, 20:08
Конечно, может в 20-й версии что-то и поменялось, надо будет проверить.
"Под капотом" все те же очереди, т.е. скорость все равно не будет удовлетворительной для быстрой передачи данных...
Мы делили апельсин - много наших полегло...

Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3529
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2020
Благодарил (а): 2 раза
Поблагодарили: 9 раз
Контактная информация:

Re: Передача данных DVR vs Queue

Сообщение dadreamer »

Прогнал пример из той же темы на :labview: 2020 64 бита. Получились такие цифры.
Последовательное выполнение: канал - 815, очередь - 563.
Параллельное: канал - 1740, очередь - 1463.
Цифры 16 года:
dadreamer писал(а):
27 июл 2016, 17:52
такие цифры: канал - 869 мс, очередь - 506 мс. Это если по очереди их пускать. При одновременном запуске получается так: канал - 1735 мс, очередь - 1392 мс.
Короче, как было, так и осталось, ничего нового.

Ответить

Вернуться в «Модели программирования»