6.1.1. Работа с контроллером в среде LabView

Скачайте пример программы для LabView со страницы Программное обеспечение. Разархивируйте скачанный файл в желаемую директорию и запустите пример «XImc Example One axis».

../../../_images/LabView_01.png

Откроется окно среды LabView. В нем вы увидите графический интерфейс передней панели программы-примера, он представляет собой упрощенную копию интерфейса XILab.

В левой части расположена кнопка «Find controllers» для повторного опроса доступных контроллеров, поле выбора контроллера по имени последовательного порта и информационный блок текущего состояния открытого контроллера (напряжение и ток на силовой части и USB, температура, скорость движения).

В центральной части расположен блок индикации и управления. В числовое поле выводится текущая координата; доступны кнопки движения влево, вправо, остановки, движения в определенную координату («Move to») и смещения на определенное расстояние («Shift on»).

В центральной части расположен блок индикации и управления. В числовое поле выводится текущая координата; доступны кнопки движения влево, вправо, остановки, движения в определенную координату («Move to») и смещения на определенное расстояние («Shift on»).

На вкладке справа расположен диалог «Move settings» для демонстрации загрузки и сохранения настроек. По нажатию кнопки «GET» текущие настройки движения загружаются в числовые поля под этой кнопкой, а по нажатию кнопки «SET» числа из соответствующих этой кнопке полей загружаются в контроллер.

../../../_images/LabView_02.png

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

../../../_images/labview_03-2.png

Пример использует функции библиотеки libximc. Каждой функции соответствует свой subVI модуль, имеющий входы и выходы соответствующие входным и выходным параметрам этой функции. Для того чтобы вызывать какую-либо функцию нужно сначала выполнить опрос устройств (enumerate_devices), после этого выбрать какое-либо устройство из доступных, открыть его с помощью open_device и передать полученный идентификатор и необходимые параметры желаемой функции. После использования необходимо закрыть устройство функцией close_device.

Рассмотрим создание простейшей программы на Labview для работы с libximc на примере «Ximc simple example.vi».

../../../_images/labview_04.png

В начале программы вызывается функция enumerate_devices, которой передаются флаги открытия (подробнее см. Руководство по программированию). Результат выполнения функции enumerate_devices, являющийся закрытым указателем, передается функции get_device_name с параметром номера устройства, имя которого мы хотим получить (количество обнаруженных устройств можно получить функцией get_device_count из этого же указателя). Результат выполнения функции get_device_name передается функции open_device. Эта последовательность не является обязательной - при желании сформированную определенным образом строку с именем открываемого устройства можно передать функции open_device напрямую. Результатом выполнения функции open_device является хендл устройства или определенная в ximc.h константа device_undefined, возвращаемое при невозможности открыть устройство. Хендл устройства передается всем функциям чтения значений из контроллера, записи значений в контроллер и подачи команд контроллеру, вместе с другими параметрами, если таковые требуются в соответствии с прототипом функции. В примере «Ximc simple example.vi» вызываются команды command_left, command_wait_for_stop и command_stop. После окончания работы с контроллером устройство необходимо закрыть, передав его хендл функции close_device, а после окончания работы с результатом функции enumerate_devices необходимо освободить память закрытого указателя функцией free_enumerate_devices (опущено в примере для краткости).

Примечание

Библиотека libximc открывает контроллеры в режиме эксклюзивного доступа. Любой контроллер открытый с помощью libximc необходимо закрыть прежде чем он может быть использован другими процессами. Не останавливайте работу примера LabView или любой другой LabView программы использующей libximc с помощью кнопки «Abort execution» - это не дает возможности программе вызвать функцию close_device(), поэтому в этом случае все открытые в LabView контроллеры будут заблокированы до полного закрытия среды LabView.