Протокол обмена с COM-портом

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

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Протокол обмена с COM-портом

Сообщение Kvanto »

Подскажите пожалуйста, вот какая проблема стоит. Хочу считать с ком-порта данные, но мой ВП пока отказывается это правильно делать. В настоящее время контроллер выдает 3 байта, один из которых статусный. Между ними разделитель - табуляция. Эти байты я перевожу в ASCII символы и передаю уже 6 байт в порт. На данном этопе работы я пытаюсь пвывести на самописец пилу - 0000, 0001...00FF. И получается вот какая ситуация. Первая недоработка в том, что LV считывает с запозданием(терминал принимает за 1:45 55000 байт, а LV - 31000).Вторая недоработка в том, что значения в LV выводится правильно на протяжении приблизительно 200 циклов(50000 байт), потом начинаются искажения.Проверял несколько раз. В терминале считывание нормальное. Есть ли какой-нибудь пример ВП, который поможет решить мою задачу - считать данные и вывести их на самописец. Я ведь наверное не первый, кто такие вещи делает.
P.S. Могу не передавать ASCII символы, а передавать шестнадцатиричные значения выборок.
Вложения
Version 0_without for loop.vi
(41.83 КБ) 293 скачивания
Аватара пользователя
Jakob Brontfeyn

Activity Gold Silver Black
expert
expert
Сообщения: 1729
Зарегистрирован: 28 фев 2008, 11:01
Награды: 6
Благодарил (а): 1 раз
Контактная информация:

Re: Протокол обмена с COM-портом

Сообщение Jakob Brontfeyn »

Если ты хочешь что бы тебе помогли изложи так, что бы посторонний человек
мог четко понять, и не у всех есть десятая версия, за NI не угонишся.
они меняют версию каждый год.
Пришли картинку, где схематично изображено подключение железа.
Кроме того мне непонятно слово самописец (граф, чат, ХY - Граф ?)
и слово терминал, в данном контексте,
что это за контроллер и зачем что то передавать в порт.

Не поленись, пожалуйста, четко обьяснить

Мне много приходилось заниматься ц ком-портами смотри например здесь
http://www.labviewportal.org/viewtopic. ... 964#p23964
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Протокол обмена с COM-портом

Сообщение mzu2006 »

1. Обработку убрать из того цикла, где читаешь. Как-то так:
VISA_dropped_bytes.png
2. А по поводу того, как проводить обработку, то Jakob прав, нарисуй картинку - станет прощё понимать, что к чему
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

Jakob Brontfeyn писал(а):Если ты хочешь что бы тебе помогли изложи так, что бы посторонний человек
Не поленись, пожалуйста, четко обьяснить
просто 2010 у меня лицензионная, поэтому я в ней и работаю. В качестве графиков я использую Waveform Graph и Waveform chart. Под терминалом понимается программа, просматривающая данные, идущие с ком-порта, и записывающая их в файл. Контроллер я использую ATmega16, на который приходят выборки с АЦП(вообще я пытаюсь биопотенциалы регистрировать, электрокардиосигнал). А уже с контроллера я передаю выборки в ком-порт.
Вложения
Снимок.JPG
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

mzu2006 писал(а):1. Обработку убрать из того цикла, где читаешь. Как-то так:
А ВП сам можно?
Аватара пользователя
Eugen Graf

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

Re: Протокол обмена с COM-портом

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

Мне кажется :labview: не успевает рисовать графики при получении каждого числа.
Отдели как нибудь вывод данных на лицевую панель от чтения с ком-порта или показывай данные не каждый раз.
Второе это количество данных, со временем оно наростает в массиве и прога начинает работать всё медленней и медленней.

Убери для теста из цикла всё кроме чтения данных с порта и складывай количество считанных байтов, чтобы убедится, что :labview: не тормоз.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Протокол обмена с COM-портом

Сообщение mzu2006 »

Kvanto писал(а):А ВП сам можно?
Это snipplet - перетаскивай его на БД. Но вот и сам прибор:
Вложения
VISA_dropped_bytes.vi
(15.15 КБ) 357 скачиваний
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

