Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
278
Добавлен:
06.06.2015
Размер:
4.63 Mб
Скачать

ла Register Event Callback и выберите из контекстного меню пункт Create Callback VI. LabVIEW создаст ВП, содержащий следующие компоненты:

Event common data (общие данные о событии) включает следующие элементы:

Source - числовой элемент управления, который определяет в качестве источника события LabVIEW или ActiveX. Значе-

ние 1 означает событие ActiveX.

Type - указывает событие, которое наступает. Это перечислительный тип для события пользовательского интерфейса и 32-битный целый беззнаковый тип для событий ActiveX и событий от других источников. Для событий ActiveX тип события представляет код метода или ID (идентификатор) под которым это событие зарегистрировано.

Time - это временная метка в миллисекундах, которая отмечает время, когда событие генерируется.

CtrlRef – это ссылка на объект ActiveX (или Automation Refnum),

на котором происходит событие.

Event Data (данные о событии) – кластер параметров, специфичный для события, которое обрабатывает ВП-обработчик. LabVIEW определяет подходящий кластер Event Data, когда Вы выбираете событие из узла Register Event Callback. Более подробно об уведомляющих и фильтрующих событиях см. в разделе

Уведомляющие и фильтруемые события в Главе 9 Событийно управляемое программирование.

Event Data Out (выход данных о событии) – кластер модифицируемых параметров, специфичных для событий, обрабатываемых ВП-обработчиком. Этот элемент доступен только для фильтруемых событий.

(Необязательный) User Parameter (параметр пользователя) – это данные, которые LabVIEW выдает пользователю через ВПобработчик, когда ActiveX объект генерирует событие.

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

341

был повторно вызываемым (reentrant), поскольку если это не так, то LabVIEW не сможет вызывать его синхронно, если события ActiveX произойдут несколько раз подряд.

342

20. Вызов кода из текстовых языков программирования

Большинство стандартных совместных библиотек Вы можете вы-

зывать в LabVIEW с помощью узла Call Library Function (вызов библиотечной функции). Кроме того, Вы можете из LabVIEW вызвать Си код с помощью узла кодового интерфейса – Code Interface Node (CIN).

Более подробно о соображениях, зависящих от платформы, при вы-

зове внешнего кода см. в разделе Call Library Function Nodes and Interface Nodes в Главе 6 LabVIEW Style Guide руководства LabVIEW development Guidelines. Более подробно о вызове кода из текстовых языков программирования см. в руководстве Using External Code in LabVIEW.

Более подробно…

Более подробно относительно вызова кода из текстовых языков программирования см. справочную систему LabVIEW Help

Узел вызова библиотечной функции

Используйте узел вызова библиотечной функции (Call Library Function Node) для вызова самых общих совместных библиотек или DLL. С помощью этой функции Вы можете создавать в LabVIEW интерфейс для обращения к уже существующим библиотекам или к новым библиотекам, специально написанным для использования в LabVIEW. National Instruments рекомендует использовать узел вызова библиотечной функции для создания интерфейса к внешнему коду.

Узел кодового интерфейса

Используйте узел кодового интерфейса (CIN) в качестве альтернативного метода обращения к исходному коду, написанному на языке Си. Узел вызова библиотечной функции обычно легче в использовании по сравнению с CIN.

343

21. Формулы и уравнения

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

Для выполнения математических операций в среде LabVIEW используйте формульный узел (Formula Node) или узел выражение (Expression Node). Для повышения функциональности Вы можете сделать связь с математическим приложением MATLAB.

Более подробно…

Более подробно об использовании выражений и принятого в них синтаксиса, доступных функциях и операторах, а также описание возможных ошибок см. в справочной системе LabVIEW Help

Методы использования выражений в LabVIEW

Для выполнения математических операций на блок-диаграмме Вы можете использовать формульный узел (Formula Node), узел выражения (Expression Node) и узел скриптов приложения MATLAB (MATLAB script node).

"Примечание. Чтобы использовать узел скриптов на вашем компьютере, на нем должно быть установлено приложение MATLAB, поскольку данный узел для исполнения скриптов осуществляет вызов сервера скриптов приложения MATLAB. Ввиду того, что LabVIEW использует технологию ActiveX для реализации узла скриптов, это возможно только в среде Windows. Узел скриптов похож на формульный узел, но, в отличие от него, он позволяет вам импортировать существующий скрипт MATLAB в формате ASCI I и запускать этот скрипт в LabVIEW. Так же как и для формульного узла, Вы можете вводить данные в узел скриптов и выводить из него.

344

Формульные узлы

Формульный узел (Formula Node) – это обычный текстовый узел, который Вы можете использовать для выполнения математических операций на блок-диаграмме. При этом для реализации арифметического выражения вам не потребуется ни доступ к внешнему коду или приложению, ни соединение низкоуровневых арифметических функций. В дополнение к текстовым арифметическим выражениям формульный узел дает возможность использовать текстовые версии операторов: if, while loop, for loop и do loop, которые знакомы программистам на Си. Эти программные элементы похожи на те, которые используются при программировании на Си, но не идентичны им.

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

Формульные узлы используют проверку типов, чтобы гарантировать, что индексы массивов имеют числовой тип, а операнды битовых операций имеют целочисленный тип. Кроме того, формульные узлы проверяют индексы массивов на соответствие диапазону. В случае выхода индекса за диапазон значениям массива присваиваются нулевые значения, а признаку выхода за диапазон присваивается значение nop, что указывает на отсутствие операции.

