WikiDer > Очень простой протокол управления - Википедия

Very Simple Control Protocol - Wikipedia
Официальный логотип VSCP.png

В Очень простой протокол управления (VSCP) [1] это бесплатный протокол автоматизации, подходящий для всех видов задач автоматизации, где строительство- или же Домашняя автоматизация находится в центре внимания.

Его главное преимущество в том, что каждый VSCP-узел может работать полностью автономно, являясь частью распределенной сети других узлов.

VSCP не зависит от физического уровня (например, CAN-шина, Ethernet, RS-485, RS-232, MiWi), соединяющие отдельные узлы в шину сети автоматизации. На шине могут быть узлы, считывающие переключатели, управляющие освещение, жалюзи, окна или информационные дисплеи, трансляция физических измерений (например, температура, яркость, потребляемая мощность и т. д.), мультимедиа контроль, грабитель или же Пожарная тревога, так далее.

Существует подмножество протокола (уровень I), которое очень сильно адаптировано к CAN-шина и ресурсы ограничены микроконтроллеры. Уровень протокола II разработан для Ethernet (UDP, TCP и собственный Ethernet-тип. Raw-Ethernet) и беспроводные физические уровни. Все они используют одни и те же общие поля сообщений и структуру и могут быть подключены через шлюзы.

Мероприятие

VSCP основан на События. Каждый раз мероприятие происходит трансляция ко всем остальным узлам. Каждый узел в сети получит событие и решит, нужно ли это событие обрабатывать или нет.

Диаграмма обработки событий VSCP.png

Пример, приведенный на диаграмме, описывает нажатую кнопку. Это приведет к тому, что узел 1 отправит сообщение о событии на шину, информирующее всех остальных, что кнопка нажата. Узел 2 получает сообщение, но решает, что эта кнопка не должна запускать событие для узла 2. Узел 3 получает сообщение и решает, что эта кнопка должна вызвать включение лампы 2.

Может быть События для самых разных событий: событие может быть нажатием кнопки, срабатыванием датчика присутствия или заходом солнца. События также могут отправляться периодически, например, показания температуры каждую минуту. VSCP предопределяет множество событий, которые могут произойти. Эти события разделены на классы и типы. Следует ли обрабатывать полученное событие, определяется матрица решений короче DM. Также DM объясняется дальше.

Класс и тип события

События организованы в Классы. Класс - это набор событий, которые каким-то образом связаны друг с другом. Есть классы для ТРЕВОГА, ИЗМЕРЕНИЯ, КОНТРОЛЬ, ИНФОРМАЦИЯи т. д. В настоящее время в VSCP указано около 25 классов, но есть место и для многих других. 1. Каждый класс в свою очередь подразделяется на типы. Тип дополнительно определяет событие внутри класса. Например, события класса 20 (0x14) являются ИНФОРМАЦИЯ События. В этом классе есть подтип 1 (0x01) КНОПКА сигнализация нажатия кнопки. В этом же классе ИНФОРМАЦИИ также есть типы для сигнализации НА, ВЫКЛЮЧЕННЫЙ, НИЖЕ ПРЕДЕЛАи т. д. Так же и в классе измерения существуют типы, которые сигнализируют о температуре, токе, напряжении и т. д. После определения всех этих классов и типов узлы говорят на одном языке. Полный список предварительно определенных классов и типов можно найти в вики-странице VSCP.

Структура дейтаграммы событий VSCP

Широковещательные события содержат несколько полей, вместе образующих одну дейтаграмму VSCP. Как именно эти поля отображаются на физическом уровне, указывается для ряда протоколов физического уровня, таких как CAN, Ethernet, TCP и т. Д. Для других это еще не определено, но в целом несложно отобразить эти поля на физическом уровне. протокол уровня. Есть 2 уровни протокола VSCP, называемого УРОВЕНЬ I & УРОВЕНЬ II. По сути, это один и тот же протокол, но разные поля различаются по размеру.

Уровень I предназначен для работы на узлах с более ограниченными ресурсами, а поля определены немного более консервативно. Уровень I фактически является подмножеством уровня II, и при наличии соответствующего шлюза события могут проходить между сетью уровней I и II.

Уровень I дейтаграммы VSCP
ПриоритетЖестко закодированный идентификаторУЧЕБНЫЙ КЛАССТИПSenderNickIDDataSizeПолезная нагрузкаCRC
3 бита1 бит9 бит8 бит8 бит4 битаОт 0 до 8 байтов16 бит

Уровень II предназначен для работы на узлах, которые имеют небольшие ограничения ресурсов и могут легко справляться с сообщениями большего размера.

Уровень дейтаграммы VSCP II
ПриоритетЖестко закодированный идентификаторУЧЕБНЫЙ КЛАССТИПSenderGUIDDataSizeПолезная нагрузкаCRC
3 бита1 бит16 бит16 бит128 бит16 битОт 0 до 487 байт16 бит

Матрица решений

Класс VSCP / маска и фильтр событий

Когда события принимаются узлом, узел должен определить, нужно ли ему выполнять задачу на основе этого события. Это делается путем оценки матрица решений короче DM. Матрица DM состоит из ряда условий IF ... THEN ... Каждое такое условие IF / THEN называется линия а несколько строк составляют матрицу решений.

