Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОИП / методичка.doc
Скачиваний:
163
Добавлен:
12.04.2015
Размер:
1.89 Mб
Скачать

10.3. Глобальные переменные

Глобальные переменные являются наиболее редко и наиболее неправильно применяемыми структурами программирования. Они часто являются причиной таинственных ошибок, неожиданного поведения программ, да и вообще эта структура программирования довольно неуклюжа. Хотя вышесказанное - правда, не исключены случаи, когда вам понадобятся глобальные переменные. (Дело не в том, что глобальные переменные плохи как таковые, а в том, что пользоваться ими нужно весьма осторожно.)

Как вы помните, для доступа к объектам лицевой панели, расположенным в разных местах на блок-диаграмме, можно задействовать локальные переменные.

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

10.4 Создание глобальных переменных

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

Как только структура глобальной переменной выбрана из палитры, на блок-диаграмме появляется пиктограмма . Она символизирует глобальную переменную, которая еще не определена. Дважды щелкнув мышью по ее иконке, вы вызовете окно, идентичное лицевой панели самостоятельного виртуального прибора.

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

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

Сохраните глобальную переменную так же, как вы сохраняете виртуальный прибор. Многие разработчики применяют расширение .gbl для глобальных переменных, чтобы их отслеживать. Для того чтобы использовать сохраненную глобальную переменную в блок-диаграмме, укажите опцию Выбрать ВП (Select а VI) в палитре Функции. При этом на блок-диаграмме появляется терминал, показывающий одну из переменных, которые содержатся в

глобальной переменной. Чтобы выбрать нужную переменную, щелкните правой кнопкой мыши по терминалу и укажите опцию Выбрать элемент (Select Item) или просто щелкните по терминалу инструментом управления («палец»). С одного терминала глобальной переменной вы можете выбрать только одну из содержащихся в ней переменных. Для использования другой переменной или другого элемента глобальной переменной создайте копию ее терминала с помощью перетаскивания при удерживании клавиши <ctrl> (или <option>).

Так же как и локальные, глобальные переменные могут находиться в режиме чтения или записи. Для выбора режима щелкните правой кнопкой мыши по терминалу и выберите опцию Заменить на (Change То). Глобальные переменные в режиме чтения выделены более толстыми границами, чем в режиме записи; они ведут себя в режиме чтения аналогично элементам управления, а в режиме записи - аналогично индикаторам.

read mode write mode

Рисунок 10.3 – Терминал глобальной переменной

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

Режим ЧТЕНИЯ = ЭЛЕМЕНТ УПРАВЛЕНИЯ READ mode = CONTROL

Режим ЗАПИСИ = ИНДИКАТОР WRITE mode = INDICATOR

Вот несколько важных советов по использованию глобальных переменных:

• всегда инициализируйте глобальные переменные в блок-диаграмме. Их начальное значение должно быть определено в коде. Глобальные переменные не сохраняют своих значений по умолчанию, пока вы не перезапустите LabVIEW;

• никогда не осуществляйте чтение и запись одной и той же глобальной

переменной в одном и том же месте диаграммы: может наступить неопределенность порядка чтения/записи, которая приведет к неопределенности данных, то есть к условию соревнования;

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

Важно обращать внимание на имена, которые вы даете переменным внутри глобальных переменных. Все виртуальные приборы, которые вызывают глобальную переменную, будут ссылаться на конкретную переменную по ее имени; поэтому не следует давать одинаковые имена элементам управления или индикаторам.