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

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

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

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

Сообщение Kvanto »

здесь сигнал прошедший через фильтр Mean
Вложения
Без фильтра.txt
(92.92 КБ) 124 скачивания
С фильтром.txt
(97.39 КБ) 136 скачиваний
Shpik
assistant
assistant
Сообщения: 119
Зарегистрирован: 10 янв 2011, 11:01
Версия LabVIEW: 8.6, 2009, 2010
Откуда: Таганрог
Контактная информация:

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

Сообщение Shpik »

Может нужно реализовать проверку на достоверность, помимо фильтрации естественно? Ну проще говоря, насколько я помню, в общем случае берется паспортная погрешность датчика умножается на 3. Отклонение вниз - обрыв, вверх - КЗ. Причем, собственно, не особо важно где произошел сбой: в питании, канале связи и пр. Если нужно заводишь счетчик отклонений. А если значение выходит за диапазон, то заменяешь последним достоверным значением. Если измерение начинается с отклонения, то нужно, конечно, инициализировать "как бы" достоверное значение.
Естественно, это можно делать как угодно, т.е. можно и не брать в учет датчик, а просто какие-то константы. Ну а счетчик по превышению какого-то значения(обычно 3 раза) может выдать событие о неисправности или нештатной ситуации.
Kvanto

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

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

Сообщение Kvanto »

не совсем пойму как этот метод может помочь компенсировать постоянную или НЧ составляющую. Ведь подмена последним достоверным значением это явно искажение сигнала. Раз выйдет за диапазон, другой... так он будет рисовать постоянно прямую.
Shpik
assistant
assistant
Сообщения: 119
Зарегистрирован: 10 янв 2011, 11:01
Версия LabVIEW: 8.6, 2009, 2010
Откуда: Таганрог
Контактная информация:

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

Сообщение Shpik »

Ну можно,например, попробовать "вычислить", так сказать, тенденцию изменения сигнала и, таким образом, держать не последнее достоверное значение, а скажем "умный" динамический отрезок. Просто в сигнале какие-то пульсации большой амплитуды и цифровым фильтром может не получится их отфильтровать. :dntknw:
Kvanto

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

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

Сообщение Kvanto »

Shpik писал(а):Ну можно,например, попробовать "вычислить", так сказать, тенденцию изменения сигнала и, таким образом, держать не последнее достоверное значение, а скажем "умный" динамический отрезок.
если можно поподробнее каким образом это можно реализовать
Shpik писал(а):Просто в сигнале какие-то пульсации большой амплитуды и цифровым фильтром может не получится их отфильтровать. :dntknw:
если вы про своеобразные вслески, то не обращайте внимание, это происходит из-за использования разъема Express card в качестве com порта, соединяя на прямую, без переходника таких всплесков нет
Shpik
assistant
assistant
Сообщения: 119
Зарегистрирован: 10 янв 2011, 11:01
Версия LabVIEW: 8.6, 2009, 2010
Откуда: Таганрог
Контактная информация:

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

Сообщение Shpik »

Ну сигнал, так сказать, повторяется потому можно брать отрезок, к примеру, последний и анализируя "нормальность" сигнала, брать элементы из массива-отрезка до тех пор пока имеет место быть отклонение.
Ну а если этих всплесков не будет, то тогда может и не нужно этого делать.
Аватара пользователя
IvanLis

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

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

Сообщение IvanLis »

Kvanto писал(а):здесь сигнал прошедший через фильтр Mean
я немного отсутствовал
Снимок.png
в файле массив размерностью 2d

я так понимаю все данные необходимо свести и получить 1d массив
получится следующее
Снимок-1.png
Снимок-1.png (11.05 КБ) 5069 просмотров
правильно я получил исходный сигнал или нет?
Аватара пользователя
IvanLis

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

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

Сообщение IvanLis »

Shpik писал(а):Предлагаю субВИ Скользящее среднее. Может пригодится.
Вложение Скользящее среднее.vi больше недоступно
Уважаемый Shpik!
Не знаю, может Вы и обладаете теми качествами, которых большинству из нас не хватает, и оформляете все свои программы подобным образом.
Но скорее всего эту SubVI вы использовали в своих проектах неоднократно.
Снимок.png
К сожалению результатом работы вашей функции не является значение "скользящая средняя", скорее это "шагающая средняя".
Не подумайте, что хочу Вас обидеть, скорее наоборот - помочь.
Просто если использовать ее в реальных проектах, то результат будет отличаться от требуемого.

