Конвертер Ethernet UDP в RS-485

Некоторые программы типа OPC серверов или некоторые драйвера к SCADA системам позволяют использовать не только Com порт для связи со всякими железяками, но и его Ethernet «заменитель» по протоколу UDP. Естественно, что для связи c железяками имеющими RS-485 (и все остальные RS-232/422) нужен некий gateway преобразующий UDP в RS-485. Вот его я и учудил на Atmega128 и ENC28J60 где то в начале лета.

Главным вдохновителем и источником TCP/IP стэка явился Lifelover — честь и хвала ему! Но просто стырить и тупо запустить его проект мне не удалось т.к. у меня были некоторые другие требования и цели. Поэтому я допилил его проект особенно в части ip адреса, чтобы его можно было менять на ходу, добавил свой драйвер усарт, скорректировал web страничку и выкинул DHCP.
Итак что же делает эта железяка?
Программа или устройство мастер посылает на адрес конвертера на 502 порт сообщение — он его транслирует в usart с выставленными на web интерфейсе параметрами, при этом запоминается порт и адрес отправителя. Если приходит сообщение ответ по usart, то оно транслируется в UDP на порт и адрес отправителя.

Плата:


Через web интерфейс настраиваются параметры USART и ip адрес с маской. Хранятся в eeprom меги. Для изменения параметров usart необходимо перезагрузиться. Кнопка посередине платы если ее нажать и подержать при старте устройства позволит вернуться к ip адресу 192.168.0.222 и маске 255.255.255.0

Статистика. При работе наблюдаются пропущенные пакеты видимо из за малой мощности Меги — в нашей достаточно напряженной сети где то примерно 1 на 10000 удачных.

Пример настройки параметров на стороне OPC сервера

В моей конструкции используется 2 питания 5 и 3.3 вольта с трансляторами уровней для меги в 5в из 3.3в — 74VHC1GT125D. Это было сделано для того чтобы можно было гарантировано запустить мегу на 16МГц.
Все компоненты есть в Чип-НН.
Да чуть не забыл, мой порт для программирования исторически получился перевернутым — поэтому обратите внимание на это.
Проект для AVR-Studio прилагается.
Плата чуть исправлена по сравнению с фото. На плате есть место под eeprom и часы с батарейкой.
  • +4
  • 15 сентября 2011, 13:27
  • GYUR22
  • 2
Файлы в топике: AVR_WEB_vhc2_small.zip, web_udp_converter.zip

Комментарии (25)

RSS свернуть / развернуть
Неплохо. По этому поводу пара вопросов.
— что такое EDE?
— можно схемку устройства? (вижу, что между мегой и enc28 есть резисторы) У мня их нет. Думаю не будет ли это проблемой. Ведь мегу я питаю 5 в, а enc 3.3 в. Может быть несоответствие уровней — не будет работать enc…
0
EDE это OPC сервер
схемки нет и не будет — резисторы опциональны для страховки
согласование уровней надо делать
0
Про уровни спасибо. Придется мегу128а переводить на питание 3.3в. Или есть другой способ согласования? Ставить буфер с питанием 3.3в что ли?
EDE это OPC сервер
Какое у него полное название?
0
ENC28 имеет 5V tolerant входы, так что на согласование можно забить. Для повышения надежности можно еще в разрыв линий данных между ней и МК поставить резисторы на 51-330 Ом.
0
  • avatar
  • Vga
  • 15 сентября 2011, 14:42
Я ж специально написал про трансляторы уровней 74VHC1GT125D — enc28j60 толерантна по spi к 5вольтам, а мега может не понять 3.3в
Enhanced Data Engine
0
А почему не используется TCP? Это бы позволило избежать потерь части данных.
0
  • avatar
  • m0xf
  • 15 сентября 2011, 14:11
хз я с TCP не работал поэтому сделал на UDP — может когда на arm буду делать то использую и TCP
0
да данные не теряются(теряются только пакеты) — любой OPC имеет механизм перезапросов
0
Есть такая штука RFC2217 Telnet Com Port Control Option. Этот документ описывает работу с последовательным портом через сеть с динамической настройкой скорости обмена, контроля потока и прочего. Некоторые даже это поддерживают как родное (например pySerial). Единственный недостаток — работа только с ASCII данными, но если этого достаточно — ИМХО лучшее решение.
0
  • avatar
  • amx
  • 15 сентября 2011, 14:38
ASCII как правило мало используется в основном бинарные протоколы т.к. они позволяют кодировать в два раза больше информации
0
А что за микросхемы в SOP8 (2 штуки) и DIP8 (одна в панельке)?
Гм, ну дроссели намекают, что первые две — MC34063. А последняя?
Алсо, ты как я вижу тоже забил на «точные 49.9 Ом резисторы»?
0
  • avatar
  • Vga
  • 15 сентября 2011, 14:46
max1487 или подобная
да на резисторы забил — делал две подобные конструкции обе работали
там еще про резистор смещения тема была я поставил 2к2
0
UDP для трансляции RS-485 работает пока сеть (ЛВС) проста и не затейлива.

Как только в сети образуется циски, нортелы, чекпоинты и прочие xDSL каналы, все становится ужасно. Самый жесткая подстава, это когда путаются ответы на запросы. UDP не гарантирует исходный порядок пакетов на стороне получателя.

С TCP тоже не все хорошо. Порядок сохраняется, но иногда ответы «застревают в сети», и потом разом вываливаются в сервер.

На коммерческих шлюзах Ethernet-RS485 есть проприэтарные протоколы на базе UDP, синхронизирующие запросы/ответы + софт для эмуляции COM-порта на компе.
0
ну не совсем все так ужасно к этой железяке через две или три циски коннектились — я в Нижнем чел на Украине и все было нормально статистика была примерно такая же.
0
А как у вас с обработкой broadcast пакетов?
0
о! какие люди!
только то что есть в стэке.
те что в стэке попадает на уровень udp то и транслируется в усарт
0
в смысле все что на 502 порт приходит
0
А данные с rs-485 можете инкапсулировать в броадкаст?
Т.Е. можно ли на данных девайсах построить туннель между >=3 линиями без компутера?
0
так далеко я не копал, но в принципе можно
Можно и без броадкаста сделать тупо слать на нужные адреса прописанные в конфигурации (и хранящиеся где нито в еепроме) — один фиг быстро для мастер слэйв (но для бакнета mstp уже правда не прокатит)
зы Да насколько я помню вроде роутера броадкасты рубят если чего?
0
Вы правы, роутеры броадкаст порежут.
0
А почему у тебя там MAX1487 так интересно подключается?
А через резистор подтянут к питанию а В подтянуто к земле.
И зачем на входе низкоомные резисторы?
0
  • avatar
  • a9d
  • 22 октября 2011, 16:20
это распространенная схема — низкобюджетного подключения
низкоомные резисторы вместо предохранителей
A и B — подтянуты для устранения неопределенности
0
Проект для AVR-Studio прилагается.
Обманул?
Файл платы скачивается, а проект — фига с маслом :(
0
проверьте исправил — там был битый файл какойто 1.2к теперь должен быть 185к
0
Теперь все отлично. Благодарю.
Где-то валялся макет Mega168+ENC28J60. Хоть какая-то польза от несостоявшегося проекта почти 3х летней давности будет, сделаю переходник на RS-485.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.