6.1.3. Работа с контроллером в среде LabView¶
Скачайте пример программы для LabView со страницы Программное обеспечение.
Важно
Примеры, приведённые ниже, предназначены для LabVIEW версии 12. Корректная работа примеров с более поздними версиями LabVIEW не гарантируется.
За более старыми версиями, пожалуйста, обращайтесь в техническую поддержку или присылайте письмо на почту: 8smc4@standa.lt
Разархивируйте скачанный файл в желаемую директорию и запустите пример «XImc Example One axis».
Предупреждение
«One axis example.vi» это простой в использовании, но довольно сложный пример псевдо-xilab, который не рекомендуется изменять самостоятельно. Обратите свое внимание на пример «ximc simple example.vi», его легко адаптировать для ваших целей.
Откроется окно среды LabView. В нем вы увидите графический интерфейс передней панели программы-примера, он представляет собой упрощенную копию интерфейса XILab.
Примечание
LabVIEW работает независимо от XiLab. XiLab – это альтернативный инструмент для взаимодействия с контроллером. Его удобно использовать для конфигурации устройства и тестов. Все функции, доступные через XiLab, могут быть независимо реализованы средствами LabVIEW.
В левой части расположена кнопка «Find controllers» для повторного опроса доступных контроллеров, поле выбора контроллера по имени последовательного порта и информационный блок текущего состояния открытого контроллера (напряжение и ток на силовой части и USB, температура, скорость движения).
В центральной части расположен блок индикации и управления. В числовое поле выводится текущая координата; доступны кнопки движения влево, вправо, остановки, движения в определенную координату («Move to») и смещения на определенное расстояние («Shift on»).
В центральной части расположен блок индикации и управления. В числовое поле выводится текущая координата; доступны кнопки движения влево, вправо, остановки, движения в определенную координату («Move to») и смещения на определенное расстояние («Shift on»).
На вкладке справа расположен диалог «Move settings» для демонстрации загрузки и сохранения настроек. По нажатию кнопки «GET» текущие настройки движения загружаются в числовые поля под этой кнопкой, а по нажатию кнопки «SET» числа из соответствующих этой кнопке полей загружаются в контроллер.
Исходный код примера можно посмотреть, войдя в режим редактирования. Программа выполняет бесконечный цикл опроса состояния контроллера и вывода на экран. Если нажата какая-либо кнопка в интерфейсе, то выполняется соответствующий этой кнопке функциональный блок.
Для взаимодействия с контроллерами LabVIEW использует библиотеку libximc. Интерфейс, доступный через LabVIEW, полностью аналогичен интерфейсу библиотеки libximc. Подробное описание функций, структур данных и флагов можно загрузить по этой ссылке. Каждой функции соответствует свой subVI модуль, имеющий входы и выходы соответствующие входным и выходным параметрам этой функции. Для того чтобы вызывать какую-либо функцию нужно сначала выполнить опрос устройств (enumerate_devices), после этого выбрать какое-либо устройство из доступных, открыть его с помощью open_device и передать полученный идентификатор и необходимые параметры желаемой функции. После использования необходимо закрыть устройство функцией close_device.
Рассмотрим создание простейшей программы на Labview для работы с libximc на примере «Ximc simple example.vi».
В начале программы вызывается функция 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.
Предупреждение
Поддержка контроллеров 8DСMC1 и 8SMC1 с 2016 года прекращена компанией STANDA. Примеры (в частности для LabVIEW) для этих контроллеров обновляться не будут!