Ни о чём →
1-wire на предприятии, физический уровень
с вводной статьей этого цикла можно ознакомиться тут
Постановка задачи
Начнём с того, что я устроился на работу в организацию, занимающуюся производством медицинских компонентов. Эта организация работает с большим количеством биологического материала: сыворотки, вирусы, растворы и прочая… Для того чтобы хранить исходные компоненты и произведённую продукцию необходимо выдерживать строгие температурные и влажностные режимы, иначе это всё испортится, по этому на предприятии используется большое количество холодильников, морозильников и холодных комнат\складов.
Для контроля температуры применяется следующий подход: на каждом контрольном холодильнике висит термометр (как правило, обычный китайский домашний термометр); и раз в два часа специальный ответственный человек в каждом подразделении обходит и записывает в особый журнал текущую температуру в холодильниках принадлежащих этому подразделению; если это не рабочее время (вечер, выходные), то этот обход совершает дежурный по корпусу.
Для того чтобы примерно представить масштабы этого действа, я поясню что представляет из себя организация: это два собственных корпуса 4-ёх и 7-ми этажные, разнесенные географически примерно на 20-25 км и еще два арендованных не смежных этажа в третьем здании. В этих помещениях примерно 200, 100 и 30 единиц холодильного оборудования соответственно.
Главный инженер организации подумал и решил, что это не рационально в наш век информационных технологий и тотальной автоматизации и распорядился всё это дело как-то автоматизировать. Конкретнее: хотелось видеть в каком-то виде на экране текущую температуру всех объектов, а также как-то сигнализировать при выходах за заданные граничные значения, также иметь возможность архивирования и просмотра архивных данных за разные промежутки времени.
Проектировка
После недолгих обсуждений было решено использовать решения фирмы Dallas Semiconductor на базе шины\протокола 1-Wire microlan.
Исходя из чего было принято такое решение?
- Во-первых, у фирмы DS есть замечательные малогабаритные цифровые термодатчики DS18b20.
- Во-вторых, для этой же шины существует целый ряд других датчиков и устройств (в частности датчики влажности, контроль влажности тоже актуален), что подразумевает возможность хорошего дальнейшего расширения.
- В-третьих, это относительно небольшое количество проводов, которые придется тянуть по всем корпусам.
- В-четвертых, достаточно большой диаметр сегмента сети – до 300 метров, и возможность изменять конфигурацию сети на лету.
Этап первый. Физический уровень
В этом разделе я расскажу об организации собственно физической скс, на какие грабли мы наступили и как-так и почему получилось, что в разных зданиях у нас немного отличается физика.
Был протянут центральный кабель с самого верхнего этажа до подвала по слаботочному стояку и, на каждом этаже, от края левого крыла до противоположно края правого крыла бросили по кабелю, т.к. это общая шина то все проводники соединяются параллельно и в любом месте, в дальнейшем к этому древовидному каркасу из кабелей подключались отводы из разных комнат.
Как кабель использовали 4-ёх жильную витую пару категории 5е, в комнатах рядом с холодильниками ставим розетки типа RJ-11\RJ-12 (стандартные телефонные розетки 4\6 контактов), в холодильник вешаем наш датчик (он представляет из себя кусок плоского телефонного кабеля с соской с одной стороны и припаянной микросхемой DS18B20 с другой). Фото.
Из четырёх жил кабеля используются три: земля, питание\данные и дополнительная жила питания. Четвёртая жила осталась в резерве на будущее.
Итак на первом корпусе (где наибольшее количество объектов) мы все это проложили и соединили, поставили в каждой комнате розетки, подключили датчики и…
и оказалось что всё это вместе не работает.
Каждый этаж отдельно работал прекрасно, а вот все вместе нет. Начали разбираться, выяснилось что:
- Во-первых: на паразитном питании (это когда не подключено внешнее питание датчика, а используются только два проводника), то могут одновременно работать не более 10-15 датчиков. Им не хватает питания и времени чтобы зарядить внутренний конденсатор, решение о более медленном опросе мы отбросили.
- Во-вторых: даже если есть внешнее питание, то могут на одной шине работать не более 50ти датчиков, посмотрели осциллографом — из-за длинных и сильно ветвлёных линий заваливаются фронты, возникают отражения, и получается неразбериха.
Тут стоит немного отступить и рассказать о том как мы всё это дело проверяли.
Использовали ноутбук с различными адаптерами:
адаптер1
адаптер2
адаптер3
в зависимости от адаптера, максимальное количество работающих датчиков на линии тоже изменялось.
наилучшим себя показал адаптер3. (который кстати совсем не официальный адаптер для PC от фирмы DS, а наша отечественная подделка собранная на PIC-контроллере ссылка)
далее что мы решили: это разбить нашу сеть на сегменты по этажам, используя микросхему DS2409, это тоже микросхема 1-wire, которая работает как коммутатор или мультиплексор, она имеет один вход и два выхода, собственный адрес и понимает команды соединить вход с выходом1 или с выходом2.
Получилось что-то вроде этого:
Каждая ветка это отдельный этаж, на тех этаже на чердаке, адаптер подключенный к последовательному порту сервера, на котором крутится специальная программа которая отдает команды на переключение веток и последовательно опрашивает все датчики в каждой ветке.
И так три здания.
На сегодняшний день у нас три корпуса работают и опрашиваются по этой схеме. Если есть вопросы, то я рад буду ответить и дополнить эту заметку.
О примененных программах и о софтовой части отдельно, в следующей статье. Ежели конечно это кому-нибудь интересно ;)
Ссылки по теме
Dallas Semiconductor они же Maxim
Элин. много полезной инфы
ну и сименсу спасибо за картинку :)
12.11.2010 12:26+0300