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

- Сообщения: 24
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 4 раза
- Контактная информация:
Нет связи с прибором после создания exe
Добрый день! Проблема следующая: есть простая программа по опросу прибора и получения данных с него, которая нормально работает, связь через VISA по USB напрямую в прибор. Хочу программу сделать в виде exe для портирования на другой компьютер, где LabVIEW нет. После успешного создания exe на том же самом компьютере без каких-либо изменений пытаюсь запустить программу, но связи с прибором нет, данные не приходят (возможно и запросы не уходят). Все настройки одинаковые, что в exe, что не в exe. В чем может быть проблема?
-
Andrew Lunev
- VIP

- Сообщения: 989
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 19 раз
Re: Нет связи с прибором после создания exe
Без кода сложно что-то определенное посоветовать.
Попробуйте перезагрузить компьютер и не запуская Labview запустите экзешник. Если заработает, то проблема с открытием/закрытием соединения. В среде разработки автоматически ресурсы закрываются, а в экзешнике надо ручками все делать. Возможно у вас сессия предыдущая не закрылась, и поэтому экзешник не может подключиться к устройству.
Ну и никто не мешает вывести индикатор ошибки Visa в экзешнике и посмотреть, что именно происходит.
Попробуйте перезагрузить компьютер и не запуская Labview запустите экзешник. Если заработает, то проблема с открытием/закрытием соединения. В среде разработки автоматически ресурсы закрываются, а в экзешнике надо ручками все делать. Возможно у вас сессия предыдущая не закрылась, и поэтому экзешник не может подключиться к устройству.
Ну и никто не мешает вывести индикатор ошибки Visa в экзешнике и посмотреть, что именно происходит.
-
jane_wild
- leader

- Сообщения: 557
- Зарегистрирован: 30 июн 2016, 02:11
- Награды: 1
- Версия LabVIEW: 2026
- Благодарил (а): 108 раз
- Поблагодарили: 25 раз
- Контактная информация:
Re: Нет связи с прибором после создания exe
А также посмотреть что подается на вход VISA.Andrew Lunev писал(а): 14 авг 2023, 13:37 Ну и никто не мешает вывести индикатор ошибки Visa в экзешнике и посмотреть, что именно происходит.
Возможно в среде LabVIEW вы в поле ввода вручную выбираете ресурс из выпадающего меню, или печатаете. А при создании ехе это поле остается пустым.
Life is short. Smile while you still have teeth!
-
BARD
- beginner

- Сообщения: 24
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 4 раза
- Контактная информация:
Re: Нет связи с прибором после создания exe
Всем добрый день! Спасибо за ответы. На всякий случай оставляю решение проблемы для тех, кто столкнется в будущем. И немного подробнее расскажу про код, который у меня.
Сам код очень простой - фактически текстовая команда из одного слова и знака вопроса, подающаяся на 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 данные не будут считываться. Без них - будут прекрасно. Я понимаю, что по-хорошему нужно открывать и закрывать сессию с портами, но лучше взаимодействовать с прибором без этого, чем не взаимодействовать вообще. Автоматическое закрытие сессии после завершения программы я тоже не делал.
Сам код очень простой - фактически текстовая команда из одного слова и знака вопроса, подающаяся на 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
- doctor

- Сообщения: 2317
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 33 раза
- Поблагодарили: 38 раз
Re: Нет связи с прибором после создания exe
Скорее всего определяющяя ошибка - отсутствие CR в сообщении, из-за которого команда не воспринимается правильно.
-
dadreamer
- professor

- Сообщения: 3998
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 9
- Версия LabVIEW: 2.5 — 2025
- Благодарил (а): 14 раз
- Поблагодарили: 149 раз
Re: Нет связи с прибором после создания exe
BARD писал(а): 15 авг 2023, 07:22Перед первым опросом прибора вне цикла шла команда VISA OPEN, после завершения цикла шла команда VISA CLOSE. Ничего более не настраивалось.
Первым вызовом традиционно ставится VISA Configure Serial Port, для которого желательно явно указать те параметры связи, что приведены в мануалах на прибор. Это настройки порта по умолчанию.Здесь минимум три параметра отличаются о тех, что выше процитированы.BARD писал(а): 15 авг 2023, 07:22Как должно быть: baud rate 57600, data bits 7, parity odd, stop bits 1, flow control none.
Да, и с терминатором надо сразу же разбираться.
-
BARD
- beginner

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

- Сообщения: 24
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 4 раза
- Контактная информация:
Re: Нет связи с прибором после создания exe
Да, я про Configure serial port знаю, но для простых программ я обычно настраиваю в NI MAX и в винде раз и навсегда, так как у нас оборудование годами подключено к одним и тем же разъемам без выключения компьютера.dadreamer писал(а): 15 авг 2023, 10:09BARD писал(а): 15 авг 2023, 07:22Перед первым опросом прибора вне цикла шла команда VISA OPEN, после завершения цикла шла команда VISA CLOSE. Ничего более не настраивалось.Первым вызовом традиционно ставится VISA Configure Serial Port, для которого желательно явно указать те параметры связи, что приведены в мануалах на прибор. Это настройки порта по умолчанию.2023-08-15_12-04-48.jpgЗдесь минимум три параметра отличаются о тех, что выше процитированы.BARD писал(а): 15 авг 2023, 07:22Как должно быть: baud rate 57600, data bits 7, parity odd, stop bits 1, flow control none.
Да, и с терминатором надо сразу же разбираться.
Termination character специально настраивать не нужно было, все по умолчанию считывалось верно.
-
jane_wild
- leader

- Сообщения: 557
- Зарегистрирован: 30 июн 2016, 02:11
- Награды: 1
- Версия LabVIEW: 2026
- Благодарил (а): 108 раз
- Поблагодарили: 25 раз
- Контактная информация:
Re: Нет связи с прибором после создания exe
Из manual на стр. 104BARD писал(а): 15 авг 2023, 11:12 Termination character специально настраивать не нужно было, все по умолчанию считывалось верно.
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

- Сообщения: 24
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 4 раза
- Контактная информация:
Re: Нет связи с прибором после создания exe
Я читал мануал много раз и видел это. Здесь я описал свой реальный опыт, как у меня все сложилось. Никаких терминаторов я на конце сам специально не ставил, все заработало. Возможно, это не сработает у других (на другой винде, с другим прибором и т.д.), но у меня сработало, поэтому я так и написал.jane_wild писал(а): 15 авг 2023, 15:32Из manual на стр. 104BARD писал(а): 15 авг 2023, 11:12 Termination character специально настраивать не нужно было, все по умолчанию считывалось верно.
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 на всех машинах - у нас лицензия, можно сказать, на бесконечное количество машин, поэтому с этим проблем нет.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 210 Просмотры
-
Последнее сообщение IvanLis