Повторитель RS485 с гальванической развязкой

Hello All!

В природе существуют subj'и ? ЖB}

Reply to
Aleksandr Konosevich
Loading thread data ...

Hello, Aleksandr! You wrote to All on Wed, 15 Feb 2006 16:41:43 +0500:

Hа I-7510 от ICP DAC глянь. 3000 Вольт вроде пишут..

With best regards, Gromov Dmitry. E-mail: snipped-for-privacy@deletethis.newmail.ru

Reply to
Gromov Dmitry

Привет!

"Stas Shilo"

SS> а вообще - мы сами делаем такие :-) SS> и преобразователи 232-485

О! Может тогда у тебя в конторе можно найти ответ на вот такой вопрос. Имеется single-board computer (SBC) Advantech PCA6753 или аналогичный. У него имеется 16550-совместимый COM-порт с RS-485 на борту. Управление направлением передачи через RTS. Юзаю его под Linux, на который навешена RTAI. Не могу сделать на нем MODBUS по RS-485. В чем проблема - у 16550 отсутствует прерывание о том, что последний байт закончил передаваться. Т.е. я включаю RTS, чип переключается на передачу, начинаю передавать, все замечательно передается, а вот по окончании передачи мне нужно быстро-быстро переключить RTS на прием, чтобы успеть услышать ответ слэйва. По стандарту slave имеет право отвечать через 3.5 символа, за это время я должен успеть переключится. Последнее прерывание, которое вырабатывает 16550, случается когда последний байт из очереди перейдет в сдвиговый регистр и начнет передаваться. Держать в это время процессор чтобы поллить бит опустошения сдвигового регистра - нонсенс, процессору очень даже есть, чем заняться в это время. Во время передачи (RTS=1) порт абсолютно глухой - сам себя не слышит. Резать дорожки на плате, чтобы разделить 2 и 3 ноги у сипекса 485 - нонсенс. Какие-нибудь идеи есть?

Второй вопрос. Имеется несколько веток, которые хотелось бы развязать, но посадить на один порт SBC. Каким образом повторителям объяснить, какие UIDы у них болтаются с той стороны, чтобы повторители знали, кому следует менять направление передачи, а кому нет? Портов мало, а веток много...

С уважением,

Виталий Насенник

Reply to
Vitaly Nasennik

VN> Имеется single-board computer (SBC) Advantech PCA6753 или аналогичный. У VN> него имеется 16550-совместимый COM-порт с RS-485 на борту. Управление VN> направлением передачи через RTS. Юзаю его под Linux, на который навешена VN> RTAI. Не могу сделать на нем MODBUS по RS-485. В чем проблема - у

16550 VN> отсутствует прерывание о том, что последний байт закончил передаваться. Т.е. VN> я включаю RTS, чип переключается на передачу, начинаю передавать, все VN> замечательно передается, а вот по окончании передачи мне нужно быстро-быстро VN> переключить RTS на прием, чтобы успеть услышать ответ слэйва. По стандарту VN> slave имеет право отвечать через 3.5 символа, за это время я должен успеть VN> переключится. Последнее прерывание, которое вырабатывает 16550, случается VN> когда последний байт из очереди перейдет в сдвиговый регистр и начнет VN> передаваться. Держать в это время процессор чтобы поллить бит опустошения VN> сдвигового регистра - нонсенс, процессору очень даже есть, чем заняться в VN> это время. Во время передачи (RTS=1) порт абсолютно глухой - сам себя не VN> слышит. Резать дорожки на плате, чтобы разделить 2 и 3 ноги у сипекса 485 - VN> нонсенс. VN> Какие-нибудь идеи есть?

А нет возможности после загрузки последнего байта на передачу запустить таймер на 1.5 байта, и по его отработке (по прерыванию от него) делать переход на прием? Мы вообще не 3.5 байта даем на ответы слейвов, а порядка 10. И слейвы так же отстраиваем - кадр фиксируется не по 3.5 - а по 10. Устраняется возникшая у нас проблемма "джиттера" промежутка между байтами (многозадачка), достигавшая этих самых 3.5 ;-)

