xvr 12 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Стандарт RS-232 предполагает уровни ±3...30 В, с этим диапазоном должны уметь работать все правильные порты.Ключевое слово 'правильные'. Кто знает, что именно поставили китайцы в RS232 на этом РС? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Ключевое слово 'правильные'. Кто знает, что именно поставили китайцы в RS232 на этом РС? Ребята, ну нельзя же так уж совсем. Уже сколько раз вижу ситуации про чукчу, который ни разу ни читатель. Я уже говорил, что пробовал на разных компьютерах. Правда, всегда под Win7. Если бы мне еще кто-нибудь сказал как детектировать вероятное падение амплитуды на пару байт в течении ну хоть часа без долгозаписывающего осциллографа- скажу спасибо. понятно, что я в первую очередь про уровни подумал, еще месяц назад. Проверил в онлайне, но детальную долговременную запись аналогового сигнала и синхронизацию с цифрой не делал. Первое что пришло в голову- виртуальный скоп на саундбластере, но он мои 55 килогерц не возьмет, а если вдруг и возьмет, то ни о какой достоверности измеряемого уровня на разных байтах говорить не приходится. Пока что провожу симптоматичное лечение и тесты для локализации проблемы. Надеюсь что это глюки в подключенном к сериальному порту девайсе (конвертере RS485/232), с кратковременных падением уровня. Но опять же, пробовал и другие адаптеры, правда из той же серии (используется Мокса с опторазвязкой). попробую что-то еще. Очень может быть что проблема многоуровневая. Буквально на прошлой неделе такое решал- проблема одновременно была и Матлабовском скрипте, и в формате файла данных, и в методике расчета в устройстве которое считало данные для этого файла, прямо цепочку раскручивал, хотя вначале думал что ошибка просто в скрипте. Но это не в данном устройстве :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
@Ark 0 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Ребята, ну нельзя же так уж совсем. Уже сколько раз вижу ситуации про чукчу, который ни разу ни читатель Я уже говорил, что пробовал на разных компьютерах. Правда, всегда под Win7... Вы ничего не сказали про источник потока - физическое устройство, которое подключается к PC (как я понял, через преобразователь RS232-RS485). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Вы ничего не сказали про источник потока - физическое устройство, которое подключается к PC (как я понял, через преобразователь RS232-RS485). Там целая сеточка, с таймслотами и синхросообщениями. Но в данном случае это неважно- как я уже описал, байты однозначно правильно долетают от итогового конвертера 485/232 до разъема компьютера. Но вот уверенности в том что уровень сигнала этих байтов всегда корректный, у меня нет. Сейчас попробую конвертер 485/USB от FTDI, если результат другой- значит все-таки в конвертере дело. Раньше 115200 и плотный поток вместе нигде не использовал, новый опыт, однако. через грабли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
@Ark 0 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Там целая сеточка, с таймслотами и синхросообщениями. Но в данном случае это неважно- как я уже описал, байты однозначно правильно долетают от итогового конвертера 485/232 до разъема компьютера... Раньше 115200 и плотный поток вместе нигде не использовал, новый опыт, однако. через грабли. Конвертор - это, как правило, только преобразователь уровней. Если частота неправильная, то она так и будет конвертирована в неправильную. Я спрашивал про конкретное устройство, которое передает. На чем оно сделано, какой тактовый генератор (кварц) там стоит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба потери выглядят вот так. Сместил байты принятые сниффером, где пусто- это сниффер ничего не принимал. (смещение в корректном пакете, время анализатора, корректный байт из логического анализатора, байт из сниффера) это один пакет, 2 байта плюс 1 байт не приняты. Вы могли бы в своем приемнике сделать дамп ошибок - вы же полюбому ждете события, а обработку ошибок пока игнорируете. может эти выпадающие байты и проявятся? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Вы могли бы в своем приемнике сделать дамп ошибок - вы же полюбому ждете события, а обработку ошибок пока игнорируете. может эти выпадающие байты и проявятся? Это как? Если Вы имеете в виду логгирование всех не принадлежащих пакетам байтов- так это делается, пишу их в файл. То есть когда я делал проверку анализатор-сниффер-мой софт - именно по этому логу и убеждался, что мой софт то же самое принимает что и сниффер. Сейчас убрал Моксу RS485/232, включил ФТДИ SR485/USB - то же самое, есть глюк. Если предположить что проблема все-таки не в амплитуде, то что общего между сниффером, COM-портом и USB? действительно только времянка в голову приходит... В глобальные проблемы уровня "Винда глючит" все-таки пока не готов поверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
@Ark 0 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Мы дождемся ответов на вопросы по поводу внешнего устройства - источника потока? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexRayne 7 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Это как? Если Вы имеете в виду логгирование всех не принадлежащих пакетам байтов- так это делается, пишу их в файл. То есть когда я делал проверку анализатор-сниффер-мой софт - именно по этому логу и убеждался, что мой софт то же самое принимает что и сниффер. у вас код чтения из порта, насколько я помню, - цикл ожидающий события, а не чтение буфера данных. уже разбирая пришедшее событие вы смотрите - получили данные али нет. вот тут можно и выяснить статус приема - есть ли ошибки фреймов, или еще чегото. Сейчас убрал Моксу RS485/232, включил ФТДИ SR485/USB - то же самое, есть глюк. непонятно стало - вы с РС232 работаете или с РС485? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Мы дождемся ответов на вопросы по поводу внешнего устройства - источника потока? тип процессора- STM32F070 задающий кварц- ABLS2-16.000MHZ-D4Y, с конденсаторами 18 pF NP0 SystemCoreClock = 48 MHz, divider = 417 (подключился дебаггером к юниту, проверил регистры- действительно 417). То есть реальная расчетная скорость 115108 , это -0.08%. Даже если прибавить возможные 60 ppm кварца (стабильность плюс точность), будет 0.09%. Что-то еще? Ну и (приглядываясь к ближайшей стене на тему побить ее головой): так ведь возле компьютера вижу же ж я нормально эти байты, принятые логическим анализатором, а в компе уже не принимаются? Причем частоту семплирования ЛА задал 1 MHz - ему хватает для стабильного приема. Хм... ну разве что в тот момент что-то высокоскоростное лезет и сбивает порт, а вот анализатор просто по семплрейту пашет, ему-то пофиг... у меня сейчас на столе терминаторы были отключены...Подключил терминаторы в линию RS-485 - не поменялось. у вас код чтения из порта, насколько я помню, - цикл ожидающий события, а не чтение буфера данных. уже разбирая пришедшее событие вы смотрите - получили данные али нет. вот тут можно и выяснить статус приема - есть ли ошибки фреймов, или еще чегото. Я принимаю все в большой буфер по событию (прерыванию от драйвера). Произошло прерывание- вытаскиваю и все принятое пихаю в мой большой буфер, изменяя указатель записи. периодически по таймеру вызывается задача, которая из этого буфера пытается вычленить из потока новый фрейм (от указателя записи до указателя чтения). Если удалось - то смотрит чему равен указатель удачного фрейма, если не старому указателю чтения- то все байты от старого указателя чтения до этого фрейма и есть неопознанный мусор. Ну и, естественно, сдвигает указатель чтения на конец опознанного фрейма. непонятно стало - вы с РС232 работаете или с РС485? У меня система- на RS-485. Для ввода в PC в штатном режиме использую конвертер RS485/232. Сейчас для тестов задействовал также конвертер RS485/USB. Кстати, на конкретно моем PC с конвертером RS485/232 гораздо больше ошибок валит в сравнении с работой через RS485/USB. Но зато этот USB товарищ ловит ошибки в пакетах во время подключения нового USB устройства. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Может, на большей скорости попробовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
@Ark 0 29 мая, 2017 Опубликовано 29 мая, 2017 (изменено) · Жалоба тип процессора- STM32F070 задающий кварц- ABLS2-16.000MHZ-D4Y, с конденсаторами 18 pF NP0 SystemCoreClock = 48 MHz, divider = 417 (подключился дебаггером к юниту, проверил регистры- действительно 417). То есть реальная расчетная скорость 115108 , это -0.08%. Даже если прибавить возможные 60 ppm кварца (стабильность плюс точность), будет 0.09%. Что-то еще? Спасибо. Вроде все нормально... Ну и (приглядываясь к ближайшей стене на тему побить ее головой): так ведь возле компьютера вижу же ж я нормально эти байты, принятые логическим анализатором, а в компе уже не принимаются? Причем частоту семплирования ЛА задал 1 MHz - ему хватает для стабильного приема. Хм... ну разве что в тот момент что-то высокоскоростное лезет и сбивает порт, а вот анализатор просто по семплрейту пашет, ему-то пофиг... Я так предлагаю проверить - написать небольшую программку в винде, которая имитирует поток от вашего устройства. У Вас же несколько портов есть, по моему. Дальше соединяете два порта по принципу нуль-модема внешним соединением. И запускаете обе программы - рабочую и имитатор устройства... Так, хотя бы определите в какой части системы искать ошибку - внутри PC или снаружи. P.S. Можно потом с другого компа имитатор запустить, и соединить их нульмодемным кабелем. В общем, "отсечь" все преобразователи, длинные линии, возможные помехи, а может и какие-то ошибки во внешнем устройстве. Изменено 29 мая, 2017 пользователем @Ark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 мая, 2017 Опубликовано 29 мая, 2017 · Жалоба Я так предлагаю проверить - написать небольшую программку в винде, которая имитирует поток от вашего устройства. У Вас же несколько портов есть, по моему. Дальше соединяете два порта по принципу нуль-модема внешним соединением. И запускаете обе программы - рабочую и имитатор устройства... Так, хотя бы определите в какой части системы искать ошибку - внутри PC или снаружи. P.S. Можно потом с другого компа имитатор запустить, и соединить их нульмодемным кабелем. В общем, "отсечь" все преобразователи, длинные линии, возможные помехи, а может и какие-то ошибки во внешнем устройстве. Ага, тоже так согласен надо сделать. Но мне тут начальство подправило курс, задача все-таки не высокоприоритетная. Беру таймаут до выходных. Может, в фоне хоть эту простую проверку с эталонным источником потока сделаю на неделе. Но уже сейчас вижу что проблема как минимум не только в моей программе. Очень может быть, что все-таки какие-то установки в винде влияют (но не в какой-то одной, а дефолтовые). попробую на XP и на 10-ке запустить, может найду их где вокруг... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 30 мая, 2017 Опубликовано 30 мая, 2017 · Жалоба Если бы мне еще кто-нибудь сказал как детектировать вероятное падение амплитуды на пару байт в течении ну хоть часа без долгозаписывающего осциллографа- скажу спасибо. В моём домашнем осцилле есть функция такая: можно задать допустимые границы осциллограммы на экране (её формы), и он зафиксирует момент выхода осциллограммы за пределы паттерна. Дальше - просто включить передачу постоянного пакета байт. И настроить эту функцию на осциллограмму этого пакета. Этот паттерн задаётся графически на экране. ATTEN 1152 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 30 мая, 2017 Опубликовано 30 мая, 2017 · Жалоба Надеюсь что это глюки в подключенном к сериальному порту девайсе (конвертере RS485/232), с кратковременных падением уровня.О! Уже RS485 появился :rolleyes: Может дело в стыке RS485 <-> RS232? У RS485 half duplex, а у RS232 - full duplex. И конвертор переключает направление на прием/передачу по RS485 по неким своим законам. Они точно согласуются с реальным потоком данных по RS485? Ибо неверный момент переключения как раз и даст те самые пропущенные байты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться