Работа MAX485
- Войдите на сайт для отправки комментариев
Здравствуйте, разбираюсь с RS485. Для изучения взял готовый рабочий термостат с управлением по ModBus. Подключился через USB-RS485 переходник и шлю ему команду, через терминал Termite. Одновременно через USB-RS232 ttl и другой терминал смотрю что приходит на 1 и 4 ножку MAX485. Ожидаю увидеть там все то же самое что идет на RS485. Отправленная команда 01 03 00 01 00 00 14 0A действительно преобразуеться в RS232 без изменения, но ответ который я снимаю на входе и выходе начинает различаться, но ведь такого быть не должно терминал должен показать одно и то же, микросхема ведь только преобразует протокол, но не меняет ответ, и параметры обмена?
И второй вопрос, если я буду посылать команду сразу на выход 4 MAX485 по RS232 команда так же должна приниматься? Но это никак не работает. Или я что то недопонимаю? Спасибо!
А что такое нога 4? Задавая такие вопросы надо как минимум привести схему соединений с полным названием микросхем и их выводов.
А по сути вопроса, 485 полудуплексный. Это значит, что в данный момент передача возможна в одном направлении. Но содержание передачи в этом направлении должно полностью соответствовать. Различия возникают в случае неправильного переключения направления передачи 485. Частая ошибка - переключается раньше чем полностью уходит последний символ из аппаратного буфера МК.
Ты, для начала, определись, 485 или 232 у тебя, а то валишь разные вещи в одну кучу.
И этот набор слов - USB-RS232 ttl - что такое ? Опять, либо rs232, либо ttl.
Я тож щас мучаю только что собранное устройство с интерфейсом 485 на самодельной плате. Микрухи Трансиверы 485 были заказаны с али. Симптом такой же как у вас, доходит до оппонента не то, что нужно. А на приём вообще не работает. Вроде все уже перепроверил, осталось пересадить саму микруху. Возьму с готового модуля 485 тоже китайского но 100% рабочего. Чуть позже отпишу
ТС, хотя б показали какие преобразователи USB-RS485 используете. Бывает они выдают не то...
Я получаю по rs485 с мах485, не то же что по rs232. Но чувствую что я тоже делаю что то не так, у меня никак не получается отправить команду напрямую на rs232 после max485, тогда как эта же команда отправленная по rs485 проходит верно. Нужно ли использовать какие то сигналы квитиирование если я подключаюсь к max485 напрямую по RS232 по схеме RO-RxD, DI-TxD, где RE-DE соединены между собой, и ими управляет МК термотстата?
В случае когда я отправляю команду по RS485 переключением направления передачи управляет МК термостата, я в это ведь не вмешиваюсь, просто наблюдаю что появляется на входе и выходе max485 и оно не совпадает.
Преобразователь с али как на фото
И с чего ты решил, что rs232 туда вообще можно подключить?
В случае когда я отправляю команду по RS485 переключением направления передачи управляет МК термостата, я в это ведь не вмешиваюсь, просто наблюдаю что появляется на входе и выходе max485 и оно не совпадает.
Из того что понял. Может МК переключает мах485 на прием не дождавшись окончания передачи?
Эти свистки выдают не совсем RS485. У них на выходе однополярный сигнал. Их нужно немного допиливать.
судя по схеме надо вместо usb-rs232 подключить usb-ttl, если ещё ничего не сгорело
Используется конечно RS232 TTL, и частично работает, он видит ту же команду что отправлена по RS485, но ответ они видят разный, и сам команду успешно отправить не может никак.
С конвертером USB-RS485 тоже все ок оно работает отправляет и принимает, осциллограф показывает двухполярный сигнал, хотя и не симметричный при передаче сигнала
Что касается "МК переключает мах485 на прием не дождавшись окончания передачи?" это можно как то проверить и подтвердить? Вроде как с отправкой проблем нет, разные данные, по разным протоколам получаем в ответ, и не получается написать команду по RS232
Что касается "МК переключает мах485 на прием не дождавшись окончания передачи?" это можно как то проверить и подтвердить? Вроде как с отправкой проблем нет, разные данные, по разным протоколам получаем в ответ
Тогда по этому вопросу нет проблем.
RS232 TTL
Еще раз: это сочетание слов не имеет смысла. Это разные стандарты сигналов. Совершенно несовместимые.
ttl: 1 = 1.5V ... 5V; 0 = 0V ... 1.5V
rs232: 1 = -15V ... -3V; 0 = 3V ... 15V;
так и не понял нафига тут RS232, почему просто сразу не взять USB-TTL?
Судя по схеме вы пытаетесь "подслушать" TTL трафик между МК термостата и его трансивером RS485. Дак вот это не так делается. Вам нужно взять два адаптера USB-TTL и каждый своим проводом RX подцепиться к пинам 1 и 4 микрухи термостата RS485. Т.е. один USB-TTL будет смотреть трафик из шины в термостат (аля команды термостату), другой USB-TTL будет смотреть трафик от термостата в шину (ответы термостата) . а если вы вместо термостата (либо вместо данных из шины) ,хотите что-то подменить в этом промежутке (от МК до микрухи RS485), то в момент передачи вами, нужно провод разъединять (подключаясь вразрыв штатному проводу)
Прошу прощения за не точность в терминах, по "rs232 ttl" я подразумеваю конечно ttl, мне казалось это такой вариант rs232.
Да, я понимаю что одним ttl адаптером мы можем подслушать единовременно только одну линию, я использую один адаптер, и подслушиваю сначала как идёт команда, и она выглядит идентично с отправленной по RS485, тут все как ожидалось, затем перключаюсь и слушаю что в ответ на эту команду термостат отвечает, и тут получаю разные данные по RS485 и TTL, отличия в нескольких байтах, иногда что то совпадает, длина ответа та же, например:
RS485: 81 83 82 6E 9D 95 C5
TTL: 01 03 02 6E EA 15 AB
Ещё странность в том, что бы я не отправлял в TTL термостат не отвечает, а по RS485 команд не видно, хотя они должны, по идее не только уходить в МК но и ретранслироваться по RS485?
TTL-адаптер DE/RE не дергает, так что все логично - данные не уходят.
вот я тоже начал догадываться что нужно наладить квитиирование, а как заставить TTL дергать DE/RE? Подключить их к RTS? И что настроить в терминале?
Никогда об этом не думал, но похоже, что RTS - подходящая сигнальная линия. По-любому гугл знает, если это кто-то уже проворачивал.
поставьте ардуино мегу (ну или промикро/леонардо на крайняк) в разрыв между МК термостата и max485. Один UART в разрыв линии к 1 пину max485. Второй UART в разрыв линии к 4 пину max485. Через третий UART выводите инфу в консоль. линию DERE тоже в разрыв через мегу. Так сможете оба трафика смотреть сразу и подменять данные в обе стороны когда вам это нужно. Программа такого гейтвея будет не сложная.
а по схеме, которую вы привели этого не скажешь...
с чего бы данным появляться на шине rs485, если вы пытаетесь их отправить на линию, идущую к термостату, а не от него? тем более уже правильно выше заметили про пин DERE (он в это время на приём стоит). Т.е. по двум причинам данные на шине не появляются.
Ну и я уже говорил, когда вы пытаетесь что то отправить на линию, её надо разорвать.
Вообще по всем законам 485 всегда слушает линию, если ничего не отправляет. Это значит, что RX линия свистка ttl-usb , подключенная к любой , не передающей, лининии DO 485 микросхемы , будет показывать что происходит в 485 линии. Идея простая. Ставим дополнительный свисток 485-usb и видим все передачи между термостатом и управлением. Ну или как уже писали, два usb-ttl только Rx к DO 458.
Да спасибо, про использование нескольких конвертеров usb-ttl это понятно, попробую, можно и на меге. Но даже с одним ситуация не ясна, конечно же я пытаюсь отправлять команду на вход MAX485 тот что 1 нога, RO, хотя боясь запутаться пробовал и на 4 DI. На физическом уровне ведь не зачем отключать эту линию от МК для передачи сигнала из вне? Там по умолчанию есть высокий уровень и мой ttl опустит его передав сигнал как в сторону МК так и в сторону MAX485, который уже должен будет ретранслировать ответ МК? Я правильно понимаю? Только нужно разобраться с пином DERE, я должен поставить его на передачу подав 5В в момент передачи? Это можно сделать в каком-нибудь терминале автоматически, используя стандартные сигналы квитирования UART?
Спасибо, за пояснения, хотелось бы разобраться как это работает!
А верная схема должна выглядеть скорее так:
Я конечно не пытаюсь слать команды в DI понимаю что это бесполезно, но DI и RO переключая для прослушивания.
ну вот сами подумайте , МК термостата держит линию DERE в лог. нуле (прием). А вы единицу туда пытаетесь засунуть. Кто победит? также и с линией данных.
Я тож щас мучаю только что собранное устройство с интерфейсом 485 на самодельной плате. Микрухи Трансиверы 485 были заказаны с али. Симптом такой же как у вас, доходит до оппонента не то, что нужно. А на приём вообще не работает. Вроде все уже перепроверил, осталось пересадить саму микруху. Возьму с готового модуля 485 тоже китайского но 100% рабочего. Чуть позже отпишу
Дело было действительно в микрухе трансивере max485. Пересадил её с рабочего модуля rs485 тоже китайского - всё заработало . Итог на али лучше заказывать модули и брать с них микросхемы.