Reply to
Rifkat Abdulin

Пpивет, Aleksandr!

■ Дело было 16 Feb 06, Gromov Dmitry писал Aleksandr Konosevich

GD> Hа I-7510 от ICP DAC глянь. 3000 Вольт вроде пишут.. не "ICP DAC", а ICP DAS продаются в ПЛK-Системы

formatting link
а вообще - мы сами делаем такие :-) и преобразователи 232-485

Всего наилучшего. Пока.

Reply to
Stas Shilo

Привет!

"Rifkat Abdulin"

RA> А нет возможности после загрузки последнего байта на передачу запустить RA> таймер на 1.5 байта, и по его отработке (по прерыванию от него) делать RA> переход на прием?

Собственно, так и собираюсь сделать, просто мне дико неохота патчить стандартный драйвер COM-порта, встроенный в Linux. Дело в том, что на втором порту (RS232) висит PPP, а драйвер един на оба...

С уважением,

Виталий Насенник

Reply to
Vitaly Nasennik

Hello Stas Shilo!

GD>> Hа I-7510 от ICP DAC глянь. 3000 Вольт вроде пишут.. SS> не "ICP DAC", а ICP DAS SS> продаются в ПЛK-Системы

formatting link
SS> а вообще - мы сами делаем такие :-) SS> и преобразователи 232-485

Ежели вы их *действительно* делаете - прошу с характеристиками и ценами ко мне в мыло ... ;-)

Reply to
Aleksandr Konosevich

Hi Vitaly !

Совсем недавно 17 Feb 06 08:31, Vitaly Nasennik писал к Stas Shilo:

SS>> а вообще - мы сами делаем такие :-) SS>> и преобразователи 232-485

VN> О! Может тогда у тебя в конторе можно найти ответ на вот такой вопрос. VN> Имеется single-board computer (SBC) Advantech PCA6753 или аналогичный. VN> У него имеется 16550-совместимый COM-порт с RS-485 на борту. Классика. Как мне говорили, проблема с набортным 485-м достаточно популярная тема на Линуховых форумах (ну, наверно просто под виндой Адвантеки всякие мало кто гоняет:). Универсальное решение - юзай как обычный порт RS232 и только сигналы RX-TX, а снаружи вешай приблуду для преобразования в RS485. Мы пошли именно этим путем, сделали свой адаптер. В нем есть задержка на конфигурируемое время от включения передатчика до начала передачи, что позволяет строить честные сети MODBUS-RTU. И развязка гальваническая честная есть, и разрядники всякие.

VN> Управление направлением передачи через RTS. Юзаю его под Linux, на VN> который навешена RTAI. Hе могу сделать на нем MODBUS по RS-485. Странно, вообще-то. Скорость какая? Я даже из-бод виндового Билдера через компонент без проблем на 19200 работал. То есть в компе RS232, а к нему ADM485, управляемый от портового RTS. Hаверное, у тебя скорости поболее.

VN> Какие-нибудь идеи есть? Если найдешь надежное софтовое решение- скажи. Буду знать, что оно есть.

VN> Второй вопрос. Имеется несколько веток, которые хотелось бы VN> развязать, но посадить на один порт SBC. Каким образом повторителям VN> объяснить, какие UIDы у них болтаются с той стороны, чтобы VN> повторители знали, кому следует менять направление передачи, а кому VN> нет? Портов мало, а веток много... Слова какие-то страшные, через одно непонятные. Тебе что, RS-485й свич нужен, что ли? Интересный вопрос. Я совершенно уверен, что такой можно сделать, и даже подозреваю, что такие уже кто-то делает. Hу и я так понимаю, у тебя много мастеров? Иначе это незачем.

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Hello Vitaly!

17 Feb 06 12:32, you wrote to Rifkat Abdulin:

RA>> А нет возможности после загрузки последнего байта на передачу RA>> запустить таймер на 1.5 байта, и по его отработке (по прерыванию RA>> от него) делать переход на прием?

VN> Собственно, так и собираюсь сделать, просто мне дико неохота патчить VN> стандартный драйвер COM-порта, встроенный в Linux. Дело в том, что на VN> втором порту (RS232) висит PPP, а драйвер един на оба...

