Комментарии 177
Если же софт переписывается с нуля — вариантов решения становится больше, но и головной боли тоже (и не только в плане написания софта, но и при выборе варианта).
Но я согласен со статьёй — пропихать обмен через HID это большой плюс в плане независимости от драйверов. Зато в D2XX не вижу печальки для программера-прикладника. Очень удобно сразу получать список идентификаторов, зашитых в чипах, без поочередного открытия портов.
Ну а идентификация оборудования, подключенного через RS-232 — вопрос следующего уровня абстракции, он не должен зависеть от реализации канала обмена байтиками.
Разумеется, все эти соображения справедливы, пока не требуется дергать линиями последовательного порта за пределами стандарта. Тут своё устройство даёт полную свободу.
Мне систематически приходится работать с преобразователями на FTDI, CP2102, PL2303 (с этими дело имел меньше всего) и даже CH340/341. И всё работает.
Вам очень повезло, что ваши устройства обходятся только парой Rx/Tx. Многие специализированные устройства любят использовать ещё и RTS/CTS, DTR/DSR. В таком случае вы бы всё ещё могли возиться с вашим переходником.
Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать.
Я бы развернул в статье этот момент. Потому что это далеко не всем очевидно и, на самом деле, при некоторых задачах вполне применяемо и работосопосбно, так что списывать его вообще нечестно.
С RS'ом-то проблемы решаемые. А вот я как-то столкнулся с не таким уж и несвежим программатором с LPT — вот это был абзац. На новых компах такого порта как класса нет. С переходником USB-LPT он не заработал. С PCI платой расширения он тоже не заработал — оказывается плата занималась эмуляцией LPT и что-то до конца не эмулировала, не помню уже точно, но софт отказывался видеть программатор. В результате нашёл старый и чуть ли не единственный несписанный комп с Windows XP SP2, на котором себя отлично чувствует и софт к этому программатору. Теперь на складе лежат две жётско скреплённые скотчем коробки с надписью «Программатор!!! Выбрасывать категорически запрещено!!!» )))
Все общаются с компьютером через VISA протокол. В принципе, если бы не тупой LabView, периодически при старте программ не видящий соединение (если неправильно закрыть VISA сессию), то я бы не сказал, что есть какие-то глюки. При рестарте всего Labview всё сразу находится и работает без проблем.
К этому же компьютеру подключены еще 6 разных приборов по USB.
Слабо представляю, какие глюки могут обнаружится. Хотя скорости обмена данными у нас не такие высокие, возможно при повышении вылезает что-то?
И драйвера, и именование (на одном компьютере есть аж 15 непонятно под что зарезервированных СОМ-ов). Проблему с драйверами (и с подделками) обычно решаю поиском по VID PID, хотя у меня это разовая непоточная работа — раз в полгода подключить какой-то прибор на другой комп. Хотя при возникновении глюков это напрягает… Проще было бы иметь стандартный пакет установки и не мучать себе мозг.
Чтобы непослушный софт под виндой увидел порт, надо или дать ему номер не больше COM4 (номер порта переназначается в диспетчере устройств), или открывать как //./COM34
Из того, что не написали — при неадекватных кабелях порты выгорают. Проблема в том, что у незаземленного устройства на ground — 110 вольт относительно земли. Поэтому советую всегда проверять кабели на соединение корпусов разъемов. Корпусная часть должна соединяться первой и по оплетке кабеля выравнивать groundы.
Но это все общие проблемы RS32, а не проблемы переходников.
В итоге решили, что прежде чем соединять сети, надо таки как следует уравнивать потенциалы земель нормальной шиной.
Т.к. подключается только 1 линия и к 1 конкретному компьютеру, то количество глюков минимально, драйвера стоит один раз и навсегда. Единственная потенциальная проблема — когда реально сложная/загаженная линия RS, тогда потенциально сильно падает качество связи. Но это всё-таки отдельная проблема, которую надо устранять независимо от используемого преобразователя.
На новых компах такого порта как класса нет.
как раз наоборот — на новых компах и есть и com и lpt. только они не выводятся не заднюю панель. как пример Z370 HD3P.
Что поделать, порой нужна и шина ISA, как вот на производстве военном недавно видел, в своё время некому и некогда было задуматься перевести тестовые платы на USB хотя бы… Так вот и работают древние компы с чуть ли уже не рассыхающимися от старости матплатами на софте под ХР…
Кстати, древние компы, поживучее современных. Особенно, учитывая условиях их работы. Технологии там не такие тонкие, делали всё подубовее вот оно и работает. На материнках достаточно вовремя электролиты заменить и они и дальше пашут вполне себе.
Может получится так что пин просто не вытянет, тогда мы начнем уменьшать сопротивление и можем в итоге получить дохлый вывод.
Подтяжка идет к 5 вольтам (к питанию USB), а GPIO выдает 3.3 вольта.
А почему бы не использовать преобразователи eternet to rs? Самое оптимальное решение, как по мне…
Проброс Eth<->RS232 не для описанной в статье задачиПочему? Плиз, объясните причину.
Т.е. железки разбросаны по «полю» а сервер ТБД стоит в стойкеТут удобней RS-422, ибо можно и на 2-3 километра кабель размотать. А у витой пары дальность — сотня метров. Ну разве что направленный wifi-канал ставить.
Выбор каналов на объекте идет по разным критериям, но прежде всего мы исходим из экономии денег. То есть оборудование дешевое, а время программистов и железячников — дорогое.
Ну как пример — шлюз на Волго-Балте. Всего 9 смарт-антенн, 8 на шлюзе + базовая. Антенны на шлюзе (до 300 метров) подключаются по витой паре (крепится к бетонному основанию шлюза). 8 проводов — это сдвоенное питание + RS-422. Переделка сводится к замене платы формирователя RS-232 из TTL на плату формирователя RS-422 с грозозащитой. Программных переделок ноль.
Базовая антенна — 500 метров, и она сбоку. Кабель по земле вести — порвут. Ставить воздушку со столбами — затратно. Потому преобразователь RS-232 в TCP-server + направленная радиолиния на основе wifi.
Серверный блок — обычный промышленный комп на DIN-рейку на Debian (попробуйте, купите комп с 8 портами RS-422). Поэтому все порты идут через TCP. Для 8 роверных антенн ставится 8-портовая MOXA (RS422 в TCP-Server) на DIN-рейку.
Для контроля на период пусконаладки ставитяс дешевый USB-свисток с 4G. В итоге — все настраивается и контролируется удаленно. Не, я разок туда даже поехал на предварительные испытания. Но быстро понял, что из гостиницы в Вытегре я своё оборудование вижу лучше, чем находясь на шлюзе. Так неделю и просидел в гостинце. На окончательных испытаниях я из Питера вообще не выезжал. У меня на рабочем месте со средствами отладки явно лучше, чем на ноуте в поле.
ибо Ethernet это канал без «гарантированной» доставки данныхА что же у вас за устройство, что передает по ethernet без TCP и UDP? Все, известные мне конверторы, используют TCP, то есть с гарантированной доставкой. Некоторые могут и UDP, но этот режим только для локалки.
Эмулировать COM програмно через Ethernet конечно можно, но получаем кучу сбоев по не понятным причинам,Ключевое слово, скорее всего — не понимание причин. Потому что у нас количество сбоев начинается от 1 сбойного байта в час и выправляется до промышленного стандарта — 1 сбойный байт в сутки. Для этого есть осциллограф и регулировка оконечных резисторов на линиях RS-422/RS-485. Ну и настройки на MOXA.
А в условиях когда все рядом (т.е. грубо говоря кассовый комплекс магазина) лучше не устраивать себе лишних проблем.Дело в том, что Moxa 20 лет делает эти конверторы. И довела технологию до такого уровня, что их ETH конвертеры более беспроблемны, чем USB-COM. То есть зависающий пару раз в неделю USB-COM — это норма, а зависшая раз в месяц Moxa — это ЧП, надо разбираться с питанием, импульсными помехами, настройкой IP-Jam, версией прошивки и так далее.
Собственно навели нас на Moxa ребята, занимающиеся телеметрией космических запусков. У них вообще все по RS-422 + Moxa для ввода в комп.
Для особо «удаленных» либо ставят модемы либо тащат оптикуЭто годится лишь когда около датчика есть свое электропитание хорошего качества. А тащить в параллель ещё и линии питания — бредово. Лучше уж сразу — витую пару с RS-422 + питание.
P.S. Пост получился довольно рекламным, но я не имею отношения к Moxa. Ну разве что 20 лет назад работал в одной из компаний «Ниеншанса», который сейчас является российским дистрибьютором Moxa.
А угадайка с полярностью 485 меня задрала настолько, что я взял клеммник от колонки, вот такой:

