Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

MODBUS протокол через 232 порт

Вт окт 17, 2006 09:59:26

кто-н поделитесь плз исходником на асме реализации этого протокола.
или ссылку хорошую на хороший док
я читал МОДБАС РТУ рус, но не помогло, надо много каких-то вещей уяснить, не могу связать работу USART и протокол.
может по конфигурированию USART мне кто подскажет?
мой мк ATMega162. (жду с нетерпением)

Чт окт 19, 2006 09:18:43

MODBUS - это самый высокий логический уровень протокола.
USART - реализует низкий логический уровень. Передача 1 байта в MODBUS происходит так же как и в RS232 с логической точки зрения (физика там RS485 или 422, не помню - если по стандарту).

вобщем MODBUS определяет формат пакетов. а чтобы передать байт пакета - используется обычная последовательная передача (USART то бишь).

С физической точки зрения - MODBUS дифференциальная шина. Т.е. на выходе USART (Rx,Tx) надо ставить буфера, конвертирующие однолинейный сигнал в дифференциальный.

Чт окт 19, 2006 12:08:13

конвертирующие однолинейный сигнал в дифференциальный

поясни пожалуйста. этот кусок не совсем понял. Что за сигналы? в чем собственно их отличие?

Чт окт 19, 2006 13:39:03

MODBUS - дифференциальная шина. для каждого типа полезного сигнала нужно 2 провода.
в однолинейной шине - 1 провод.
в однолинейной шине логический 0 и логическая 1 определяются уровнем напряжения относительно земли.
в дифференциальной шине для линии Rx, например, нужно 2 провода R+ и R-. Логическая 1 или логический 0 определяются по потенциалу R+ относительно R-, а не относительно земли. что повышает помехоусточивость шины, т.к. подразумевается, что пришедший на линию паразит будет присутствовать как на R+, так и R- и не влияет на разность потенциалов одного провода относительно другого.

т.е. тебе, с твоим мк - на линию Rx и Tx нужно поставить шинный формирователь, который состоит в параллельно включенных инверторе и инверторе с инверсным входом ( 8) то бишь просто повторителем сигнала) - у которых время распространения сигнала одинаково.

Чт окт 19, 2006 15:38:03

ясно.
Теперь
нужно поставить шинный формирователь, который ...

с этого места и до конца не понятно. Что это такое и как выглядит?
как работает? принцип?

Чт окт 19, 2006 18:22:42

шинный формирователь - это просто страшное слово :)
поскольку физичекий протокол коммуникаций разных шин вглядит по-разному (на примере MODBUS видно, что 0 и 1 определяется по-разному на шине и у контроллера). шинный формирователь - просто адаптер уровней, преобразователь физического протокола, согласователь уровней.

принцип для меги простой. У меги 0 и 1 определяется как 0В и 3,3-5В. на шину же нужно подавать дифференциальный сигнал (например для R+ и R- для "0" нужно выдать 0В на R+ и 3,3-5В на R-, для "1" - сигналы обратных уровней).

Вобщем, получается, что R+ работает как Rx, а на R- сигнал нужно инвертировать.

откуда решение (см. файл). на линию R+ ставим просто повторитель, у которого задержка распространения сигнала как на инверторе (чтобы избежать рассогласования во времени смены сигнала на R+ и R-).

на практике посмотри MAX3471, например.

P.S. рисунок не вложился, говорит квоту исчерпал....

Пн окт 23, 2006 09:23:25

кое-что ясно
картинку на мыло мне можешь выложить?

и еще немного о Повторителе (он же инвертор, в данном случае) можешь расписать?

Пн окт 23, 2006 13:30:54

http://datasheets.maxim-ic.com/en/ds/MAX3471.pdf

почитай - прямо эту микруху можно пользовать с мегой.

Пн окт 23, 2006 14:53:42

Рисунок:
Вложения
modbus.GIF
(2.67 KiB) Скачиваний: 907

Пн окт 23, 2006 15:10:17

интересный вариант. работать будет ? сумлеваюсь я ...

Пн окт 23, 2006 18:19:29

avr123.nm.ru писал(а):интересный вариант. работать будет ? сумлеваюсь я ...

ну у меня на этом принципе девайс работает с MAX3471 :)
в серийном производстве уже год как, с коммуникациями не было ни одной проблемы :)

в чем сомнения-то?

Пн окт 23, 2006 18:47:41

в том что с RX можно что-то передать.

так как R это от "Ресив" принимать то-бишь. А что можно принять со входа логических элементов ?

И это работает уже давно ?

Я ж грю - электроника это чудо !

Пн окт 23, 2006 23:15:56

;) ну да, вместо Rx Tx надо :)

Вт окт 24, 2006 08:44:18

если правильно понял МАКС из пдф-ки - это усилитель напряжения и инвертер.. так?
получается те данные которые я хочу передать, я должен усилить и инвертировать их потенциал???

(где я ошибаюсь?)

Вт окт 24, 2006 09:34:48

это шинный формирователь
Re - вход, подключает Ro к шине
Ro - выход, при подключении к шине, если A-B> - 50 mV, то высокий выход, если А-В <- 450mV, то низкий выход.

De - вход, подключает Di к шине.
Di - вход, при подключении к шине на неинверсном выходе сигнал повторяется, на инверсном - инвертируется.

A,B - неинверсный и инверсный выходы на шину.

Пт окт 27, 2006 09:58:35

извини, но на этот раз сооовсеем ничего не понял.. :(
скажем
Ro - выход, при подключении к шине
- выделенное слово - как понимать? как выглядит, где искать должен?
далее
высокий выход
- как понимать?
на неинверсном выходе сигнал повторяется, на инверсном - инвертируется
- выделенное не понятно.
A,B - неинверсный и инверсный выходы на шину
- опять таки, куда, куда?

яж эттто схемотехнику незнаю еще пока. :(

Пт окт 27, 2006 14:17:28

CyberMerlin писал(а):извини, но на этот раз сооовсеем ничего не понял.. :(
скажем
Ro - выход, при подключении к шине
- выделенное слово - как понимать? как выглядит, где искать должен?
далее
высокий выход
- как понимать?
на неинверсном выходе сигнал повторяется, на инверсном - инвертируется
- выделенное не понятно.
A,B - неинверсный и инверсный выходы на шину
- опять таки, куда, куда?

яж эттто схемотехнику незнаю еще пока. :(

шина в данном случае - RS485, провода связи, у тебя их всего 4.

Выходы микрухи могут иметь три состояния: логический 0 (низкий уровень эл. сигнала), логический 1 (высокий уровень эл. сигнала), высокий импеданс (отключен).

к шине подключены Ro, Di.

Re, De позволяют перевести входы/выходы в высокий импеданс (отключить от шины Ro,Di), либо подключить у шине (передавать/получать сигналы с шины).

инверсный/неинверсный - сигналы противоположной полярности. на R+ и R- сигналы меняются одновременно и они всегда в противофазе. Если на R+ "0", то на R- обязательно будет "1" и наоборот.

Вт окт 31, 2006 10:02:38

R+ и R- - получается я должен подавать полошительный и отрицательный потенциалы?? +/-3 В скажем?
или просто 0 и +3 В???

Вт окт 31, 2006 11:17:20

средний уровень не принципиален - важно чтоб сигналы в двух проводах были противоположны и симметричны относительно среднего уровня.

Вт окт 31, 2006 12:53:26

спасибо, пока кое-что ясно...
честно сказать перевариваю..

а образец, кусок схемы(картинки) может кто-н выложить посмотреть как у вас на деле получилось? (саму схему цепи соединения по этим ножкам)
если не трудно, очень очень поможет
Ответить