Jump to content
Форум по продукции MOXA

uport 1150 ошибки считывания входов DSR или DCD


Recommended Posts

Добрый день!

 

Обнаружена проблема с uport 1150. Режим - rs232, ОС - W7, драйвер 1.7.5.0 (в предыдущих версиях тоже самое).

 

При подаче сигнала на входы DSR (пин6) или DCD (пин1), например, с RTS иногда состояние входов, при снятии сигнала, не изменяется. Думал проблема аппаратная, но видимо нет. Если в ошибочном состоянии программно закрыть и открыть порт, то состояния входов считываются правильно. Утилиты с http://www.moxa.ru/shop/usb/1_port/uport_1150/ показывают такое же поведение. Возможно проблема в ПО драйвера?

 

Может кто сталкивался с таким поведением uport 1150 и есть решения проблемы?

Link to comment
  • 2 weeks later...

Здравствуйте!

Не могли бы Вы указать точную последовательность действий, при которых возникают ошибки, чтобы мы могли воспроизвести проблему у себя и направить информацию в отдел разработок?

Link to comment

Здравствуйте!

Не могли бы Вы указать точную последовательность действий, при которых возникают ошибки, чтобы мы могли воспроизвести проблему у себя и направить информацию в отдел разработок?

 

Здравствуйте!

Воспроизведение сбоя (UPort 1150 rev 1.4):

На DTR и RTS программно устанавливаем уровень 1 (port.RtsEnable = true; port.DtrEnable = true;)

Замкнуть 1 (DCD) и 4 (DTR) пины.

Сигнал берём с пин 7 (RTS), подаём на пин 6 (DSR) (замкнуть контакты) – состояние “1”.

В программе (любой, показывающей состояние на пинах 1 и 6) следим за изменением состояний.

Меняем состояние на пин 6 с частотой 1-5 Гц (замыкая-размыкая контакты 6-7), как правило работает штатно.

Далее подаём “1” на пин 6 примерно секунд на пять, и снимаем (состояние “0”), повторяем до появления сбоя (с вероятностью10%-20% для пин 6 отображается состояние “1” вместо “0”). Если в состоянии сбоя разомкнуть 1 и 4, то отображение состояния для пин 6 изменится на “0”. Если программно закрыть-открыть порт, то состояние на пин 6 так же отображается правильно.

Может быть сбой с отображением “0” вместо ”1”.

Link to comment
  • 4 weeks later...

Здравствуйте!

 

Проблема понятна, но стоит уточнить несколько моментов.

 

Из конеткста выше, а именно: устанавливаем уровень 1 (port.RtsEnable = true; port.DtrEnable = true;), становится определенно ясно, что Вы используете программную среду разработки. Хотелось бы знать что за среда, через какое приложение или опять же среду разработки происходит анализ состояния выводов порта.

В дополнение хотелось бы увидеть программный код, или хотя бы часть кода, чтобы проанализировать как Вы используете драйвер UPorta или же все-таки задействуете подсистему API.

 

 

Что касается RS-232, то при использовании его по упрощенной схеме соединений, контакты 7 и 6 замыкаются либо на этапе конфигурации устройства (вручную), либо при инициализации порта. Что за устройство Вы хотите подключить и какова схема (упрощенная или полная) его подключения?

Link to comment

Здравствуйте!

 

Ипользую .Net Fraimework 4, например так (консольное приложение, w7, x64):

...

//инициализация

port = new SerialPort();

port.PinChanged += port_PinChanged;

port.PortName = "COM8";

port.Open();

port.RtsEnable = true;

port.DtrEnable = true;

 

...

static void port_PinChanged(object sender, SerialPinChangedEventArgs e)

{

Console.WriteLine("CD=" + port.CDHolding.ToString() + " DSR=" + port.DsrHolding.ToString());

}

 

Можно использовать программу PComm Terminal Emullator, картинки в прикрепленном файле...

 

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

port.rtf

Link to comment

Добрый день!

 

Такого рода сбой действительно имеется. Однако, он скорее всего связан с наличием эффекта дребезга контактов при их ручном переключении. Большинство именно аппаратных драйверов девайсов передают информацию об изменении логического состояния выводов. Имеет смысл уточнить наличие сбоя при использовании электронного ключа для перемыкания контактов.

Link to comment

Здравствуйте!

Возможно, именно дребезг позволяет быстро воспроизвести проблему. Но на реальных линиях связи могут быть любые проблемы, в том числе сходные с дребезгом. Если при переходном процессе присутствует дребезг, то можем считать состояние неопределённым до стабилизации состояния на линии.

В данном случае состояние стабилизируется, но отображение в ПО неправильное. Но после изменения другого сигнала или если программно закрыть-открыть порт, то отображается правильно.