припаял к нему два провода и прикрутил это к преобразователю USB-485.
Очень удобно, когда оборудование в одном месте, а ты отлаживаешься в другом. Вплоть до связи с соседним блоком (оба за Волгой) через сервер в Питере, Как сказал мой коллега: «А что ты можешь сделать на месте, чего не сможешь удаленно?». И я понял, что только разъемы покрепче воткнуть. Ну для этого и одного инженера хватит. :-)
Осциллографом в линию потыкаться. Иногда это решает.
Но вы правы — иногда осциллограф незаменим при отладке. Как и вольтметр. Просто стараемся, чтобы все такие вещи были отлажены в офисе, а не на испытаниях.
О, есть ещё один вариант. Завалить всю систему и обойтись без немедленных тяжких телесных. На месте убегать сложнее будет.
Но это когда монтаж заказчиков. А когда монтирует коллега — он это сделает качественней меня, криворукого.
Монтировать самому необязательно. Достаточно присутствовать лично и направлять.
Я занимаюсь автоматикой и, поэтому, приходится владеть темой от головы до *опы. Основная моя задача — писать программы для контроллеров, но приходится брать в руки отвёртку. И «направлять» — это не совсем подходящее слово. Однажды у нас были какие-то странные сбои в работе ModBus по RS-485. При внимательном осмотре выяснилось, что доблестные электрики затащили витую пару в электрический шкаф, и содрали с него кожуру вместе с экраном сразу на входе в шкаф. А дальше эта пара шла в обнимку с силовым кабелем, по которому питался мощный мотор. Наблюдение показало, что в 99% случаев связь отваливется при пуске/отключении этого мотора. Пришлось приглашать подрядчика, который это наделал, и, как вы выразились, «направлять» :)
И это не что-то из ряда вон, а вполне себе будни.
Например 8/16-портовые асинхронные серверы RS-232/422/485 в Ethernet
По поводу путаницы с именами: имена через udev нормально назначаются.
Уже не помню точно, как именно я решал эту задачу, больше 5 лет прошло. Возможно, назначал по серийному номеру устройств или по номеру шины. Во всяком случае, 4 девайса нормально подключал к одному порту usb древнего ноута и рекламаций от заказчика не имел.
Но почему HID, а не CDC?
По нулевой кт в девайсе отличия небольшие, а в системе появится ttyUSB или COM-порт обычный. Тогда вообще софт на ПК дорабатывать не надо
Не нужно драйверов
Которые еще и подписанными должны быть, чтобы не заставлять пользователей плясать с бубном при их установке.
С SiLabs был у меня неприятный момент — при интенсивном обмене иногда терялись данные. Возможно, чипы были "левые из Китая". Пришлось заменить на FTDI.
Ссылка на статью битая.
Была битая, но автор ее уже исправил, обновите страницу :)
кроме того, старое оборудование очень и очень часто требует полного rs232 (который как бы ещё с 1988 года tia-232-f), ну или хотя бы rts и cts (для аппаратного управления потоком), а не только rtg. в stm32f1x, емнип, только один такой uart
FTDI лучше, но значительно дороже. Хотя учитывая головную больс драйверами под Win, я предпочиёл бы FTDI.
А предпочитаю я CP210x :)
Скорее, за счёт 32-х конечных точек в USB.
Насчет количества EP теперь уже не понимаю я — разве количество EP != количеству портов?
Насчет количества EP теперь уже не понимаю я — разве количество EP != количеству портов?
Нет, конечно. Есть один «особенноый» EP — нулевой, плюс на каждое устройство нужно по EP и на вход и на выход, плюс на устройство бывает нужен управляющий EP. А может быть что на несколько устройств нужно только две EP, например в HID.

Хотя смысл то как раз уйти от СОМ портов вообще.
Не получится. Мы уйдём из жизни раньше, чем последняя железка с UART.
Как подключить кучу старого RS232 оборудования по USB без регистрации и sms (STM32 + USB-HID)