Протокол 1-Wire
1-Wire – протокол передачи данных в обе стороны по одному проводу.
Данный протокол разработан корпорацией Dallas Semiconductor (сейчас Maxim Integrated) в далёких 90-х, но активно используется и сейчас: именно на 1-Wire работает большинство "таблеток" — домофонных чипов (DS1990A), карточек доступа, а также через 1-Wire общаются популярные датчики температуры (DS18S20 и DS18B20), транзисторные ключи (DS2405, DS2406), программируемые порты ввода-вывода (DS2408), АЦП и ЦАП, часы реального времени (DS2417) и многое другое.
Режим связи в этом протоколе – асинхронный и полудуплексный (об этом подробнее тут), а также "остроконечный" (при отсылке многобайтовых целых передача идёт от младшего байта к старшему).
При этом у нас всегда есть ведущий – одно устройство на шине, которое отсылает команды, и ведомые – устройства, которые эти команды принимают и отвечают на них, если необходимо; каждое из ведомых устройств подключается непосредственно к общей шине.
Ещё раз подчеркнём – на шине может быть только ОДИН ведущий – иначе возникнут конфликты, когда оба ведущих будут тянуть одеяло на себя (на самом деле, есть некоторые приёмы организации сетей 1-Wire в режиме мультимастера – например, с помощью ветвителя сети DS2409 – но в "обычной" жизни все-таки предпочтительней иметь только одного ведущего на шине).
Протокол 1-Wire хорош тем, что не сложен в реализации и требует для связи всего два-три провода (шина данных, земля и при необходимости питание); однако при этом он не лишён и недостатков – этот протокол весьма чувствителен ко времени и к помехам. Также 1-Wire не предназначена для передачи больших объёмов информации и для скоростного обмена данными – максимальная скорость 9600 Бод/с.
Протокол 1-Wire описывает физический, канальный, сетевой и транспортный уровни взаимодействия (см. модель OSI).
На физическом уровне даются описания способов подключения, требования к шине данных и питанию и т.д.
Канальный уровень описывает способы чтения и передачи битов по протоколу.
Сетевой уровень описывает способы адресации к различным устройствам на линии.
Наконец, транспортный уровень описывает функциональные команды, используемые устройствами 1-Wire.
Физический уровень протокола
Физически для организации интерфейса необходимы как минимум линия для данных и "земля"; достаточно часто также для подключения устройств необходима также линия питания, однако некоторые ведомые устройства могут питаться и паразитно – получать "подпитку" через шину данных.
Рисунок 1. Пример подключения ведущего и ведомых устройств по протоколу 1-Wire.
Упрощенный пример подключения шины представлен на рисунке 1: так, у нас есть ведущее устройство и три ведомых, Slave1, Slave2 и Slave3. Шина данных (data) подтянута резистором к питанию и к ней присоединены все четыре устройства; также каждое из устройств подсоединено к земле. Master, Slave2 и Slave3 подключены к питанию (от 3 до 5 В, в зависимости от требований устройств), а устройство Slave1 питается паразитно через шину данных (об этом подробнее ниже).
К слову, о питании – согласно даташиту, шина данных должна быть подтянута к питанию резистором 4.7 кОм, однако данный номинал используется при относительно коротких линиях; если же расстояние между устройствами достаточно велико, то сопротивление резистора можно уменьшить.
Канальный уровень протокола
Обмен информацией ведётся так называемыми временными, или тайм-слотами (60 мкс): один тайм-слот служит для обмена одним битом информации. Данные передаются бит за битом, начиная с младшего бита младшего байта – это, кстати, достаточно часто приводит к ошибкам у новичков – кажется, что нужно передавать данные слева направо, так, как они хранятся в памяти (то есть, следите за словами: кажется, что нужно начинать со старшего бита младшего байта (вы уже запутались, да?) – но нет! При передаче по 1-Wire, например, двухбайтового числа порядок передачи будет таким:
Имеем число 1023410 – в двоичном виде выглядит так: 00100111 111110102
В памяти (так как у нас "остроконечный" порядок хранения данных) выглядит так: 11111010 00100111.
А передача по 1-Wire будет выглядеть так:
0→1→0→1→1→1→1→1→1→1→1→0→0→1→0→0
Если вы запутались так же, как и я – самое время выпить чая с шоколадкой и немного утрясти все в голове.
Идём дальше. При обмене информацией ведущий инициирует каждую связь на битном уровне. Это означает, что передача каждого бита, независимо от направления (передача или приём), должна быть инициирована ведущим. Шина данных по умолчанию подтягивается к "единице", поэтому для начала как приёма, так и для передачи ведущий опускает линию в "ноль" на некоторое время.
Внимание: ни ведущий, ни ведомые не выставляют на шине "единицу" — это черевато коротким замыканием: если одно устройство выставит на шине "1", а другое – "0"; поэтому как ведущий, так и ведомый могут использовать только два состояния: "на выход в ноль" и "z-состояние" (на вход без подтяжки). Подтяжка к питанию осуществляется резистором (!).
Рассмотрим 5 основных команд для связи по шине 1-Wire: "Запись 1", "Запись 0", "Чтение", "Сброс" и "Присутствие". При этом на рисунках красным выделено управление линией от ведущего, синим – управление линией от ведомого, черным – освобожденная линия (с помощью подтяжки шина автоматически переходит в "единицу").
Сигнал "Запись 1". Ведущий устанавливает низкий уровень в течение 1…15 мкс. После этого, в течение оставшейся части временного слота он освобождает шину.
Сигнал "Запись 0". Ведущий формирует низкий уровень в течение не менее 60 мкс, но не дольше 120 мкс.
Сигнал "Чтение". Ведущий устанавливает низкий уровень в течение 1…15 мкс. После этого подчинённый, если хочет передать 0, удерживает шину в низком состоянии до 60 мкс; если же подчинённых хочет передать 1, то он просто освобождает линию. Ведущий обычно сканирует состояние шины по истечении 15 мкс после установки низкого уровня на шине.
Так, ведомый удерживает линию к земле, если хочет передать "0", и просто отпускает линию, если хочет передать "1".
Таким образом при чтении получаем следующие диаграммы.
Сигнал "Чтение при получении 1":
Сигнал "Чтение при получении 0":
Основные проблемы, которые возникают при реализации чтения-записи – это проблемы со временем, то есть "невыдерживание", или наоборот, "передерживание" временных задержек при чтении линии. Возникают эти проблемы из-за того, что часто не делают поправку на медленность языков программирования высокого уровня. Особенно это касается различных "дополнительных" функций и ништяков. Подробнее тут
Сигнал "Сброс/присутствие". Здесь временные интервалы импульсов отличаются. Ведущий устанавливает низкий уровень в течение 8 временных слотов (480 мкс), а затем освобождает шину. Данный длительный период низкого состояния называется сигнал "Сброс".
Если на шине присутствует подчинённый, то он должен в течение 60 мкс после освобождения ведущим шины установить низкий уровень длительностью не менее 60 мкс. Данный отклик носит название "Присутствие". Если такой сигнал не обнаруживается, то ведущий должен полагать, что нет подключённых устройств к шине и дальнейшая связь невозможна.
Данная связка сигналов всегда начинает любой обмен информацией между устройствами.
Помимо этого, нужно учитывать, что любое ведомое устройство после получения питания сразу же выдаёт сигнал присутствия.
Сигнал же "Сброс" позволяет ведущему досрочно завершить обмен информацией – например, если датчик температуры передаёт нам всю свою память, а нам нужны только первые два байта, которые содержат значение температуры, то после получения этих двух байт микросхема просто может опустить линию в ноль на нужное количество времени – датчик поймет, что больше ничего пересылать не нужно.
О реализации: обычно необходимо запрограммировать микроконтроллер как ведущее устройство, поэтому есть несколько советов: микроконтроллеру стоит генерировать сигналы (опускание шины к земле) чуть больше необходимого минимума по времени, а ответы от ведомых устройств ждать по наихудшим прогнозам – тогда взаимодействие по протоколу будет оптимальным.
При этом ведущему нужно не забывать периодически проверять состояние линии данных — то, что она возвращается в подтянутое состояние с течением времени – а то может возникнуть ситуация, например, что какой-нибудь ведомый сломался и коротит, например, линию в ноль – и в принципе, протокол не проверяет данную проблему сам, ошибки может и не возникнуть – но об этом чуть ниже.
Сетевой и транспортный уровни протокола
Рассмотрим "более высокий" уровень протокола 1-Wire – последовательность действий при взаимодействии ведущего и ведомого, а также основные команды. При этом нужно отметить, все данные, в том числе команды, отсылаются побитно последовательно, начиная с младшего бита.
- Ведущий посылает на линию сигнал reset ("Сброс"). После линия освобождается для "ответных действий". Если на шине присутствует ведомый, то в течение 60 мкс он сообщает о "присутствии".
Если же ведущий не получает отклика-"присутствия", то он считает, что подключённых к шине устройств нет. - Далее следует сетевой уровень протокола: ведущий должен определить, к какому из устройств на шине данных он будет дальше обращаться. Данный выбор обеспечивается отсылкой одной из ROM-команд (длиной в 1 байт), которые работают с уникальными кодами устройств:
- Search ROM ($F0) – "поиск ROM". Если коды подключённых устройств не известны, то эта команда позволяет ведущему определить их. Подробное описание данной команды представлено ниже.
- Read ROM ($33) – "чтение ROM" – команда используется, если мы точно знаем, что у нас только одно подчинённое устройство (например, только один датчик температуры или один домофонный ключ), тогда для считки его кода можно не париться с поиском ROM. При получении данной команды все ведомые устройства на шине отсылают свой уникальный код.
- Skip ROM ($CC) – "пропуск ROM". Это команда используется, когда необходимо дать команду всем устройствам на шине – например, нужно, чтобы все подключённые датчики одновременно считали температуру.
- Match ROM ($55) – "совпадение ROM". Используется для выбора конкретного подчинённого устройства на шине. После отсылки команды ведущий передаёт 64-разрядный код. По завершении только тому подчинённому устройству, которое приняло свой идентификатор, разрешается отвечать после приёма следующего импульса сброса – остальные же молча ждут импульса сброса.
Естественно, для отдельных устройств какие-то ROM-команды могут добавляться.
- Если были отправлены команды "Match ROM" или "Skip ROM", то далее ведущий отправляет какую-либо функциональную команду – это уже транспортный уровень протокола; при этом набор функциональных команд и дальнейшее поведение (должен ли ведущий быть готов принимать данные от выбранного ведомого устройства, например) зависит от конкретного устройства 1-Wire.
Так, например, если у нас есть микроконтроллер и DS18S20 – датчик температуры, и мы хотим получить от этого датчика значение температуры, то алгоритм работы будет следующим:
- МК отсылает импульс сброса
- Датчик отвечает импульсом приветствия
- МК отсылает адресную команду "Skip ROM" — так как датчик у нас на линии один, то нам нет необходимости работать с "адресами"
- МК отсылает функциональную команду "Convert T" — по этой команде датчик температуры начнёт однократное температурное преобразование; результат же этого преобразования будет записан в память датчика
- МК ждёт, пока датчик закончит преобразование (ведомое устройство никоим образом не может само сообщить, что оно "освободилось", поэтому микроконтроллер просто ждёт время, указанное в даташите)
- МК отсылает импульс сброса
- Датчик отвечает импульсом приветствия
- МК отсылает адресную команду "Skip ROM"
- МК отсылает функциональную команду "Read Scratchpad" — по этой команде датчик отсылает 9 байт своей памяти
- МК считывает нужное количество байт (значение температуры содержится в первых двух)
- При необходимости МК завершает сеанс связи, отсылая импульс сброса
При этом нужно помнить, что ведомые устройства могут поломаться и, например, опускать линию всегда на 0. Допустим, у нас так закоротило датчик температуры в термостате печки. Тогда, если ведущий не проверит, что линия возвращается в единицу, то вероятна следующая ситуация:
- МК отсылает импульс сброса
- Датчик коротит линию на ноль – МК обнаруживает, что есть импульс приветствия
- МК отсылает адресную команду "Skip ROM" — не проверяя при этом линию, конечно
- МК отсылает функциональную команду "Convert T" — датчик всё ещё в коме
- МК ждёт
- МК отсылает импульс сброса
- история повторяется, датчик отсылает ноль
- МК отсылает адресную команду "Skip ROM"
- МК отсылает функциональную команду "Read Scratchpad"
- МК считывает нужное количество байт — и получает, естественно, все нули. Даже если мы считываем всю память вместе с CRC, CRC от нуля будет равно нулю – то есть ошибки не произойдет МК конвертирует температуру, получает ноль, отправляет команду нагревать печь. И так до бесконечности!
Выглядит все это довольно печально – и черевато большими проблемами! Так что на протокол полагайся, но сам не плошай.
Вернёмся к алгоритму взаимодействия ведущего и ведомого по протоколу. Как видно, реализовать работу ведущего устройства не так уж сложно – при этом есть как уже готовые библиотеки с кодом, так и аппаратные реализации – например, от той же фирмы Maxim Integrated. Так, например, для AVR-ок написан целый даташит для реализации 1-Wire.
А вот реализовать ведомое устройство не так уж просто – и если библиотеки существуют (например, у нас на сайте), то аппаратных реализаций именно протокола 1-Wire мне не встречалось. Принцип же работы ведомых устройств подробно описан в их документации, обычно в виде блок-схемы.
Паразитное питание
Протокол 1-Wire позволяет ведомым устройствам при необходимости использовать паразитное питание – так, например, если уже есть линия с двумя проводами, или же необходимо удалённое измерение, или, например, в случае системы аутентификации, ведомое устройство (ключ или карточка) не подразумевает подключение питания.
Каждое устройство имеет свои требования к паразитному питанию, но обычно это требование не опускать линию данных в ноль в течение выполнения ведомым определённых функциональных команд.
Например, для датчика температуры DS18S20, использующего протокол 1-Wire, необходимо гарантировать, что на шине данных будет достаточное напряжение при выполнении температурного преобразования или при копировании данных из памяти EEPROM. Согласно даташиту, при этом рекомендуется подтягивать линию данных к питанию с помощью полевого транзистора; на деле же при использовании напряжения +5-+5.5 В микроконтроллеру достаточно просто не опускать шину данных в ноль (в случае именно с датчиком DS18S20 – другие датчики могут потреблять больше тока). Также именно паразитное питание является одной из причин, почему микроконтроллеру стоит передавать сигналы (то есть опускать линию данных в ноль) по минимальному времени – это позволяет устройствам на паразитном питании нормально функционировать.
К слову, не все авторы библиотек заморачиваются данным вопросом – так, при попытке заставить работать датчик DS18S20 на паразитном питании в среде MikroElectronika с использованием библиотеки этой среды датчик просто не получал достаточного питания и не мог нормально "общаться".
Области применения
Существует целый ряд устройств, использующих интерфейс 1-Wire, — так, например, всем известная "таблетка" — домофонный ключ – работает в большинстве случаев именно через данный протокол: микроконтроллер в замке просто спрашивает уникальный код "таблетки", и если этот код содержится в списке разрешённых устройств, микроконтроллер открывает замок.
Помимо всевозможных устройств для идентификации и авторизации (ключи, карточки пропуска), многие датчики – будь то датчики температуры, датчики влажности, освещения и др. – также используют для связи интерфейс 1-Wire. Помимо этого, есть также ряд микросхем для "мониторинга, менеджмента, защиты и управления восстановлением заряда автономных источников питания самых различных типов и назначений".
Уникальные коды устройств 1-Wire
Пару слов об уникальных кодах устройств, с которыми и работают ROM-команды. Каждое "одноварное" устройство имеет свой 64-хбитный код, состоящий из трёх частей:
Младший байт – это код семейства, к которому относится устройство, 6 следующих байт – уникальный в семействе серийный номер, ну и наконец, старший байт – это CRC, который служит для проверки правильности приёма всего кода. Так, например, на родных даллосовских (сейчас максимовских) "таблетках" часть уникального кода – а именно, 48-битный серийный номер – пишется на металле в шестнадцатиричном виде (все дружно посмотрели на свои домофонные ключи).
Рассмотрим подробнее, какие коды семейств устройств 1-Wire бывают:
Код семейства (HEX) | Устройство iButton | Описание |
01 | DS1990A, DS1990R, DS2401, DS2411 | Уникальный серийный номер-ключ |
02 | DS1991 | Мультиключ, 1152-битная защищённая EEPROM |
04 | DS1994, DS2404 | 4 КБ NV RAM + часы, таймер и будильник |
05 | DS2405 | Одиночный адресуемый ключ |
06 | DS1993 | 4 КБ NV RAM |
08 | DS1992 | 1 КБ NV RAM |
09 | DS1982, DS2502 | 1 КБ PROM |
0A | DS1995 | 16 КБ NV RAM |
0B | DS1985, DS2505 | 16 КБ EEPROM |
0C | DS1996 | 64 КБ NV RAM |
0F | DS1986, DS2506 | 64 КБ EEPROM |
10 | DS1920, DS1820, DS18S20, DS18B20 | Датчик температуры |
12 | DS2406, DS2407 | 1 КБ EEPROM + двухканальный адресуемый ключ |
14 | DS1971, DS2430A | 256 бит EEPROM и 64 бита PROM |
1A | DS1963L | 4 КБ NV RAM + счётчик циклов записи |
1C | DS28E04-100 | 4 КБ EEPROM + двухканальный адресуемый ключ |
1D | DS2423 | 4 КБ NV RAM + внешний счётчик |
1F | DS2409 | Двухканальный адресуемый ключ с возможностью коммутации на возвратную шину |
20 | DS2450 | Четырёхканальный АЦП |
21 | DS1921G, DS1921H, DS1921Z | Термохронный датчик с функцией сбора данных |
23 | DS1973, DS2433 | 4 КБ EEPROM |
24 | DS1904, DS2415 | Часы реального времени |
26 | DS2438 | Датчик температуры, АЦП |
27 | DS2417 | Часы реального времени с прерыванием |
29 | DS2408 | Двунаправленный 8-разрядный порт ввода/вывода |
2C | DS2890 | Одноканальный цифровой потенциометр |
2D | DS1972, DS2431 | 1 КБ EEPROM |
30 | DS2760 | Датчик температуры, датчик тока, АЦП |
37 | DS1977 | 32 КБ защищённой паролем EEPROM |
3A | DS2413 | Двухканальный адресуемый коммутатор |
41 | DS1922L, DS1922T, DS1923, DS2422 | Термохронные и гигрохронные датчики высокого разрешения с функцией сбора данных |
42 | DS28EA00 | Цифровой термометр с программируемым разрешением, возможностью работать в режиме подключения к последовательному каналу и программируемыми портами ввода/вывода |
43 | DS28EC20 | 20 КБ EEPROM |
NV RAM – Non-Volatile Random-Access Memory (энергонезависимое ОЗУ)
PROM – Programmable Read-Only Memory (однократно программируемое ПЗУ)
EEPROM – Electrically Erasable Programmable Random-Access Memory (электрически стираемое перепрограммируемое ПЗУ)
Про команду Search ROM (F0h):
По мотивам статьи Чернова Геннадия.
Если ведущий не знает серийный номер устройств, подключенных к шине, то существует возможность идентифицировать коды ROM каждого устройства – для этого необходимо использовать команду "Search ROM" [F0h]. Эта команда действует как команда "Read ROM", объединенная с командой "Match ROM".
Процесс идентификации кодов ROM ведомых устройств выглядит так:
После формирования мастером команды "Search ROM" все устройства посылают на шину значение своего младшего бита; при этом сначала в течение одного такта ведомыми посылается "прямое" значение бита, а в течение следующего такта – "обратное" (логическое НЕ, дополнение) значение этого же бита.
Тогда мастер может считать следующие последовательности:
- "01" — если у всех ведомых устройств младший бит равен "0" (сначала они отсылают "0", потом <НЕ "0">= "1")
- "10" — если у всех ведомых устройств младший бит равен "1"
- "00" — если есть так называемый конфликт – у некоторых устройств младший бит равен "1", у остальных – "0". Тогда при передаче "прямого" значения устройства с "0" опускают линию, при передаче "обратного" — устройства с "1" также опускают линию.
Далее мастер в следующем временном слоте отсылает "0" или "1", таким образом определяя, с какими устройствами дальше будет общаться – все устройства, у которых младший бит не соответствует биту, сформированному мастером на этом этапе, перейдут в состояние ожидания и будут находиться в нём, пока не получат импульс сброса. Затем происходят аналогичные 63 цикла чтения-выбора, пока, наконец, ведущее устройство не определит код ROM одного из подчинённых устройств и не обратится к нему.
Для мастера каждая стадия выбора состоит из двух тайм-слотов чтения и одного тайм-слота записи.
Разберем работу команды "Search ROM" на примере.
Пусть на шине установлено четыре ведомых устройства со следующими значениями кодов:
устройство 1: xxxxxx10101100
устройство 2: xxxxxx01010101
устройство 3: xxxxxx10101111
устройство 4: xxxxxx10001000
для упрощения символом "x" заменены старшие биты и показаны только младшие восемь битов
Поиск младшего бита происходит следующим образом:
- Ведущее устройство начинает последовательность инициализации – формирует импульс сброса; ведомые устройства отвечают импульсами присутствия.
- Ведущее устройство формирует команду "Search ROM".
- Ведущее устройство читает два бита с шины. Сначала каждое ведомое устройство ответит, помещая значение первого бита, соответствующего его данным ROM. Устройства 1 и 4 поместят "0" на шину, то есть, они установят на шине низкий уровень. Устройства 2 и 3 сформируют "1", позволяя на линии оставаться в высоком уровне. Результат – "логическое И" всех устройств на линии; поэтому мастер читает 0.
Следует отметить, что с тех пор, как ведущий послал команду "Search ROM", все ведомые устройства отвечают одновременно.
Далее мастер читает следующий бит. Все устройства помещают на шину дополнение их первого бита. Устройства 1 и 4 сформируют "1"; устройства 2 и 3 сформируют "0". Таким образом, на шине будет состояние логического "0". Мастер снова читает "0" при формировании дополнительного кода первого информационного разряда ROM (чтение дает "00" — состояние разрядных конфликтов). Это говорит ведущему устройству, что есть устройства на шине содержащие в первом бите как "0", так и "1".
Если бы все устройства имели "0" в этой позиции двоичного разряда, чтение дало бы результат "01"; если бы позиция двоичного разряда содержала во всех устройства "1" результат был бы "10". - Ведущее устройство решает далее анализировать устройства с нулём в младшем бите — формирует запись "0" на шину. Эта операция переводит устройства 2 и 3 (содержащие в этом разряде "1") в пассивное состояние, оставляя только устройства 1 и 4 для участия в процессе поиска.
- Мастер выполняет еще два чтения и получает "01". Это говорит, что все активные устройства имеют 0 в этой позиции двоичного разряда их ROM.
- Мастер тогда пишет 0, чтобы сохранить устройства 1 и 4 активными.
- Мастер выполняет два чтения и получает "00". Это снова указывает, что у устройств на линии в этом разряде есть как "1", так и "0.
- Мастер снова пишет 0. Это деактивирует устройство 1, оставляя устройство 4 единственным активным элементом.
- Следующие чтения до конца ROM не будут давать состояние разрядных конфликтов. Отсутствие разрядных конфликтов до конца цикла поиска говорит, что происходит чтение ROM только одного активного элемента. Прочитав следующий бит, мастер снова посылает этот бит, чтобы сохранить устройство активным. Как только все биты ROM устройства известны и последний бит снова послан Главным устройством, устройство готово принять функциональную команду (для обмена информацией).
- Ведущее устройство должно изучить данные ROM других устройств. Поэтому оно запускает следующую последовательность Поиска ROM, повторяя шаги 1-7.
- B самой старшей позиции двоичного разряда, где ведущее устройство писало "0" в первом проходе (шаг 8), оно теперь пишет "1". Это снимает выделение устройства 4, оставляя теперь устройство 1 активным.
- Как в шаге 9, следующие чтения до конца ROM не будет давать состояние разрядным конфликтам. Этим заканчивается второй Поиск ROM, где мастер считывает содержание ROM другого устройства.
- Ведущее устройство должно изучить данные ROM других устройств. Поэтому оно запускает следующую последовательность Поиска ROM, повторяя шаги 1-3.
- Во втором проходе в наивысшей степени позиция двоичного разряда, где мастер отсылал "0" в первом проходе (шаг 4), теперь он пишет "1". Это снимает выделение устройств 1 и 4, оставляя устройства 2 и 3 активными.
- Ведущее устройство считывает "00" — разрядный конфликт.
- Мастер отсылает "0". Это снимает выделение устройства 3, оставляя устройство 2 как единственное активное устройство.
- Как в шаге 9, следующие чтения до конца ROM не будет показывать разрядным конфликтам. Этим заканчивается третий Поиск ROM.
- Ведущее устройство должно изучить данные ROM других устройств. Поэтому оно запускает следующую последовательность Поиска ROM, повторяя шаги 13 — 15.
- В самой высокой позиции двоичного разряда, где мастер отсылал "0" (шаг 16), теперь он отсылает "1". Это снимает выделение устройства 2, оставляя устройство 3 активным.
- Как в шаге 17, следующие чтения до конца ROM не будут показывать разрядным конфликтам. Это заканчивает четвертый Поиск ROM.
Иными словами, в процессе поиска ROM мы строим одно или два двоичных дерева размером 64 (длина кода ROM), с корнями в виде значений младшего бита и листьями в виде значений старшего байта кода ROM.
Время, требуемое для считывания содержания одного ROM (без учёта процессорного времени мастера) = 960 мкс + (8 + 3*64) *61 мкс =13.16 мс.
Интерфейс 1-wire
Однопроводной интерфейс 1-Wire, разработанный в конце 90-х годов фирмой Dallas Semiconductor Corp., регламентирован разработчиками для применения в трех основных сферах-приложениях:
- приборы в специальных корпусах MicroCAN для решения проблем идентификации, переноса или преобразования информации (технология iButton),
- программирование встроенной памяти интегральных компонентов,
- системы автоматизации (технология сетей
- 1-Wire-сетей).
Если первое применение широко известно на мировом рынке, и уже давно пользуется заслуженной популярностью, а второе с успехом обеспечивает возможность легкой перестройки функций полупроводниковых компонентов с малым количеством внешних выводов, производимых фирмой Dallas Semiconductor Corp., то системы автоматизации на базе 1-Wire-шины еще не получили должного признания. Ранее такая ситуация определялась, крайне ограниченным набором компонентов для организации применений в области автоматизации. Однако, в последнее время появляется все больше сообщений и конкретных примеров использования 1-Wire-интерфейса в самых различных областях, все больше разработчиков проявляют интерес к этой технологии, что связанно, прежде всего, со значительным расширением номенклатуры однопроводных компонентов.
Так в чем же особенность этого сетевого стандарта? Ведь в качестве среды для передачи информации по однопроводной линии чаще всего возможно использование обычного телефонного кабеля и, следовательно, скорость обмена в этом случае не велика. Однако, если внимательно проанализировать большинство объектов требующих автоматизации, то более чем для 60% из них предельная скорость обслуживания в 15,4 кБит/сек будет более чем удовлетворительной. А другие преимущества 1-Wire, такие как:
- простое и оригинальное решение адресуемости абонентов,
- несложный протокол,
- простая структура линии связи,
- малое потребление компонентов,
- легкое изменение конфигурации сети,
- значительная протяженность линий связи,
- исключительная дешевизна всей технологии в целом,
. говорят о необходимости обратить самое пристальное внимание на этот эффективный инструмент для решения задач комплексной автоматизации в самых различных областях деятельности.
Основные принципы
1-Wire-net представляет собой информационную сеть, использующую для осуществления цифровой связи одну линию данных и один возвратный (или земляной) провод. Таким образом, для реализации среды обмена этой сети могут быть применены доступные кабели, содержащие неэкранированную витую пару той или иной категории, и даже обычный телефонный провод. Такие кабели при их прокладке не требуют наличия какого-либо специального оборудования, а ограничение максимальной длины однопроводной линии регламентировано разработчиками на уровне 300м.
Основой архитектуры 1-Wire-сетей, является топология общей шины, когда каждое из устройств подключено непосредственно к единой магистрали, без каких-либо каскадных соединений или ветвлений. При этом в качестве базовой используется структура сети с одним ведущим или мастером и многочисленными ведомыми. Хотя существует ряд специфических приемов организации работы однопроводных систем в режиме мультимастера.
Конфигурация любой 1-Wire-сети может произвольно меняться в процессе ее работы, не создавая помех дальнейшей эксплуатации и работоспособности всей системы в целом, если при этих изменениях соблюдаются основные принципы организации однопроводной шины. Эта возможность достигается благодаря присутствию в протоколе 1-Wire-интерфейса специальной команды поиска ведомых устройств (Поиск ПЗУ), которая позволяет быстро определить новых участников информационного обмена. Стандартная скорость отработки такой команды составляет
75 узлов сети в секунду.
Благодаря наличию в составе любого устройства, снабженного сетевой версией 1-Wire-интерфейса, уникального индивидуального адреса (отсутствие совпадения адресов для приборов, когда-либо выпускаемых Dallas Semiconductor Corp., гарантируется самой фирмой-производителем), такая сеть имеет практически неограниченное адресное пространство. При этом, каждый из однопроводных приборов сразу готов к использованию в составе 1-Wire-сети, без каких-либо дополнительных аппаратно-программных модификаций. Однопроводные компоненты являются самотактируемыми полупроводниковыми устройствами, в основе обмена информацией между которыми, лежит управление изменением длительности временных интервалов импульсных сигналов в однопроводной среде и их измерение. Передача сигналов, для 1-Wire-интерфейса, асинхронная и полудуплексная, а вся информация, циркулирующая в сети, воспринимается абонентами либо как команды, либо как данные. Команды сети генерируются мастером и обеспечивают различные варианты поиска и адресации ведомых устройств, определяют активность на линии даже без непосредственной адресации отдельных компонентов, управляют обменом данными в сети и т.д.
Стандартная скорость работы 1-Wire-сети, которая составляет 15,4Кбит/сек, была выбрана, во-первых, с учетом обеспечения максимальной надежности передачи данных на большие расстояния, и, во-вторых, с учетом быстродействия наиболее широко распространенных типов микроконтроллеров, которые в основном должны использоваться при реализации ведущих устройств однопроводной шины. Это значение скорости обмена может быть уменьшено до любого возможного значения благодаря введению принудительной задержки между передачей в линию отдельных битов данных (растягиванию временных слотов протокола). Или увеличено за счет перехода на специальный ускоренный режим обмена (скорость Overdrive — до 125Кбит/сек), который допускается для отдельных типов однопроводных компонентов на небольшой по расстоянию, качественной, не перегруженной другими приборами линии связи.
При реализации однопроводного интерфейса используются стандартные КМОП/ТТЛ логические уровни сигналов, а питание большинства однопроводных компонентов может осуществляться от внешнего источника с рабочим напряжением в диапазоне от 2,8В до 6,0В. Альтернативой применению внешнего питания служит, так называемый, механизм «паразитного питания», действие которого заключается в использовании каждым из ведомых компонентов 1-Wire-линии электрической энергии импульсов, передаваемых по шине данных, которая аккумулируется специальной, встроенной в прибор емкостью. Кроме того, отдельные компоненты однопроводных сетей могут использовать режим питания по шине данных, когда энергия к приемнику поступает непосредственно от мастера по линии связи, при этом обмен информацией в сети принудительно прекращается.
Пожалуй, особенно привлекательным качеством технологии 1-Wire является исключительная простота настройки, отладки и обслуживания сети практически любой конфигурации, построенной по этому стандарту. Действительно, для начала работы достаточно любого персонального компьютера, недорогого адаптера 1-Wire-линии, а также свободно распространяемой фирмой Dallas Semiconductor Corp. программы iButton Viewer. При наличии этого небольшого числа составляющих контроль и управление сетью практически любой сложности, построенной на базе стандартных однопроводных компонентов, организуется буквально в течение нескольких минут. Программа iButton Viewer, в этом случае, позволяет с максимальным комфортом для разработчика идентифицировать любое из ведомых однопроводных устройств на линии и проверить в полном объеме правильность его функционирования в составе конфигурируемой сети.
Организация ведущих
Отдельные виды адаптеров, которые позволяют наделить любой персональный компьютер возможностью обслуживать в качестве мастера 1-Wire-сеть, выпускаются самой фирмой Dallas Semiconductor Corp. К ним относятся адаптеры для параллельного порта типа DS1410E, для COM-порта типа DS9097E и DS9097U, для USB-порта типа DS9490R. Эти приборы имеют различные функциональные возможности и конструктивные особенности, что обеспечивает разработчику максимальную свободу выбора при конструировании. А наличие у пользователя небольших навыков в создании электронной аппаратуры, позволяет легко произвести самостоятельную сборку схемы простейшего адаптера 1-Wire-сети для компьютера из небольшого числа доступных электронных компонентов.
Часто в качестве ведущего однопроводной шины выступает не компьютер, а простейший универсальный микроконтроллер. Для организации его сопряжения с 1-Wire-сетью используются различные программно-аппаратные методы. От простейшего, когда управляющая программа контроллера полностью реализует протокол 1-Wire-интерфейса на одном из своих функциональных двунаправленных выводов, связанных с однопроводной линией, до вариантов, позволяющих высвободить значительные ресурсы контроллера, благодаря использованию специализированных микросхем сопряжения с 1-Wire-сетью. Такие микросхемы подключаются к процессору, играющему роль ведущего однопроводной шины, через периферийные узлы ввода/вывода, входящие в состав любого универсального микроконтроллера. Например, устройство DS1481 предназначено для подключения непосредственно к функциональным выводам параллельного обмена контроллера.
А для организации мастера однопроводной системы на базе микроконтроллеров с 3хвольтовым питанием поставляются пассивные микросхемы DS1482, выполняющие согласование с уровнями сигналов стандартной 1-Wire-магистрали. Если же мастер однопроводной линии должен быть организован на базе стандартного узла последовательного интерфейса UART микроконтроллера, используется микросхема DS2480В, а микросхема DS2490 адаптирует однопроводную линию для работы от встроенного узла UBS-интерфейса. Обе микросхемы реализуют так называемый программируемый механизм активной подтяжки шины данных 1-Wire-магистрали, обеспечивающий качественную передачу сигналов в длинных проблемных линиях и увеличение нагрузочной способности ведущего по количеству обслуживаемых им ведомых устройств. Кстати большинство выше упомянутых адаптеров для персональных компьютеров, также построены на базе подобных микросхем. Более того, учитывая особенности работы современных операционных сред Windows, использование именно этих компонентов, которые по своей сути являются управляемыми по последовательному интерфейсу цифровыми автоматами, обеспечивает полномасштабное обслуживание однопроводных линий в реальном масштабе времени.
При построении сложных законченных микропроцессорных систем, имеющих дефицит машинного времени для реализации 1-Wire-протокола, наиболее рациональной является идея о возложении отдельной задачи по обслуживанию однопроводной линии на специальный узел заказной или полузаказной СБИС, для последующего сопряжения такого цифрового автомата, через системную магистраль, непосредственно с основным процессорным узлом. Фирма Dallas Semiconductor Corp. даже разработала набор рекомендаций по организации подобного узла под названием DS1WM, который был реализован, в том числе, специалистами Xilinx Inc. в виде законченного практического примера для программируемых перестраиваемых матриц семейств Virtex и Spartan. Более того, и Dallas Semiconductor Corp., которая в том числе известна как поставщик высокоскоростных контроллеров клона MCS51, выпускает специализированный связной микроконтроллер DS80C400, который содержит встроенный в кристалл автомат поддержки 1-Wire-протокола с возможностью реализации механизма активной подтяжки.
Достаточно перспективным представляется также направление, связанное с применением карманных компьютеров (или PDA (Personal Digital Assistant)) популярных платформ PalmOS, Handspring и WinCE/PocketPC для обслуживания однопроводных компонентов, в том числе работающих в составе 1-Wire-сетей. При этом, для подключения PDA к однопроводной шине применяют специализированные адаптеры последовательного порта, которые отличаются малым потреблением и построены на базе схемных решений, использующих выше перечисленные микросхемы сопряжения с 1-Wire-линией. Именно такой подход в настоящее время является наиболее рациональным при организации автономных и мобильных 1-Wire-систем.
Проблема подготовки программного обеспечения для управления мастером линии при обслуживании 1-Wire-сетей, также не представляется неразрешимой. Фирмой Dallas Semiconductor Corp. свободно распространяется профессиональный программный пакет разработчика iButton TMEX SDK, являющийся универсальным средством для профессиональных программистов, который значительно упрощает процесс создания программ для обслуживания однопроводных устройств, подключенных через стандартные типы адаптеров к персональным компьютерам, которые оснащены операционной системой Windows. Он содержит комплект отлаженных драйверов и утилит для реализации полномасштабного 1-Wire-протокола. В качестве среды взаимодействия с разработчиком пакет iButton TMEX SDK использует специальный стандартизованный программный API-интерфейс. Кроме того, с fttp-сервера кампании Dallas Semiconductor Corp. свободно доступен ряд примеров реализации 1-Wire-протокола для некоторых, наиболее популярных видов микропроцессоров, а также готовые библиотеки функциональных программных модулей однопроводного интерфейса для различных программных платформ.
Ведомые однопроводные компоненты
Ведомые однопроводные компоненты, содержащие 1-Wire-интерфейс, выпускаются в двух различных видах. Либо в корпусах MicroCAN, похожих внешне на дисковый металлический аккумулятор, либо в обычных корпусах для монтажа на печатную плату. Футляр MicroCAN полый внутри. Он выполняет функцию защиты содержащегося в нем полупроводникового кристалла однопроводной микросхемы, который соединен с внешним миром лишь через две, изолированные друг от друга, половинки корпуса, являющиеся по существу контактными площадками для подключения однопроводной линии. В подобных «таблеточных» корпусах поставляются, как правило, приборы iButton. Компоненты, которые предназначены для использования в составе 1-Wire-сетей, упаковываются в пластиковые корпуса, используемые для изготовления транзисторов и интегральных схем. Такой подход объясняется тем, что в отличие от устройств iButton однопроводные приборы для 1-Wire-сетей часто имеют более двух выводов. Помимо выводов, которые требуются для обмена данными по однопроводной магистрали, они располагают дополнительными выводами необходимыми, для обеспечения их питания и организации внешних цепей, связывающих такие приборы с объектами автоматизации, например, датчиками или исполнительными устройствами.
К наиболее простым ведомым однопроводным компонентам относятся кремневый серийный номер DS2401 (или модифицированный вариант этого прибора с внешним питанием DS2411) и электронный ключ DS2405, управляемый по 1-Wire-интерфейсу. Первое из этих устройств часто используется в качестве электронной метки, которая позволяет идентифицировать состояние, например, механического переключателя, коммутирующего линию данных однопроводного интерфейса. С помощью DS2405 можно дистанционно осуществить простейшие функции переключения внешнего оборудования, изменяя состояние управляемого ключа относительно возвратного проводника 1-Wire-магистрали.
Однако, наиболее популярными ведомыми компонентами, на базе которых реализовано, пожалуй, наибольшее количество применений, безусловно, являются цифровые термометры типа DS18S20 (более известные под обозначением снятого с производства прибора DS1820, который уже не производится, но успел стать международным брендом). Преимущества этих цифровых термометров с точки зрения организации магистрали, по сравнению с любыми другими интегральными температурными сенсорами, а также неплохие метрологические характеристики и хорошая помехоустойчивость, выводят их на первое место при построении многоточечных систем температурного контроля в диапазоне от -55°С до +125°С. Они позволяют не только осуществлять непосредственный мониторинг температуры в режиме реального времени, но и благодаря наличию встроенной энергонезависимой памяти температурных уставок, могут обеспечивать приоритетную сигнализацию в линию о факте выхода контролируемого параметра за пределы заданных значений. Также, поставляются более совершенные приборы DS18В20, скорость преобразования, в которых определяется разрядностью результата, которая программируется мастером линии непосредственно в ходе их обслуживания. Цифровой код, считываемый с такого термометра, является прямым результатом измеренного значения температуры и не нуждается в дополнительных преобразованиях. А их некалиброванная, но в тоже время более дешевая версия под обозначением DS1822, представляется оптимальным решением для разработчиков недорогих многоточечных систем контроля температурных процессов. Для потребителей, использующих только паразитный режим питания однопроводной линии, кампания Dallas Semiconductor Corp. выпускает экономичные двухвыводные приборы — DS18S20-PAR, DS18B20-PAR, DS1822-PAR. Российской фирмой Rainbow Technologies получен сертификат Госстандарта России об утверждении в качестве средств измерения в том числе однопроводных цифровых термометров DS1822, DS18B20, DS18S20, DS1920, производимых фирмой Maxim Integrated Products, Inc., в состав которой входит Dallas Semiconductor Corp. В подтверждение этого факта имеется документ о том, что данные типы приборов зарегистрированы в Государственном реестре средств измерений под №23169-02 и допущены к применению в Российской Федерации.
Четырехканальный однопроводной АЦП типа DS2450 и двухканальный однопроводной счетчик, совмещенный с буферной памятью, типа DS2423 позволяют решать задачи, связанные с оцифровкой аналоговых и импульсно-временных сигналов. Первое из этих устройств по существу разрешает проблему обслуживания источников аналоговой информации в составе 1-Wire-сетей, к которым относится большинство выпускаемых в настоящее время датчиков различных физических величин (давление, вес, напряжение, влажность, ток, освещенность, ускорение, та же температура, но в диапазонах недоступных для регистрации посредством использования цифровых термометров и т.д.). Второй прибор может с успехом обслуживать многие виды применяемых в технике импульсных сенсоров (различные оптические счетчики, сенсоры количества оборотов, выходной сигнал с расходомеров-вертушек, емкостные датчики влажности, включенные в задающие цепи управляемых генераторов импульсов, счетчики уровня радиации, интегрирующие преобразователи напряжения в частоту и т.д.).
Но все-таки наиболее незаменимыми «кирпичиками», лежащими в основе фундамента однопроводных сетей автоматизации, являются универсальные сдвоенные адресуемые транзисторные ключи типа DS2406P (современная версия широко известных приборов DS2407P).
На базе этих устройств может быть реализована масса применений, и, прежде всего, узлы контроля логических состояний (уровней) и схемы обслуживания датчиков «сухого контакта», а также разнообразные ключевые схемы. Таким образом, именно благодаря использованию этих компонентов осуществляется сбор дискретной информации с территориально рассредоточенных датчиков (мониторов дверей, контакторов положения арматуры, любых датчиков имеющих выход ДА/НЕТ, как-то датчики положения, прохода, присутствия, пожарной и охранной сигнализации и т.д.). Подобные же приборы обеспечивают управление переключением любых видов силового оборудования, которые имеют два рабочих состояния: включено/выключено (нагревателей, кондиционеров, моторов, вентиляторов, арматурных задвижек и т.д.). Кроме того, двунаправленные, индивидуально программируемые выводы DS2406P могут быть использованы для организации медленного последовательного интерфейса между локальным микроконтроллером и 1-Wire-сетью. Не смотря на невысокую скорость при реализации подобного способа обмена информацией по однопроводной сети, когда один бит данных передается за две стандартные посылки, такое решение является приемлемым и достаточно надежным для большого числа конкретных применений.
Тем не менее, самой фирмой Dallas Semiconductor Corp. в качестве стандартного «мостика» обмена между любыми схемами, построенными на микроконтроллерах различных типов, и 1-Wire-сетями рекомендуется применение специализированной двухпортовой статической памяти DS2404. Поскольку к массиву памяти этого прибора возможен доступ, как со стороны однопроводной шины, так и со стороны подчиненного последовательного интерфейса, управляемого микроконтроллером, обмен информацией между ведущим сети и подчиненным интеллектуальным устройством, решающим какую-либо локальную задачу, производится достаточно легко. Более того, благодаря наличию в составе микросхемы DS2404 дополнительного узла часов реального времени и календаря, возможно снабжение данных, сохраняемых процессором в общем массиве памяти, индивидуальными временными метками.
На базе узла часов реального времени кристалла DS2404 кампанией Dallas Semiconductor Corp. выпускается еще два компонента, весьма полезных для создания однопроводных систем автоматизации. Это устройства DS2415 и DS2417. Применяя любой из этих приборов можно организовать дешевые часы/календарь с однопроводным сетевым интерфейсом. Кроме того, второе устройство благодаря наличию в его составе отдельного вывода прерывания, может также дополнительно управлять по времени переключением внешнего оборудования или обеспечивать синхронизацию работы других устройств с процессами, происходящими на 1-Wire-линии.
Значительно расширяет возможности однопроводных сетей по аналоговому управлению рассредоточенным, в том числе силовым, оборудованием цифровой потенциометр DS2890 укомплектованный сетевым 1-Wire-интерфейсом. Используя этот прибор можно создавать самые разнообразные системы удаленного безударного управления, благодаря возможности плавного изменения аналогового регулирующего сигнала по 256 градациям.
При всем многообразии однопроводных компонентов, очевидно, что наиболее универсальным из них является уникальный прибор DS2408. Это индивидуально двунаправленный восьмиразрядный свободно поразрядно программируемый по 1-Wire-шине порт ввода/вывода, который позволяет реализовать любой интерфейс между внешним устройством произвольной модификации и однопроводной линией. Этот прибор имеет двунаправленный вывод внешней синхронизации, обеспечивающий аппаратное тактирование передаваемых или принимаемых данных. Использование микросхемы DS2408 позволяет обеспечить управление посредством 1-Wire-шины: сосредоточенным двунаправленным вводом/выводом по 8 независимым каналам, приводом светодинамических, жидкокристаллических индикаторов и дисплеев различных видов, сканированием матричных клавиатур и дискретных датчиков самых различных типов, а так же позволяет реализовать действительно полномасштабный интерфейс с различными типами микроконтроллеров, как в последовательной, так и в параллельной моде.
Некоторые компоненты 1-Wire-сетей содержат в своем составе массив постоянной (однократно заполняемой пользователем) или энергонезависимой памяти того или иного объема. Это позволяет хранить специальную служебную информацию, связанную с применением конкретного компонента и особенностями его использования (идентификатор, территориальное положение, калибровочные коэффициенты, размерность, значение уставок по умолчанию и т.д.), непосредственно в составе однопроводного прибора. Благодаря этому для организации работы каждой новой однопроводной сети не нужно готовить отдельное специальное программное обеспечение, достаточно иметь одну стандартную программу, которая переконфигурируется в зависимости от специфики конкретной системы (конечно, если память всех компонентов 1-Wire-системы заполнена в соответствии с определенными, заранее оговоренными правилами). Если же в процессе работы системы требуется хранить дополнительные объемы информации, в распоряжении разработчика имеются специальные однопроводные приборы, содержащие как постоянную (DS2502/ DS2505/ DS2506), так и энергонезависимую (DS2430A/ DS2432/ DS2433) память различных объемов.
Целый ряд компонентов семейства iButton в корпусах MicroCAN также может быть использован в составе 1-Wire-сетей в качестве ведомых однопроводных устройств, которые решают специфические задачи идентификации, накопления, хранения и переноса информации. Например, для реализации процедуры идентификации в системах промышленной автоматизации обычно достаточно применения распространенных носимых электронных меток DS1990A. А многоточечный температурный мониторинг легко может быть выполнен сетью из нескольких приборов DS1921# или иначе устройств ТЕРМОХРОН, каждое из которых регистрирует температурные значения, измеренные через определённые, заранее заданные, промежутки времени и сохраняет полученную информацию в собственной энергонезависимой памяти, по существу, являясь программируемым «температурным магнитофоном». Для решения проблемы переноса данных, накопленных автономной 1-Wire-системой, к персональному компьютеру выпускаются разнообразные приборы iButton, которые в этом случае играют роль, так называемых, «транспортных таблеток». К подобным устройствам, прежде всего, относятся приборы энергонезависимой памяти, включающие в состав своей конструкции литиевый элемент питания. Это целый ряд «таблеток» начиная с DS1992 (1Кбит) до DS1996 (64Кбита), и среди них, конечно, модификация DS1994 (4Кбита), содержащая дополнительно узел часов реального времени, удобный для генерации временных меток сохраняемых данных или для организации автономных логгеров ресурса.
Кроме того, для этих же целей могут быть использованы приборы с электрически стираемой памятью типа EEPROM модификаций DS1971(32байта), DS1973(512байт) и DS1977(32Кбайта). При перемещении больших массивов информации «транспортную таблетку» удобно использовать совместно с адаптером USB-порта типа DS9490B, который обеспечивает высокую скорость передачи при обмене данными между устройством iButton и персональным компьютером. Если же речь идет только о решении задачи накопления и хранения данных в 1-Wire-сети, любая из перечисленных выше «транспортных таблеток» может быть легко включена в состав подобной сети. При этом для подключения приборов в корпусах MicroCAN к проводникам однопроводной линии используют специальные защелки типа DS9100 или DS9098P, или же более простые зажимы типа DS9094.
С точки зрения схемотехнической реализации однопроводного интерфейса и устойчивости работы на проблемных линиях все ведомые однопроводные компоненты исторически отличаются друг от друга, делясь при этом на группы:
1. DS2401, DS2405 — первые приборы с 1-Wire-интерфейсом в пластиковых корпусах, полностью аналогичны по схемотехнике первым моделям приборов iButton, которые были ориентированные для работы на коротких шинах (до 1994 года),
2. DS1820, DS2407P, DS2450, DS2404, DS2415, DS2417, DS1920 и т.д. — вторая версия, специально ориентированная для работы на длинных линиях (до 2000 года сейчас эти компоненты в основном снимаются с производства),
3. DS18S20, DS18B20, DS1822, DS2438, DS2406P, DS2409, DS2890, DS1973 и т.д. — третий вариант, более устойчивый к коллизиям на 1-Wire-магистрали по сравнению с предыдущим (с 2000 года),
4. DS2411, DS2408, DS1921#, DS1977 и т.д. — последний вариант, наиболее удачной по надежности схемотехники 1-Wire-интерфейса (c 2003 года).
Линия связи и топология
Большую роль при построении 1-Wire-сетей играет исполнение однопроводной линии связи. Как правило, такие линии имеют структуру, состоящую из трех основных проводников: DATA — шина данных, RET — возвратный или земляной провод, EXT_POWER — внешнее питание не только обслуживаемых ведомых устройств, но и внешних относительно них цепей датчиков и органов управления. В зависимости от способа прокладки, сопряжения с ведомыми устройствами и используемых при прокладке материалов, в соответствии с ниже следующей Таблицей различают три основных варианта качества организации 1-Wire-сетей, каждый из которых подразумевает использование особой технологии и аксессуаров при реализации линии.
Классификация линии | Длина линии | Количество ведомых устройств | Тип используемого кабеля | Топология | Мастер линии |
Короткие линии | До 30м | До 50шт. | 4-хпроводный телефонный | Свободная | Пассивная подтяжка (резистор) |
Средние линии | До 100м | До 200шт. | Витая пара 5 категории | Общая шина | Активная подтяжка (DS2480, DS2490 или специальное схемное решение) |
Длинные линии | До 300м | До 300шт. | IEEE1394 (Firewire) | Общая шина с единым стволом | Активная подтяжка с учетом тока в линии |
Часто при организации сложных однопроводных сетей, с целью удобства проводки линии связи, уменьшения ее протяженности или снижения электрической нагрузки на линии благодаря уменьшению одновременно работающих на ней устройств, необходимо обеспечить древовидную или лучевую структуру магистрали, значительно отличающуюся от структуры общей шины. Для этого используют ветвления 1-Wire-сетей одного или нескольких уровней. Основным элементом при построении таких ветвей является либо обычный адресуемый ключ типа DS2406, который обеспечивает ветвление благодаря коммутации возвратного провода однопроводной линии, либо специализированный ветвитель DS2409, коммутирующий непосредственно шину данных 1-Wire-линии. Последний вариант является более предпочтительным т.к. компоненты на отключенной ветви, ведомой ветвителем, остаются всегда в активном состоянии. Поочередное обслуживание мастером сети каждой из ветвей, при отключенных остальных ветвях, позволяет значительно увеличить общую длину линии и количество ведомых устройств на ней.
Если же организация 1-Wire-системы на базе персонального компьютера связанна с особыми трудностями, наиболее оптимально использование интеллектуального адаптера для COM-порта типа LINK. Он реализован на базе микропроцессора. При этом, устройство, полностью эмулируя со стороны последовательного порта работу популярного адаптера DS9097U, производства Dallas Semiconductor Corp., и таким образом поддерживая все разработанное ранее для персональных компьютеров программное обеспечение, благодаря встроенным собственным интеллектуальным ресурсам реализует льготный режим работы однопроводных приборов на проблемных 1-Wire-линиях в условиях сложной помеховой обстановки. LINK многократно улучшает механизм активной подтяжки на линии, что позволяет действительно получать идеальные сигналы обмена при длинах кабеля более 300 метров и числе сопровождаемых однопроводных компонентов большем 100шт, а использование процессором прибора алгоритмов цифровой фильтрации многократно улучшает устойчивость обслуживаемой однопроводной линии к электромагнитным помехам.
Применения
О признании однопроводной шины в качестве международного стандарта и серьезности отношения к этому интерфейсу со стороны маститых разработчиков и производителей электроники говорят многочисленные факты. Например, нет практически ни одного универсального микроконтроллера, в литературе по применению которого не обсуждались бы способы организации на его базе мастера однопроводной линии.
Наиболее последовательно отстаивает линию на использование технологии 1-Wire-сетей в области автоматизации американская фирма Embedded Data Systems, LLC (приемница PointSix, Inc.). Можно сказать, что эта кампания сделала себе имя на внедрение и пропаганде достижений однопроводной шины в области автоматизации. И это, не смотря на то, что основной областью ее деятельности является не автоматизация оранжерей и не создание систем пожарной сигнализации, а разработка средств и систем для обслуживания высокотехнологичных отраслей машиностроения и химической промышленности, и даже создание уникального экспериментального и научного оборудования. Подтверждением этому служит широчайший спектр продукции, который выпускается фирмой (разнообразные зонды для измерения высоких и низких температур, датчики влажности, давления и кислотности с особыми функциями, специальные оптические сенсоры, платы сбора информации, устройства сопряжения с различным аналитическим оборудованием и многое другое), причем каждый из приборов содержит элементы однопроводной технологии.
К перспективным примерам в области применения 1-Wire-технологии для автоматизации, несомненно, можно отнести деятельность таких известных мировых производителей как SYSTRONIX или AAG Electronica. LLC.
Линейки законченных инструментальных средств, а также многочисленные примеры их использования, и высокий рейтинг продаж поставляемых изделий, позволяют говорить об успешности и востребованности концепции однопроводной шины применяемой этими фирмами для решения самых разнообразных проблем распределенной автоматизации.
Другим примером, наглядно демонстрирующим на практике возможности технологии однопроводной шины, является проект построения полностью автоматических метеорологических станций (1-Wire Weather Station), который разрабатывался совместно фирмами PointSix, Inc., AAG Electronica LLC, Dallas Semiconductor Corp. и Texas Weather Instruments, Inc. Вначале (еще в середине 90-х годов) было создано несколько экспериментальных систем, построенных на базе ведущего персонального компьютера с адаптером DS9097U, который является сердцем комплекса, из трех термометров DS18S20, выполняющих контроль температуры, микросхемы DS2438 для обслуживания датчика влажности воздуха, компонента DS2423 для определения скорости ветра и 16-ти электронных меток DS2401 определяющих его направление. Эти первые метеосистемы были установлены и успешно испытаны в процессе длительной эксплуатации в штате Техас. Причем отдельные из них комплектовались дополнительными однопроводными решениями, которые обеспечивали контроль сигналов от датчиков: барометрического давления, разрядов молнии, количества осадков на поверхности, солнечной активности, влажности почвы и т.д. Данные со всех сенсоров, регистрируемые каждой из подобных систем, поступали в персональный компьютер и через Интернет транслировались в режиме реального времени на центральный операторский пульт, где выполнялся прием и архивация данных о погоде региона, получаемый благодаря анализу информации от нескольких территориально рассредоточенных станций. После успешного завершения проекта Texas Weather Instruments Inc. уже на протяжении нескольких лет успешно торгует готовыми полностью автоматическими метеостанциями, не требующими обслуживания человеком. Причем популярность подобных устройств настолько велика по всему миру, что фирма Dallas Semiconductor Corp. была вынуждена начать производство специализированного набора микросхем WS-1, который включает комплект однопроводных компонентов, минимально необходимый для построения подобной станции. А полную комплектацию подобных систем для многочисленных пользователей со всего мира, включая платы для самостоятельной сборки, сертифицированные механические и конструкционные элементы, выполняет фирма AAG Electronica LLC.
Довольно перспективной областью, в которой в полной мере используются преимущества технологии 1-Wire-сетей, и которой, особенно много внимания уделяет кампания Dallas Semiconductor Corp. является менеджмент автономных химических источников тока — аккумуляторных батарей. Под менеджментом здесь понимается, — прежде всего, строгая и полная идентификация источников энергии, сохранение в памяти каждого отдельного встроенного в батарею электронного устройства особенностей ее изготовления и индивидуальных технических характеристик, наиболее полный мониторинг их основных эксплуатационных параметров на протяжении всего срока службы, а также формирование корректного управляющего воздействия, связанного с восстановлением заряда обслуживаемого автономного источника энергии. От правильного менеджмента и знания истории эксплуатации батареи во многом зависит выбор алгоритма ее повторного заряда, что непосредственно связанно с эффективностью использования и сроком службы многих типов аккумуляторов. Для этого каждая из батарей многоэлементных энергетических конструкций (особенно для мобильных устройств и средств бесперебойного питания) снабжается индивидуальным однопроводным компонентом, превращаясь по существу в интеллектуальный системный элемент автономного питания. Целый ряд микросхем, выпускаемых фирмой, связан с этим направлением. Dallas Semiconductor Corp. сегодня доминирует на рынке интеллектуальных систем обслуживания автономных источников питания, исповедуя при этом новый комплексный сетевой подход к проблеме менеджмента энергетических элементов. При этом, используются 1-Wire-решения, позволяющие организовать многоточечную шину обслуживания устройств менеджмента и управления зарядом, что дает возможность сопровождать не только отдельные источники энергии, но и целые батареи, составленные из множества отдельных подобных элементов. Более того, подобные устройства способны обеспечить не только идентификацию или простейший температурный контроль аккумуляторов, но и полномасштабный мониторинг их основных параметров (напряжение, ток, разряд, контроль «короткого замыкания» и т.д.) на протяжении всего времени эксплуатации. Результаты, накопленные такими приборами, сохраняются во встроенной энергонезависимой памяти либо в виде гистограммы (DS2436), либо в виде массива последовательных отсчетов «привязанных» к временным меткам (DS2438).
В настоящее время кампания Dallas Semiconductor Corp. выпускает целый ряд прецизионный кристаллов для мониторинга, менеджмента, защиты и управления восстановлением заряда автономных источников питания самых различных типов и назначений (DS2720, DS2740, DS2751, DS2770 и т.д.). К ним, в том числе, относятся кристаллы семейства DS276#, которые в отличие от иных модификаций подобных устройств, требующих внешней обвязки с использованием прецизионных и стабильных пассивных компонентов, обеспечивают более высокую точность при контроле тока, расходуемого контролируемой батареей. Это достигается, в том числе, за счет встроенной калиброванной резистивной схемы (шунта), выполненной по специальной полупроводниковой технологии, а также благодаря наличию в составе подобных приборов специального аппаратно-программного механизма предварительной калибровки.
Ограничения и сопряжение с промышленными сетями
Безусловно, 1-Wire-сети имеют свою нишу для применения при построении систем автоматизации. Бессмысленно всерьез использовать их для передачи больших массивов информации, при построении, к примеру, систем видео-наблюдения или скоростного обмена, связанных с обслуживанием быстрых процессов, или же сравнивать возможности однопроводных сетей с такими мощными сетевыми промышленными интерфейсами, как ProfiBus, FeldBus, LonWorks, CAN, Industrial Internet и т.д. Можно даже сформулировать основные на сегодняшний день ограничения для применения систем на базе однопроводных 1-Wire-сетей в области автоматизации:
- необходимость непрерывной временной синхронизации или синхронной работы отдельных устройств в сети (эта проблема может быть решена вводом в структуру шины сети дополнительной линии для передачи сигнала общей синхронизации),
- низкая скорость обмена информацией, и как следствие невозможность высокой динамики при обслуживании быстрых процессов в режиме реального времени (если контролируемый быстрый процесс является относительно непродолжительным, локальный микроконтроллер в составе однопроводной шины может обслужить его, сохранив результирующие данные в буферной памяти, а затем уже осуществить их передачу непосредственно к мастеру),
- сложность в реализации мультимастерного режима работы сети (специализированный ветвитель 1-Wire-сетей DS2409 разрешает проблему конфликтов между несколькими ведущими на одной однопроводной шине).
Как видно из замечаний приведенных в скобках, даже эти очевидные для 1-Wire-сетей, трудности не являются непреодолимыми. Более того, существуют подходы, позволяющие органично интегрировать медленные однопроводные территориально рассредоточенные структуры в состав таких производительных сетей как CAN и Industrial Internet. Это достижимо благодаря применению специальных аппаратно-программных решений, реализуемых на базе современных микроконтроллеров, а так же уникального инструмента кампании Dallas Semiconductor Corp. — устройства TINI (Tiny InterNet Interface).
TINI400 — это целая микросистема, основой которой является центральный процессор, реализованный на высокопроизводительном сетевом микроконтроллере DS80С400, который объединяет ресурсы целого ряда наиболее распространенных сетевых интерфейсов, как-то: RS232, 1-Wire, CAN 2.0B, Ethernet, не говоря о возможности использования параллельной шестнадцатиразрядной синхронной магистрали, а также автономных узлов для организации стандартных локальных последовательных интерфейсов I2C и SPI. Кроме того, плата TINI400 содержит 1Мбайт программной Flash-памяти, 1Мбайт статического ОЗУ, узел часов реального времени, литиевую батарею и кремниевый идентификационный номер. Работает TINI400 под управлением мощной операционной среды, которая включает в себя поддержку TCP/IP и виртуальной машины Java, которая тщательно отработана и испытана еще на модели TINI предыдущего поколения — плате TINI390. Последнее определяется тем фактом, что технология программной поддержки для TINI390 на протяжении нескольких лет развивалась специалистами Dallas Semiconductor Corp. совместно с сотрудниками компании Sun Microsystems, Inc., являясь при этом полностью открытым проектом. Такой подход позволил иметь максимально эффективную обратную связь с конечными пользователями, что помогло выявить и устранить большинство недостатков программного обеспечения. И сейчас на сайте Dallas Semiconductor Corp. можно найти всю необходимую документацию и средства разработки программного обеспечения, что значительно облегчает построение на базе устройства TINI локальных однопроводных систем удаленного контроля и управления, объединяющих достоинства быстрых и производительных, но дорогих, и медленных, но дешевых и эффективных интерфейсов.
В заключении необходимо еще раз отметить безусловную эффективность и рациональность использования технологии 1-Wire при построении систем автоматизации контроля и управления для разнообразного рассредоточенного оборудования, когда не требуется высокая скорость при обслуживании, но необходима существенная гибкость и наращиваемость при не высоких затратах на реализацию.
none
Опубликована: 2005 г.
0
0
Вознаградить Я собрал 0 0
Как устроен однопроводный интерфейс 1-Wire
1-Wire — однопроводный низкоскоростной интерфейс, разработанный фирмой Dallas Semiconductor (сейчас она является подразделением фирмы MAXIM) для двунаправленного обмена данными с различными периферийными устройствами (датчики температуры, электронные ключи, аккумуляторы).
Это довольно дешёвый и надёжный интерфейс, для устройств, не требующих быстрого обмена большим количеством данных. Он позволяет обмениваться данными на скорости до 15,4 кбит/с в обычном режиме и до 125 кбит/с в режиме «overdrive» (в статье мы будем рассматривать обычный режим). При использовании специальных проводов (IEEE1394 — Firewire) расстояние передачи данных может составлять до 300 м.
Как физически устроен сам интерфейс? Да очень просто, — смотрим рисунок слева. В микрухах реализованы порты 1-wire, которые состоят из высокоомного приёмника и передатчика на полевом транзисторе с открытым стоком, подключенные к одному общему выводу (вывод порта 1-wire). Типовой ток утечки закрытого выходного полевика составляет 5 мкА. Снаружи реализована шина 1-wire. Она состоит из одного сигнального провода (поэтому интерфейс и назван однопроводным), подтянутого через резистор (типовое значение 5,1 кОм) к питанию (к плюсу) и одного провода, подключенного к общему проводу (то есть к минусу).
Обмен данными осуществляется по принципу Master-Slave (ведущий-ведомый), соответственно устройства с интерфейсом 1-wire бывают двух типов: «Master» (ведущее устройство) и «Slave» (ведомое устройство). Как правило в качестве «Мастера» выступает контроллер (или компьютер, через специальное устройство сопряжения), а в качестве «Слэйвов» — различные периферийные устройства.
На одну шину 1-wire можно подключить множество (до 2 48 ) slave-устройств, поскольку каждое такое устройство имеет уникальный 48-битный серийный номер, который вместе с байтом «CRC» и байтом «family code» (определяющим тип устройства) образует уникальную 64-битную метку. Ведущий на шине 1-wire должен быть один.
Питаться устройства с интерфейсом 1-wire могут как от независимого источника, так и от сигнального провода. Если в устройствах используется КМОП-архитектура, то диапазон напряжений питания может быть довольно широкий, но, при подключении на одну шину, питание всех устройств должно быть примерно одинаковым (чтобы уровни напряжения правильно распознавались приёмниками). В основном используются TTL-уровни (соответственно, пятивольтовое питание). Ещё хотелось бы добавить, что выход, реализованный на полевике с низким током утечки, — это специальная заточка под питание от сигнальной линии. Если у вашего устройства будет внешнее питание — никто не мешает вам организовать порт 1-wire, например, на биполярном транзисторе с открытым коллектором. Аналогично, резистор 5,1 кОм — тоже не догма, его значение может варьироваться в зависимости, например, от ёмкости линии.
Теперь давайте подробнее расмотрим механизм передачи данных на уровне протокола.
Во первых, необходимо отметить, что всем обменом на шине управляет «Мастер». Только мастер решает — когда и с каким устройством он хочет поговорить и когда устройство должно посылать или принимать очередной бит. «Слэйвы» синхронизируются с «Мастером» по спаду на сигнальной линии и далее отсчитывают интервалы до тех или иных своих действий по внутреннему счётчику. Единственное самостоятельное действие, разрешённое «Слэйву» — это выдача сигнала «Presence» (импульс присутствия), который он выдаёт сразу после подключения на шину, чтобы обозначить своё присутствие. Кроме этого, «Мастер» может сформировать на шине сигнал «Ресет», после которого все «Слэйвы» на шине должны ресетнуться и также ответить «Мастеру» сигналом «Presence».
Диаграммы сигналов «Reset» и «Presence» приведены на рисунке слева. Синим цветом обозначено состояние активности «Мастера» (когда он притягивает уровень на шине к нулю), красным цветом обозначено состояние активности «Слэйва» (когда «Слэйв» притягивает уровень на шине к нулю), серым цветом обозначено состояние, когда «Мастер» и «Слэйв» неактивны (сигнал через резистор подтянут к питанию).
Чтобы всё было понятно — опишем то, что нарисовано на этом рисунке, словами. Итак, чтобы сформировать сигнал «Reset», — «Мастер» должен притянуть уровень на шине к нулю на время не менее 480 мкс и не более 960 мкс (480 мкс ≤ TRSTL < 960 мкс). После этого он должен отпустить шину и, не менее, чем на 480 мкс, прекратить свою активность на шине (TRSTH > 480 мкс). «Слэйвы», не ранее, чем через 15 мкс, но и не позднее, чем через 60 мкс после того, как «Мастер» отпустит шину (15 мкс < TPDH < 60 мкс), должны сформировать на шине низкий уровень (это и есть сигнал присутствия), длительностью от 60 до 240 мкс (60 мкс < TPDL < 240 мкс), после чего они также отпускают шину.
После того как «Мастер», получив сигнал «Presence», понял, что на шине есть «Слэйвы» — он может начинать с этими «Слэйвами» обмен данными. Данные по шине передаются побитово, младшим битом вперёд. 0 и 1 кодируются уровнями напряжения на сигнальном проводе (0 — низкий уровень напряжения, 1 — высокий уровень напряжения).
Каждый бит передаётся в установленном временном промежутке, называемом тайм-слотом. Начало каждого тайм-слота (как я уже говорил) определяет «Мастер», притягивая шину к низкому уровню. Время между тайм-слотами не регламентировано, то есть один бит можно передать, условно говоря, сейчас, а другой, скажем, через 5 минут, ничего страшного при этом не произойдёт и данные не потеряются.
Выборка данных «Слэйвом» и «Мастером» происходит в разные временные интервалы, относительно начала тайм-слота, поэтому мы отдельно рассмотрим варианты передачи данных в направлениях «Мастер» ⇒ «Слэйв» (тайм-слот записи) и «Слэйв» ⇒ «Мастер» (тайм-слот чтения).
Тайм-слот записи показан на рисунке слева. Как и ранее, синим цветом обозначена активность «Мастера», красным — активность «Слэйва» и серым — моменты, когда линия подтянута к питанию через резистор.
- 1 мкс≤TLOW1<15 мкс — время, в течении которого шина притянута к нулю при передаче 1
- 60 мкс≤TLOW0<TSLOT — время, в течении которого шина притянута к нулю при передаче 0
- 60 мкс≤TSLOT<120 мкс — длительность тайм-слота
- TREC>1 мкс — интервал между тайм-слотами
Поясню этот рисунок несколько подробнее. Итак, для того, чтобы «Слэйв» распознал начало тайм-слота — «Мастер» должен удерживать сигнал на шине равным нулю в течении времени TLOW1. После этого, но не позднее 15 мкс от начала тайм слота, «Мастер» должен установить на шине уровень сигнала, соответствующий передаваемому биту. То есть, если он хочет передать 1, то он должен отпустить шину через какой-то промежуток времени от начала тайм-слота, чтобы до начала «Окна выборки» сигнал успел установиться в единицу. Если же «Мастер» хочет передать ноль, то он просто должен так и оставить линию притянутой к нулю. В течении «Окна выборки» сигнал на линии не должен меняться, потому что в любой момент в течении этого времени сигнал может быть считан «Слэйвом». «Окно выборки» заканчивается через 60 мкс от начала тайм-слота. После окончания окна выборки и до окончания тайм-слота — «Мастер» должен отпустить шину, чтобы сигнал вернулся к высокому уровню. Понятно, что отпускать шину актуально только в том случае, если «Мастер» передавал 0, если же он передавал 1, то ему нужно просто дождаться окончания тайм-слота.
Тайм-слот чтения показан на рисунке справа.
- 1 мкс≤TLOWR<15мкс — время, в течении которого шина притянута к нулю
- TRDV=15 мкс — момент окончания «Окна выборки»
- 0 мкс≤TRELEASE<45 мкс — время, в течении которого «Слэйв» должен отпустить шину
- 60 мкс≤TSLOT<120 мкс — длительность тайм-слота
- TREC>1 мкс — интервал между тайм-слотами
Здесь всё происходит следующим образом: «Мастер» притягивает шину к нулю, чтобы обозначить начало тайм-слота. Пока линия притянута к нулю — «Слэйв» должен либо тоже притянуть линию к нулю, если хочет передать ноль, либо оставить линию свободной, если хочет передать единицу. После того, как «Мастер» отпустит шину (через время TLOWR), — начинается «Окно выборки» и «Мастер» может считывать с шины значение бита. Далее, после окончания «Окна выборки», «Слэйв» должен в течении времени TRELEASE отпустить шину.
Хотелось бы уточнить, что «Мастер» должен не сразу читать уровень на шине после того, как отпустит её, а через некоторое время, которое необходимо для того, чтобы исключить влияние ёмкости линии (если «Слэйв» передаёт 1, то, из-за наличия этой ёмкости, напряжение не может вырасти мгновенно после отпускания шины «Мастером»). С учётом этого, «Мастеру» наиболее целесообразно сделать промежуток, в течении которого он удерживает шину на низком уровне, как можно короче (чтобы увеличить себе окно выборки), а читать данные с шины как можно ближе к концу «окна выборки» (таким образом можно будет работать с линиями, имеющими бОльшую ёмкость).
В самих устройствах, отдельные передаваемые биты собираются в команды, данные и так далее, но это уже более высокий уровень протокола, который мы здесь рассматривать не будем, поскольку он в разных устройствах может быть разным (соответственно и смотреть его надо в даташите на конкретный девайс).
Вот и вся теория. Ниже даны ссылки на различные алгоритмы и самопальные девайсы с интерфейсом 1-wire (пока не все, но скоро будут все):