Как организовать UDP ower RS485 под Linux?
Необходимо организовать UDP (TCP IP) ower RS-485 под Linux. Протокол RS-485 подобен MODBUS.
Т.е. хочется в программе открыть сокет и работать с UDP не обращая внимания на то, что единственный доступный интерфейс платы — RS485. Кроме того при загрузке системы и при её функционировании хочется спокойно использовать DNS, DHCP и т.д. и т.п. Понятно, что скорость будет ограничена. Понятно, что нужен драйвер и понятно, что готового нет (протокол пропиетарный). Понятно, что на втором конце RS-485 (Linux или Win7) нужно будет обеспечить бридж в IP-сеть.
Куда копать? Может есть похожий проект, который мы сможем модифицировать?
Желательно Open source с лицензией не требующей что бы использующий код был полностью открытым. Т.е. модифицированный драйвер мы можем выложить потом, но не весь продукт где он используется.
Заранее спасибо всем ответившим по существу.
> UDP (TCP IP)
так все таки TCP/IP или TCP/UDP?
> Протокол RS-485 подобен MODBUS
RS-485 не протокол. А стандарт интерфейса. А вот Modbus — протокол.
То есть, как я понял Вашу задачу. у Вас есть железка, которая имеет RS-485, до другой железки, у которой уже есть ethernet и выход в интернет. Вы хотите с первой железки получить доступ к Интернет.
Тогда Ваша задача, формулируется: TCP/UDP over RS-485. То есть, вместо Ethernet у Вас будет использоваться RS-485. Тогда, что-то, например, в эту сторону: www.rsdn.ru/forum/winapi/661573.hot или social.microsoft.com/Forums/en-US/95128f22-7447-47.
В данном случае Windows от Linux отличается непринципиально. Да RS-485 от RS-232 с точки зрения программирования не отличается.
спасибо за ответ.
1. UDP
2. Конечно. RS-485 интерфейс, на нём реализован Modbus-подобный протокол. Мне казалось это очевидным.
3. Кроме отличий в уровне сигналов и, как следствие, иных скоростей и дальности RS-485 от RS-232 отличается тем, что обычно RS-232 подразумевает P2P коммуникации, а RS-485 наличие мастера и многих ведомых интерфейсов.
4. Программный прокси мною давно уже реализован и хорошо работает. Хотелось-бы сделать это на драйверном уровне, так что бы одна и та же программа работала на всех железках. И там где есть сетевая карта и там где только RS-485.
Кажется, я начал Вас понимать. То есть, Вы хотите организовать UDP поверх Вашего проприетарного Modbus-подобного протокола? То есть, Вы даже не имеете возможности работать с RS-485 напрямую?
Да. про Master-Slave забыл, пардон. Перепутал с RS-422. Так что отличия с точки зрения программирования таки будут. А Ваша железка это мастер или слейв? или вообще децентрализованная сеть с арбитражем?
Просто если это слейв, и в RS-485 и в рамках Вашего проприетарного Modbus-подобного протокола, то я плохо себе представляю, как Вы вообще предполагаете, что это будет работать? Вижу один вариант: мастер будет регулярно опрашивать регистры (в терминологии Modbus) на наличие пакета и при наличии ответных пакетов засовывать их в регистры. Не думаю, что Вы сможете найти где-то такую реализацию. 🙂
А если ваша железка это мастер, то это какая-то странная для меня архитектура.
Но я ничего не понял про Ваш программный прокси. Похоже мы разовариваем на разных языках.
Мои и мастер и слейв. И протокол пропиетарный мне открыт. И напрямую с RS-485 можно. Архитектура выглядит так: ПС, имеющий доступ к локалке, имеет RS-485 к которому подсоединены до 32-х датчиков-слейвов. Эти самые слейвы должны иметь возможность послать UPD пакет серверу, находящемуся в той-же сети, что и ПС-мастер. Строго говоря протокол над RS-485 можно менять по нашему усмотрению.
can ethernet и rs485/232 ethernet
Народ, подскажите, пожалуйста: может, кто с такими железяками сталкивался?
В интернете полно вариантов, но работают ли они в линуксе?
Можно, конечно, накупить макеток на ARM’ах и запрограммировать их вообще на универсальный преобразователь портов с веб-конфигурялкой, но хочется все-таки что-нибудь готовое.
Есть ли такие железки, уверенно работающие с линуксом (а то, мало ли: может, там какой-нибудь хитрый огороженный протокол, доступный только из-под вантузячьих драйверов)?
К.О., прямо. Железки-то есть для примера?
КО для КО, ты же спросил работает ли линукс с устройствами через ethernet.
По своей задаче смотри, сколько последовательных портов надо, каких, какой протокол, на предмет как он на задержки в сети реагирует. Если символьная синхронизация, то легче, если таймауты маленькие, то не факт что будет работать. Moxа и Adam попадались, цифры не помню. По разному работают, не угадаешь. Болидовская бяка «с2000-ethernet» еще была, выход 485 полудуплекс. Код с последовательно порта на UDP переделывается легко, инициализация в основном. Под сygwin и линукс проверял, особых претензий по сравнению с «железным» последовательным портом не заметил.
зы. Конфигурялка правда может быть только под винду и под виртуалкой не работать, это да.
Перво-наперво CAN интересует.
зы. Конфигурялка правда может быть только под винду и под виртуалкой не работать, это да.
Если так у всех, то проще самому сделать. С веб-мордой ☺
Eddy_Em ☆☆☆☆☆ ( 18.12.12 22:15:18 MSK )
Последнее исправление: Eddy_Em 18.12.12 22:15:40 MSK (всего исправлений: 1)
Если только готовую плату покупать, с нуля делать упаришься.
Ну так если готовых нет — придется делать.
Да ладно нет, все уже сделано до нас
http://www.moxa.ru/good/show/17629/1871570/
telnet и web- морда в наличии. Чем не угодил ?
Бюджет бы озвучил, если на деньги конторы, то все равно Родина не оценит твоё старание.
ilovewindows ★★★★★ ( 18.12.12 23:22:56 MSK )
Последнее исправление: ilovewindows 18.12.12 23:24:51 MSK (всего исправлений: 1)
Херасе. Это называется «отказаться от компьютера»? O_o
Да такой фигулечке максимальная цена — 100 баксов. А если на ибее брать, то вообще баксов 15 получится.
Ясен пень, деньги конторы. Но если CAN-контроллер + компьютер по стоимости не сильно отличаются от этой фигулины, то на кой хрен она нужна?
на правах оффтопа — эдди, что еще с 1 звездой случилось?
Потому как большинство смотрят в интернет, выбирают , «закладывают» деньги, потом деньги выделяются и тратятся согласно бумажке. А кто не смог потратить деньги и вздумал экономить тех наказывают. Еще экономные тормозят развитие научно-технического прогресса.
Походу зря говорят что скор нельзя потратить, продать, обменять и проч. Крутятся вот люди :).
экономные тормозят развитие научно-технического прогресса
Ты хотел сказать «потреблядского общества»?
Блин, как офтопить — так все запросто, а по делу подсказать…
Eddy_Em ☆☆☆☆☆ ( 19.12.12 11:20:59 MSK )
Последнее исправление: Eddy_Em 19.12.12 11:21:46 MSK (всего исправлений: 1)
по делу: твой подход «все сам сделаю на коленке за 15 баксов» — дважды глуп. и архитектурно (ты так можешь и до выплавки руды дойти. нуач0!) так и по стомости. самоделка всегда дороже будет.
пример: net-CAN == $230.00, макетка (причем, на ней куча еще всякой ненужной фигни есть) == $108.97. А коробочка для макетки будет стоить уж явно дешевле 100 баксов!
а твое время бесплатно? я тоже любитель «сам». но если бы все-все делал сам, не учавствуя в разделении труда — охренел бы.
Мне за него зарплату платят вообще-то.
Естественно, я исхожу из такого решения, чтобы мне не пришлось слишком много работы делать. Если железяка (пусть даже за 300 баксов) будет иметь отличную документацию и нормальную линуксовую библиотеку, то у меня на предварительную работу с ней от силы 1 день уйдет (запустить проверку, поиграться с веб-мордой). Если же у этой железяки все будет через одно место (ну, например — только для мастдайки, а в линуксе — «догадайся сам»), я могу и за год ничего не добиться — в этом случае быстрей будет на макетке сделать (за пару недель, сочетая работу с выполнением основного проекта и болтовней на ЛОРе).
работодателю не выгодене заплатить 200 вместо 100 и ты не будешь маяться непрофильной херней?
Работодатель может и $1000 выложить вместо $100, лишь бы работало нормально.
Сейчас вон, вообще подумывают: «а не выкинуть ли миллионов 50 «деревянных» на переоборудование системы управления с использованием NI’шных «конструкторов» и LabView?»
Архитектура системы устарела уже лет 10 назад. Радикально ее изменить невозможно (все работы должны выполняться так, чтобы телескоп продолжал работать), т.е. нужно постепенно переходить на современные решения. По-хорошему, надо вообще отказываться от этой чертовой CAN-шины в пользу ethernet. Но, во-первых, заниматься этим никто не хочет, а во-вторых, денег негусто.
// P.S. А ту макеточку я бы хотел прикупить: интересно же поиграться с экранчиками, сенсорными панелями, ethernet’ом… Я вот подумал, что можно было бы на основе такой макетки запилить какой-нибудь пульт управления или пульт локального контроля…
Eddy_Em ☆☆☆☆☆ ( 19.12.12 11:43:26 MSK )
Последнее исправление: Eddy_Em 19.12.12 11:45:01 MSK (всего исправлений: 1)
нечто такое — http://cache.freescale.com/files/32bit/doc/app_note/AN3906.pdf
или тупо любой микроконтроллер с ethernet + can драйвер. Второе вполне себе бюджетно.
Ну так для начала стоит все-таки получше рынок изучить: вдруг уже готовое есть.
Цена такая ибо индастриал. Говеный китайский 486й 150МГц с 64 метрами рамы и портами без гальванической развязки, еще и на глюкавом SoC, у которого ком-порты имеют свойство подвисать при определенном расположении звезд под онтопиком, под 500 баксов стоит, geode — раза в 2 дороже. Но писюк туда не поставить — ибо не индастриал, вот и приходится из этого лепить пулю.
А ессли охота покопаться/попрограммить — советую на арм смотреть, те же платы unidk весьма вкусно выглядят за свои деньги.
Да такой фигулечке максимальная цена — 100 баксов.
Хрен там. Moxa за свои железки берёт немногим выше адекватного. Хорошие железки.
Хрен там. Moxa за свои железки берёт немногим выше адекватного. Хорошие железки.
Надо будет узнать, сколько. Все-таки, не нравятся мне электронные каталоги продукции, в которых цена не указана: явно темнят что-то.
хреновина на 16 портов стоила ЕМНИП килобакс-полтора. На производстве используется.