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

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

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

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

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

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


1. Старайтесь умещать блок диаграмму виртуального инструмента в размер экрана, а лучше ещё меньше. Создавайте подприборы, это поможет быстрее найти ошибки в программе и избежания редундантности кода. Ведь один и тот же подприбор можно использовать в программе много раз.
OneDesktop.PNG
2. Используйте кластеры. Блок диаграммы с использованием кластеров "удобочитаемы", помогают при поиске ошибок в программе, уменьшают количество соединений, входов и выходов подприборов.
Cluster.PNG
Cluster.PNG (2.37 КБ) 53886 просмотров
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 КБ) 53874 просмотра
6. Ведите соединения ровно, старайтесь избегать пересечения соединений и не прятать соединения под другие элементы блок диаграммы.
DirectConnections.PNG
7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
ConnectorPane.PNG
ConnectorPane.PNG (3.73 КБ) 53865 просмотров
8. Прорисовывайте иконки подприборов. Если вас не устраивает редактор иконок встроенный в LabVIEW загляните сюда, должно понравится.
Icons.PNG
9. Комментируйте блок диаграмму. Для этого всего лишь надо кликнуть мышкой два раза в любое место блок диаграммы и написать пару слов-пояснений.
Comments.PNG
Comments.PNG (6.9 КБ) 53862 просмотра
10. Старайтесь не использовать какие либо переменные для временного сохранения а тем более для передачи данных в параллельные процессы. Для первого существуют сдвиговые регистры, а для второго палитра синхронизации.
Synch.PNG
Synch.PNG (10.07 КБ) 53846 просмотров
11. Избегайте использования Express VIs в программах. Рано или поздно вы захотите добавить какую нибудь фичу, а Express VIs окажутся не настолько гибкими как надо и придётся многое переделывать.
Express.PNG
Express.PNG (5.41 КБ) 53868 просмотров
12. Закрывайте все открытые референсы, файлы, порты и т.д., если референсированный объект далее в программе не используется.
Close.PNG
Close.PNG (2.46 КБ) 53868 просмотров
13. Давайте приборам вменяемые имена, указывайте их назначение и принадлежность к библиотеке. Создавайте виртуальные папки в проектном браузере для группировки приборов.
Names.PNG
Аватара пользователя
Korotenko

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

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

Сообщение Korotenko »

а ещё вот пример
С ОБОИХ ВХОДОВ
1.GIF
1.GIF (8.69 КБ) 51692 просмотра
С ОДНОГО
2.GIF
2.GIF (8.28 КБ) 51689 просмотров
С ДРУГОГО
3.GIF
3.GIF (8.31 КБ) 51697 просмотров
НИ С КАКОГО
4.GIF
4.GIF (3.87 КБ) 51678 просмотров
такой стиль работы примеется в микросхемах - буферах вместе с шиной данный подаётся сигнал "РАЗЕШЕНИЯ", если он TRUE то значения из буфера пеердадуться, иначе - потом возможно заменятся и там решай - передавать уже новые или нет :crazy:
I work in LabVIEW 2009 !
Аватара пользователя
Forward

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

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

Сообщение Forward »

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

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

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

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

Тот что для 8.5 так же работает и для 8.6, я им пользуюсь в 8.6
Vya4ko
beginner
beginner
Сообщения: 49
Зарегистрирован: 02 мар 2009, 11:14
Версия LabVIEW: 8.6
Контактная информация:

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

Сообщение Vya4ko »

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

и вообще клевая рубрика я вообще люблю всякие нестандартные фишки
Аватара пользователя
Eugen Graf

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

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

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

Когда скачаешь, откроешь, там будет прибор-инсталлятор. Его нужно запустить, он сам должен положить всё куда надо.
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия 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
Версия LabVIEW: 2009
Откуда: Москва

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

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

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

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

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

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

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

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