заработало. Просматривал пилу от 0 до 255 минут 20, искажений нет. Теперь вот регистрирую сигнал с электродов. Идет настырная синусоида 50 Гц. Ставил и режекторный фильтр из палитры Point by point с частотами среза 49 и 51 Гц. Ставил и ФНЧ на 40 Гц из палитры Filter, также ставил Filter Express. В результате уменьшается амплитуда синусоиды, а вот что-то похожего на кардиосигнал не видно. Зато при подключении электродов к симулятору ЭКГ достаточно большой амплитуды у нас в лаборатории четко виден нужный сигнал без включения фильтров. что можете посоветовать?
Аватара пользователя
Viktor

Activity Professionalism Tutorials Black
expert
expert
Сообщения: 1408
Зарегистрирован: 23 мар 2008, 10:56
Награды: 4
Версия LabVIEW: 2020
Откуда: Санкт-Петербург
Благодарил (а): 17 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Протокол обмена с COM-портом

Сообщение Viktor »

Теперь вот регистрирую сигнал с электродов.
Нужен измерительный усилитель на входе, что-то вроде этого:
AD620A.png
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

как раз такой у меня и стоит. Кажется проблема проясняется. Увеличил порядок фильтра со 2 до 10 и синусоида подавилась лучше, начался просматриваться ЭКС.
Аватара пользователя
Viktor

Activity Professionalism Tutorials Black
expert
expert
Сообщения: 1408
Зарегистрирован: 23 мар 2008, 10:56
Награды: 4
Версия LabVIEW: 2020
Откуда: Санкт-Петербург
Благодарил (а): 17 раз
Поблагодарили: 3 раза
Контактная информация:

Re: Протокол обмена с COM-портом

Сообщение Viktor »

Используй защиту входов
1.png
1.png (10.96 КБ) 10191 просмотр
и правильное заземление
2.png
2.png (11.68 КБ) 10191 просмотр
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

я думаю схемотехнически устройство не стоит дорабатывать, хотелось бы осуществить цифровую фильтрацию сигнала. Я записывал ЭКГ с себя и сделал фильтрацию в Cool edit(прилагаю скриншоты). Ну в лабвью к сожалению при использовании режекторных фильтров, так подавить синусоиду не получается. Даже при использовании фильтров высоких порядков, получить более менее похожий на ЭКГ сигнал удается лишь с помощью ФНЧ на 30 Гц(на скриншоте ЭКГ с другого человека, не с меня).Если ставить частоту среза выше даже например 45, то сигнал будет в шуме.А мне хотелось увидеть составляющие сигнала где-то до 240 Гц. Мне советуют использовать сначала Real FFT, потом подавить нужные спектральные составляющие, а потом использовать Inverse Real FFT. Каким образом можно подавить нужные гармоники?
Вложения
Version 7_millivolts.vi
(47.76 КБ) 242 скачивания
Cool edit
Cool edit
Фильтрация Cool edit
Фильтрация Cool edit
ЭКГ labview
ЭКГ labview
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

помогите пожалуйста разобраться. Хочу понять, почему не фильтруется сигнал, и как его лучше отфильтровать. Поставил Express Filter и указал ему тип фильтра: ФНЧ, порядок 10, баттерворта, частоту среза 45 Гц. А он мне выдает ошибку(на скриншоте). Вот я и думаю проанализировать, что за спектр моего сигнала. Поставил действительное преобразование фурье из палитры Point by point. Вроде бы спектр отображается, и при включении фильтр изменяется, но вот неясно какие значения частот он показывает.график получается симметричный относительно значения sample length(входа функции FFT). Не совсем понял из справки, что этот вход означает .Каким в моем случае он должно быть,чтобы частоты были верны?
Вложения
Спектр.JPG
Ошибка.JPG
Version 8_FFT.vi
(51.13 КБ) 214 скачиваний
Kvanto

Activity Bronze Автор
VIP
VIP
Сообщения: 414
Зарегистрирован: 26 янв 2011, 17:56
Награды: 3
Версия LabVIEW: 10.0

Re: Протокол обмена с COM-портом

Сообщение Kvanto »

кажется нащупал нужное значение sample length, и ставлю равным частоте дискретизации. mzu2006, не подскажите, можно ли с помощью очередей отделить еще один цикл в моем ВП, где можно будет разместить блок фильтрации и преобразования фурье? А то я чувствую у меня притормаживать немного стал ВП из такого нагромождения.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Протокол обмена с COM-портом

Сообщение mzu2006 »

А почему ты считаешь, что введение ещё одного буфера решит проблему?
И ещё, у тебя в число преобразуется только последняя посылка, а должна преобразовываться ещё вся необработанная строка.
Ответить

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