Если я не совсем идиот, то я где-то слышал, что 485 обычно является одной шиной

- и на прием, и на передачу. В этом случае достаточно принять собственную посылку стандартным драйвером, после чего стандартным же драйвером выключить передатчик.

Anatoly

Reply to
Anatoly Mashanov

Sun Feb 19 2006 18:11, Stas Shilo wrote to Vitaly Nasennik:

VN>> - сам себя не слышит. Резать дорожки на плате, чтобы разделить 2 и 3 VN>> ноги у сипекса 485 - нонсенс. VN>> Kакие-нибудь идеи есть?

SS> а pазве 16550 не генеpиpует пpеpывание по опустошению pегистpа?.... SS> (я пpосто не помню)

Есть бит статуса, который надо проверять по опросу.

8.4 LINE STATUS REGISTER This register provides status information to the CPU concerning the data transfer. Table II shows the contents of the Line Status Register. Details on each bit follow. ... Bit 6: This bit is the Transmitter Empty (TEMT) indicator. Bit 6 is set to a logic 1 whenever the Transmitter Holding Register (THR) and the Transmitter Shift Register (TSR) are both empty. It is reset to a logic 0 whenever either the THR or TSR contains a data character. In the FIFO mode this bit is set to one whenever the transmitter FIFO and shift register are both empty. ...
Reply to
Yuriy K

Пpивет, Vitaly!

■ Дело было 17 Feb 06, Vitaly Nasennik писал Stas Shilo

SS> а вообще - мы сами делаем такие :-) SS> и преобразователи 232-485

VN> О! Может тогда у тебя в конторе можно найти ответ на вот такой вопрос. ...... VN> - сам себя не слышит. Резать дорожки на плате, чтобы разделить 2 и 3 ноги VN> у сипекса 485 - нонсенс. VN> Kакие-нибудь идеи есть? а pазве 16550 не генеpиpует пpеpывание по опустошению pегистpа?.... (я пpосто не помню)

я когда делал пpеобpазователь 232<=>485 пpосто аппаpатно связал MAX232 с MAX485. на T/R подавал сигнал с Tx чеpез инвеpтоp. а линии A и B чеpез 1k подтянул к Vcc и GND соответственно.

после того как всё пеpедано Tx как pаз остаётся в состоянии 1, что пеpеключает

485 на пpием. А когда пеpедаётся "настоящая" 1 до линии пpосто поддтягиваются pезюками. Для 120кбит/с и до 20 устpойств хватает, больше - не пpовеpял.

В твоём случае.... в голову пока ничего пpиходит. слишком тpебования жёсткие выдвинул: доpоги не pезать, 16550 не опpашивать :) лень думать :)

VN> Второй вопрос. Имеется несколько веток, которые хотелось бы развязать, но VN> посадить на один порт SBC. Kаким образом повторителям объяснить, какие UIDы VN> у них болтаются с той стороны, чтобы повторители знали, кому следует менять VN> направление передачи, а кому нет? Портов мало, а веток много... а зачем что-то объяснять??? пусть пеpеключаются, какая pазница? всё pавно поpт не сможет ничего пpинять, пока он занят пеpедачей... или я не пpавильно что-то понял?

Всего наилучшего. Пока.

Reply to
Stas Shilo

RA>>> А нет возможности после загрузки последнего байта на передачу RA>>> запустить таймер на 1.5 байта, и по его отработке (по прерыванию RA>>> от него) делать переход на прием?

VN>> Собственно, так и собираюсь сделать, просто мне дико неохота патчить VN>> стандартный драйвер COM-порта, встроенный в Linux. Дело в том, что на VN>> втором порту (RS232) висит PPP, а драйвер един на оба...

AM> Если я не совсем идиот, то я где-то слышал, что 485 обычно является одной шиной AM> - и на прием, и на передачу. В этом случае достаточно принять собственную AM> посылку стандартным драйвером, после чего стандартным же драйвером выключить AM> передатчик.

  1. Обычно да. Хотя и 4х проводка встречается.
  2. КЗ на линии. Устанешь ждать "свой" байт.
  3. Коллизия на линии. Ответ некоего слейва не вовремя. Тоже встречается.
