Настройка Formula Node с лицевой панели

Обсуждение, связанное с разработкой ПО верхнего уровня

Настройка Formula Node с лицевой панели

Postby Freeeliffe on 22 Sep 2017, 09:01

Здравствуйте, уважаемые форумчане!
Подскажите, возможно ли конфигурировать функцию Formula Node с лицевой панели: ввести текст формулы расчета, наименования входов и выходов? Хотя бы текст формулы.
Функции Formula Parsing не подходят, так как не могут рассчитывать сразу массивы, а поэлеменный расчет больших массивов сильно тормозит цикл расчета (либо я не до разобрался).
Freeeliffe
interested
interested
 
Posts: 3
Joined: 14 Jun 2017, 11:40
LabVIEW Version: 2016
Karma: 0

Re: Настройка Formula Node с лицевой панели

Postby Artem.spb on 22 Sep 2017, 09:56

я такого не знаю, и очень удивлюсь, если это реально сделать.
Любая работа с массивами это поэлементный разбор, вопрос только в том, делается это явно, или нет.
Кстати, бродят споры, но основное мнение в том, что fn медленнее работает, чем графический код. Как так у вас наоборот получается? покажите примеры.
Artem.spb
expert
expert
 
Posts: 1428
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 246
CLD hardware I/O VIP freelance

Re: Настройка Formula Node с лицевой панели

Postby Freeeliffe on 22 Sep 2017, 11:31

На счет графического кода или FN не буду спорить. Скажу лишь, что прикидывал расчет 5 формул (понимаю, что смешно, но это ж прикидка) идентичных массивов как графическим кодом (сразу всего массива), так и FN (поэлементно), скорость работы циклов в обоих случаях (пока) не показала какого либо ощутимого замедления, по сравнению с применением Formula Parsing, которая уже при такой нагрузке дает замедления в десятые доли секунд.

Ну да не в этом суть, а в том, что мне нужна возможность построения формулы с лицевой панели и которая затем будет производить вычисления без лишних действий, пожирающих ресурсы. Если бы я мог ввести хотя бы формулу в FN, меня бы это устроило.
Полагаю, что это все же возможно: есть же функция Formula Express VI - в нее мы вводим формулу и можем выполнив Convert to SubVI получить подприбор, раскрыв который видим ту самую FN (поправьте, если не так), в которую введена наша формула с нашими же входами и выходами. Так как же из Express SubVI в нее попадает введенная формула? :think:
Freeeliffe
interested
interested
 
Posts: 3
Joined: 14 Jun 2017, 11:40
LabVIEW Version: 2016
Karma: 0

Re: Настройка Formula Node с лицевой панели

Postby IvanLis on 22 Sep 2017, 11:45

Freeeliffe wrote:Здравствуйте, уважаемые форумчане!
Подскажите, возможно ли конфигурировать функцию Formula Node с лицевой панели: ввести текст формулы расчета, наименования входов и выходов? Хотя бы текст формулы.
Функции Formula Parsing не подходят, так как не могут рассчитывать сразу массивы, а поэлеменный расчет больших массивов сильно тормозит цикл расчета (либо я не до разобрался).


Вы бы показали, что уже сделано и чего хотите достичь.
Возможно есть пути ускорения.
Например можно использовать Parse Formula Node для вычислений.
А можно забить туда формулу, а вычисления выполнять используя Eval Parsed Formula Node изменяя значения переменных.
Каждый элемент массива обрабатывается же по одному выражению.
User avatar
IvanLis
professor
professor
 
Posts: 4643
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 729
hardware VIP bloggers teachers

Re: Настройка Formula Node с лицевой панели

Postby dadreamer on 22 Sep 2017, 19:09

Freeeliffe wrote:Подскажите, возможно ли конфигурировать функцию Formula Node с лицевой панели: ввести текст формулы расчета, наименования входов и выходов? Хотя бы текст формулы.

Если в ран-тайме, то нельзя. Код в FN уже скомпилирован, и его не изменить. Но если очень хочется, то подобного можно достичь другими средствами. Вам надо смотреть в сторону внешних скриптовых движков, поддерживающих выполнение скриптов в ран-тайме. Например, в MathScript Node есть вот такие функции:
eval (MathScript RT Module Function)
evalscript (MathScript RT Module Function)
Executes a script, in the form of a string, at run time. This function allows you to specify a script to execute dynamically at run time; however, this function causes reduced performance and is not supported on RT targets.

Однако, узел MS довольно тормозной, даже по сравнению с FN. А эти функции, судя по описанию, будут работать ещё медленнее.
Также в :labview: можно подключать скрипты Python, там тоже есть похожий функционал. Как быстро будет работать - не скажу, не пробовал.
Существует возможность интеграции движка C/C++ в :labview: для выполнения скриптов: Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting.

Хотя, у меня есть сомнения, что это вообще вам нужно. В :labview: есть множество инструментов для работы с массивами. И это делается проще и нагляднее, чем через скрипты. Да, и работает быстрее. Неужели ваши формулы будут постоянно меняться? Даже если так, то не должно быть проблемой накидать код для каждой формулы и переключать его при необходимости.
User avatar
dadreamer
professor
professor
 
Posts: 3150
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 802
I/O VIP vision internet

Re: Настройка Formula Node с лицевой панели

Postby Freeeliffe on 27 Sep 2017, 08:49

Спасибо большое, Друзья! IvanLis , вы мне очень помогли! :thank:
Parse Formula Node и Eval Parsed Formula Node очень быстро считает сразу целые массивы формул!
Сам я сначала по неопытности пытался использовать функции Substitude Variables и Eval Formula String предварительно приспособив их для вычисления массивов получаемых данных, в итоге получались дикие цепочки, даже страшно смотреть на них, цикл расчета просто умирал)
Спасибо большое, что направили меня на путь истинный, все получается очень красиво и экономно!)
Freeeliffe
interested
interested
 
Posts: 3
Joined: 14 Jun 2017, 11:40
LabVIEW Version: 2016
Karma: 0


Return to Лицевая панель

Who is online

Users browsing this forum: No registered users and 3 guests

cron