Очень простой протокол управления

редактировать
Официальный логотип VSCP.png

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

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

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

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

Содержание
  • 1 Событие
  • 2 Класс и тип события
  • 3 Структура дейтаграммы события VSCP
  • 4 Матрица решений
  • 5 DataPayload
  • 6 Зона / подзона
  • 7 Настройка VSCP узел
  • 8 Регистры конфигурации
  • 9 Файл описания модуля
  • 10 VSCPWorks
  • 11 VSCP Friends
  • 12 Ссылки
  • 13 Внешние ссылки
Событие

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

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

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

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

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

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

Уровень II дейтаграммы VSCP
ПриоритетЖестко заданный идентификаторКЛАССТИПSenderGUIDDataSizeПолезная нагрузкаCRC
3 бита1 бит16 бит16 бит128 бит16 битот 0 до 487 байтов16 бит
Матрица принятия решений
VSCP class / event mask filter

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

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

DataPayload

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

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

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

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

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

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

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

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

  • Единое обнаружение и идентификация устройства.
  • Единая конфигурация устройства.
  • Автономный / распределенный функциональность устройства.
  • Единый способ обновления / поддержки прошивки устройства.
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-18 11:53:08
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте