Работа MAX485

vasya00
Offline
Зарегистрирован: 30.05.2016

Здравствуйте, разбираюсь с RS485. Для изучения взял готовый рабочий термостат с управлением по ModBus. Подключился через USB-RS485 переходник и шлю ему команду, через терминал Termite. Одновременно через USB-RS232 ttl и другой терминал смотрю что приходит на 1 и 4 ножку MAX485. Ожидаю увидеть там все то же самое что идет на RS485. Отправленная команда 01 03 00 01 00 00 14 0A действительно преобразуеться в RS232 без изменения, но ответ который я снимаю на входе и выходе начинает различаться, но ведь такого быть не должно терминал должен показать одно и то же, микросхема ведь только преобразует протокол, но не меняет ответ, и параметры обмена?

И второй вопрос, если я буду посылать команду сразу на выход 4 MAX485 по RS232 команда так же должна приниматься? Но это никак не работает. Или я что то недопонимаю? Спасибо!

nik182
Offline
Зарегистрирован: 04.05.2015

А что такое нога 4? Задавая такие вопросы надо как минимум привести схему соединений с полным названием микросхем и их выводов.
А по сути вопроса, 485 полудуплексный. Это значит, что в данный момент передача возможна в одном направлении. Но содержание передачи в этом направлении должно полностью соответствовать. Различия возникают в случае неправильного переключения направления передачи 485. Частая ошибка - переключается раньше чем полностью уходит последний символ из аппаратного буфера МК.

rkit
Offline
Зарегистрирован: 23.11.2016

Ты, для начала, определись, 485 или 232 у тебя, а то валишь разные вещи в одну кучу.

И этот набор слов - USB-RS232 ttl - что такое ? Опять, либо rs232, либо ttl.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Я тож щас мучаю только что собранное устройство с интерфейсом 485 на самодельной плате. Микрухи Трансиверы 485 были заказаны с али. Симптом такой же как у вас, доходит до оппонента не то, что нужно. А на приём вообще не работает. Вроде все уже перепроверил, осталось пересадить саму микруху. Возьму с готового модуля 485 тоже китайского но 100% рабочего. Чуть позже отпишу 

Pyotr
Offline
Зарегистрирован: 12.03.2014

ТС, хотя б показали какие преобразователи USB-RS485 используете. Бывает они выдают не то...

vasya00
Offline
Зарегистрирован: 30.05.2016

Я получаю по rs485 с мах485, не то же что по rs232. Но чувствую что я тоже делаю что то не так, у меня никак не получается отправить команду напрямую на rs232 после max485, тогда как эта же команда отправленная по rs485 проходит верно. Нужно ли использовать какие то сигналы квитиирование если я подключаюсь к max485 напрямую по RS232 по схеме RO-RxD, DI-TxD, где RE-DE соединены между собой, и ими управляет МК термотстата?

В случае когда я отправляю команду по RS485 переключением направления передачи управляет МК термостата, я в это ведь не вмешиваюсь, просто наблюдаю что появляется на входе и выходе max485 и оно не совпадает.

Преобразователь с али как на фото

 

rkit
Offline
Зарегистрирован: 23.11.2016

И с чего ты решил, что rs232 туда вообще можно подключить?

Pyotr
Offline
Зарегистрирован: 12.03.2014

vasya00 пишет:

В случае когда я отправляю команду по RS485 переключением направления передачи управляет МК термостата, я в это ведь не вмешиваюсь, просто наблюдаю что появляется на входе и выходе max485 и оно не совпадает.

 
 

 

Из того что понял. Может МК переключает мах485 на прием не дождавшись окончания передачи?

Эти свистки выдают не совсем RS485. У них на выходе однополярный сигнал. Их нужно немного допиливать.

MaksVV
Offline
Зарегистрирован: 06.08.2015

судя по схеме надо вместо usb-rs232 подключить usb-ttl, если ещё ничего не сгорело

vasya00
Offline
Зарегистрирован: 30.05.2016

Используется конечно RS232 TTL, и частично работает, он видит ту же команду что отправлена по RS485, но ответ они видят разный, и сам команду успешно отправить не может никак.

С конвертером USB-RS485 тоже все ок оно работает отправляет и принимает, осциллограф показывает двухполярный сигнал, хотя и не симметричный при передаче сигнала

Что касается "МК переключает мах485 на прием не дождавшись окончания передачи?"  это можно как то проверить и подтвердить? Вроде как с отправкой проблем нет, разные данные, по разным протоколам получаем в ответ, и не получается написать команду по RS232

Pyotr
Offline
Зарегистрирован: 12.03.2014

vasya00 пишет:

Что касается "МК переключает мах485 на прием не дождавшись окончания передачи?"  это можно как то проверить и подтвердить? Вроде как с отправкой проблем нет, разные данные, по разным протоколам получаем в ответ

Тогда по этому вопросу нет проблем.

rkit
Offline
Зарегистрирован: 23.11.2016

vasya00 пишет:

RS232 TTL

Еще раз: это сочетание слов не имеет смысла.  Это разные стандарты сигналов. Совершенно несовместимые.

ttl: 1 = 1.5V ... 5V; 0 = 0V ... 1.5V

rs232: 1 = -15V ... -3V; 0 = 3V ... 15V;

 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

vasya00 пишет:
Используется конечно RS232 TTL, и частично работает, он видит ту же команду что отправлена по RS485, но ответ они видят разный, и сам команду успешно отправить не может никак.

так и не понял нафига тут RS232, почему просто сразу не взять USB-TTL? 

Судя по схеме вы пытаетесь "подслушать" TTL трафик между МК термостата и его трансивером RS485. Дак вот это не так делается. Вам нужно взять два адаптера USB-TTL и каждый своим проводом RX подцепиться к пинам 1 и 4  микрухи термостата RS485. Т.е. один USB-TTL будет смотреть трафик из шины в термостат (аля команды термостату), другой USB-TTL будет смотреть трафик от термостата в шину (ответы термостата) . а если вы вместо термостата (либо вместо данных из шины) ,хотите что-то подменить в этом промежутке  (от МК до микрухи RS485), то в момент передачи вами, нужно провод разъединять (подключаясь вразрыв штатному проводу)

vasya00
Offline
Зарегистрирован: 30.05.2016

Прошу прощения за не точность в терминах, по "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?

sadman41
Offline
Зарегистрирован: 19.10.2016

TTL-адаптер DE/RE не дергает, так что все логично - данные не уходят.

vasya00
Offline
Зарегистрирован: 30.05.2016

вот я тоже начал догадываться что нужно наладить квитиирование, а как заставить TTL дергать DE/RE? Подключить их к RTS? И что настроить в терминале?

sadman41
Offline
Зарегистрирован: 19.10.2016

Никогда об этом не думал, но похоже, что RTS - подходящая сигнальная линия. По-любому гугл знает, если это кто-то уже проворачивал.

MaksVV
Offline
Зарегистрирован: 06.08.2015

поставьте ардуино мегу (ну или промикро/леонардо  на крайняк) в разрыв между МК термостата и max485. Один  UART в разрыв линии к 1 пину max485. Второй UART в разрыв линии к 4 пину max485. Через третий UART выводите инфу в консоль. линию DERE тоже в разрыв через мегу. Так сможете оба трафика смотреть сразу и подменять данные в обе стороны когда вам это нужно. Программа такого гейтвея будет не сложная.

MaksVV
Offline
Зарегистрирован: 06.08.2015

vasya00 пишет:
Да, я понимаю что одним ttl адаптером мы можем подслушать единовременно только одну линию, я использую один адаптер, и подслушиваю сначала как идёт команда, и она выглядит идентично с отправленной по RS485, тут все как ожидалось, затем перключаюсь и слушаю что в ответ на эту команду термостат отвечает, и тут получаю разные данные по RS485 и TTL, отличия в нескольких байтах, иногда что то совпадает, длина ответа та же, например:

а по схеме, которую вы привели этого не скажешь...

vasya00 пишет:
...что бы я не отправлял в TTL термостат не отвечает, а по RS485 команд не видно, хотя они должны, по идее не только уходить в МК но и ретранслироваться по RS485?

с чего бы данным появляться на шине rs485, если вы пытаетесь их отправить на линию, идущую к термостату, а не от него?  тем более уже правильно выше заметили про пин DERE (он в это время на приём стоит). Т.е. по двум причинам данные на шине не появляются.

Ну и я уже говорил, когда вы пытаетесь что то отправить на линию, её надо разорвать.

nik182
Offline
Зарегистрирован: 04.05.2015

Вообще по всем законам 485 всегда слушает линию, если ничего не отправляет. Это значит, что RX линия свистка ttl-usb , подключенная к любой , не передающей, лининии DO 485 микросхемы , будет показывать что происходит в 485 линии. Идея простая. Ставим дополнительный свисток 485-usb и видим все передачи между термостатом и управлением. Ну или как уже писали, два usb-ttl только Rx к DO 458.

vasya00
Offline
Зарегистрирован: 30.05.2016

Да спасибо, про использование нескольких конвертеров usb-ttl это понятно, попробую, можно и на меге. Но даже с одним ситуация не ясна, конечно же я пытаюсь отправлять команду на вход MAX485 тот что 1 нога, RO, хотя боясь запутаться пробовал и на 4 DI. На физическом уровне ведь не зачем отключать эту линию от МК для передачи сигнала из вне? Там по умолчанию есть высокий уровень и мой ttl опустит его передав сигнал как в сторону МК так и в сторону MAX485, который уже должен будет ретранслировать ответ МК? Я правильно понимаю? Только нужно разобраться с пином DERE, я должен поставить его на передачу подав 5В в момент передачи? Это можно сделать в каком-нибудь терминале автоматически, используя стандартные сигналы квитирования UART?

vasya00
Offline
Зарегистрирован: 30.05.2016

Спасибо, за пояснения, хотелось бы разобраться как это работает!

А верная схема должна выглядеть скорее так:

Я конечно не пытаюсь слать команды в DI понимаю что это бесполезно, но DI и RO переключая для прослушивания.

MaksVV
Offline
Зарегистрирован: 06.08.2015

vasya00 пишет:
На физическом уровне ведь не зачем отключать эту линию от МК для передачи сигнала из вне? Там по умолчанию есть высокий уровень и мой ttl опустит его передав сигнал как в сторону МК так и в сторону MAX485, который уже должен будет ретранслировать ответ МК? Я правильно понимаю? Только нужно разобраться с пином DERE, я должен поставить его на передачу подав 5В в момент передачи?

ну вот сами подумайте , МК термостата  держит линию DERE  в лог. нуле (прием).  А вы единицу туда пытаетесь засунуть. Кто победит? также и с линией данных. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

MaksVV пишет:

Я тож щас мучаю только что собранное устройство с интерфейсом 485 на самодельной плате. Микрухи Трансиверы 485 были заказаны с али. Симптом такой же как у вас, доходит до оппонента не то, что нужно. А на приём вообще не работает. Вроде все уже перепроверил, осталось пересадить саму микруху. Возьму с готового модуля 485 тоже китайского но 100% рабочего. Чуть позже отпишу 

Дело было действительно в микрухе трансивере max485. Пересадил её с рабочего модуля rs485 тоже китайского - всё заработало . Итог на али лучше заказывать модули и брать с них микросхемы.