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

Простейшие вопросы в области инженерной разработки

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

Postby Eugen Graf on 06 Feb 2008, 21:51

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


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

OneDesktop.PNG


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

Cluster.PNG
Cluster.PNG (2.37 KiB) Viewed 30480 times


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 KiB) Viewed 30468 times


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

DirectConnections.PNG


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

ConnectorPane.PNG
ConnectorPane.PNG (3.73 KiB) Viewed 30459 times


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

Icons.PNG


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

Comments.PNG
Comments.PNG (6.9 KiB) Viewed 30456 times


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

Synch.PNG
Synch.PNG (10.07 KiB) Viewed 30440 times


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

Express.PNG
Express.PNG (5.41 KiB) Viewed 30462 times


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

Close.PNG
Close.PNG (2.46 KiB) Viewed 30462 times


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

Names.PNG
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

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

Postby Korotenko on 21 Aug 2008, 01:36

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

1. использую всегда по минимуму выводов, если понадобятся ещё - ДОБАВЛЮ
2. кластер ошибки? за 1,5 месяца понадобилась только при связи с rs232, но сейчас наверно ещё понадобится для проверки наличия файла в коталоге, а так - НИГДЕ не нужно.
I work in LabVIEW 2009 !
User avatar
Korotenko
developer
developer
 
Posts: 286
Joined: 25 Jul 2008, 10:43
Location: Россия, Владивосток
Medals: 1
Activity (1)
LabVIEW Version: 2009
Karma: 4
hardware

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

Postby Korotenko on 21 Aug 2008, 01:46

Советую всегда применять Case Structure, по принципу Enable/Disable, т.е. если не пользуетесть блоком обработки клавиатуры - ЗНАЧИТ ПУСТЬ ВСЕ ЕГО ПРИБОРЫ МОЛЧАТ, просто заведите через OR сигналы от кнопок и направьте в Case Structure.
1.GIF
I work in LabVIEW 2009 !
User avatar
Korotenko
developer
developer
 
Posts: 286
Joined: 25 Jul 2008, 10:43
Location: Россия, Владивосток
Medals: 1
Activity (1)
LabVIEW Version: 2009
Karma: 4
hardware

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

Postby Eugen Graf on 21 Aug 2008, 01:58

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

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

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


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

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

За отклик тебе большое спасибо.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

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

Postby Eugen Graf on 21 Aug 2008, 02:00

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


Поясни пожалуйста. Мне не очень понятно. В каком случае ты применяешь этот приём?
Ещё есть Diagramm Disable Structure. Это с ней не связано?
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

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

Postby Korotenko on 21 Aug 2008, 02:31

eg wrote: но соединения будут кривыми.

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


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

что именно натворить?
пока я заню что он показывает мне что не пришёл ответ от прибора через рс232, и ещё что нет фала в папке.
I work in LabVIEW 2009 !
User avatar
Korotenko
developer
developer
 
Posts: 286
Joined: 25 Jul 2008, 10:43
Location: Россия, Владивосток
Medals: 1
Activity (1)
LabVIEW Version: 2009
Karma: 4
hardware

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

Postby Korotenko on 21 Aug 2008, 02:41

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

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


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

при fulse в обоих Case - пусто, т.е. ничего не задествется
если есть все условия - выполнится левый, (если нажму ВЗЯТЬ ДАННЫЕ)
правый выполнится - только если выполнится левый и нажму СОХРАНИТЬ,
если не хочу сохранять - потом ВОЗЬМУ другие данные и сохраню ИХ (т.е. новые)
I work in LabVIEW 2009 !
User avatar
Korotenko
developer
developer
 
Posts: 286
Joined: 25 Jul 2008, 10:43
Location: Россия, Владивосток
Medals: 1
Activity (1)
LabVIEW Version: 2009
Karma: 4
hardware

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

Postby Korotenko on 21 Aug 2008, 02:45

а ещё вот пример
С ОБОИХ ВХОДОВ
1.GIF
1.GIF (8.69 KiB) Viewed 28286 times

С ОДНОГО
2.GIF
2.GIF (8.28 KiB) Viewed 28283 times

С ДРУГОГО
3.GIF
3.GIF (8.31 KiB) Viewed 28291 times

НИ С КАКОГО
4.GIF
4.GIF (3.87 KiB) Viewed 28272 times


такой стиль работы примеется в микросхемах - буферах вместе с шиной данный подаётся сигнал "РАЗЕШЕНИЯ", если он TRUE то значения из буфера пеердадуться, иначе - потом возможно заменятся и там решай - передавать уже новые или нет :crazy:
I work in LabVIEW 2009 !
User avatar
Korotenko
developer
developer
 
Posts: 286
Joined: 25 Jul 2008, 10:43
Location: Россия, Владивосток
Medals: 1
Activity (1)
LabVIEW Version: 2009
Karma: 4
hardware

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

Postby Forward on 15 Dec 2008, 18:05

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

Для 8.6 этого редактора нет?
User avatar
Forward
professional
professional
 
Posts: 337
Joined: 03 Mar 2008, 12:41
Location: Кишинев
Medals: 3
Activity (1) Tutorials (1) Black (1)
LabVIEW Version: 2010
Karma: 57
CLAD hardware I/O VIP teachers

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

Postby Eugen Graf on 15 Dec 2008, 18:19

Тот что для 8.5 так же работает и для 8.6, я им пользуюсь в 8.6
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

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

Postby Vya4ko on 03 Mar 2009, 08:32

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

и вообще клевая рубрика я вообще люблю всякие нестандартные фишки
Vya4ko
beginner
beginner
 
Posts: 49
Joined: 02 Mar 2009, 11:14
LabVIEW Version: 8.6
Karma: 0

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

Postby Eugen Graf on 03 Mar 2009, 13:17

Когда скачаешь, откроешь, там будет прибор-инсталлятор. Его нужно запустить, он сам должен положить всё куда надо.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

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

Postby Stkn on 05 Mar 2009, 11:46

Не знаю как в 8.6, а в 8.6.1 не получилось просто так установить Icon Editor 85_V2.2 и V2.1. Получилось только после того, как в файле Installation_lv_icon.vi заменил количество итераций в For Loop с 2 на 1 (прочитал в коментариях).
Stkn
user
user
 
Posts: 99
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2012
Karma: 9
CLAD

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

Postby Михаил23 on 25 Jan 2010, 21:04

Может кто подскажит, где можно найти редактор иконок для LV8.6.1. А то указанная выше ссылка не работает.
User avatar
Михаил23
adviser
adviser
 
Posts: 219
Joined: 24 Nov 2008, 17:58
Location: Москва
LabVIEW Version: 2009
Karma: 8
hardware freelance

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

Postby Eugen Graf on 26 Jan 2010, 03:07

Да, на самом деле линк перенаправлен, удивительно, если есть интерес, я могу узнать об этом напрямую у разработчика. Он торчит на немецком форуме, работает на техасский НИ.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Next

Return to Для чайников

Who is online

Users browsing this forum: Bing [Bot], Google, Yandex and 17 guests

cron