Reply to
Rifkat Abdulin

Привет!

"Yuriy K"

VN> - сам себя не слышит. Резать дорожки на плате, чтобы разделить 2 и 3 VN> ноги у сипекса 485 - нонсенс. VN> Kакие-нибудь идеи есть?

SS> а pазве 16550 не генеpиpует пpеpывание по опустошению pегистpа?.... SS> (я пpосто не помню)

YK> Есть бит статуса, который надо проверять по опросу.

Вот именно это я и не хочу делать, ибо как я писал чуть раньше, процессору очень даже есть, чем заняться вместо того, чтобы сидеть и поллить этот бит до конца передачи байта, что на скорости 9600 (да и 19200) - неприлично долго (почти миллисекунда и пол-миллисекунды соответственно).

С уважением,

Виталий Насенник

Reply to
Vitaly Nasennik

AM>> Если я не совсем идиот, то я где-то слышал, что 485 обычно является RA>> одной шиной AM>> - и на прием, и на передачу. В этом случае достаточно принять RA>> собственную AM>> посылку стандартным драйвером, после чего стандартным же драйвером RA>> выключить AM>> передатчик.

RA>> 1. Обычно да. Хотя и 4х проводка встречается. SS> это уже не 485, а RS422 :) SS> он не управляется, просто на каждое направление дифференциальная пара (Rx, Tx) Конечно 422. Это я уже стареть начал. Пора Hi-End-ом заняться ;-)

Reply to
Rifkat Abdulin

Пpивет, Rifkat!

■ Дело было 20 Feb 06, Rifkat Abdulin писал Anatoly Mashanov

..... AM> Если я не совсем идиот, то я где-то слышал, что 485 обычно является RA> одной шиной AM> - и на прием, и на передачу. В этом случае достаточно принять RA> собственную AM> посылку стандартным драйвером, после чего стандартным же драйвером RA> выключить AM> передатчик.

RA> 1. Обычно да. Хотя и 4х проводка встречается. это уже не 485, а RS422 :) он не управляется, просто на каждое направление дифференциальная пара (Rx, Tx)

RA> 2. KЗ на линии. Устанешь ждать "свой" байт. RA> 3. Kоллизия на линии. Ответ некоего слейва не вовремя. Тоже встречается.

Всего наилучшего. Пока.

Reply to
Stas Shilo

Hello Stas Shilo!

RA>> 1. Обычно да. Хотя и 4х проводка встречается. SS> это уже не 485, а RS422 :) SS> он не управляется, просто на каждое направление дифференциальная пара (Rx, SS> Tx)

Боюсь показаться назойливым, но я так-и не увидел у себя в нетмейле ТТХ/etc subj'евого девайса, который Вы якобы производите/продаёте ... ;)

Reply to
Aleksandr Konosevich

Пpивет, Aleksandr!

■ Дело было 21 Feb 06, Aleksandr Konosevich писал Stas Shilo

AK> Боюсь показаться назойливым, но я так-и не увидел у себя в нетмейле ТТХ/etc AK> subj'евого девайса, который Вы якобы производите/продаёте ... ;) хм... странно. Отправлял в воскресенье из дому.

развязка по интерфейсу на HCPL2601 (Viso=2.5kV до 10МБит/с), по питанию на DC-DC (Viso>=3kV) скорость зависит от м/сх которую поставишь.

Питание DC 10-30 вольт (реально чуть шире 7-40)

Мы их делаем для собственных нужд.

А так как собственные нужды ограничиваются максимальной скоростью 115200, то на больших скоростях мы и не тестировали.

Всего наилучшего. Пока.

P.S.: я привёл характеристики ОПРЕДЕЛЯЮЩИХ элементов. кстати в оригинале я не говорил, что мы их продаём. но если надо - безнал. Ценник будет где-то между 1,5 - 2 тр надо уточнить. хочешь - могу фотку закинуть с габаритами, скажи только куда.

Reply to
Stas Shilo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.