Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2018, 14:38   #1
Booster_1
Пользователь
 
Регистрация: 11.04.2011
Сообщений: 13
По умолчанию Работа с COM портом реальным и виртуальным

Добрый день. Есть программа обмена с устройствами ввода-вывода через преобразователь интерфейса RS485 -> RS232 или RS485 -> USB (с созданием виртуального COM порта).
Проблема следующая: если у компьютера есть COM порт и используется RS485 -> RS232 - все отлично, обмен без проблем. Если же COM порта нет, а используется виртуальный COM порт и RS485 -> USB, то получаю, скажем, недопустимые данные (например, значение типа 4-байтное число должно быть в диапазоне 0..4, а приходят значения далеко за пределами диапазона, например 449,061767578125 или 2,061989670777E-38).

Сам вижу, что написано довольно сумбурно, но все-таки. Отвечу на любые уточняющие вопросы, только помогите
Booster_1 вне форума Ответить с цитированием
Старый 13.02.2018, 15:04   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

1) Проверяйте настройки протокола: скорость, число бит данных, число стоповых бит.
2) Проверьте конфигурацию RS485 (либо тумблер переключается, либо перемычка ставится, либо резист припаивается).
3) Проверяйте контакты: в местах соединения наличие провода, землю, длину линии(её затухание).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 13.02.2018, 15:41   #3
Booster_1
Пользователь
 
Регистрация: 11.04.2011
Сообщений: 13
По умолчанию

1. Настройки (скорость, количество бит, таймауты) одинаковые в обоих случаях
2,3. Сторона RS485 вообще одна и та же
а результаты разные
Booster_1 вне форума Ответить с цитированием
Старый 13.02.2018, 16:04   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Попробуйте с дополнительными параметрами порта поэкспериментировать
Изображения
Тип файла: jpg Доп параметры.jpg (85.8 Кб, 139 просмотров)

Последний раз редактировалось Aliens_wolfs; 13.02.2018 в 16:09.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.02.2018, 16:09   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Для чего вы с виртуальными портами работаете?

Последний раз редактировалось Aliens_wolfs; 13.02.2018 в 18:23.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.02.2018, 16:49   #6
Booster_1
Пользователь
 
Регистрация: 11.04.2011
Сообщений: 13
По умолчанию

так на ноутбука железного COM порта нет, вот и использую виртуальный
Booster_1 вне форума Ответить с цитированием
Старый 13.02.2018, 17:49   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Точнее наверное лучше сказать не виртуальный, а порт usb устройства который создает свой COM порт.
И если вы используете преобразователь USB на COM, то нужно подбирать такой который поддерживает все сигналы и нужное питание порта, а там 5-вольт не выше т.к. USB, а встроенный в компьютере порт поддерживает до 15-вольт и все сигналы, дешевые как правило с ошибками работают в них нет дополнительных сигналов, и я думаю у вас он наверное просто TTL, который используется в основном для программирования устройств, для работы с другими устройствами нужно для него подбирать согласующее сопротивление для правильной работы, думаю ваша проблема именно в этом преобразователе.

Для полного понимания работы RS232 ищите чтиво в интернете про понятия USART и UART видов работы порта.

Чтобы не заморачиваться, лучше использовать преобразователь сразу USB на RS485 с гальванической развязкой, эта развязка защищает от перенапряжений и помех в линии.
Сам на своем горьком опыте знаю, как то пытался использовать для сигнализации USB на RS485 дешевый заказанный с китая, думал зачем дорогой, хотел быть умнее всех, но он работал с ошибками, пришлось покупать у нас специализированный со всеми защитами т.к. линия более 300м, работает отлично ну и стоит как 10 китайских.)))

Последний раз редактировалось Aliens_wolfs; 13.02.2018 в 19:30.
Aliens_wolfs вне форума Ответить с цитированием
Старый 14.02.2018, 14:42   #8
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 979
По умолчанию

Цитата:
Сообщение от Booster_1 Посмотреть сообщение
Добрый день. Есть программа обмена с устройствами ввода-вывода через преобразователь интерфейса RS485 -> RS232 или RS485 -> USB (с созданием виртуального COM порта).
Проблема следующая: если у компьютера есть COM порт и используется RS485 -> RS232 - все отлично, обмен без проблем. Если же COM порта нет, а используется виртуальный COM порт и RS485 -> USB, то получаю, скажем, недопустимые данные (например, значение типа 4-байтное число должно быть в диапазоне 0..4, а приходят значения далеко за пределами диапазона, например 449,061767578125 или 2,061989670777E-38).

Сам вижу, что написано довольно сумбурно, но все-таки. Отвечу на любые уточняющие вопросы, только помогите
если программа не проверяет ошибки по CRC то значит байты искажает либо драйвер либо устройство (может сбоит микросхемка в конверторе). проверить это легко. соединяем оба устройства по RS485 и один втыкаем в ком порт другой в усб. и посылаем байты или символы теленетом в виртуальный коппорт и смотрим что получили в гипертерменале(или аналоге). настройки пробуйте ставить как для прибора.
если получаем туда-сюда ровно то что послали. то приборы исправные, пробуйте увеличить тайм ауты в устройстве и в программе. а так же возможно время ожидания ответа.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 14.02.2018, 15:15   #9
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

На мой взгляд, метод тыка - не самый лучший в данном случае. Надо читать данные обоими способами и смотреть, в чём различие. Не числа кидаться расшифровывать, а смотреть байты. А для контроля лучше поставить другой переходник и, опять же, сравнить
Black Fregat вне форума Ответить с цитированием
Старый 16.02.2018, 02:27   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Надо покупать новый ноутбук. Преобразователь скорее всего не виноват. Он слишком простой.
С подобными проблемами сталкивался неоднократно на нетбуках и ноутбуках. Не обеспечивают они в старости нормальные нагрузочные способности по питанию от USB-порта.
northener на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с Com-портом Teror4uks Общие вопросы Delphi 5 10.10.2014 12:48
Работа с COM-портом bakanaev Общие вопросы Delphi 1 23.10.2012 17:24
Работа с COM портом ferrum88 Общие вопросы Delphi 17 30.09.2011 12:53
Работа с COM-портом Georgios Общие вопросы Delphi 12 28.09.2010 10:31
Работа с com портом albles Общие вопросы C/C++ 2 16.11.2009 15:15