VISA clear, close и другие вопросы

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Рустам1990
interested
interested
Сообщения: 8
Зарегистрирован: 03 мар 2014, 12:48
Версия LabVIEW: 8

VISA clear, close и другие вопросы

Сообщение Рустам1990 »

Sas, "...пользователь выдернул прибор, нужно 7 очистить visa session, переподключаться (1) пока не воткнет обратно, все остальные действия не выполняются..."
1). Чем принципиально занимается visa clear? Чем он будет отличаться от того же close. Часто возникают непонятные мне проблемы при работе одновременно с двумя датчиками, подключенных к разным com-портам. Объясню, на примере. Если случайно один из датчиков (назовем Д1) подключить на порт, к которому на самом деле уже подключен датчик Д2 возникают проблемы, и после этого сменить порт удастся только после перезапуска программы. Может как раз здесь я и должен и использовать этот clear?
2). Если на одном из датчиков я выберу com-port. Как заблокировать этот visa resourse name для выбора соm-port для других датчиков?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5464
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Подскажите по user32 mouse_event

Сообщение IvanLis »

Рустам1990 писал(а):Чем принципиально занимается visa clear? Чем он будет отличаться от того же close.
clear - производит очистку входного/выходного буфера устройства
close - закрывает соединение
Рустам1990
interested
interested
Сообщения: 8
Зарегистрирован: 03 мар 2014, 12:48
Версия LabVIEW: 8

Re: Подскажите по user32 mouse_event

Сообщение Рустам1990 »

IvanLis, получается в случае с моей проблемой использование visa clear мне никак не поможет, т.к. это не касается самих visa resourse name.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Подскажите по user32 mouse_event

Сообщение dadreamer »

Рустам1990, может быть, поможет принудительное завершение сессии. Посмотрите тему http://www.labviewportal.org/viewtopic. ... 911#p51911
Если на одном из датчиков я выберу com-port. Как заблокировать этот visa resourse name для выбора соm-port для других датчиков?
Ну, можете сделать свой typedef доступных портов с использованием VISA Find Resource или передавать строковый параметр вместо сессии. http://www.labviewportal.org/viewtopic.php?f=35&t=6205
Рустам1990
interested
interested
Сообщения: 8
Зарегистрирован: 03 мар 2014, 12:48
Версия LabVIEW: 8

Re: Подскажите по user32 mouse_event

Сообщение Рустам1990 »

dadreamer, по ссылке то что надо, спасибо!!
а что значит первый вариант "сделать свой typedef"? и есть ли отличие между использованием ivi logical name и visa resourse name?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Подскажите по user32 mouse_event

Сообщение dadreamer »

Рустам1990
Я имел в виду использование варианта, предложенного мной в этой теме: в начале работы программы вызывать VISA Find Resource для определения имеющихся устройств (портов), заполнять список Ring/Enum строковыми именами ресурсов вида COM1 или ASRL1::INSTR:, а уже в дальнейшем вызывать VISA Open для открытия порта. Плюс можно сделать, как на картинке в той теме. Но вам придется хранить имя подключенного порта (где-нибудь в сдвиговом регистре или индикаторе), и редактировать список портов так, чтобы "случайно" не подключиться к уже подключенному порту из другого места программы.
Ещё вариант - как раз-таки блокировка самой сессии инструментами VISA Lock Async / VISA Unlock. Посмотрите пример в директории C:\Program Files\National Instruments\ :labview: \examples\Instrument IO\VISA\Locking\VISA Locking.vi. Суть примера: если поставить блокировку на открытой сессии и попытаться переоткрыть эту сессию и вообще выполнить с ней какие-либо операции посредством другой сессии, то возникнет ошибка -1073807345:
VISA: (Hex 0xBFFF000F) Specified type of lock cannot be obtained, or specified operation cannot be performed, because the resource is locked.
Этим, в принципе, можно пользоваться, если обрабатывать кластер ошибок error in / out. Вторая сессия должна быть открыта с параметром duplicate session = true, иначе VISA Open откроет первую сессию. Нужно также знать, что VISA Close снимает автоматом любую блокировку с сессии.
есть ли отличие между использованием ivi logical name и visa resourse name?
Можно начать с того, что это представления разных классов устройств (VISA Session of Class Instr и IVI Session of Class IVI) и они между собой не совместимы: вы не сможете с контрола IVI завести ссылку на инструменты VISA. Чтобы было понятно, что есть что, приведу пару цитат.
В настоящее время разработан и применяется на практике ряд стандартов, из которых упомянем основные два.

