Советы по программированию на LabVIEW

Простейшие вопросы в области инженерной разработки
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Репутация: 0
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Советы по программированию на LabVIEW

Сообщение Eugen Graf »

Постараюсь в этой теме опубликовать советы начинающим, а может быть даже и продвинутым программистам. Сразу говорю что они не являются доктриной, но могут помочь избежать частых ошибок а так же спланировать ход действий при реализации проекта.
Если у вас возникнут вопросы, вы не согласны с каким либо пунктом или же вы хотите добавить в список что нибудь своё, то обсуждаем это здесь.


1. Старайтесь умещать блок диаграмму виртуального инструмента в размер экрана, а лучше ещё меньше. Создавайте подприборы, это поможет быстрее найти ошибки в программе и избежания редундантности кода. Ведь один и тот же подприбор можно использовать в программе много раз.

OneDesktop.PNG


2. Используйте кластеры. Блок диаграммы с использованием кластеров "удобочитаемы", помогают при поиске ошибок в программе, уменьшают количество соединений, входов и выходов подприборов.

Cluster.PNG
Cluster.PNG (2.37 КБ) 45479 просмотров


3. Не пытайтесь перепрограммировать код, написаный на другом языке программирования, в LabVIEW один к одному. Такие программы нерационально используют возможности LabVIEW, так как придуманы для другого языка. Лучше почитайте книги/уроки и изучите основы программирования на LabVIEW.

C++ToLV.PNG


4. Очень важно понять самый главный принцип программирования на LabVIEW - это "Data Flow". То есть любой подприбор и узел в блок диаграмме начинает своё выполнение только тогда, когда на всех соединённых входах есть какое либо значение. Для сравнения: во многих текстовых языках следующая строка кода выполняется только тогда, когда выполнена предыдущая независимо от того какие значения имеют параметры функции. Это и является главным отличием текстовых языков программирования от LabVIEW.

DataFlow.PNG


5. Если вы не укажите зависимость/последовательность одной части диаграммы от другой например соединив эти части между собой проводом, то части будут выполнятся, что называется, почти параллельно и независимо друг от друга. Не думайте что часть кода, помещённая слева от другой части, но не соединённая с ней выполнится вперёд. А иногда даже и соединённые части кода выполняются не так как задумано. Обязательно узнайте что такое Data Flow, а так же Race Conditions, во избежании непонятных глюков в вашей программе.

DataFlow2.PNG
DataFlow2.PNG (1.87 КБ) 45467 просмотров


6. Ведите соединения ровно, старайтесь избегать пересечения соединений и не прятать соединения под другие элементы блок диаграммы.

DirectConnections.PNG


7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.

ConnectorPane.PNG
ConnectorPane.PNG (3.73 КБ) 45458 просмотров


8. Прорисовывайте иконки подприборов. Если вас не устраивает редактор иконок встроенный в LabVIEW загляните сюда, должно понравится.

Icons.PNG


9. Комментируйте блок диаграмму. Для этого всего лишь надо кликнуть мышкой два раза в любое место блок диаграммы и написать пару слов-пояснений.

Comments.PNG
Comments.PNG (6.9 КБ) 45455 просмотров


10. Старайтесь не использовать какие либо переменные для временного сохранения а тем более для передачи данных в параллельные процессы. Для первого существуют сдвиговые регистры, а для второго палитра синхронизации.

Synch.PNG
Synch.PNG (10.07 КБ) 45439 просмотров


11. Избегайте использования Express VIs в программах. Рано или поздно вы захотите добавить какую нибудь фичу, а Express VIs окажутся не настолько гибкими как надо и придётся многое переделывать.

Express.PNG
Express.PNG (5.41 КБ) 45461 просмотр


12. Закрывайте все открытые референсы, файлы, порты и т.д., если референсированный объект далее в программе не используется.

Close.PNG
Close.PNG (2.46 КБ) 45461 просмотр


13. Давайте приборам вменяемые имена, указывайте их назначение и принадлежность к библиотеке. Создавайте виртуальные папки в проектном браузере для группировки приборов.

Names.PNG

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

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Репутация: 0
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Korotenko »

eg писал(а):7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
НИКОГДА не следовал этому правилу

1. использую всегда по минимуму выводов, если понадобятся ещё - ДОБАВЛЮ
2. кластер ошибки? за 1,5 месяца понадобилась только при связи с rs232, но сейчас наверно ещё понадобится для проверки наличия файла в коталоге, а так - НИГДЕ не нужно.
I work in LabVIEW 2009 !

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

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Репутация: 0
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Korotenko »

Советую всегда применять Case Structure, по принципу Enable/Disable, т.е. если не пользуетесть блоком обработки клавиатуры - ЗНАЧИТ ПУСТЬ ВСЕ ЕГО ПРИБОРЫ МОЛЧАТ, просто заведите через OR сигналы от кнопок и направьте в Case Structure.
1.GIF
I work in LabVIEW 2009 !

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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Репутация: 0
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Eugen Graf »

Коротенко Алексей писал(а):
eg писал(а):7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
НИКОГДА не следовал этому правилу

1. использую всегда по минимуму выводов, если понадобятся ещё - ДОБАВЛЮ

В принципе правильно, но соединения будут кривыми. А желательно, что бы соединения были ровными, не пересекались и чтобы блоковая диаграмма была понятна и ментально и визуально.