Данная проблема была обнаружена при подключении устройств, при необходимости могу найти схему.

Link to comment

Если даже так, то соглашусь что дело может быть и в ПО драйвера к устройству. Но с другой стороны, при подключении через Uport к стороннему ПК по интерфейсу 232 (в расширенном режиме с использованием линий подтверждения) коллизий при передаче данных не наблюдается. Насчет схемы - найдите, если не сложно.

Link to comment

Здравствуйте!

По просьбе пользователя mkv выкладываю схему, на которой наблюдались описанные выше проблемы.

Кратко поясню принцип работы данной схемы.

Цель – различать на выходе (out1, out2) четыре состояния входа in: обрыв (к входу in ничего не подключено), короткое замыкание (вход in замкнут на землю), норма (вход in притянут к земле сопротивлением 1,6 кОм), сработка (вход in притянут к земле сопротивлением 6,7 кОм).

Источник V1 имеет на выходе 5 В постоянного тока. На стабилитроне D1 падает напряжение 3,3 В, к которому подтягивается через R4 вход in. Также данное напряжение заводится на делитель R1-R2-R3.

В схеме присутствуют два операционных усилителя, работающих в режиме компаратора. На инвертирующий вход обоих усилителей подается напряжение с входа in. На неинвертирующий вход усилителя X1 заводится падение напряжения на резисторах R2 и R3 (около 2,5 В); на неинвертирующий вход усилителя X2 заводится падение напряжения на резисторе R3 (около 1,5 В).

Вход in также заводится на делитель R13-R14, подключенный к базе транзистора Q2; база транзистора Q1 подтянута через резистор R3 к +5 В.

Логическому нулю на выходе соответствует низкий уровень напряжения (выход притянут к земле), логической единице соответствует высокий уровень напряжения (выход притянут к +5 В).

 

Рассмотрим четыре ситуации:

 

1. Обрыв

На инвертирующий вход обоих усилителей подается напряжение 3,3 В. Напряжение на инвертирующих входах обоих усилителей больше, чем напряжение на неинвертирующих входах, следовательно, выход обоих усилителей притягивается к земле; out1 = 0, out2 = 0.

 

2. Короткое замыкание

Инвертирующий вход обоих усилителей притягивается к земле. Напряжение на инвертирующих входах обоих усилителей меньше, чем напряжение на неинвертирующих входах, следовательно, выход обоих усилителей притягивается к +5 В. Поскольку вход in притягивается к земле и ток через делитель R13-R14 не течет, транзистор Q2 закрыт, что приводит к открытию транзистора Q1, который притягивает выход out 1 к земле; out1 = 0, out2 = 1.

 

3. Норма

На инвертирующий вход обоих усилителей подается напряжение около 1 В. Напряжение на инвертирующих входах обоих усилителей меньше, чем напряжение на неинвертирующих входах, следовательно, выход обоих усилителей притягивается к +5 В. Через делитель R13-R14 течет ток, транзистор Q2 открыт, что приводит к закрытию транзистора Q1; out1 = 1, out2 = 1.

 

4. Сработка

На инвертирующий вход обоих усилителей подается напряжение около 2,2 В. Напряжение на инвертирующем входе усилителя X1 меньше, чем на неинвертирующем входе, выход усилителя X1 притягивается к +5 В; напряжение на инвертирующем входе усилителя X2 больше, чем напряжение на неинвертирующем входе, выход усилителя X2 притягивается к земле. Через делитель R13-R14 течет ток, транзистор Q2 открыт, что приводит к закрытию транзистора Q1; out1 = 1, out2 = 0.

Схема RL-COM.bmp

Link to comment

Если даже так, то соглашусь что дело может быть и в ПО драйвера к устройству. Но с другой стороны, при подключении через Uport к стороннему ПК по интерфейсу 232 (в расширенном режиме с использованием линий подтверждения) коллизий при передаче данных не наблюдается. Насчет схемы - найдите, если не сложно.

Возможно, ошибки, при передаче данных, есть, просто работает исправление ошибок. Всё выглядит помехой на линии, а т.к. вероятность ошибок невелика, то и нет смысла обращать внимание.

А при использовании этих входов для чтения дискретных состояний сбой становится критичным.

Link to comment

Всем добрый вечер!

 

Мы провели ряд тестов, и в принципе согласны с тем, что такая проблема существует. Хочу заметить, что на устройствах серии NPort такая проблема не проявляется.

Отправили запрос разработчику.

Link to comment
  • 2 weeks later...

Здравствуйте!

С обновлённым драйвером состояния отображаются правильно, проблема больше не проявилась.

Благодарим за помощь в решении!

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...