Первый регламентирует архитектуру программного обеспечения виртуальных измерительных систем - Virtual Instrument Software Architecture (VISA), поддерживающую технологию Plug&Play и состоящую из унифицированного набора функций управления вводом-выводом. Этот набор функций не зависит от типа измерительного прибора, типа интерфейса, используемого языка программирования, от операционной системы и применим в многопроцессорных и распределенных системах, функционирующих на различных аппаратных платформах.

Второй стандарт - Interchangeable Virtual Instruments (IVI) - определяет требования к драйверам - программным модулям, организующим интерфейс между нижним уровнем ввода-вывода и уровнем прикладных программ. Соблюдение стандарта IVI гарантирует взаимозаменяемость оборудования различных производителей в составе виртуальных измерительных систем при неизменности программного обеспечения верхнего уровня. Эти стандарты разрабатывались и согласовывались некоммерческими организациями, в которые вошли специалисты многих ведущих компаний - разработчики технических средств и программного обеспечения, инженеры производств, системные интеграторы и др.
Ещё одна цитата:
Типы драйверов приборов
В LabVIEW для управления приборами применяют три стандартных типа драйверов. Различие заключается не в их использовании, а в их реализации. К стандартным типам драйверов приборов относятся:
· Драйверы LabVIEW Plug and Play
· Драйверы IVI
· Драйверы, поставляемые с прибором

Драйверы LabVIEW Plug and Play
Драйвер LabVIEW Plug and Play представляет собой набор VI для связи с программируемым измерительным прибором и управления им. Каждый VI соответствует некоторой операции программирования, например, конфигурирование, чтение, запись или запуск прибора. Драйверы данного типа включают в себя средства обработки ошибок, лицевые панели, блок-диаграммы, пиктограммы и оперативную справочную систему (online Help). Драйверы LabVIEW Plug and Play выполнены на основе общей архитектуры с унифицированным интерфейсом, поэтому с их помощью можно быстро устанавливать связь с приборами, организовывать взаимодействие с приборами, при этом разработка программного кода минимальна или не требуется вовсе.

Драйверы IVI
IVI драйверы более интеллектуально наполнены, взаимозаменяемы и могут быть использованы для моделирования. При работе с драйверами этого типа отпадает необходимость переписывать приложения, если производится замена прибора на другой прибор аналогичного типа. Например, можно разработать VI для осциллографов различных марок, даже если у них используются разные коммуникационные шины. Организация IVI Foundation, которая является разработчиком IVI стандартов, с целью обеспечения взаимозаменяемости определила спецификации для следующих классов приборов: цифровой мультиметр, осциллограф, генератор сигналов произвольной формы/функциональный генератор, источник питания постоянного тока, коммутатор, измеритель мощности, анализатор спектра, генератор радиочастотных сигналов. IVI драйвера National Instruments предоставляют следующие дополнительные преимущества:
· Кэширование состояний прибора для улучшения
производительности
· Многопоточное исполнение
· Доступ к атрибутам прибора

Драйверы, поставляемые с прибором
Драйверы этого типа поставляются с приборами "как есть" и обычно решают узкие задачи, не предоставляя возможностей полнофункционального драйвера. Они не поддерживаются NI или другими компаниями, не являющимися разработчиками этих драйверов.

VISA в LabVIEW
VISA представляет собой стандартные API функции ввода-вывода для программирования измерительной аппаратуры. С помощью VISA можно управлять приборами, поддерживающими интерфейс GPIB, последовательный интерфейс RS-232, Ethernet, приборы в стандартах PXI и VXI путем вызова драйверов, соответствующих типу используемого прибора.
В :labview: традиционно для работы с последовательным портом используется VISA, так что и контролы должны быть соответствующие, а IVI для других устройств используется. Хотя фактически инструменты IVI реализованы на том же API, что и инструменты VISA. :crazy:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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