Opened 3 weeks ago

Closed 3 weeks ago

Last modified 3 weeks ago

#468 closed баг (fixed)

Теряются данные при передаче через окончание R232

Reported by: san Owned by: alx
Priority: высокий Milestone: 1 очередь
Component: VE-02 Keywords:
Cc:

Description

В ревизии 61 ПО платы VE-02 теряются данные при передаче через окончание R232. В ревизии 56 проблема не воспроизводится.

Схема:
ПК(TCP-клиент) - (TCP-сервер)VE-02(R232) - шлейф
Я отправляю с ПК пакеты по 32 байта данных каждые 100 мс. Из 170 принятых обратно пакетов, вижу 8 повреждённых.
Пример повреждения пакета:

Отправлено: 7E000000AECFA97556FFA7FC5ECF7A192D9ED46F97724EEEB498169735B9D17E
   Принято: 7E000000AECFA97556FF        7A192D9ED46F97724EEEB498169735B9D17E

Настройки:

Attachments (2)

1.png (54.6 KB ) - added by san 3 weeks ago.
2.png (14.7 KB ) - added by san 3 weeks ago.

Download all attachments as: .zip

Change History (15)

by san, 3 weeks ago

Attachment: 1.png added

comment:1 by alx, 3 weeks ago

Воспроизводится ли проблема если включить управление потоком?

comment:2 by san, 3 weeks ago

У меня шлейф только Rx на Tx. Для управления потоком, кажется нужны ещё пара проводов...
Сейчас попробую.

in reply to:  1 ; comment:3 by san, 3 weeks ago

Replying to alx:

Воспроизводится ли проблема если включить управление потоком?


С таким шлейфом должно работать?

by san, 3 weeks ago

Attachment: 2.png added

in reply to:  3 ; comment:4 by alx, 3 weeks ago

Replying to san:

С таким шлейфом должно работать?

Вроде бы да.

in reply to:  2 ; comment:5 by alx, 3 weeks ago

Replying to san:

Сейчас попробую.

Думаю, можно не пробовать. Я воспроизвел проблему, и кажется, что она не связана с портом. Я вывел отладочный вывод и вижу, что данные пакетов передаются в порт RS-232 и принимаются обратно из порта без потерь, а клиент получает их с потерями....

in reply to:  4 comment:6 by san, 3 weeks ago

Replying to alx:

Replying to san:

С таким шлейфом должно работать?

Вроде бы да.

Начинаю эксперимент с отключенным аппаратным управлением, данные от VE-02 на ПК приходят, обе лампочки модуля моргают. Включаю аппаратное управление - данные от VE-02 перестают приходить, у модуля горит зелёный индикатор, оранжевый не горит.

in reply to:  5 comment:7 by alx, 3 weeks ago

Replying to alx:

Я воспроизвел проблему, и кажется, что она не связана с портом.

Это утверждение оказалось неверным. Отладочный вывод показывает, что из порта принимаются данные с потерями. В первый раз я, видимо, пропустил нужный пакет...

Проверка показала, что из платы в порт RS-232 данные уходят без потерь (проверялось параллельным подключением компьютера). Следовательно, потери возникают где-то на приеме из порта RS-232...

comment:8 by alx, 3 weeks ago

Для дальнейшего поиска причины потерь перенес эксперимент в другую плату VE-02 (исполнения 2 в блоке MC04-DSL-VIP), так как там доступ к плате удобнее чем в блоке MC04-DSL-3U. И вдруг обнаружилось, что в этой плате потерь нет. Было передано больше 24000 байт, и все они вернулись обратно. Стоит также отметить, что вторая плата (в которой нет потерь) версии 9, а первая - версии 6. Предполагаю, что различия в поведении скорее связаны с версией, чем с вариантом исполнения, так как в версии 9 немного изменено подключение модулей к ПЛИС.

in reply to:  8 comment:9 by alx, 3 weeks ago

Replying to alx:

Предполагаю, что различия в поведении скорее связаны с версией, чем с вариантом исполнения,

Предположение не подтвердилось. В плате VE-02 версии 9 исполнения 3 потери есть.

comment:10 by alx, 3 weeks ago

Экспериментально установлено, что FIFO (внутри ПЛИС) записывается правильное число принятых байт.

comment:11 by alx, 3 weeks ago

Ошибка обнаружена!

comment:12 by alx, 3 weeks ago

Resolution: fixed
Status: newclosed

In 2668/sip_ua:

Исправлена ошибка в ПЛИС: в канальных окончаниях
R232, R422, R485 адрес чтения FIFO приема мог инкрементироваться
лишний раз при ображении к другим регистрам, так как сигнал
rd_next_addr не учитывал адрес регистра. Это приводило к потере
принимаемых UART'ом данных.
Closes #468.

comment:13 by alx, 3 weeks ago

Проверка после исправления показала, что после передачи более 100000 байт ни один не был потерян.

Note: See TracTickets for help on using tickets.