Простой пример работы с последовательным портом

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы

Re: Простой пример работы с последовательным портом

Postby mishelle on 09 Aug 2011, 22:22

Понял. Ну а со считыванием реального сигнала с частотой дискретизации 40 кГц с помощью VISA READ будут проблемы?
P.S. я правильно понимаю что частота дискретизации-это частота отсчетов(1,2,4 байта) а не частота битов?
mishelle
beginner
beginner
 
Posts: 32
Joined: 31 Jul 2011, 10:05
LabVIEW Version: 8.0
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Konstantin Sumenko on 10 Aug 2011, 01:40

Реальный сигнал с чего снимается и чем принимается, какой он формы. Если ты собираешься напрямую его подавать на линию RX, то это плохая идея.
Частота дискретизации - частота следования отсчетов, а что из себя представляет сам отсчет в данном случае не важно.
User avatar
Konstantin Sumenko
expert
expert
 
Posts: 1437
Joined: 17 Jul 2008, 12:20
Location: Moscow
Medals: 2
Activity (1) Bronze (1)
LabVIEW Version: 2010
Karma: 122
VIP bloggers students

Re: Простой пример работы с последовательным портом

Postby mishelle on 10 Aug 2011, 16:05

Реальный сигнал представляет собой последовательные отсчеты, идущие с интервалом 25 мкс.Сигнал идет с платы FT232R, с компьютером будет соединена через USB , то есть работать с ним буду через VISA как с COM портом. В этом случае скорость чтения будет больше?
mishelle
beginner
beginner
 
Posts: 32
Joined: 31 Jul 2011, 10:05
LabVIEW Version: 8.0
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Konstantin Sumenko on 10 Aug 2011, 17:54

Вот честно, из описания мало что понятно: эти отсчеты что формирует- АЦП или микроконтроллер их сам генерирует и т.п.? С платы FT232R идут данные на компьютер (которые тоже на физическом уровне есть сигнал, но нам этот уровень не нужен). FT232 в режиме эмуляции UART поддерживает скорости до 3 мбод.
User avatar
Konstantin Sumenko
expert
expert
 
Posts: 1437
Joined: 17 Jul 2008, 12:20
Location: Moscow
Medals: 2
Activity (1) Bronze (1)
LabVIEW Version: 2010
Karma: 122
VIP bloggers students

Re: Простой пример работы с последовательным портом

Postby mishelle on 10 Aug 2011, 19:12

Konstantin Sumenko wrote: FT232 в режиме эмуляции UART поддерживает скорости до 3 мбод.


Благодарю...
mishelle
beginner
beginner
 
Posts: 32
Joined: 31 Jul 2011, 10:05
LabVIEW Version: 8.0
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Shpik on 10 Aug 2011, 22:30

Не работал с FT232R, но приходилось применять различные преобразователи интерфейсов ICP DAS и MOXA. Так вот последовательный порт, как известно, с такими модулями на компе может быть представлен как виртуальный. И взаимодействие происходит ПО->Драйвер устройства->физический порт (USB, Ethernet)-> Преобразователь->Устройство и Обратно. Так что, не знаю как FT232R, а вышеперечисленные вносят ощутимую задержку. Ведь скорость передачи по ком-порту имеется ввиду только м/у преобразователем интерфейсов и опрашиваемым устройством, и при этом не берется в расчет топология всей сети вместе со временем обработки данных в контроллерах модулей. Поправьте, если ошибаюсь.
Shpik
assistant
assistant
 
Posts: 119
Joined: 10 Jan 2011, 11:01
Location: Таганрог
LabVIEW Version: 8.6, 2009, 2010
Karma: 44
hardware I/O internet freelance

Re: Простой пример работы с последовательным портом

Postby Konstantin Sumenko on 11 Aug 2011, 00:10

Все верно, принимая во внимание тот факт, что обмен (FT232 с ПК) по USB ведется в режиме bulk, то ни о каких микросекундных задержках можно даже и не говорить.
User avatar
Konstantin Sumenko
expert
expert
 
Posts: 1437
Joined: 17 Jul 2008, 12:20
Location: Moscow
Medals: 2
Activity (1) Bronze (1)
LabVIEW Version: 2010
Karma: 122
VIP bloggers students

Re: Простой пример работы с последовательным портом

Postby MaXFaLCoN666 on 27 Nov 2011, 22:20

Code: Select all
Микроконтроллер Atmega48
АЦП:
Инициализация сбора данных(одновременно работает один канал):
-первого канала 201 (DEC)
-второго канала 202 (DEC)
Получение результат АЦП :
-для обоих каналов 209(DEC)
Деинициализация сбора данных для АЦП:
-для обоих каналов 216 (DEC)

Внешние прерывания
Инициализация сбора данных о внешнем прерывании
-первого канала 203(DEC)
-второго канала 204(DEC)
Получение данных о внешнем прерывании
-для первого канала 210(DEC)
-для второго канала 211(DEC)
Деинициализация сбора данных о внешнем прерывании
-для первого канала 217(DEC)
-для второго канала 218(DEC)

АЦП усредненного ШИМ сигнала
Инициализация режима усреднения ШИМ сигнала:
-для первого канала 205(DEC) - разрешение режима - число от 0(DEC) до 255(DEC) - регулятор уровня напряжения на АЦП от 255 до 0
-для второго канала 206(DEC) - разрешение режима - два числа в сумме составляющие число от 0(DEC) до 1023(DEC).Причем первое младшие разряды, а второе старшие. Пример: число 1020(DEC)  будет послано как 252 (DEC) и 3(DEC)
-для третьего канала 207(DEC) -разрешение режима - два числа в сумме составляющие число от 0(DEC) до 1023(DEC).Причем первое младшие разряды, а второе старшие.

Получение данных усреднения ШИМ сигнала:
-для первого канала 213(DEC)
-для второго канала 214(DEC)
-для третьего канала 215(DEC)

Деинициализация режима усреднения ШИМ сигнала
-для первого канала 219(DEC)
-для второго канала 220(DEC)
-для третьего канала 221(DEC)

Сравнение напряжений двух каналов
Инициализация режима
-посылка 208(DEC)

Получение данных о результате сравнения:
-посылка 215(DEC)

Деинициализация режима
-посылка 222(DEC).


выше представлено задание лабораторной - но если честно что и как сделать с помощью Labview можно не могу понять. смотрел выше представленные примеры, не могу подстроить под свое. и нельзя использовать компоненты которые уже все делают за меня. Использовать можно только стандартные элементы управления. :cry: :cry: :cry: помогите если можете уже три лабы бьюсь об стенку и понять не могу.
MaXFaLCoN666
interested
interested
 
Posts: 2
Joined: 27 Nov 2011, 21:57
LabVIEW Version: 8.6
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Frank on 02 Apr 2012, 23:42

Доброго времени суток!
Не пинайте сильно, я только начал ознакомление с LabView.
Построил небольшой пример но что то ничего не работает (((
Есть МК ATmega который шлет по последовательному порту номинал измеряемого тока, мне нужно отображать его на графике.
Тут мне еще не понятно вот что, мк разделяет переменную типа-int для пересылки. Как мне обратно ее склеить ? Чтобы получить корректное значение.
З.Ы. не пинайте я начинающий но очень хочу разобраться.
За ранее благодарен!.
Image

Uploaded with ImageShack.us
Frank
interested
interested
 
Posts: 4
Joined: 02 Apr 2012, 23:26
LabVIEW Version: 11
Karma: 0

Re: Простой пример работы с последовательным портом

Postby IvanLis on 03 Apr 2012, 06:09

Frank wrote:Тут мне еще не понятно вот что, мк разделяет переменную типа-int для пересылки. Как мне обратно ее склеить ? Чтобы получить корректное значение.

Покажите что Вы принимаете и что нужно получить (что посылается).

Только я уже запутался....
В одном месте Вы говорите о корреляторе (Сбор данных с коррелятора)
Здесь об ATmega. :dntknw:
User avatar
IvanLis
professor
professor
 
Posts: 4636
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 728
hardware VIP bloggers teachers

Re: Простой пример работы с последовательным портом

Postby Frank on 03 Apr 2012, 09:11

Тема про коррелятор не моя, то сообщение что выше в этой ветке первое на этом форуме, я только вчера зарегистрировался.
В контроллере в переменную "current" типа int (16-ти разрядная) записывается значение, оно уже рассчитанное и не требует какой либо мат. обработки. На дисплее платы контроллера отображается корректно. Я хочу отправить его на комп. для визуального отображения на графике.
Та как компорт передает информацию побайтно я разделил переменную "current" на две 8 разрядные переменные.
temph = current>>8;
templ = current;
При получении на компьютере в терминале я вижу эти байты они корректно приходят один за другим.
При тестировании VISA тоже принимает эти данные. Я сейчас на работе и не могу выложить скрин. Постараюсь ближе к вечеру предоставить его.
Но как только запускаю LabView получаю ошибку и нету ни каких результатов на графике.
Я понимаю что, то что принято из буфера нужно как то распознать для дальнейшего отображения. Но как до сих пор не нашел.
За ранее благодарен. :thank:
Frank
interested
interested
 
Posts: 4
Joined: 02 Apr 2012, 23:26
LabVIEW Version: 11
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Eugen Graf on 03 Apr 2012, 09:49

Считывать нужно два байта, а не двести, но даже если считывать два, то какой из них первый, а какой второй не понятно, можно ведь случайно начать считывать и со второго.
Преобразовывать нужно иначе, с помощью Type Cast в Int16.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Простой пример работы с последовательным портом

Postby Frank on 03 Apr 2012, 10:10

Спасибо! )) Попробую, отпишусь о результатах! )
З.Ы. в принципе мне не критично я могу сначала запускать LabView а потом стартовать передачу данных. Так что я думаю в таком порядке должно получится всегда чтение с первого байта.
Frank
interested
interested
 
Posts: 4
Joined: 02 Apr 2012, 23:26
LabVIEW Version: 11
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Frank on 09 Apr 2012, 17:50

Всем спасибо!
Все получилось и работает!
Следующей ступенью будет выводить два сигнала на один график...
Мои мысли по этому поводу: Нужно отсылать два байта от первого сигнала потом разделитель например возврат каретки и опять два байта от второго?
Пока не знаю как это все городить в LabView... почитаю книжки, появятся более вменяемые вопросы задам.
Всем еще раз спасибо! )
Frank
interested
interested
 
Posts: 4
Joined: 02 Apr 2012, 23:26
LabVIEW Version: 11
Karma: 0

Re: Простой пример работы с последовательным портом

Postby Eugen Graf on 09 Apr 2012, 21:06

Возврат каретки может случайно встретиться и в самих данных, что будешь в этом случае делать?
Но мысли направлены в правильную сторону. Разделитель нужен, назови его синхронизационным байтом или терминаторным байтом. Разделительный байт не обязательно должен быть одним, их может быть больше. Так же можно добавить тип сигнала, например "1" или "2" и контрольную сумму.
Пара выкинутых пакетов не страшна, но если трафик сбивается с синхронизации, то выйдет кака.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

PreviousNext

Return to Коммуникация с приборами

Who is online

Users browsing this forum: No registered users and 2 guests

cron