#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 CLI (пакет VI в выпусках на GitHub в настоящее время новее, чем доступный через VIPM), или
- Инструмент NI CLI, установленный по умолчанию в LabVIEW 2018, но доступный с поддержкой версий с 2014, ссылки для скачивания, документация.
В частности, инструмент 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 также может быть вариантом.