Comments 49
Спасибо за статью. Я сейчас затеваю ремонт и второпях изучаю, что и как из кабелей вмуровать в стены, пока есть такая возможность.
Объясните, пожалуйста, а зачем вообще вся эта канитель с последовательными интерфейсами и протоколами? Дешевизна? Простота? Ой ли?
Вот держу я в руках Arduino Pro Mini и Ethernet-модуль, они в сумме стоят $5-$6. Предположим, хочу я сделать «умный выключатель» — я вмуровываю в стену Ethernet-кабель, по PoE подаю на Ардуину питание. В результате имею полную свободу от наводок на кабель и простоту интеграции — бери готовую бибилиотеку для Ethernet, TCP/IP и HTTP и знай себе HTTP POST-запросами симистор переключай хоть из браузера.
Правда, сильно гложет мысль, что не могу я один такой быть умный, а вся отрасль — ошибаться. Или они просто тупо за совместимость с legacy-устройствами сражаются?
Объясните, пожалуйста, а зачем вообще вся эта канитель с последовательными интерфейсами и протоколами? Дешевизна? Простота? Ой ли?
Вот держу я в руках Arduino Pro Mini и Ethernet-модуль, они в сумме стоят $5-$6. Предположим, хочу я сделать «умный выключатель» — я вмуровываю в стену Ethernet-кабель, по PoE подаю на Ардуину питание. В результате имею полную свободу от наводок на кабель и простоту интеграции — бери готовую бибилиотеку для Ethernet, TCP/IP и HTTP и знай себе HTTP POST-запросами симистор переключай хоть из браузера.
Правда, сильно гложет мысль, что не могу я один такой быть умный, а вся отрасль — ошибаться. Или они просто тупо за совместимость с legacy-устройствами сражаются?
+1
Modbus — это совсем не legacy, это устоявшийся протокол для управления и измерений. Важен он тем, что его на нем работает практически вся индустриальная автоматика — датчики, исполнительные устройства, PLC. Если у вас налажена, например, производственная линия или охранная система, то наверняка там будет использоваться modbus. Для «умного дома» он тоже применим, но я считаю что удел modbus'a — цеха и лаборатории, а для домашней автоматики нужны другие стандарты. А Arduino и всякие модули к ней — это здорово и интересно, но это не стандарты.
0
Как уже было написано выше, ModBus поддерживается многими устройствами и рассчитан на «несколько устройств на одной линии». Если в будущем захочется подключить помимо выключателя, например, счётчик тепла, то у него врят ли будет выход Ethernet, а ModBus очень даже вероятно и т.д.
0
Если Вам будет нужно подключить N устройств к сети, то в случае выбора Ethernet нужно будет протянуть N кабелей к коммутатору, причём каждый кабель должен быть не более 100м, и это должен быть кабель как минимум с двумя витыми парами. Если же выбрать RS485 + Modbus, то достаточно кабеля с одной витой парой, и можно подключать все устройства к одному кабелю длиной до 1,2км параллельно.
+3
не более 100 мА у вас немаленькая квартира, я погляжу :)
Триста метров недорогой витой пары стоят пару тысяч рублей, надёжный как трактор 16-портовый свитч Intel можно купить за 500. Мы тут с вами не на спичках ли экономим?
0
«100м» — я имел ввиду ограничения «по железу», т.е. при необходимости протянуть дальше — может не заработать. По мне так дело не в цене, а в удобстве монтажа, представьте что в стену нужно будет спрятать десяток кабелей Cat.5, вместо одного
0
Это только кажется перед прокладкой кабелей, что «100 метров — мало? Ха-ха-ха! Да у меня квартирка всего ничего!»
А потом начинаешь тянуть и выясняется, что или в обход всей квартиры, или под полом, т.к. от комнаты с сервером до кухни — дверь большой комнаты, а роутер — вообще на другой стене!
Поясню, «нафига оно вообще нужно»:
Любое устройство в сети — это лишний порт на маршрутизаторе. И это лишний провод, который надо тащить.
Причём зачастую в комнату надо ставить НЕСКОЛЬКО устройств — кнопка для света, управление люстрой, торшером, датчики и т.д. — к каждому надо тянуть свой шнурочек. От роутера. Который на другой стороне квартиры. Или на комнату ставить свич…
Устройства на 485 шине висят на паре проводов. Можно извратиться, пустив четыре провода и подводя заодно и низковольтное питание, но при этом они все висят параллельно на одном кабеле!!! Без дополнительных роутеров и т.д.!
Надо отвести от магистрали до выключателя? Подрубаешься параллельно и вуаля — новый девайс в сети!
При этом модбас-485 устройства «копеечные» — по факту это тупо контроллер, причём можно и без обвязок!
А потом начинаешь тянуть и выясняется, что или в обход всей квартиры, или под полом, т.к. от комнаты с сервером до кухни — дверь большой комнаты, а роутер — вообще на другой стене!
Поясню, «нафига оно вообще нужно»:
Любое устройство в сети — это лишний порт на маршрутизаторе. И это лишний провод, который надо тащить.
Причём зачастую в комнату надо ставить НЕСКОЛЬКО устройств — кнопка для света, управление люстрой, торшером, датчики и т.д. — к каждому надо тянуть свой шнурочек. От роутера. Который на другой стороне квартиры. Или на комнату ставить свич…
Устройства на 485 шине висят на паре проводов. Можно извратиться, пустив четыре провода и подводя заодно и низковольтное питание, но при этом они все висят параллельно на одном кабеле!!! Без дополнительных роутеров и т.д.!
Надо отвести от магистрали до выключателя? Подрубаешься параллельно и вуаля — новый девайс в сети!
При этом модбас-485 устройства «копеечные» — по факту это тупо контроллер, причём можно и без обвязок!
0
Если у Вас 5 устройств, то можно, но когда Вы захотите добавить шестое, то придется долбать стену и закладывать провод.
Чувствуете разницу?
Чувствуете разницу?
0
UFO just landed and posted this here
Так или иначе надо к релюшке доставить питание. Вмуровывать в стену ac/dc преобразователь у каждой релюшке либо страшно (дешёвые), либо разорительно (если качественные).
Радиоканалу в условиях центра города я, боюсь, не доверяю. PoE показался самым адекватным вариантом.
Радиоканалу в условиях центра города я, боюсь, не доверяю. PoE показался самым адекватным вариантом.
0
UFO just landed and posted this here
32В??? Это что за зверь.
По 12В — каким кабелем протянуто?
По 12В — каким кабелем протянуто?
0
А вы нигде не документировали свой опыт? Фоточки, статьи, блог, что-то в этом духе?
0
UFO just landed and posted this here
Всё дело в помехоустойчивости. Если посмотреть Википедию, то:
Тамже:
A 10BASE-T transmitter sends two differential voltages, +2.5 V or −2.5 V.
A 100BASE-TX transmitter sends three differential voltages, +1 V, 0 V, or −1 V.
Тамже:
Логическому «0» соответствует положительное напряжение (от +5 до +15 В для передатчика), а логической «1» отрицательное (от −5 до −15 В для передатчика).
0
Ну за помехоустойчивость Ethernet мы и любим, чего не скажешь о последовательных линиях.
Подключите Ардуину к COM-порту и напишите простенький скетч, который будет непрерывно шарашить одну букву в терминал. А потом попросите у жены фен, положите рядом и включите. Лишнего мусора в терминале будет дофига.
Подключите Ардуину к COM-порту и напишите простенький скетч, который будет непрерывно шарашить одну букву в терминал. А потом попросите у жены фен, положите рядом и включите. Лишнего мусора в терминале будет дофига.
0
Как-то странно у вас COM работает. Я сколько лет с ним работаю, но про такое безобразие не слышал. Встречал правда когда на передачу данных влияют помехи источников питания, или разводка электронной части выполнена некорректно.
Про Ethernet — лично видел что два компьютера, которые соединены кабелем в один метр шлют пакеты с ошибками. Источников помех (вроде фена) вроде бы не наблюдалось. Про COM — часа 4 непрерывно слал данные по кабелям длинной 6 метров — ошибок не было (скорость 9600, кабель как и подобает экранированный брал + заземлял корректно).
Про Ethernet — лично видел что два компьютера, которые соединены кабелем в один метр шлют пакеты с ошибками. Источников помех (вроде фена) вроде бы не наблюдалось. Про COM — часа 4 непрерывно слал данные по кабелям длинной 6 метров — ошибок не было (скорость 9600, кабель как и подобает экранированный брал + заземлял корректно).
0
У меня была неудачная попытка заменить Ардуиной выгоревший блок управления посудомоечной машиной. А там, в тесном объёме — несколько электромагнитных вентилей на трубах с водой и мощная электрическая помпа. Даже при том, что реле были оптически развязаны с Ардуиной, помехи прилетали такие, что о надёжной работе речь перестала идти сразу. Каждое включение реле ТЭН или слива воды приводило к тому, что в debug-консоль по последовательному соединению сыпался мусор и это сильно коррелировало с зависаниями самого МК.
0
А ещё контролировать протокол проще, диагностика неисправностей легче. Вот вы можете сказать через сколько отработает устройство, если ему TCP-пакет отправить? С RS-232 это проще сделать. Для домашней автоматизации время не критично, но критично в некоторых приложениях. На RS-232 для простых приложений можно свой легковестный протокол использовать.
0
а нужно? Эти свои легковесные велосипеды изобретать?
Потом такие велосипеды внезапно попадают в разные серийные устройства (почему-то, чаще всего это происходит с российскими устройствами) и начинается пляска с бубном: а как же подружить «взрослую» систему с этой поделкой…
Потом такие велосипеды внезапно попадают в разные серийные устройства (почему-то, чаще всего это происходит с российскими устройствами) и начинается пляска с бубном: а как же подружить «взрослую» систему с этой поделкой…
0
Да, это вопрос очень важен. Я сам долго старался разобраться в критериях когда применять что-то самописное, а когда готовые решения. Этот вопрос очень сходен например со следующим: «Когда надо разбирать беспорядок на столе? Если я всё время буду убирать инструмент на место (в ящик), то это очень увеличит время работы, но стол будет в идеальном порядке. Если не разбирать инструмент по ящикам, то очень скоро на столе образуется куча хлама, в котором сложно найти нужное.» Решение, на мой взгляд, следующее — начинайте разбираться на столе как только беспорядок начинает вам мешать.
Применительно к «велосипедам» такой подход даёт следующее решение: решайте ваши проблемы самым простым и доступным для вас способом. Если планируется встраивать ваше решение в большую систему, то используйте протокол этой системы. Если вы хорошо разбираетесь в каком-то протоколе передачи данных (или его легко понять), то используйте этот протокол. Если нет — пишите свой протокол и не парьтесь (если конечно устройство имеет уровень «поделка»). Используйте модульный подход (логика работы отдельно, а логика передачи данных — отдельно), так как это поможет сменить протокол в случае необходимости. Учитывайте что «взрослая система» может запросто поменять протокол обмена данными, или иметь особенности реализации протокола (добавить «фич»), которые сделают ваш модуль несовместимым.
И ещё про случай, когда устройство имеет уровень НЕ «поделка». В этом случае, вероятно, потребуется передача большого объема данных + управление протоколом + контроль ошибок. Соответственно надо в самописном протоколе это всё реализовать, а это долго и сложно. Получается что проще разобраться и использовать уже готовый формат передачи данных и не париться с написанием велосипеда. По этой причине серьёзные устройства как правило используют какие-то стандартные форматы передачи данных. Но писать велосипеды очень рекомендую — они помогают понять что и как с передачей данных и разобраться какие готовые реализации использовать (а может и дорабатывать их). :)
Применительно к «велосипедам» такой подход даёт следующее решение: решайте ваши проблемы самым простым и доступным для вас способом. Если планируется встраивать ваше решение в большую систему, то используйте протокол этой системы. Если вы хорошо разбираетесь в каком-то протоколе передачи данных (или его легко понять), то используйте этот протокол. Если нет — пишите свой протокол и не парьтесь (если конечно устройство имеет уровень «поделка»). Используйте модульный подход (логика работы отдельно, а логика передачи данных — отдельно), так как это поможет сменить протокол в случае необходимости. Учитывайте что «взрослая система» может запросто поменять протокол обмена данными, или иметь особенности реализации протокола (добавить «фич»), которые сделают ваш модуль несовместимым.
И ещё про случай, когда устройство имеет уровень НЕ «поделка». В этом случае, вероятно, потребуется передача большого объема данных + управление протоколом + контроль ошибок. Соответственно надо в самописном протоколе это всё реализовать, а это долго и сложно. Получается что проще разобраться и использовать уже готовый формат передачи данных и не париться с написанием велосипеда. По этой причине серьёзные устройства как правило используют какие-то стандартные форматы передачи данных. Но писать велосипеды очень рекомендую — они помогают понять что и как с передачей данных и разобраться какие готовые реализации использовать (а может и дорабатывать их). :)
+1
И ещё про случай, когда устройство имеет уровень НЕ «поделка». В этом случае, вероятно, потребуется передача большого объема данных
Что касается систем автоматики (к которым можно и глупый дом отнести) — там объёмы данных небольшие.
Если мы рассмотрим в качестве эталона Profibus (на мой взгляд, лучшая система, хоть и закрытая) — там объём данных, которые слэйв может передать мастеру, ограничен 244 байтами. И этого хватает! Я ещё ни разу не упёрся в это ограничение. Для примера — один дискретный сигнал — это один бит. Итого, если использовать только дискреты, получается 1952 канала. Если взять модули по 32 канала — это 61 модуль. Их в шкаф столько не влезет :)
С аналоговыми каналами менее радужно. Каждый занимает 2 байта. Итого, 8-канальных модулей можно поставить только 15. Но это 122 канала. Чтоб в одном месте кучно их столько потребовалось — фантастика :)
Вот такие в промышленности объёмы передачи данных :)
0
И про «российские устройства»: очевидно люди стараются разобраться с передачей данных, изобретают, думают, творят. Это очень хорошо. То, что такие устройства идут в серию — недостаток системы образования. Вы хоть на википедию Русскую посмотрите — там многие статьи (может даже специально) приведены в нечитаемый вид. Вот как учиться, что бы к моменту трудоустройства на завод уже грамотно устройства проектировать? А ещё про утечку мозгов вспомнить можно!
И ещё… А зачем дружить поделку и «взрослую систему»??? Используйте взрослую и систему, и модуль!
И ещё… А зачем дружить поделку и «взрослую систему»??? Используйте взрослую и систему, и модуль!
0
И про «российские устройства»: очевидно люди стараются разобраться с передачей данных, изобретают, думают, творят. Это очень хорошо.
Это очень хорошо, но очень плохо то, что слово «думают» иногда отсутствует. Иначе объяснить подобные примеры невозможно:
fixik-papus.livejournal.com/14924.html
Этот случай не мой, но тут он замечательно описан и отлично иллистрирует типовую проблему, с которой мне тоже приходилось сталкиваться.
0
Боюсь, что там специально несовместимость делали и полагаю, что идея сделать такую хрень принадлежит не разработчикам, а менеджерам. :(
0
А зачем дружить поделку и «взрослую систему»??? Используйте взрослую и систему, и модуль!
Затем, что Modbus — это как английский в современной действительности. Универсальный язык для международного общения. Соответственно, глупо специально учить малораспространённый папуасский, если можно пользоваться английским. Тем более, что готовую реализацию Modbus можно найти уже под любую платформу.
0
Вот держу я в руках Arduino Pro Mini и Ethernet-модуль, они в сумме стоят $5-$6.
Очень интересует надёжность таких модулей. Они у Вас работают? Как от качества пайки впечатления? Ссылочку на поставщика дать можете?
+1
Если вы хотите использовать витую пару, вам никто не мешает использовать не Modbus RTU, а Modbus TCP.
Программно — абсолютно то же самое, физически — ethernet вместо RS-232/485.
Преимущество — таки в лёгкой стыковке с миллионами существующих устройств.
Программно — абсолютно то же самое, физически — ethernet вместо RS-232/485.
Преимущество — таки в лёгкой стыковке с миллионами существующих устройств.
0
Все ты правильно рассуждаешь ИМХО.
Питание вести к контроллеру полюбому надо, а если тащить питание — то проще кинуть витуху и не парить себе мозг преобразованием 220->5V на каждом устройстве. Единственное — учитывай что Ethernet скушает ноги SPI интерейса и как IO их уже не используешь.
Питание вести к контроллеру полюбому надо, а если тащить питание — то проще кинуть витуху и не парить себе мозг преобразованием 220->5V на каждом устройстве. Единственное — учитывай что Ethernet скушает ноги SPI интерейса и как IO их уже не используешь.
0
С учётом того, что Ардуине требуется просто-напросто быть прослойкой между HTTP и релюшками, PIR-датчиками, ИК-передатчиками, герконами и фоторезисторами в 95% случаев — невелика беда.
А с преобразованием 220В — 5В правда проблема. Вскрытие зарядок от телефонов и смартфонов made in China навевает ужас, оставлять такое в стене включённым 24x7x365 просто опасно. Хорошие же преобразователи типа MeanWell стоят, как самолёт.
Уж лучше взять блок питания от приличного ноутбука и раздать питание по PoE централизованно. Часть потеряется по пути, а дошедшее до необходимых 5 или 3.3 вольт можно привести мегагерцовым XM1584 размерами с ноготь.
А с преобразованием 220В — 5В правда проблема. Вскрытие зарядок от телефонов и смартфонов made in China навевает ужас, оставлять такое в стене включённым 24x7x365 просто опасно. Хорошие же преобразователи типа MeanWell стоят, как самолёт.
Уж лучше взять блок питания от приличного ноутбука и раздать питание по PoE централизованно. Часть потеряется по пути, а дошедшее до необходимых 5 или 3.3 вольт можно привести мегагерцовым XM1584 размерами с ноготь.
0
Вскрытие зарядок от телефонов и смартфонов made in China навевает ужас, оставлять такое в стене включённым 24x7x365 просто опасно.
Аналогичная практика. Купил «несколько видов» на вскрытие, что бы выбрать. Вскрытие показало — все в мусорку.
Хорошие же преобразователи типа MeanWell стоят, как самолёт.
Ну не как самолет :), но дороже контролер+ethernet точно. В каждую розетку пихать — бюджет позволяет, но это как то «не красиво» что ли и с местом проблема, 220в надо изолировать…
0
del
0
Спасибо за отзывы, постараюсь учесть в следующей статье пожелания и рассмотреть проблемы, связанные с железом.
0
А почему не использовать 1-Wire вместо Modbus? Для кнопочки и мигания лампочкой вроде как проще, поддерживается тоже везде, устройства дешевле, обвязки тоже не нужно.
0
Не сталкивались с проблемой передачи данных температурных датчиков с arduino по Modbus в OpenHAB?
0
Sign up to leave a comment.
Arduino & Modbus