Коротенко Алексей писал(а):2. кластер ошибки? за 1,5 месяца понадобилась только при связи с rs232, но сейчас наверно ещё понадобится для проверки наличия файла в коталоге, а так - НИГДЕ не нужно.

Очень жаль, но конечно хозяин-барин. С кластером ошибки можно такое натворить...

За отклик тебе большое спасибо.

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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Репутация: 0
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Eugen Graf »

Коротенко Алексей писал(а):Советую всегда применять Case Structure, по принципу Enable/Disable, т.е. если не пользуетесть блоком обработки клавиатуры - ЗНАЧИТ ПУСТЬ ВСЕ ЕГО ПРИБОРЫ МОЛЧАТ, просто заведите через OR сигналы от кнопок и направьте в Case Structure.
1.GIF


Поясни пожалуйста. Мне не очень понятно. В каком случае ты применяешь этот приём?
Ещё есть Diagramm Disable Structure. Это с ней не связано?

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

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Репутация: 0
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Korotenko »

eg писал(а): но соединения будут кривыми.

почему кривые? как кривые? смотри -> что имеено -кривое?
1.GIF


eg писал(а):С кластером ошибки можно такое натворить...

что именно натворить?
пока я заню что он показывает мне что не пришёл ответ от прибора через рс232, и ещё что нет фала в папке.
I work in LabVIEW 2009 !

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

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Репутация: 0
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Korotenko »

eg писал(а):
Коротенко Алексей писал(а):Советую всегда применять Case Structure, по принципу Enable/Disable,

Мне не очень понятно. В каком случае ты применяешь этот приём? Ещё есть Diagramm Disable Structure. Это с ней не связано?


Diagramm Disable Structure ещё не смотрел.
а мое применение Case Structure такое :
1.GIF

при fulse в обоих Case - пусто, т.е. ничего не задествется
если есть все условия - выполнится левый, (если нажму ВЗЯТЬ ДАННЫЕ)
правый выполнится - только если выполнится левый и нажму СОХРАНИТЬ,
если не хочу сохранять - потом ВОЗЬМУ другие данные и сохраню ИХ (т.е. новые)
I work in LabVIEW 2009 !

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

Activity
developer
developer
Сообщения: 286
Зарегистрирован: 25 июл 2008, 10:43
Награды: 1
Репутация: 0
Версия LabVIEW: 2009
Откуда: Россия, Владивосток
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Korotenko »

а ещё вот пример
С ОБОИХ ВХОДОВ
1.GIF
1.GIF (8.69 КБ) 43285 просмотров

С ОДНОГО
2.GIF
2.GIF (8.28 КБ) 43282 просмотра

С ДРУГОГО
3.GIF
3.GIF (8.31 КБ) 43290 просмотров

НИ С КАКОГО
4.GIF
4.GIF (3.87 КБ) 43271 просмотр


такой стиль работы примеется в микросхемах - буферах вместе с шиной данный подаётся сигнал "РАЗЕШЕНИЯ", если он TRUE то значения из буфера пеердадуться, иначе - потом возможно заменятся и там решай - передавать уже новые или нет :crazy:
I work in LabVIEW 2009 !

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

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Репутация: 0
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Forward »

eg писал(а):8. Прорисовывайте иконки подприборов. Если вас не устраивает редактор иконок встроенный в LabVIEW загляните сюда, должно понравится.

Для 8.6 этого редактора нет?

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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Репутация: 0
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Eugen Graf »

Тот что для 8.5 так же работает и для 8.6, я им пользуюсь в 8.6

Vya4ko
beginner
beginner
Сообщения: 49
Зарегистрирован: 02 мар 2009, 11:14
Репутация: 0
Версия LabVIEW: 8.6
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Vya4ko »

А можно по подробнее как вообще пользоваться Icon Editor'ом
Его нужно копировать куда-то или просто он нужен чтобы рисунок сделать если да то как его откопать потом
просто при запуске он мне ошибку выдыл и сказал в NI с обратиться
я новенький прошу прощения за вопрос
но оч интересно

и вообще клевая рубрика я вообще люблю всякие нестандартные фишки

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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Репутация: 0
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Eugen Graf »

Когда скачаешь, откроешь, там будет прибор-инсталлятор. Его нужно запустить, он сам должен положить всё куда надо.

Stkn
assistant
assistant
Сообщения: 127
Зарегистрирован: 25 янв 2009, 11:08
Репутация: 0
Версия LabVIEW: 2014

Re: Советы по программированию на LabVIEW

Сообщение Stkn »

Не знаю как в 8.6, а в 8.6.1 не получилось просто так установить Icon Editor 85_V2.2 и V2.1. Получилось только после того, как в файле Installation_lv_icon.vi заменил количество итераций в For Loop с 2 на 1 (прочитал в коментариях).

Аватара пользователя
Михаил23
adviser
adviser
Сообщения: 219
Зарегистрирован: 24 ноя 2008, 17:58
Репутация: 0
Версия LabVIEW: 2009
Откуда: Москва

Re: Советы по программированию на LabVIEW

Сообщение Михаил23 »

Может кто подскажит, где можно найти редактор иконок для LV8.6.1. А то указанная выше ссылка не работает.

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

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Репутация: 0
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Eugen Graf »

Да, на самом деле линк перенаправлен, удивительно, если есть интерес, я могу узнать об этом напрямую у разработчика. Он торчит на немецком форуме, работает на техасский НИ.

Ответить

Вернуться в «Для чайников»