На рисунке (ширина окна равна 50):
1. Белая - обрабатываемый сигнал.
2. Красная - результат работы Вашей функции.
3. Зеленая - скользящая средняя
Аватара пользователя
IvanLis

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

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

Сообщение IvanLis »

Вот первоначальный вариант обработки сигнала с использованием "скользящей средней".
IvanFilter (Moving Average).vi
lv2010
(122.71 КБ) 168 скачиваний
с разным размером окна, которое можете сами подобрать для более качественного результата
размер окна "скользящей средней" величины = 50
размер окна "скользящей средней" величины = 50
размер окна "скользящей средней" величины = 100
размер окна "скользящей средней" величины = 100
размер окна "скользящей средней" величины = 150
размер окна "скользящей средней" величины = 150
Аватара пользователя
IvanLis

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

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

Сообщение IvanLis »

Попробовал еще предварительно прогнать сигнал через ограничитель скорости изменения значения
IvanFilter (Threshold-Moving Average).vi
lv2010
(133.54 КБ) 169 скачиваний
добавил еще одну фичу
добавил еще одну фичу
Мне кажется это позволит немного улучшить качество сигнала.
Я же не знаю какой параметр сигнала несет информацию необходимую вам, вот и предлагаю несколько вариантов.
Shpik
assistant
assistant
Сообщения: 119
Зарегистрирован: 10 янв 2011, 11:01
Версия LabVIEW: 8.6, 2009, 2010
Откуда: Таганрог
Контактная информация:

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

Сообщение Shpik »

Уважаемый IvanLis, ни в коем случае не приму Ваши слова за обиду, наоборот конструктивную критику принимаю с удовольствием. Я не использую этот субВИ в своих проектах, иначе я бы его проверил неоднократно. Этот субВИ я давно когда-то набросал и, честно говоря, не проверял нигде и никогда не применял. Возможно я что-то напутал. :dntknw:
Спасибо за замечание! :super:
Kvanto

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

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

Сообщение Kvanto »

простите,что не отвечал. Из всего вышеперечисленного мне больше всего подошла комбинация вычитания среднего из сигнала, предложенная IvanLis и DFD Filtering? используемый как ФВЧ с частотой среза 0,1 Гц. Спасибо вам огромное за помощь! Буду продолжать работу.
Kvanto

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

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

Сообщение Kvanto »

Хотелось бы немного вернуться к прошлому и снова рассказать о давней проблеме. Мой VI запускается НЕ КАЖДЫЙ РАЗ. На ноутбуке с использованием заменителя COM-порта в виде разъема Express-Card он запускается через раз. А вот на стационарном компе где есть com-порт он может запускаться 2 -3 раза подряд, потом не запуститься, по-разному вообщем. Помогоите чем можете.
Вложения
ECG_viewer.rar
(457.61 КБ) 162 скачивания
Kvanto

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

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

Сообщение Kvanto »

Подключил на днях второй канал к АЦП, подскажите, по логике вещей получается что если у меня 2 канала, то я могу их разделить по очереди. То есть протокол такой 1-й кан., 2-й кан, 1-й кан., 2-й кан. Пробовал делать это с помощью Decimate 1D array. Не помогло, до него идут выборки, а после раздления нет. Чем попробовать разделить?
Вложения

[Расширение avi было запрещено, вложение больше недоступно.]

AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1334
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 41 раз
Контактная информация:

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

Сообщение AndreyDmitriev »

Kvanto писал(а):Мой VI запускается НЕ КАЖДЫЙ РАЗ.
Коллега Кванто, не в обиду, но научитесь формулировать сообщение о проблеме правильно. Не бывает такого "запускается не каждый раз". Бывает - "при запуске спонтанно возникает ошибка такая-то там-то и там-то". Если ВИ "зависает" - то это тоже может проявляться по разному - вот эти проявления и надо описывать.
Ответить

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