обнуление данных

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 174 раза
Контактная информация:

обнуление данных

Сообщение Artem.spb »

сразу предусловия: программа тестируется у заказчика, поэтому быстро проверить не получится.

итак, ситуация: программа опрашивает 4 порта.
сам опрос осуществляется такой функцией:
visa.png
ф-ия реентрантная, чтоб копии не мешали друг другу - в рпоге просто 4 клона рядом параллельно нарисованы (не в цикле)
читаем 5 байт - рисуем число и так по кругу.
если байты не получены / недополучены, то рисуем NAN, чтоб было понятно, что именно не так.
всё идёт норм, но в какой-то момент данные обнуляются - в логе идут сплошные нули.
после перезапуска программы данные "воскресают"
причём, странно обнуляются:
log.png
log.png (9.55 КБ) 4795 просмотров
эдакое переполнение U16, хотя, такого типа нет в проге, а сами числа по факту идут простой строкой.
при проверке каким-нибудь простым терминалом такая картина не наблюдается, всё идёт норм.
такая картина наблюдается при "медленном" опросе, если частота достаточно большая, нули не вылезают, но там иногда проскакивают NAN-ы, т.е. опрос слишком шустрый, данные не успевают дойти.
но если я не все данные вытаскиваю, почему лезут нули?
подскажите, что тут можно подправить?
сколько работаю с визой, таких странностей не наблюдал.
да, в настройках визы стоит таймаут =0. попробую поставить побольше.
но даже если это решит проблему, останется любопытным вопрос - почему идут нули?
Аватара пользователя
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: обнуление данных

Сообщение mzu2006 »

запишите в ваш лог ещё код ошибки, действительно пришедшее количество байт и сами байты в hex виде.
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: обнуление данных

Сообщение rbl »

Artem.spb писал(а):сразу предусловия: программа тестируется у заказчика, поэтому быстро проверить не получится.
но даже если это решит проблему, останется любопытным вопрос - почему идут нули?
На порт приходит нечто, что просто не может быть преобразовано в число (яля непечатные символы или псевдографика), что в итоге преобразуется в "0".
Смотрите в hex.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 174 раза
Контактная информация:

Re: обнуление данных

Сообщение Artem.spb »

rbl писал(а):Смотрите в hex.
уже в процессе, но пока нет результата
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: обнуление данных

Сообщение rbl »

Artem.spb писал(а):
rbl писал(а):Смотрите в hex.
уже в процессе, но пока нет результата
У Вас настолько медленный обмен? :)
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 174 раза
Контактная информация:

Re: обнуление данных

Сообщение Artem.spb »

у меня:
Artem.spb писал(а):сразу предусловия: программа тестируется у заказчика, поэтому быстро проверить не получится.
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: обнуление данных

Сообщение rbl »

Artem.spb писал(а):у меня:
Artem.spb писал(а):сразу предусловия: программа тестируется у заказчика, поэтому быстро проверить не получится.
Исходные данные читал. Просто процессом привык считать именно работу, а не время ожидания допуска к объекту контроля ;)
Аватара пользователя
IvanLis

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

Re: обнуление данных

Сообщение IvanLis »

А каким образом определяется начало (конец) пакета, или данные принимаются потоком - аля RAW ?

У Вас данные я так понимаю передаются постоянно, т.е. Вы их просто читаете без всяких запросов.
Если "терминатор" не определен, а чтение данных выполняется по числу бит, то возможна банальная рассинхронизация.
Снимок экрана от 2014-12-11 22-17-56.png
Снимок экрана от 2014-12-11 22-17-56.png (4.88 КБ) 4724 просмотра
первая строка, когда прием нормальный
вторая - рассинхронизация

В этом случае как раз и возможны чудесные преобразования данных.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3404
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 174 раза
Контактная информация:

Re: обнуление данных

Сообщение Artem.spb »

Данные идут потоком - я их не запрашиваю и никак не регулирую, прут себе и прут.
Инициализация визы с параметрами по умолчанию "Enable Termination Char (T)".
А в связи с чем может произойти сдвиг? и почему другой, "менее умный" софт такого не выдаёт? или же иначе, как избежать этого сдвига у меня?
Аватара пользователя
IvanLis

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

Re: обнуление данных

Сообщение IvanLis »

Artem.spb писал(а):Данные идут потоком - я их не запрашиваю и никак не регулирую, прут себе и прут.
Инициализация визы с параметрами по умолчанию "Enable Termination Char (T)".
А в связи с чем может произойти сдвиг? и почему другой, "менее умный" софт такого не выдаёт? или же иначе, как избежать этого сдвига у меня?
Ничто в нашем мире не идеально и возможны ошибки.

Что бы правильно принять, нужно знать протокол, может там и заложен терминальный бит.
Если есть возможность модифицировать программу на передающем устройстве, то желательно поправить и предусмотреть терминальный бит. Это немного снизит информационную скорость, но позволит избежать многих косяков.

К стати, Вы принимаете пакеты по размеру, попробуйте отключить терминатор (Enable Termination Char = false). Возможно, что в последовательности он появляется и принимается не 5, а меньшее число бит, что приводит к сдвигу и неверной конвертации в дальнейшем.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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