Есть ли способ, которым я могу разработать графический интерфейс Python для управления LabVIEW VIs?

#python #software-design #labview

#питон #разработка программного обеспечения #лабораторный обзор #python #labview

Вопрос:

Я настраиваю программное обеспечение, которое будет построено на Python3, для тестовых установок, и в настоящее время эти установки используют оборудование National Instruments cRIO и другое оборудование NI. Система работает на компьютере с Windows.

Для управления этим оборудованием нам понадобятся VIs и subVIs, построенные на LabVIEW. Я знаю, что LabVIEW поставляется со своим собственным пользовательским интерфейсом, но я все равно хотел бы разработать свой графический интерфейс на Python, потому что не все установки в будущем будут использовать аппаратное обеспечение NI или LabVIEW. В будущем могут появиться плагины MATLAB.

Я видел онлайн-руководства, в которых можно было бы использовать функции Python в LabVIEW VIs, но есть ли для меня какая-либо точка отсчета, где я могу использовать LabVIEW VIs и иметь графический интерфейс, построенный на Python?

Заранее благодарю вас за вашу помощь.

Комментарии:

1. Вы могли бы рассмотреть возможность реализации аппаратного управления NI через Python — потому что NI имеет API не только в LabVIEW для управления своим оборудованием: ni.com/product-documentation/53059/en , knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019OgDSAU .

Ответ №1:

Я согласен, что лучшим выбором, скорее всего, является прямая реализация связи на основе TCP / IP, но если вы хотите что-то более простое (особенно если ваше сообщение выполнено в стиле «Вот набор инструкций для запуска VI, запустите этот VI, а затем дайте мне результаты»), вы можете взглянуть на либо

В частности, инструмент Wiresmith использует TCP / IP для подключения к указанному вами VI (или exe), а затем может отправлять сообщения обратно на консоль с помощью простого VI.

Недавно я использовал это с SCons (система сборки на основе Python) и нашел это весьма полезным, но, вероятно, это гораздо более простой интерфейс, чем полноценная тестовая система.

Ответ №2:

Наиболее гибкой архитектурой было бы использовать некоторую комбинацию TCP / IP, UDP и веб-сервисов, в зависимости от типа связи, которую вам нужно выполнить. Это также дает вам гибкость при перемещении различных частей кода ввода-вывода между cRIO (или другим устройством) и хост-ПК, поскольку одни и те же протоколы будут работать независимо от того, обмениваетесь ли вы данными с другим устройством или на том же компьютере.

Варианты довольно подробно рассмотрены в главе 4 Руководства для разработчиков NI CompactRIO, но вкратце:

  • TCP / IP для сообщений, команд или потоковых данных, где никакие данные не могут быть потеряны
  • UDP для широковещательных обновлений, где низкая задержка важнее 100% целостности
  • Веб-сервисы для доступа к текущим значениям (тегам) — я бы сказал, что они также подходят для коротких сообщений или команд.

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

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

В качестве альтернативы, у меня самого нет опыта в этом, но вы можете захотеть заглянуть в ZeroMQ, который имеет привязки, доступные для Python, LabVIEW и многих других языков.

Комментарии:

1. Отредактировано для добавления: ZeroMQ также может быть вариантом.