Нет связи с прибором после создания exe

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
BARD
beginner
beginner
Сообщения: 24
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 4 раза
Контактная информация:

Нет связи с прибором после создания exe

Сообщение BARD »

Добрый день! Проблема следующая: есть простая программа по опросу прибора и получения данных с него, которая нормально работает, связь через VISA по USB напрямую в прибор. Хочу программу сделать в виде exe для портирования на другой компьютер, где LabVIEW нет. После успешного создания exe на том же самом компьютере без каких-либо изменений пытаюсь запустить программу, но связи с прибором нет, данные не приходят (возможно и запросы не уходят). Все настройки одинаковые, что в exe, что не в exe. В чем может быть проблема?
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 989
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 19 раз

Re: Нет связи с прибором после создания exe

Сообщение Andrew Lunev »

Без кода сложно что-то определенное посоветовать.
Попробуйте перезагрузить компьютер и не запуская Labview запустите экзешник. Если заработает, то проблема с открытием/закрытием соединения. В среде разработки автоматически ресурсы закрываются, а в экзешнике надо ручками все делать. Возможно у вас сессия предыдущая не закрылась, и поэтому экзешник не может подключиться к устройству.
Ну и никто не мешает вывести индикатор ошибки Visa в экзешнике и посмотреть, что именно происходит.
Аватара пользователя
jane_wild

Gold
leader
leader
Сообщения: 557
Зарегистрирован: 30 июн 2016, 02:11
Награды: 1
Версия LabVIEW: 2026
Благодарил (а): 108 раз
Поблагодарили: 25 раз
Контактная информация:

Re: Нет связи с прибором после создания exe

Сообщение jane_wild »

Andrew Lunev писал(а): 14 авг 2023, 13:37 Ну и никто не мешает вывести индикатор ошибки Visa в экзешнике и посмотреть, что именно происходит.
А также посмотреть что подается на вход VISA.
Возможно в среде LabVIEW вы в поле ввода вручную выбираете ресурс из выпадающего меню, или печатаете. А при создании ехе это поле остается пустым.
Life is short. Smile while you still have teeth!
BARD
beginner
beginner
Сообщения: 24
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 4 раза
Контактная информация:

Re: Нет связи с прибором после создания exe

Сообщение BARD »

Всем добрый день! Спасибо за ответы. На всякий случай оставляю решение проблемы для тех, кто столкнется в будущем. И немного подробнее расскажу про код, который у меня.
Сам код очень простой - фактически текстовая команда из одного слова и знака вопроса, подающаяся на VISA WRITE. После этого жду ответ через VISA READ. Все поставлено в цикл с задержкой 100 мс. Между вопросом и ответом тоже поставлено 20 мс на всякий случай. Перед первым опросом прибора вне цикла шла команда VISA OPEN, после завершения цикла шла команда VISA CLOSE. Ничего более не настраивалось. Прибор Lakeshore 335 Temperature Controller был подключен через USB напрямую без каких-либо хабов или удлинителей к компьютеру на десятой винде. Этот код прекрасно работал просто в VI, но при попытке сделать exe даже на том же самом компьютере программа не получала данные от прибора, что-то отправить на него тоже не выходило (первоначальный код как только не менял). При просмотре ошибок стало понятно, что по какой-то причине прибор не отвечает, runtime превышен.
Способ лечения довольно странный, до сих пор не понимаю, почему это работает так, как работает. Может кто объяснит. Я на labview пишу несложные программы уже 10 лет, но никогда особо не нужно было делать exe, потому что на всех компьютерах можно было поставить всегда свой labview и оставаться в режиме разработчика, поэтому exe делал пару раз исключительно для интереса.
Итак, прежде всего после подключения USB и определения прибора как устройства, скачиваем драйвер через автоматическое нахождение драйверов windows. Далее в NI MAX видим устройство, которое уже определяется как Lakshore335. Внутри NI MAX можно поменять параметры порта. Как должно быть: baud rate 57600, data bits 7, parity odd, stop bits 1, flow control none. Более того, эти же настройки нужно вбить и в самой винде, так как после применения этих настроек в NI MAX, он начнет выдавать warning и говорить, что настройки не те, которые в винде. В винде нужно открыть через диспетчер устройств порт, куда подключен Lakeshore bтам в настройках вбить те же самые настройки, что я описал выше.
Далее, в самом коде labview после каждой команды нужно добавлять константу carriage return.
Перед созданием exe файла из кода убираем OPEN VISA и CLOSE VISA, оставляя только команды на опрос прибора (ну или другие команды) - это ключевой момент, с open и close visa после создания exe данные не будут считываться. Без них - будут прекрасно. Я понимаю, что по-хорошему нужно открывать и закрывать сессию с портами, но лучше взаимодействовать с прибором без этого, чем не взаимодействовать вообще. Автоматическое закрытие сессии после завершения программы я тоже не делал.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2317
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 33 раза
Поблагодарили: 38 раз

Re: Нет связи с прибором после создания exe

Сообщение Borjomy_1 »

Скорее всего определяющяя ошибка - отсутствие CR в сообщении, из-за которого команда не воспринимается правильно.
Аватара пользователя
dadreamer

