Страница 2 из 6

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 07:55
dadreamer
ladik писал(а):Кстати, вопрос к опытным коллегам: почему конструкция с третьей картинки выдаёт ошибку?
Изображение
Там написано. Установить значения по умолчанию для контролов и индикаторов можно только в IDE режиме, то есть вручную через ПКМ -> Make Current Value Default или через меню LabVIEW. Это связано с тем, что в ран-тайме панель скомпилирована и никакие изменения не могут быть внесены. Для установки default значений нужна перекомпиляция.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 08:06
ladik
dadreamer, всё понятно, спасибо!

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 08:35
dadreamer
Если не рассматривать очевидные решения посредством ini/xml и прочих промежуточных файлов, то есть ещё вот такое решение: http://www.originalcode.com/SavDef.htm Смысл в том, что SubVI вызывает метод Default Values:Make Current Default на главном :vi: , когда он уже отработал.

Прошу прощения, сразу не увидел:
ladik писал(а):Вот тут интересный способ http://www.originalcode.com/SavDef.htm, но не я его не проверял.
Я проверил на :labview: 2015 (32-bit) - всё работает чётко! :wink: Сохраняет и контролы, и индикаторы.

Исходники:

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 08:38
Artem.spb
Что ж вы усложнять любите :)
Зачем все эти "по умолчанию", когда можно контрол сделать входным значением, и при вызове подавать на его вход нужные параметры.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 08:53
dadreamer
Artem.spb писал(а):Что ж вы усложнять любите :)
Зачем все эти "по умолчанию", когда можно контрол сделать входным значением, и при вызове подавать на его вход нужные параметры.
По-моему, ТС хотел несколько иное...
DefectoMed писал(а):почему когда меняю параметры , они сбрасываются,при включении основной программы?
То есть, при выключении основной программы параметры сохранить, тогда при включении они не сбросятся на дефолтные (потому что будут считаны, например, из файла): http://labviewportal.org/viewtopic.php?p=64447#p64447

Усложнять ничего не хотим и желаем автору сделать всё как можно проще и элегантней. :)

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 14:00
Blackman
Можно сохранять в самом :vi: используя VI Tag or Object Tag Methods, как в :labview: Options... Dialog :vi:.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 19:36
dadreamer
Blackman писал(а):Можно сохранять в самом :vi: используя VI Tag or Object Tag Methods, как в :labview: Options... Dialog :vi:.
Как это сделать? Есть какой-то пример или мануал?..

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 21:46
Blackman
VI & Objects Methods Tаgs официальная библиотека начиная с 8.6. Должны быть и в Scripting. Там все интуитивно понятно. Была тема и видео на NI форум или LAVA. Где то был пример. Найду выложу.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 17 мар 2016, 23:29
Blackman
Сохранение значения контрола в Persistent VI Tag.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 18 мар 2016, 20:23
dadreamer
Blackman, интересная штука, посидел-поразбирался. При включённом скриптинге подобные узлы появляются, но они для GObject, имеют голубой окрас и при подключении к VI refnum работать не хотят. Чтобы получить доступ к аналогичным узлам для :vi: , нужно подключать private stuff. Тогда доступны методы из контекстного меню, а узлы будут коричневого цвета. Получается так, что тэги пишутся в сам :vi: в виде ресурса VITS (для скриптовых узлов это, должно быть, ресурсы FPTS и BDTS, судя по этой теме). В ресурс загоняется количество тэгов и по порядку для каждого тэга: длина имени, имя тэга, служебная инфа (?), type descriptor контрола, значение контрола, разделитель (нули). Естественно, пишутся только persistent тэги, и то лишь при сохранении :vi: (т.е., если установить тэг и закрыть :vi: без сохранения, то при новом открытии и чтении этого тэга не будет). Почему-то модификация :vi: звёздочкой не помечается и :labview: при закрытии ничего не говорит. Это, конечно, минус, т.к. легко забыть, что какие-то тэги были установлены для :vi: .
В экзшешнике методы работают, но толку от них там никакого, ибо save/load функции отсутствуют в lvrt. Складывается впечатление, что работа с тэгами предназначена в основном для работы в рамках запущенного экземпляра приложения (ну, и для скриптинга, если речь о голубых блоках), а не для постоянного хранения каких-то данных.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 19 мар 2016, 02:28
Blackman
Еще примеры + видео
https://decibel.ni.com/content/docs/DOC-15330

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 19 мар 2016, 11:49
Blackman
В экзшешнике методы работают, но толку от них там никакого,...
Использую как Dictionary или WORM, как VI Tags так и GObject Tags.

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 19 мар 2016, 13:14
dadreamer
Blackman писал(а):Еще примеры + видео
https://decibel.ni.com/content/docs/DOC-15330
Посмотрел, в общем, после вчерашних тестов нового для себя ничего не нашёл. Можно private узлы использовать, можно готовые блоки в C:\Program Files (x86)\National Instruments\LabVIEW 2015\vi.lib\UserTags\, разница только в префиксе user. в готовых :vi: . Не знаю, почему второй пример автор называет Inter-Process Communication. Там идёт обмен данными через ref'ы между двумя :vi: , а IPC предполагает обмен между процессами (т.е., EXE). Естественно, если проверить работу тэгов между двумя EXE, то ничего работать не будет, ибо области памяти разные будут.

И вот ещё чуть-чуть инфы:
- тэги появились в :labview: 6.1;
- для :labview: 8.0 и более поздних нужна опция SuperSecretPrivateSpecialStuff=True для активации скрытых пунктов меню; для более ранних версий опция другая - SuperPrivateScriptingFeatureVisible=True.
Blackman писал(а):Использую как Dictionary или WORM, как VI Tags так и GObject Tags.
Изображение

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 19 мар 2016, 14:13
Blackman
Не знаю, почему второй пример автор называет Inter-Process Communication. Там идёт обмен данными через ref'ы между двумя VI, а IPC предполагает обмен между процессами (т.е., EXE)
Various Inter-process Communication Methods:
This table lists various inter-process communication methods organized by scope and transfer type.
This list is not comprehensive, but it is beneficial to know about all of the listed methods.
Table List
Single-process shared variables
Local variables
Global variables
Network-published shared variables (single-element)
Network-published shared variables (multiple-element)
Functional global variables (FGV)
Single Element Queues (SEQ)
Data Value Reference (DVR)
Current Value Table (CVT)
Client CVT Communication (CCC)

Источник: LabVIEW Developer Education Day
https://decibel.ni.com/content/servlet/ ... iables.zip

Re: Симуляция сигнала в Labview по формуле.

Добавлено: 19 мар 2016, 15:09
dadreamer
Blackman, это общепризнанная терминология:
Inter-process communication (Wiki)
Interprocess Communications (Microsoft)
Inter-Application Communication (NI)
Всё остальное - собственное изобретение отдельных членов NI, например разделение на Inter-Processes и Inter-Target Data Communication, где Inter-Target - это обмен между несколькими физическими устройствами (по сети и т.д.), а всё остальное, включая обмен между потоками одного процесса - это Inter-Processes. Но для меня, как и для многих из тех, кто не только в :labview: программы пишет, такая терминология непривычна и сбивает с толку. Если речь о :labview: , то IPC (IAC) - это TCP, UDP, Network Streams, Shared Variables, CVT + функционал ОС (Pipes, Shared Memory и т.д.). А то, что позволяет обмениваться данными между потоками (параллельными циклами или :vi: в рамках одного процесса/экземпляра приложения) - это Inter-Thread Communication - Queues, Notifiers, Semaphores, Rendez-Vous, Occurences, DVR, локальные и глобальные переменные.