11 октября 2007
Что такое LON. Часть 2.
Технологии защиты № 2, 2007
Продолжение. Начало в предыдущем выпуске Sec.Ru
Интеллект в каждом устройстве
Устройства, входящие в состав сети LonWorks, можно считать объектами, которые реагируют на различные входные сигналы и формируют необходимые выходные сигналы. «Интеллект» каждого устройства заключается в его способности реагировать на изменения физической среды и на приход информационных пакетов в соответствии с заложенной программой. Связывание входов и выходов у сетевых объектов позволяет добиваться, чтобы сеть функционировала нужным образом.
Для того чтобы подобная структура работала, каждое устройство содержит в себе два основных элемента - приемо-передающий контур и специальную микросхему Neuron Chip®. Это и есть те базовые элементы, которые составляют основу технологии LonWorks. Узел сети может образовываться из любого стандартного устройства в том случае, если управление им берет на себя Neuron Chip.
Достаточно часто, но не в обязательном порядке, устройство дополнительно снабжается схемой питания и внешней флеш-памятью. Это расширяет возможности устройства. Все устройства, как правило, собираются на единую плату, которая иногда называется коплером. Стандартный размер коплера - не более половины спичечного коробка, что позволяет встроить его практически в любое устройство. В некоторых случаях применяются так называемые «интеллектуальные трансиверы», когда Neuron Chip и приемо-передающий контур объединяются в одну микросборку. Обычно сборки также включают локальный источник питания, а некоторые приемопередатчики допускают использование одних и тех же проводов для передачи данных по сети и для питания. На рисунке приведены внешний вид Neuron Chip и интеллектуального трансивера для витой пары.
Микросхема Neuron Chip имеет 11 специальных контактов ввода-вывода, которые можно программно сконфигурировать как отдельные цифровые входы-выходы, как аналоговые входы-выходы, как таймеры, как последовательные интерфейсы или все ножки объединить в один параллельный интерфейс. В простейшем случае достаточно прямо на выходные контакты Neuron Chip установить маломощные реле, и мы получим готовое устройство управления освещением. Или, наоборот, соединив коплер с мощным процессором по параллельному интерфейсу, мы сможем управлять крупной системой.
Кристалл Neuron Chip имеет собственную энергонезависимую память, в которой можно хранить стек протокола и пользовательскую программу. Кристалл содержит в себе три независимых процессора, каждый из которых выполняет особую функцию - поддержки протокола, организации обмена и выполнения прикладного приложения. Первые два процессора имеют фиксированную прошивку, а третий процессор и отведенная ему область памяти предоставлены целиком в распоряжение прикладного программиста. Системному интегратору никаких программ писать не нужно. Программированием третьего процессора занимается тоже не инсталлятор сети, а производитель устройств, тот, кто вставляет Neuron Chip в устройство. Интегратор же получает готовое устройство с готовым интерфейсом, поведение которого программирует иным способом.
Несмотря на солидную внутреннюю архитектуру, Neuron Chip - вовсе не дорогое устройство, его действительно можно, нужно и выгодно встраивать в обычные бытовые приборы. Многие несложные системы оснащены им. Целый ряд фирм выпускает даже настенные выключатели с Lon-интерфейсом.
Для того, чтобы возможно было идентифицировать устройство в сети, необходимо иметь уникальный адрес. Этот адрес прошит в каждом Nueron Chip и называется Neuron ID. Данный идентификатор длиной 48 бит уникален для каждого экземпляра микросхемы и гарантированно не повторяется. Используя его, можно адресовать каждое устройство. Neuron Chip сделан таким образом, что при замыкании одной из ножек на «землю» он выдает в сеть свой идентификатор. Производители устройств обычно выводят на переднюю панель микрокнопку, при нажатии на которую кристалл сообщает сети свой адрес. Таким образом достигается однозначность соответствия устройств и информационных пакетов.
Разделение данных
Каждое устройство в сети LonWorks обладает собственным «интеллектом», то есть способно в зависимости от поступающих данных и состояния среды исполнять программу. Все интеллектуальные датчики, передавая информацию в сетевую среду, образуют в ней виртуальную модель среды физической. Для того, чтобы все устройства могли выбрать ту информацию, которая касается именно их, данные необходимо разделить. Этой цели служат сетевые переменные.
Сетевая переменная представляет собой любой элемент данных, который прикладная программа устройства ожидает получить от других устройств (вход), или же предполагает сделать доступной (выход) для других устройств сети. В кристалле Neuron Chip содержится определенная пользовательская программа. Соответственно, как и у любой программы, у нее имеются входные и выходные переменные. Программа датчика температуры имеет, например, лишь одну выходную переменную - текущую температуру. Простое исполнительное устройство, например, заслонка, может иметь только одну входную сетевую переменную - угол поворота. Есть устройства, поведение которых описывают десятки входных и выходных сетевых переменных.
На рисунке показано, как датчик температуры выдает сетевую переменную «температура». Комнатная панель управления передает в сеть температуру, которая желательна хозяину помещения. Система отопления, получая обе эти сетевые переменные, сравнивает их между собой и корректирует режим котла. При изучении подобной схемы всегда следует помнить, что это всего лишь виртуальное соединение, которое отражает логику адресации пакетов. Физическое соединение в виде проводов имеет совершенно иную конфигурацию. Эта схема отражает одно - программа датчика температуры передает свою выходную переменную на вход программы управления бойлером.
Итак, коммуникационный обмен данными между устройствами в сети происходит с использованием сетевых переменных (NV), которые определяются для каждого устройства. Сетевые переменные определяют информацию, которая может разделяться двумя или более устройствами. Одни устройства передают сведения в виде сетевых переменных (выходные сетевые переменные) (NVO), а другие устройства принимают эти сведения и действуют сообразно с принятой информацией (входные сетевые переменные) (NVI).
Каждая сетевая переменная, как и переменная в программировании, имеет свой тип. Есть тип температуры, влажности, давления, освещенности и еще сотни других типов. Существуют так называемые стандартные типы сетевых переменных - это типы, сертифицированные LonMark и употребляемые всеми изготовителями устройств. Стандартное описание типа определяет точку нулевого отсчета, шаг изменения величины, максимальное и минимальное значение.
Стандартные типы позволяют осуществлять обычный процесс типизации более простым и легким образом. В настоящее время в распоряжении имеются свыше 200 различных стандартных типов сетевых переменных. Стандартные типы сетевых переменных поставляются в пакетах, которые иногда называются ресурсными файлами, что позволяет легко их использовать инструментарием для управления сетью.
Пользовательские типы сетевых переменных определяются в соответствии со стандартом LonMark производителем оборудования. Они не включаются в ресурсные файлы LonMark, а должны получаться непосредственно от изготовителя. О том, что один из разработчиков создал новый тип сетевой переменной, другие разработчики не информированы, следовательно, не могут использовать его в своих разработках. Если же разработчик зарегистрирует свой тип переменной в LonMark, эта организация включит его в стандарт и разошлет всем остальным членам организации. В этом случае пользовательский тип станет стандартным.
Standard Network Variable Type (Стандартные Типы Сетевых Переменных) (SNVT)
- Обеспечивают хорошо определяемые структуры данных, которые облегчают процесс коммуникационного обмена между устройствами, изготавливаемыми различными производителями. Так, например, выход от переключателя лампочки, изготавливаемого одним производителем, полностью согласуется со входом, контролирующим лампочку, от другого изготовителя.
- Стандартные типы сетевых переменных разрабатываются организацией LonMark18, а затем публикуются в форме файлов.
- User-defined Network Variable Types (Пользовательские типы сетевых переменных или UNVT) могут разрабатываться любым производителем, если в этом возникает необходимость.
Сетевые переменные, используемые в устройствах, объединяются в функциональные блоки. Функциональные блоки - это завершенные программы, которые исполняют определенную функцию и имеют входные и выходные сетевые переменные.
Кроме сетевых переменных, работу устройства определяют конфигурационные свойства. Конфигурационные свойства - это внутренние переменные, которые влияют на алгоритм работы программы. Например, если мы установим конфигурационное свойство SCPT_invert в значение «1», то устройство будет инвертировать входную сетевую переменную. Установив конфигурационное свойство SCPT_delay в значение 10 сек., мы получим задержку срабатывания в 10 секунд. Некоторые конфигурационные свойства могут в значительной степени изменять работу устройства.
Данные передаются с устройства на устройство в виде пакетов, каждый из которых несет в себе информацию о значении сетевой переменной. Как только внешняя среда изменяется, устройство инициализирует процесс передачи. Информация кодируется в виде сетевой переменной, и затем формируется пакет информации в соответствии со структурой данной переменной. Пакет принимается тем устройством, которое связано путем адресации с передающим, и там этот пакет расшифровывается. В соответствии с полученными данными выполняется программа и осуществляется действие.
Как мы видим, весь процесс программирования сети сводится к двум операциям. Первая операция - это связывание сетевых переменных, то есть назначение маршрута их пересылки. Она обеспечивает соответствие точек контроля и регулирования. Вторая операция - определение конфигурационных свойств. За счет этой операции алгоритм работы настраивается на нужные параметры.
В графическом виде сетевая программа выглядит очень просто - это функциональные блоки, связанные между собой при помощи сетевых переменных. В приведенном примере имеются датчик движения, кнопка выключения света и две лампочки освещения. Лампочка DIO-1_Led1 загорается от кнопки управления независимо от присутствия человека. Лампочка DIO-2_Led1 загорается только в том случае, если нажата кнопка и одновременно обнаружено присутствие человека.
Так выглядит логическая топология сети, или сетевая программа. Данная диаграмма представляет собой только описание функционирования сети в наглядном графическом виде. Физически, конечно, никаких проводников между входами и выходами функциональных блоков не существует. Конфигурация реальных проводников определяется не логической, а физической топологией сети.
Протокол LonTalk
Одной из главных составляющих технологии LonWorks является открытый протокол LonTalk, описываемый 7-уровневой сетевой моделью взаимодействия открытых систем OSI.
Протокол LonTalk не опирается на определенную реализацию физического уровня и обеспечивает передачу данных по самым различным каналам связи с использованием разнообразных методов кодирования. Например, для витой пары используется метод дифференциального кодирования, а для работы на сегментах линий напряжения и на радиочастотах применяется FSK-модуляция.
Каждый узел LonWorks работает с физическим уровнем в одном из двух режимов - прямом или специальном. В прямом режиме информация передается в закодированном виде (например, с применением дифференциального манчестерского кодирования битов), а в специальном режиме данные передаются последовательно и без кодирования. Причем в обоих режимах каждый пакет сопровождается 16-битовым CRC-кодом. Это позволяет не учитывать при передаче битов конкретную реализацию среды передачи. При работе в прямом режиме контроль над скоростью передачи данных, длиной заголовков пакетов и кодированием берет на себя микроконтроллер Neuron. В специальном режиме эти задачи выполняет приемопередатчик, используемый для сопряжения различных физических протоколов.
На подуровне MAC в качестве средства борьбы с коллизиями (конфликтными ситуациями) используется предиктивный метод, основанный на упорядочении доступа к каналу с учетом предполагаемой нагрузки на канал. Передающий узел всегда получает доступ к каналу со случайной задержкой из диапазона от 0 до некоторой величины w, являющейся функцией числа незавершенных заданий, стоящих в очереди на выполнение. Разрешение коллизий на этом подуровне осуществляется по следующим правилам:
- Если коллизия возникла после двух последовательных попыток передачи пакета с приоритетом, то следующая отсылка пакета будет происходить без приоритета.
- При обнаружении коллизии передающий узел должен инкрементировать число незавершенных заданий.
- Если после 255 последовательных попыток передачи пакета возникает коллизия, то задание снимается.
Функции канального уровня используют простое кодирование кадров и несложный механизм обнаружения ошибок без восстановления за счет повторной передачи. Пропускная способность канала зависит от группы факторов: скорости передачи, времени доступа к среде передачи, размера пакетов и т.д.
Транспортный уровень обеспечивает достоверную передачу пакетов одному абоненту или группе абонентов. Для связи с сеансовым уровнем на транспортном уровне LonTalk реализована поддержка следующих функциональных запросов: послать телеграмму, принять телеграмму, подтверждение завершения передачи.
Сеансовый уровень отвечает за реализацию простого механизма запроса/ответа для доступа к удаленным серверам данных и обеспечивает выполнение всего одной функции - запрос/ответ. При этом любой запрос будет ожидать ответа. Функции запроса/ответа можно использовать для прикладных задач, работающих по принципу клиент-сервер. И на транспортном, и на сеансовом уровнях включен механизм контроля авторизованного доступа: запрос, не обладающий правом доступа к данным текущего узла, не будет обслужен.
Уровень приложений и предоставления данных создает основу для совместимости узлов протокола LonTalk. Одной из важных задач, решаемых на этом уровне, является передача чужеродных по отношению к LonTalk телеграмм. Такая функция используется для организации шлюзов между доменами, а также для перехода через LonTalk к другим протоколам. В LonWorks используется модифицированный произвольный : доступ с контролем несущей (CSMA/CD). Для уменьшения нагрузки на сеть используется событийный механизм обмена сообщениями, а для сокращения внутрисетевого трафика можно использовать сегментацию : сети при помощи маршрутизаторов, выпускаемых различными производителями.
Окончание - в следующем выпуске Sec.Ru.
Источник: Технологии защиты
По материалам методического пособия Учебного центра «АРМО» training@armo.ru