Как сделать прием данных по rs-232 с прерыванием?

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

что это значит, можно подробнее, еще с этим не сталкивался
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Для начала выложи скрин твоей блоковой диаграммы, может реинтрантнось в данном случае не нужна, а проблема кроется в чём то другом.

Я пользуюсь реинтрантными приборами, если я хочу использовать один и тот же прибор в нескольких циклах, причём этот прибор обрабатывает несколько разных интерфейсов. VISA Read, Write и т.д. тоже являются реинтрантными, т.к. рассчитаны на параллельное использование в нескольких циклах с неизвестным количеством интерфейсов.

Реинтрантные приборы при вызове получают отдельный кусок памяти и работают как бы независимо друг от друга. Для каждого вызова такого прибора создаётся отдельная инстанция.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

вот скрины для решения поставленной задачи
Вложения
код в VISA.Код остальных команд<br />аналогичен.
код в VISA.Код остальных команд
аналогичен.
общий vi с подпрограммами <br />Status.vi, Move to.vi, Stop.vi
общий vi с подпрограммами
Status.vi, Move to.vi, Stop.vi
Stop.vi останавливает любую команду
Stop.vi останавливает любую команду
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Мне кажется у тебя что то напутано с циклами.

Содержимое верхнего цикла помести в кейс Timeout, а сам цикл вообще удали. Установи время Timeout например на 1000 миллисекунд. Больше тебе в принципе ничего не надо.

Если же ты обязательно хочешь иметь два цикла, то могут возникнуть как раз такие проблемы, как ты описал.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

пасиб, буду пробовать. На уровне ViSA ничего не нужно делать? Стоит
ли делать то же самое с помощью lvserial?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Lvserial и VISA почти одно и тоже. У того и другого есть недостатки и преимущества. Что ты выберешь решать тебе самому.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

когда нужно делать открытие VISA сессии и закрытие, для проги с вложенными подприборами?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Ну это как ты захочешь. Можешь открывать/закрывать сессию по нажатию кнопки. А можешь автоматически при старте/стопе главного прибора.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

а это для каждого вложенного прибора или для общего?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Для общего наверное. Тебе надо будет передавать номер сессии в подприборы. Но я не знаю как ты устроил свою прогу. Если выложишь скрин, может подскажу побольше.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

можно глобальными перем.передавать!? до общей еще не добрался. Но вобщем ясно, где-то в начале проги нужно
инициализировать.
как я понимаю, реинтратные приборы можно юзать для множества команд, т.е. как шаблон?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Да, глобальными тоже можно, но лучше проводами соединять.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

пробовал как советовали с events и VISA, проблема еще осталась.
это происходит при передаче одновременно двух и более команд. Например, при нескольких запусках (нажатии кнопки run) в ответной строке первой команды может быть строка которая должна идти в ответ запроса второй команды и наоборот, т.е. возникает путаница или может быть пустая строка, затем строка от другой команды, а затем соответствующая первой.

что тут нужно настраивать: очереди, прерывания или что-то другое?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Eugen Graf »

Тебе скорее всего надо делать так:

посылаешь одну команду и ждёшь ответ, когда ответ приходит, посылаешь следующюю и ждёшь ответ ну и т.д.
Тогда путаницы быть не должно.
Confocal
assistant
assistant
Сообщения: 104
Зарегистрирован: 15 авг 2008, 11:55
Версия LabVIEW: 8.5
Откуда: Россия, Московская область
Контактная информация:

Re: Как сделать прием данных по rs-232 с прерыванием?

Сообщение Confocal »

это то да, но мне нужно чтобы одновременно несколько команд выполнялось, потому что
для управлением прибора нужно использовать несколько команд одновременно для решения задачи которую я описал ранее.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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