6.1.3. Работа с контроллером в среде LabView¶
Важно
Наши LabView примеры работают только для Windows.
Битность примеров LabView должна соответствовать битности операционной системы, а не битности LabView
Примеры ниже приведены для LabVIEW версии 12. Корректная работа примеров с более поздними версиями LabVIEW не гарантируется.
Если вам нужны примеры для версий ниже 12, свяжитесь со службой технической поддержки или отправьте электронное письмо: 8smc4@standa.lt
Примечание
Библиотека libximc открывает контроллеры в режиме эксклюзивного доступа. Любой контроллер, открытый с помощью libximc, необходимо закрыть, прежде чем он может быть использован другими процессами. Не останавливайте работу примеров LabView использующую libximc с помощью кнопки «Abort execution» - это не дает возможности программе вызвать функцию close_device()
, поэтому в этом случае все открытые в LabView контроллеры будут заблокированы до полного закрытия среды LabView.
6.1.3.1. Как создать простой пример¶
Рассмотрим создание простейшей программы на Labview для работы с libximc на примере «Ximc simple example.vi».
Загрузите примеры Labview со страницы программного обеспечения.

В начале программы вызывается функция 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
(не показано в этом примере для краткости).
6.1.3.2. Ximc Example One Axis: настройка и запуск в LabVIEW¶
Важно
«Ximc Example One axis.vi» это простой в использовании, но довольно сложный пример псевдо-XILab, который не рекомендуется изменять самостоятельно. Обратите свое внимание на пример «ximc simple example.vi», его легко адаптировать для ваших целей.
Для взаимодействия с контроллерами LabVIEW использует библиотеку libximc. Интерфейс, доступный через LabVIEW, полностью аналогичен интерфейсу библиотеки libximc. Подробное описание функций, структур данных и флагов можно найти по этой ссылке. Каждой функции соответствует свой subVI модуль, имеющий входы и выходы соответствующие входным и выходным параметрам этой функции. Для того чтобы вызывать какую-либо функцию нужно сначала выполнить опрос устройств enumerate_devices
, после этого выбрать какое-либо устройство из доступных, открыть его с помощью open_device
и передать полученный идентификатор и необходимые параметры желаемой функции. После использования необходимо закрыть устройство функцией close_device
.
Разархивируйте скачанный файл в желаемую директорию и запустите пример «Ximc Example One axis».
Откроется окно среды LabView. В нем вы увидите графический интерфейс передней панели программы-примера, он представляет собой упрощенную копию интерфейса XILab:
- В левой части расположена кнопка «Find controllers» для повторного опроса доступных контроллеров, поле выбора контроллера по имени последовательного порта и информационный блок текущего состояния открытого контроллера (напряжение и ток на силовой части и USB, температура, скорость движения).
- В центральной части расположен блок индикации и управления. В числовое поле выводится текущая координата; доступны кнопки движения влево, вправо, остановки, движения в определенную координату («Move to») и смещения на определенное расстояние («Shift on»).
- В центральной части расположен блок индикации и управления. В числовое поле выводится текущая координата; доступны кнопки движения влево, вправо, остановки, движения в определенную координату («Move to») и смещения на определенное расстояние («Shift on»).
- На вкладке справа расположен диалог «Move settings» для демонстрации загрузки и сохранения настроек. По нажатию кнопки «GET» текущие настройки движения загружаются в числовые поля под этой кнопкой, а по нажатию кнопки «SET» числа из соответствующих этой кнопке полей загружаются в контроллер.

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