Советы по программированию на LabVIEW
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Советы по программированию на LabVIEW
Постараюсь в этой теме опубликовать советы начинающим, а может быть даже и продвинутым программистам. Сразу говорю что они не являются доктриной, но могут помочь избежать частых ошибок а так же спланировать ход действий при реализации проекта.
Если у вас возникнут вопросы, вы не согласны с каким либо пунктом или же вы хотите добавить в список что нибудь своё, то обсуждаем это здесь.
1. Старайтесь умещать блок диаграмму виртуального инструмента в размер экрана, а лучше ещё меньше. Создавайте подприборы, это поможет быстрее найти ошибки в программе и избежания редундантности кода. Ведь один и тот же подприбор можно использовать в программе много раз.
2. Используйте кластеры. Блок диаграммы с использованием кластеров "удобочитаемы", помогают при поиске ошибок в программе, уменьшают количество соединений, входов и выходов подприборов.
3. Не пытайтесь перепрограммировать код, написаный на другом языке программирования, в LabVIEW один к одному. Такие программы нерационально используют возможности LabVIEW, так как придуманы для другого языка. Лучше почитайте книги/уроки и изучите основы программирования на LabVIEW.
4. Очень важно понять самый главный принцип программирования на LabVIEW - это "Data Flow". То есть любой подприбор и узел в блок диаграмме начинает своё выполнение только тогда, когда на всех соединённых входах есть какое либо значение. Для сравнения: во многих текстовых языках следующая строка кода выполняется только тогда, когда выполнена предыдущая независимо от того какие значения имеют параметры функции. Это и является главным отличием текстовых языков программирования от LabVIEW.
5. Если вы не укажите зависимость/последовательность одной части диаграммы от другой например соединив эти части между собой проводом, то части будут выполнятся, что называется, почти параллельно и независимо друг от друга. Не думайте что часть кода, помещённая слева от другой части, но не соединённая с ней выполнится вперёд. А иногда даже и соединённые части кода выполняются не так как задумано. Обязательно узнайте что такое Data Flow, а так же Race Conditions, во избежании непонятных глюков в вашей программе.
6. Ведите соединения ровно, старайтесь избегать пересечения соединений и не прятать соединения под другие элементы блок диаграммы.
7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
8. Прорисовывайте иконки подприборов. Если вас не устраивает редактор иконок встроенный в LabVIEW загляните сюда, должно понравится.
9. Комментируйте блок диаграмму. Для этого всего лишь надо кликнуть мышкой два раза в любое место блок диаграммы и написать пару слов-пояснений.
10. Старайтесь не использовать какие либо переменные для временного сохранения а тем более для передачи данных в параллельные процессы. Для первого существуют сдвиговые регистры, а для второго палитра синхронизации.
11. Избегайте использования Express VIs в программах. Рано или поздно вы захотите добавить какую нибудь фичу, а Express VIs окажутся не настолько гибкими как надо и придётся многое переделывать.
12. Закрывайте все открытые референсы, файлы, порты и т.д., если референсированный объект далее в программе не используется.
13. Давайте приборам вменяемые имена, указывайте их назначение и принадлежность к библиотеке. Создавайте виртуальные папки в проектном браузере для группировки приборов.
Если у вас возникнут вопросы, вы не согласны с каким либо пунктом или же вы хотите добавить в список что нибудь своё, то обсуждаем это здесь.
1. Старайтесь умещать блок диаграмму виртуального инструмента в размер экрана, а лучше ещё меньше. Создавайте подприборы, это поможет быстрее найти ошибки в программе и избежания редундантности кода. Ведь один и тот же подприбор можно использовать в программе много раз.
2. Используйте кластеры. Блок диаграммы с использованием кластеров "удобочитаемы", помогают при поиске ошибок в программе, уменьшают количество соединений, входов и выходов подприборов.
3. Не пытайтесь перепрограммировать код, написаный на другом языке программирования, в LabVIEW один к одному. Такие программы нерационально используют возможности LabVIEW, так как придуманы для другого языка. Лучше почитайте книги/уроки и изучите основы программирования на LabVIEW.
4. Очень важно понять самый главный принцип программирования на LabVIEW - это "Data Flow". То есть любой подприбор и узел в блок диаграмме начинает своё выполнение только тогда, когда на всех соединённых входах есть какое либо значение. Для сравнения: во многих текстовых языках следующая строка кода выполняется только тогда, когда выполнена предыдущая независимо от того какие значения имеют параметры функции. Это и является главным отличием текстовых языков программирования от LabVIEW.
5. Если вы не укажите зависимость/последовательность одной части диаграммы от другой например соединив эти части между собой проводом, то части будут выполнятся, что называется, почти параллельно и независимо друг от друга. Не думайте что часть кода, помещённая слева от другой части, но не соединённая с ней выполнится вперёд. А иногда даже и соединённые части кода выполняются не так как задумано. Обязательно узнайте что такое Data Flow, а так же Race Conditions, во избежании непонятных глюков в вашей программе.
6. Ведите соединения ровно, старайтесь избегать пересечения соединений и не прятать соединения под другие элементы блок диаграммы.
7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
8. Прорисовывайте иконки подприборов. Если вас не устраивает редактор иконок встроенный в LabVIEW загляните сюда, должно понравится.
9. Комментируйте блок диаграмму. Для этого всего лишь надо кликнуть мышкой два раза в любое место блок диаграммы и написать пару слов-пояснений.
10. Старайтесь не использовать какие либо переменные для временного сохранения а тем более для передачи данных в параллельные процессы. Для первого существуют сдвиговые регистры, а для второго палитра синхронизации.
11. Избегайте использования Express VIs в программах. Рано или поздно вы захотите добавить какую нибудь фичу, а Express VIs окажутся не настолько гибкими как надо и придётся многое переделывать.
12. Закрывайте все открытые референсы, файлы, порты и т.д., если референсированный объект далее в программе не используется.
13. Давайте приборам вменяемые имена, указывайте их назначение и принадлежность к библиотеке. Создавайте виртуальные папки в проектном браузере для группировки приборов.
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Советы по программированию на LabVIEW
НИКОГДА не следовал этому правилуeg писал(а):7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
1. использую всегда по минимуму выводов, если понадобятся ещё - ДОБАВЛЮ
2. кластер ошибки? за 1,5 месяца понадобилась только при связи с rs232, но сейчас наверно ещё понадобится для проверки наличия файла в коталоге, а так - НИГДЕ не нужно.
I work in LabVIEW 2009 !
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Советы по программированию на LabVIEW
Советую всегда применять Case Structure, по принципу Enable/Disable, т.е. если не пользуетесть блоком обработки клавиатуры - ЗНАЧИТ ПУСТЬ ВСЕ ЕГО ПРИБОРЫ МОЛЧАТ, просто заведите через OR сигналы от кнопок и направьте в Case Structure.
I work in LabVIEW 2009 !
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Советы по программированию на LabVIEW
В принципе правильно, но соединения будут кривыми. А желательно, что бы соединения были ровными, не пересекались и чтобы блоковая диаграмма была понятна и ментально и визуально.Коротенко Алексей писал(а):НИКОГДА не следовал этому правилуeg писал(а):7. При создании подприборов выбирайте тип коннектора 4-2-2-4, то есть четыре входа слева, два сверху, два снизу и четыре выхода справа. При этом используйте нижний левый вход и нижний правый выход для соединения кластера ошибки.
1. использую всегда по минимуму выводов, если понадобятся ещё - ДОБАВЛЮ
Очень жаль, но конечно хозяин-барин. С кластером ошибки можно такое натворить...Коротенко Алексей писал(а): 2. кластер ошибки? за 1,5 месяца понадобилась только при связи с rs232, но сейчас наверно ещё понадобится для проверки наличия файла в коталоге, а так - НИГДЕ не нужно.
За отклик тебе большое спасибо.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Советы по программированию на LabVIEW
Поясни пожалуйста. Мне не очень понятно. В каком случае ты применяешь этот приём?Коротенко Алексей писал(а):Советую всегда применять Case Structure, по принципу Enable/Disable, т.е. если не пользуетесть блоком обработки клавиатуры - ЗНАЧИТ ПУСТЬ ВСЕ ЕГО ПРИБОРЫ МОЛЧАТ, просто заведите через OR сигналы от кнопок и направьте в Case Structure.
Ещё есть Diagramm Disable Structure. Это с ней не связано?
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Советы по программированию на LabVIEW
почему кривые? как кривые? смотри -> что имеено -кривое?eg писал(а): но соединения будут кривыми.
что именно натворить?eg писал(а):С кластером ошибки можно такое натворить...
пока я заню что он показывает мне что не пришёл ответ от прибора через рс232, и ещё что нет фала в папке.
I work in LabVIEW 2009 !
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Советы по программированию на LabVIEW
Diagramm Disable Structure ещё не смотрел.eg писал(а):Мне не очень понятно. В каком случае ты применяешь этот приём? Ещё есть Diagramm Disable Structure. Это с ней не связано?Коротенко Алексей писал(а):Советую всегда применять Case Structure, по принципу Enable/Disable,
а мое применение Case Structure такое : при fulse в обоих Case - пусто, т.е. ничего не задествется
если есть все условия - выполнится левый, (если нажму ВЗЯТЬ ДАННЫЕ)
правый выполнится - только если выполнится левый и нажму СОХРАНИТЬ,
если не хочу сохранять - потом ВОЗЬМУ другие данные и сохраню ИХ (т.е. новые)
I work in LabVIEW 2009 !
-
Korotenko
- developer
- Сообщения: 286
- Зарегистрирован: 25 июл 2008, 10:43
- Награды: 1
- Версия LabVIEW: 2009
- Откуда: Россия, Владивосток
- Контактная информация:
Re: Советы по программированию на LabVIEW
а ещё вот пример
С ОБОИХ ВХОДОВ С ОДНОГО С ДРУГОГО НИ С КАКОГО такой стиль работы примеется в микросхемах - буферах вместе с шиной данный подаётся сигнал "РАЗЕШЕНИЯ", если он TRUE то значения из буфера пеердадуться, иначе - потом возможно заменятся и там решай - передавать уже новые или нет![:crazy: :crazy:](./images/smilies/icon_crazy.gif)
С ОБОИХ ВХОДОВ С ОДНОГО С ДРУГОГО НИ С КАКОГО такой стиль работы примеется в микросхемах - буферах вместе с шиной данный подаётся сигнал "РАЗЕШЕНИЯ", если он TRUE то значения из буфера пеердадуться, иначе - потом возможно заменятся и там решай - передавать уже новые или нет
![:crazy: :crazy:](./images/smilies/icon_crazy.gif)
I work in LabVIEW 2009 !
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: Советы по программированию на LabVIEW
Для 8.6 этого редактора нет?eg писал(а):8. Прорисовывайте иконки подприборов. Если вас не устраивает редактор иконок встроенный в LabVIEW загляните сюда, должно понравится.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Советы по программированию на LabVIEW
Тот что для 8.5 так же работает и для 8.6, я им пользуюсь в 8.6
-
- beginner
- Сообщения: 49
- Зарегистрирован: 02 мар 2009, 11:14
- Версия LabVIEW: 8.6
- Контактная информация:
Re: Советы по программированию на LabVIEW
А можно по подробнее как вообще пользоваться Icon Editor'ом
Его нужно копировать куда-то или просто он нужен чтобы рисунок сделать если да то как его откопать потом
просто при запуске он мне ошибку выдыл и сказал в NI с обратиться
я новенький прошу прощения за вопрос
но оч интересно
и вообще клевая рубрика я вообще люблю всякие нестандартные фишки
Его нужно копировать куда-то или просто он нужен чтобы рисунок сделать если да то как его откопать потом
просто при запуске он мне ошибку выдыл и сказал в NI с обратиться
я новенький прошу прощения за вопрос
но оч интересно
и вообще клевая рубрика я вообще люблю всякие нестандартные фишки
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Советы по программированию на LabVIEW
Когда скачаешь, откроешь, там будет прибор-инсталлятор. Его нужно запустить, он сам должен положить всё куда надо.
Re: Советы по программированию на LabVIEW
Не знаю как в 8.6, а в 8.6.1 не получилось просто так установить Icon Editor 85_V2.2 и V2.1. Получилось только после того, как в файле Installation_lv_icon.vi заменил количество итераций в For Loop с 2 на 1 (прочитал в коментариях).
- Михаил23
- adviser
- Сообщения: 219
- Зарегистрирован: 24 ноя 2008, 17:58
- Версия LabVIEW: 2009
- Откуда: Москва
Re: Советы по программированию на LabVIEW
Может кто подскажит, где можно найти редактор иконок для LV8.6.1. А то указанная выше ссылка не работает.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Советы по программированию на LabVIEW
Да, на самом деле линк перенаправлен, удивительно, если есть интерес, я могу узнать об этом напрямую у разработчика. Он торчит на немецком форуме, работает на техасский НИ.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2078 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 348 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2439 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 392 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 848 Просмотры
-
Последнее сообщение dadreamer