Activity Professionalism Tutorials Gold Silver
Bronze Black Автор
professor
professor
Сообщения: 3998
Зарегистрирован: 17 фев 2013, 16:33
Награды: 9
Версия LabVIEW: 2.5 — 2025
Благодарил (а): 14 раз
Поблагодарили: 149 раз

Re: Нет связи с прибором после создания exe

Сообщение dadreamer »

BARD писал(а): 15 авг 2023, 07:22Перед первым опросом прибора вне цикла шла команда VISA OPEN, после завершения цикла шла команда VISA CLOSE. Ничего более не настраивалось.
BARD писал(а): 15 авг 2023, 07:22Как должно быть: baud rate 57600, data bits 7, parity odd, stop bits 1, flow control none.
Первым вызовом традиционно ставится VISA Configure Serial Port, для которого желательно явно указать те параметры связи, что приведены в мануалах на прибор. Это настройки порта по умолчанию.
2023-08-15_12-04-48.jpg
2023-08-15_12-04-48.jpg (73.19 КБ) 4371 просмотр
Здесь минимум три параметра отличаются о тех, что выше процитированы.

Да, и с терминатором надо сразу же разбираться.
Вложения
2023-08-15_12-20-28.jpg
BARD
beginner
beginner
Сообщения: 24
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 4 раза
Контактная информация:

Re: Нет связи с прибором после создания exe

Сообщение BARD »

Borjomy_1 писал(а): 15 авг 2023, 07:50 Скорее всего определяющяя ошибка - отсутствие CR в сообщении, из-за которого команда не воспринимается правильно.
Это была одна из интересных ошибок, потому что при выполнении просто VI мне carriage return не был нужен никогда в данном случае, и все прекрасно считывалось. Но стоило попробовать перенести на exe, как он понадобился.
BARD
beginner
beginner
Сообщения: 24
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 4 раза
Контактная информация:

Re: Нет связи с прибором после создания exe

Сообщение BARD »

dadreamer писал(а): 15 авг 2023, 10:09
BARD писал(а): 15 авг 2023, 07:22Перед первым опросом прибора вне цикла шла команда VISA OPEN, после завершения цикла шла команда VISA CLOSE. Ничего более не настраивалось.
BARD писал(а): 15 авг 2023, 07:22Как должно быть: baud rate 57600, data bits 7, parity odd, stop bits 1, flow control none.
Первым вызовом традиционно ставится VISA Configure Serial Port, для которого желательно явно указать те параметры связи, что приведены в мануалах на прибор. Это настройки порта по умолчанию.2023-08-15_12-04-48.jpgЗдесь минимум три параметра отличаются о тех, что выше процитированы.

Да, и с терминатором надо сразу же разбираться.
Да, я про Configure serial port знаю, но для простых программ я обычно настраиваю в NI MAX и в винде раз и навсегда, так как у нас оборудование годами подключено к одним и тем же разъемам без выключения компьютера.
Termination character специально настраивать не нужно было, все по умолчанию считывалось верно.
Аватара пользователя
jane_wild

Gold
leader
leader
Сообщения: 557
Зарегистрирован: 30 июн 2016, 02:11
Награды: 1
Версия LabVIEW: 2026
Благодарил (а): 108 раз
Поблагодарили: 25 раз
Контактная информация:

Re: Нет связи с прибором после создания exe

Сообщение jane_wild »

BARD писал(а): 15 авг 2023, 11:12 Termination character специально настраивать не нужно было, все по умолчанию считывалось верно.
Из manual на стр. 104
A command string is issued by the computer and instructs the instrument to perform
a function or change a parameter setting. The format is:
<command mnemonic><space><parameter data><terminators>.
Command mnemonics and parameter data necessary for each one is described in
section 6.4. Terminators must be sent with every message string.
A query string is issued by the computer and instructs the instrument to send a
response. The query format is:
<query mnemonic><?><space><parameter data><terminators>.
т.е. терминанор нужен в любом случае

Дело конечно хозяйское, но устанавливать на каждой целевой машине LabVIEW по моему мнению перебор.
Life is short. Smile while you still have teeth!
BARD
beginner
beginner
Сообщения: 24
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 4 раза
Контактная информация:

Re: Нет связи с прибором после создания exe

Сообщение BARD »

jane_wild писал(а): 15 авг 2023, 15:32
BARD писал(а): 15 авг 2023, 11:12 Termination character специально настраивать не нужно было, все по умолчанию считывалось верно.
Из manual на стр. 104
A command string is issued by the computer and instructs the instrument to perform
a function or change a parameter setting. The format is:
<command mnemonic><space><parameter data><terminators>.
Command mnemonics and parameter data necessary for each one is described in
section 6.4. Terminators must be sent with every message string.
A query string is issued by the computer and instructs the instrument to send a
response. The query format is:
<query mnemonic><?><space><parameter data><terminators>.
т.е. терминанор нужен в любом случае

Дело конечно хозяйское, но устанавливать на каждой целевой машине LabVIEW по моему мнению перебор.
Я читал мануал много раз и видел это. Здесь я описал свой реальный опыт, как у меня все сложилось. Никаких терминаторов я на конце сам специально не ставил, все заработало. Возможно, это не сработает у других (на другой винде, с другим прибором и т.д.), но у меня сработало, поэтому я так и написал.
А по поводу установки LabVIEW на всех машинах - у нас лицензия, можно сказать, на бесконечное количество машин, поэтому с этим проблем нет.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»