Labview les8 (1031617), страница 2
Текст из файла (страница 2)
Используя этот прием, Вы сэкономите немало времени при отладке. Аналогично, еслиВы не собираетесь изменять параметры на соответствующем выводе, укажите Optional. В стандартном окне Helpтакой терминал будет серым. Кроме того, Используйтемаленькие буквы (Small Fonts) в именах иконок. Это оченьудобный шрифт. Дважды кликните мышкой на букве A вокне редактирования иконки и выберите маленькийшрифт.20Красивые графические иконкиПрограмму, состоящую из одинаково выглядящихиконок подпрограмм, отлаживать очень трудно, да и неоченьто приятно. Никакого удовольствия.21Шрифт и ЦветДля создания паленей и диаграмм в приложениях(applications) старайтесь использовать встроенные шрифты. Это касается и цветов.
А для оператора можно простосоздать конфигурационный файл. Вы потратите на это время, но сделать это нужно только один раз.от конструирования интерфейса пользователя напередних панелях перейдем к блок диаграмме, и начнемс подготовки среды LabVIEW22Создание палитр клиентских менюВыполните перегруппировку палитр, установленных по умолчанию, выделяя наиболее для Вас важныечасти. Например, можно рекомендовать разместить loopструктуры, file I/O и некоторые утилиты слева вверху. Оничасто используются. Меньшее количество нажатий на клавишу мыши действительно ускоряет процесс программирования.23Добавьте функцию ожидания (wait) во все Интерфейсы Пользователя и интенсивно выполняемые циклыв ПОМОЩЬ инженеруЕсли Вы решите выбрать только одно правило извсех рассмотренных на этом уроке и следовать ему, то выберите ЭТО ПРАВИЛО.
Это самое лучшее из всех. Вы будете приятно удивлены, насколько лучше Ваша программабудет работать, если вставить небольшую задержку вкаждый цикл пользовательского интерфейса. Некоторыециклы в Вашей программе могут работать так быстро, кактолько возможно, "уморив" все Ваши остальные циклы.Отсутствие задержки приводит к пустой трате временипроцессора и "убивает" другие части программы. А добавляя небольшую задержку, Вы позволяете LabVIEW и операционной системе освободить процессор для выполнения чегонибудь другого.
Кроме того, оператор редкоможет видеть или реагировать на события чаще, чемчерез 0.1 сек. Так что задержка в 100 мс не будет заметнойи улучшить исполнение программы. Это правило следуетучитывать идля циклов,не связанных с пользовательским интерфейсом, нокоторые интенсивнорасходуютвремя. Хороший пример обычное чтение байтов из сериальногопорта. Вместо того, чтобы ставить задержку в цикле, в котором читаются значения, поставьте маленькую задержкупосле каждой проверки счетчикабайтов. Это более предпочтительный вариант.
В этом случае, есливсе байты уже считаны во времяработы программы, никакого ожидания возникать не будет. А еслипо какойто причине данные несчитаны, в программе возникнетожидание и чтение повторится. Нов этот короткий промежуток времени LabVIEW обеспечитВам выполнение чегонибудь еще.24Технология эффективного использования памяти для массивов и манипуляций со строкамиЕсли вы действительно хотите, чтобы Ваша LabVIEWпрограмма работала "со свистом", внимательнопрочтите и запомните концепцию, изложенную в руководстве по LabVIEW Memory Usage. Вот что нужно делатьдля экономии памяти. Оставляйте функции Build Array иConcatenate String вне цикла.
Пытайтесь использоватьReplace Array Element везде, где только возможно. ЕслиВы получаете данные в результате большого количестваповторов цикла и программа должна работать быстро,выделите сегмент в памяти (preallocate), используяInitiate Array перед циклом, затем используйте ReplaceArray Element в цикле и далее Reshape Array послеокончания работы цикла, если это необходимо. ReshapeArray устанавливает правильный размер массива.Для больших строк рассмотрим помещение строкив массив байтов и использование функций массивоввместо функций строк. Это можно выполнить как утилитудля изменения символов окончания строки и тогда Ваш VIбудет работает в десять раз быстрее, чем при использовании функций строк:523/2005Использование большого массива или строковыхиндикаторов на передней панели нужно делать, еслитолько это действительно нужно.
Каждый индикатор напередней панели делает копию данных, имеющихся вблок диаграмме. Т.е. Вы имеете две копии одних и тех жеданных. Это не критично для небольших индикаторов илималеньких массивов, но просто разорительно для больших структур данных.25Ограничьте использованиелокальных и глобальных переменныхОб этом свидетельствует опыт многих LabVIEWпрограммистов. Безусловно, и глобальные и локальныепеременные абсолютно необходимы при программировании в LabVIEW.
Но начинающий программист долженобходить их дальней дорогой, ибо, поверьте, неизбежновозникнут проблемы, связанные с временем исполненияпрограммы.В представленном ниже примере, данные не связаны между собой, поэтому глобальная переменная можетбыть считана прежде, чем в нее будут записаны данные, ав результате будет получен неправильный результат.Оптимизация скорости исполнения возможна, но это нетак просто. Со временем, когда у Вас будет больше опыта,Вы будете лучше понимать, когда и где нужно использовать локальные и глобальные переменные.Другой недостаток в использовании локальных иглобальных это то, что они "кушают" память, а именно создаются копии данных в памяти. Т.е.
если у Вас на диаграмме присутствует, например, индикатор и локальнаяпеременная от него, то Вы получите удвоение размера используемой памяти. С малыми массивами данных проблем нет, но большие структуры одна головная боль.Будьте очень осторожны с глобальными переменными, если Вы запускаете несколько циклов параллельноили используете многопотоковость. В этом случае оченьтрудно или практически невозможно управлять синхронизацией.
Лучше используйте такие функции синхронизацииLabVIEW, как Semaphore, Notifier, Queue, Randesvous.Нельзя не согласиться с тем, что использованиеглобальных и локальных переменных экономят времяразработки программы и упрощают сам процесс программирования. Но если у Вас есть желание "вылизать" проект,следует заменить их на альтернативное решение.26Избегайте использования последовательностиво всей полноте, но с одним исключениемПоследовательные структуры плохо выглядят.Многие программисты ворчат о том, что последовательв ПОМОЩЬ инженеруные структуры должны категорически быть удалены изLabVIEW.
Они используются для управления "данными" ипрограммирования потоков в LabVIEW, и это действительно необходимо в настоящее время. Почти во всехфункциях ввода/вывода в LabVIEW сейчас используютсякластеры ошибок, которые просто соединяют в последовательную цепочку, без необходимости использованияSequence. Таким же образом параллельные процессымогут использовать предпочтительные функции синхронизации, такие как Semaphores и Notifiers, взамен последовательной структуры для управления ходом выполнения программы и пересылки данных. LabVIEWпрограммисты не любят Sequence еще и потому, что онискрывают часть кода программы во фреймах, помимо того, который виден в данный момент.
Хочется видеть всюпрограмму на экране.Но нужно сказать, одиночный фрейм структурыSequence по прежнему важен: он ничего не скрывает, дает Вам уверенность, что нечто исполняется прежде, чембудет исполнен код во фрейме. Например, Вы можете захотеть инициализировать все управляющие элементыпрежде, чем начнет исполняться программа или откроется нужная панель.27Ограничьте диаграмму одной страницейСтиль LabVIEWпрограммиста расположить всеsubVI на одной странице, избегая скроллинга. Что это Вамдает? Первое создается модульность и VI выглядит достаточно просто. Это очень, и даже очень хорошо! Второе Вы видите всю программу сразу, не делая скроллинг страницы для поиска где, что и с чем соединено.Давайте организуем еще один перерыв, на этотраз активный, можно с кофе или чаем.
И оставим на время полезные советы, а займемся техникой отладки VI.Когда VI содержит ошибкиили не выполняется, накнопке Run появляется сломанная стрелка. Чтобы просмотреть ошибки, нажмите на сломаннуюстрелку и откроется Error List (Перечень ошибок). Выберите одну из перечисленных ошибок изатем нажмите на Show Error (Показать ошибку) иликликнете двойным щелчком мыши. Далее откроется блокдиаграмма, на которой будет мигать "неисправный элемент". В окне Error List в разделе Details (Подробно) содержатся краткие сведения об ошибке.Если Вы хотите визуальноТрассировкапроследить, что происходитв каналах или в какой последовательности выполняетсяваша программа, нажмите на кнопкуExecution Highlighting (Подсветка выполнения) и запустите VI. Символ изменится и вы будете наблюдать как данные проходят по VI.Пошаговое выполнение Во время отладки, Вы можете пошагово выполнить всюпрограмму.
Чтобы активировать пошаговый режим, нажмите на паузу и запустите программу. Первыйузел на блок диаграмме начнет мигать.Теперь нажмите на кнопку Step Into(Шаг внутрь) или Step Over (Шаг через) и программа перейдет к следующему узлу.Поиск ошибокРазница между этими возможностями заключается в том, что Step Into при выполнении узла,будет открывать его блок диаграмму в новомокне и продолжать пошаговое выполнение там.Для завершения пошагового выполнения нажмите накнопку Step Out .Показания пробника Иногда нужно постояннобыть в курсе того, что происходит в канале данных. Для этого в Tool Palette(Палитра инструментов) находится элемент под названием Probe Data (Опробовать данные) . Нажимаем на него иустанавливаем на нужный канал.