Формульные узлы осуществляют также автоматическое преобразование типов.

Использование формульного узла

Формульный узел имеет растягиваемое поле, подобно циклам: For Loop, While Loop; структурам: Case, Stacked Sequence и Flat Sequence. Однако, вместо поддиаграммы формульный узел содержит один или несколько операторов в Си-подобном формате, разделенных точкой с запятой, что иллюстрируется приведенным ниже примером. Также как и в СИ, можно добавлять комментарии, ограничивая их парой слэш-звездочка (/*comment*/).

345

Пример использования формульного узла можно найти в ВП Equations из библиотеки examples\general\struct.llb.

Переменные в формульном узле

Когда Вы работаете с переменными, помните о следующем.

Количество переменных или выражений в формульном узле не ограничено.

Не должно быть входов или выходов с совпадающими именами, но вход и выход могут иметь одно и то же имя.

Для объявления входной переменной щелкните правой кнопкой границу формульного узла и выберите пункт Add Input из контекстного меню. Нельзя объявлять входные переменные внутри формульного узла.

Для объявления выходной переменной щелкните правой кнопкой границу формульного узла и выберите пункт Add Output из контекстного меню. Имя выходной переменной должно совпадать либо с именем входной переменной, либо с именем переменной, объявленной внутри формульного узла.

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

Change to Input или Change to Output.

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

Необходимо подключать все входные терминалы.

346

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

Переменные не могут иметь единиц.

Узлы выражения

Используйте узел выражения (Expression Node) для вычисления арифметических выражений, или равенств, которые содержат одну единственную переменную. Узел выражения удобен, когда равенство хоть и содержит только одну переменную, но является достаточно сложным.

Узел выражения использует значение, которое поступает на входной терминал в качестве значения переменной. Выходной терминал возвращает результат вычисления выражения.

Например, рассмотрим простое выражение:

x ×x + 33×( x + 5 )

Ниже показана блок-диаграмма, на которой для представления этого выражения используются числовые функции (с палитры Numeric).

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

347

Полиморфизм в узлах выражения

Входной терминал узла выражения (Expression Node) имеет тот же тип данных, что и элемент управления или константа, подсоединенные к нему. Выходной терминал имеет тот же тип данных, что и входной терминал. Данные на входе могут иметь в качестве типа: любой числовой скаляр (кроме комплексного), массив не комплексных числовых скаляров, или кластер не комплексных числовых скаляров. В случае массива или кластера узел выражения применяет записанное выражение к каждому элементу входного массива или кластера.

Узел скриптов приложения MATLAB

Используйте узел скриптов приложения MATLAB (MATLAB script node) для создания, загрузки и редактирования скриптов приложения MATLAB на блок-диаграмме.

Чтобы использовать узел скриптов приложения MATLAB на вашем компьютере должно быть установлено приложение MATLAB. Если у вас уже есть скрипты, написанные в приложении MATLAB, их можно импортировать в узел скриптов.

Чтобы обмениваться значениями между MATLAB и LabVIEW, назначьте входные и выходные терминалы узла скриптов для соответствующих переменных в скрипте приложения MATLAB. Вы можете определить функцию терминала из записи выражения. Например, если скрипт содержит оператор присваивания X= i +3, Вы можете назначить i в качестве входного терминала, чтобы управлять тем, как узел скрипта будет вычислять значение X, и X назначить в качестве выходного терминала, чтобы получить окончательный результат вычисления скрипта.

Если у вас еще нет написанного скрипта, то Вы можете поместить узел скрипта на блок-диаграмму и создать скрипт, используя синтаксис приложения MATLAB. LabVIEW будет обмениваться с сервером скриптов (script server engine), который есть ни что иное, как программа, реализующая этот скрипт. Обмен с сервером скриптов и управление им происходит с помощью стандартного протокола. Сервер скриптов инсталлируется вместе с приложением MATLAB.

348

Из-за особенностей языка скриптов приложения MATLAB узел скриптов не может определить тип данных терминала, который Вы создаете. Вы должны сами назначить каждому терминалу узла скриптов тип данных LabVIEW. В Table 21-1 показано соответствие типов данных LabVIEW и MATLAB.

Table 21-1. Типы данных LabVIEW и MATLAB

Тип данных LabVIEW

Тип данных MATLAB

 

 

Real

String

String

Real Vector

Real Matrix

Complex

Complex Vector

Complex Matrix

Для преобразования типов данных LabVIEW в типы данных MATLAB используйте функции с подпалитры Conversion палитры Numeric или с подпалитры String/Array/Path Conversion палитры String.

Рекомендации по программированию скриптов приложения MATLAB

Приведенные ниже рекомендации по программированию скриптов приложения MATLAB могут облегчить их отладку.

Написав скрипт, перед внедрением в LabVIEW запустите его в среде MATLAB, чтобы протестировать и отладить.

Проверяйте типы данных. Когда Вы создаете новый вход или выход, убедитесь, что тип данных терминала назначен правильно. Для отслеживания этого Вы можете использовать функции Error In и Error Out.

349

Создайте элементы управления и индикаторы для входов и выходов, чтобы проверить значения, которые узел скриптов передает между LabVIEW и MATLAB. Это позволит вам при необходимости найти место, в котором узел скриптов вычисляет неверное значение.

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

350