Класс и Тип входящего сообщения всегда оцениваются линией DM. Оценка класса и типа выполняется путем передачи класса / типа сначала через маску, а затем сравнения с фильтром. Этот метод позволяет нескольким классам / типам запускать допустимое условие для 1 строки DM. Другие условия для линии DM (SenderGUID, Zone, Subzone) оцениваются дополнительно. Если линия DM действительна, то ДЕЙСТВИЕ выполняется. Вместе с ДЕЙСТВИЕ существует Параметры ДЕЙСТВИЯ. Пример ДЕЙСТВИЯ: реле включения 6 с 6 будучи параметр действия.Какие именно ДЕЙСТВИЯ возможны для принимающего узла, определяется конструкцией самого узла. Разработчик прошивки должен определить, какие действия могут быть выполнены. После документирования возможного действия в файле MDF (см. Ниже) конфигурационное ПО будет знать, как выбрать это действие. DM можно изменить, установив соответствующие регистры конфигурации узла. Удобный способ сделать это - использовать конфигурационное ПО VSCPWorks.

DataPayload

Отправляемое событие также может содержать полезные данные. Содержание и организация этой полезной нагрузки зависят от класса и типа события. Например, событие класса 10 (измерение) и тип 6 (температура) будет содержать данные о температуре (с кодированием, определяемым байтом 0, градусами или Цельсием) в своей полезной нагрузке. А кнопка Событие будет содержать информацию о кнопке и кнопочной зоне / подзоне в своей информационной нагрузке. Для каждого класса / типа форматирование данных определяется в спецификации, подробности см. В вики.

Зона / подзона

Некоторые (довольно многие) события содержат поле зона и поле подзона в их dataapayload. Эта функция присутствует, чтобы сделать группировка возможных узлов. Например, мы могли определить, что все кнопки, управляющие определенной лампой, являются частью одной группы. Это упрощает DM для определенных сценариев. Вместо того, чтобы использовать одну линию DM в качестве узла лампы для каждой кнопки (1 линия на кнопку: кнопка IF x, затем лампа включения), мы могли бы иметь 1 строку DM, только говорящую ЕСЛИ (совпадение зоны) ТО загорается лампа. Включение нескольких коммутаторов узлов в группу осуществляется путем настройки узлов, микропрограммное обеспечение узла будет поддерживать эту функцию.

Настройка узла VSCP

Узел необходимо соответствующим образом настроить, прежде чем он будет выполнять свою функцию. Каждый узел VSCP предоставляет свой собственный набор регистров конфигурации, адаптированный для его функции. Узел кнопки может иметь некоторую возможность настроить зону / подзоны, к которым принадлежат кнопки. Узел температуры может иметь некоторую возможность устанавливать значения триггера. Также настройка DM является частью настройки узла.

Регистры конфигурации

Регистровое пространство VSCP

Настройка узла выполняется путем записи в регистры. Каждый узел (уровня I) предоставляет доступ к 256 регистрам. Старшие 128 регистров зарезервированы для основных функций VSCP. В этих 128 регистрах мы находим такие элементы, как GUID узла, псевдоним, MDF и регистр подкачки. Нижние 128 регистров свободны для использования в конкретных приложениях. Если 128 регистров недостаточно, существует возможность 16-битного пейджинга. Это позволяет использовать в приложениях 8-битные регистры 65536 x 128. Запись / чтение этих регистров выполняется с использованием КЛАСС 0 События. Класс 0 события Функциональность протокола VSCP сообщения, предназначенные для настройки и управления узлами.

Файл описания модуля

Отслеживание того, какой регистр служит для какой цели, может быть проблемой, особенно для регистров, специфичных для приложения. Но именно здесь на помощь приходит файл описания модуля или MDF. Файл MDF - это машиночитаемый XML-файл, описывающий функцию каждого регистра модуля, дающий параметры конфигурации для этого регистра и т. Д. Этот файл используется конфигурационным программным обеспечением (VSCPWorks), чтобы показать параметры конфигурации, специфичные для указанного модуля. Файл MDF может храниться на самом узле и извлекаться оттуда с помощью VSCPWorks, но чаще всего файл MDF представляет собой XML-файл, размещенный где-то на веб-сервере. Затем узлу нужно просто сообщить VSCPWorks, где (URL) можно найти XML-файл. Этот URL-адрес присутствует в зарезервированных регистрах VSCP 0xE0-0xFF.

VSCPWorks

Скриншот VSCPworks

VSCPworks - это инструмент на базе ПК (Linux и Windows) для настройки и управления узлами. VSCPWorks позволяет читать / устанавливать регистры, представляя эти регистры в удобочитаемом формате, автоматически анализируя файл MDF. VSCPWorks также предоставляет мастера для установки матрицы решений.

VSCP и друзья

Если протокол VSCP VSCP и друзья используется для обозначения программного API, схемы и уровня абстракции, построенного на основе VSCP. VSCP и друзья позволяют создавать многоуровневые абстракции устаревших устройств с помощью драйверов, которые делают их похожими на устройства VSCP. Это означает, что любое устройство можно контролировать и контролировать с помощью инфраструктуры VSCP & Friends. VSCP и друзья решает четыре общих Интернет вещей и M2M проблемы

  • Единое обнаружение и идентификация устройства.
  • Единая конфигурация устройства.
  • Автономная / распределенная функциональность устройства.
  • Единый способ обновления / поддержки прошивки устройства.

Рекомендации

  1. ^ Хедман, Аке. "ЯП". Спецификация VSCP. Grodans Paradis AB. Получено 4 сентября 2017.

внешняя ссылка