Всем привет
В проекте есть 12 переменных Sharied Variable через них передается массивы данных.
В какой-то момент времени происходит "затормаживание" данных.
То есть данные через переменную перестают приходить в программу.
Вопрос почему это может происходить и как от этого избавиться?
Спасибо.
Sharied Variable
- JohnChaban
- leader
- Сообщения: 659
- Зарегистрирован: 18 фев 2010, 13:26
- Версия LabVIEW: 2015,2016
- Откуда: Город Сосновый Бор Ленинградская Область
- Контактная информация:
-
Vasiliy Baev
- leader
- Сообщения: 537
- Зарегистрирован: 31 окт 2011, 09:02
- Награды: 4
- Версия LabVIEW: 2019
- Откуда: Санкт-Петербург
- Благодарил (а): 7 раз
- Поблагодарили: 8 раз
- Контактная информация:
- JohnChaban
- leader
- Сообщения: 659
- Зарегистрирован: 18 фев 2010, 13:26
- Версия LabVIEW: 2015,2016
- Откуда: Город Сосновый Бор Ленинградская Область
- Контактная информация:
Re: Sharied Variable
А какой вариант преподчительней использовать 1 или второй смотри рисунокVasa писал(а):Покажите нам циклы чтения и публикации переменных.
Есть ли разница в том что использовать Sharied переменныую как подприбор или считывать данные с неё в массив Variable1 или Array2
-
Vasiliy Baev
- leader
- Сообщения: 537
- Зарегистрирован: 31 окт 2011, 09:02
- Награды: 4
- Версия LabVIEW: 2019
- Откуда: Санкт-Петербург
- Благодарил (а): 7 раз
- Поблагодарили: 8 раз
- Контактная информация:
Re: Sharied Variable
JohnChaban, мое мнение - использовать только первый вариант.
Доводы в пользу первого:
1. наглядность и легкость чтения. Так как большинство программистов в
стараются беречь место на блок диаграмме, то опция View As Icon отключена у многих. В миниатюре на иконке нету значка, говорящего о том, что Вы используете Data Binding и следовательно догадаться об использовании оного очень сложно.
2. экономия ресурсов. Переменные, которые используют Data Binding обновляются всегда (вне зависимости находятся они в цикле или нет) и обновляются со скоростью публикации данных в сети (Напомню, что библиотека SV публикуется в сеть одновременно, то есть с одинаковой частотой обновляются все переменные библиотеки в независимости с какой частой вы пишите в эти переменные).
Чтобы убедиться создайте простой пример: VI №1 цикл 250ms пишем Random Number в Sharied Variable. VI №2 цикл 2000ms читаем первым способом переменную и добавляем эту же переменную, использую Data Binding (Индикатор можете расположить как в цикле, так и за его пределами). Мы увидим что в 1 случае индикатор обновляется каждые 2 с, а во втором скачет с большой частотой.
Я не читал литературу про Data Binding, описанное выше из личного опыта. Глубоко в сторону DB я не копал, возможно их как-то можно настроить...
Доводы в пользу первого:
1. наглядность и легкость чтения. Так как большинство программистов в

2. экономия ресурсов. Переменные, которые используют Data Binding обновляются всегда (вне зависимости находятся они в цикле или нет) и обновляются со скоростью публикации данных в сети (Напомню, что библиотека SV публикуется в сеть одновременно, то есть с одинаковой частотой обновляются все переменные библиотеки в независимости с какой частой вы пишите в эти переменные).
Чтобы убедиться создайте простой пример: VI №1 цикл 250ms пишем Random Number в Sharied Variable. VI №2 цикл 2000ms читаем первым способом переменную и добавляем эту же переменную, использую Data Binding (Индикатор можете расположить как в цикле, так и за его пределами). Мы увидим что в 1 случае индикатор обновляется каждые 2 с, а во втором скачет с большой частотой.
Я не читал литературу про Data Binding, описанное выше из личного опыта. Глубоко в сторону DB я не копал, возможно их как-то можно настроить...
- JohnChaban
- leader
- Сообщения: 659
- Зарегистрирован: 18 фев 2010, 13:26
- Версия LabVIEW: 2015,2016
- Откуда: Город Сосновый Бор Ленинградская Область
- Контактная информация:
-
Vasiliy Baev
- leader
- Сообщения: 537
- Зарегистрирован: 31 окт 2011, 09:02
- Награды: 4
- Версия LabVIEW: 2019
- Откуда: Санкт-Петербург
- Благодарил (а): 7 раз
- Поблагодарили: 8 раз
- Контактная информация:
Re: Sharied Variable
JohnChaban, на этот вопрос я Вам ответа не дам, тк не изучал глубоко данный вопрос.
Для себя выделил одно очень полезное свойство использования Data binding - изменения состояния контрола/индикатора на всех устройствах, которые обращаются к одной переменной библиотеки. К примеру есть 2 пульта для управления каким-либо оборудованием, на обоих пультах есть кнопка, имеющая 2 состояния. Нажав кнопку на одном из пультов индикатор кнопки на обоих пультах измениться.
Рекомендую поискать ответ в описаниях SV.
Для себя выделил одно очень полезное свойство использования Data binding - изменения состояния контрола/индикатора на всех устройствах, которые обращаются к одной переменной библиотеки. К примеру есть 2 пульта для управления каким-либо оборудованием, на обоих пультах есть кнопка, имеющая 2 состояния. Нажав кнопку на одном из пультов индикатор кнопки на обоих пультах измениться.
Рекомендую поискать ответ в описаниях SV.
- JohnChaban
- leader
- Сообщения: 659
- Зарегистрирован: 18 фев 2010, 13:26
- Версия LabVIEW: 2015,2016
- Откуда: Город Сосновый Бор Ленинградская Область
- Контактная информация:
Re: Sharied Variable
Почитал SVE не понятно пока.
Склоняюсь что через data binding лучше.
Просто мне нужно объяснить человеку чем лучше например data binding программного способа или наоборот?
Склоняюсь что через data binding лучше.
Просто мне нужно объяснить человеку чем лучше например data binding программного способа или наоборот?
- Juri
- I/O
- Сообщения: 262
- Зарегистрирован: 19 апр 2017, 23:06
- Версия LabVIEW: 2021
- Благодарил (а): 13 раз
- Поблагодарили: 6 раз
Re: Sharied Variable
Возможно ли забиндить программно произвольный индикатор, который ранее не подключался через "data binding"?
Если изначально индикатор не имел бинда, то при попытке записи свойства Data binding -> Path возникает ошибка "LabVIEW: (Hex 0x43F) There is no DataSocket information available for the object"
Для обхода ошибки я просто прописываю пустой путь в нужном индикаторе как на картинке. И потом в процессе исполнения подставляю путь.
Если изначально индикатор не имел бинда, то при попытке записи свойства Data binding -> Path возникает ошибка "LabVIEW: (Hex 0x43F) There is no DataSocket information available for the object"
Для обхода ошибки я просто прописываю пустой путь в нужном индикаторе как на картинке. И потом в процессе исполнения подставляю путь.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 1 Ответы
- 140 Просмотры
-
Последнее сообщение Artem.spb