Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 13.02.2018, 15:38   #1
Booster_1
 
Регистрация: 11.04.2011
Сообщений: 4
Репутация: 10
По умолчанию Работа с 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, 16:04   #2
Pavia
Лис
Профессионал
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,613
Репутация: 1708
По умолчанию

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

1. Настройки (скорость, количество бит, таймауты) одинаковые в обоих случаях
2,3. Сторона RS485 вообще одна и та же
а результаты разные
Booster_1 вне форума   Ответить с цитированием
Старый 13.02.2018, 17:04   #4
Aliens_wolfs
Участник клуба
 
Регистрация: 16.12.2009
Адрес: WWW ЛЕНИНГРАД СПб точка РУ
Сообщений: 860
Репутация: 435
По умолчанию

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

Последний раз редактировалось Aliens_wolfs; 13.02.2018 в 17:09.
Aliens_wolfs вне форума   Ответить с цитированием
Старый 13.02.2018, 17:09   #5
Aliens_wolfs
Участник клуба
 
Регистрация: 16.12.2009
Адрес: WWW ЛЕНИНГРАД СПб точка РУ
Сообщений: 860
Репутация: 435
По умолчанию

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

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

так на ноутбука железного COM порта нет, вот и использую виртуальный
Booster_1 вне форума   Ответить с цитированием
Старый 13.02.2018, 18:49   #7
Aliens_wolfs
Участник клуба
 
Регистрация: 16.12.2009
Адрес: WWW ЛЕНИНГРАД СПб точка РУ
Сообщений: 860
Репутация: 435
По умолчанию

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

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

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

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

Цитата:
Сообщение от 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, 16:15   #9
Black Fregat
Программист
Профессионал
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,129
Репутация: 840
По умолчанию

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

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

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с 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 16:15


03:38.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru