Протокол простого интерфейса датчика
Протокол Simple Sensor Interface ( SSI ) — это простой протокол связи, предназначенный для передачи данных между компьютерами или пользовательскими терминалами и интеллектуальными датчиками.
Протокол SSI был разработан совместно компаниями Nokia , Vaisala , Suunto , Ionific, Mermit и Университетом Оулу . В настоящее время SSI разрабатывается в рамках проекта Mimosa Project, входящего в Рамочную программу Европейского Союза по исследованиям и технологическому развитию .
Протокол SSI используется в двухточечной связи через UART и сетевых приложениях nanoIP. SSI также предоставляет датчики опроса и потоковую передачу данных датчиков. Для меток датчика RFID SSI указывает карту памяти для данных датчика.
Критериями разработки протокола SSI являются:
- общего назначения
- просто – минимальные накладные расходы
- небольшой размер на стороне сервера (сенсора)
Пример реализации протокола SSI для MSP430 микроконтроллеров будет опубликован с открытым исходным кодом Nokia в августе 2006 года.
Структура сообщения SSI [ править ]
Сообщение SSI состоит из 2-байтового заголовка и n -байтовой полезной нагрузки. Заголовок состоит из однобайтового адреса (подстановочный знак — «?», 0x3F в ASCII ) и однобайтового типа сообщения/команды. Различные возможные значения типа сообщения/команды представлены в базе команд SSI v1.2.
База команд SSI v1.2 [ править ]
Командный байт | Направление | Описание |
---|---|---|
В, д (0x51, 0x71) | С-> | Запрос |
А, а (0x41, 0x61) | <-S | Ответ на запрос |
С,с (0x43, 0x63) | С-> | Откройте для себя датчики |
Н, н (0x4E, 0x6E) | <-S | Ответ на обнаружение |
З,з (0x5A, 0x7A) | С-> | Сброс сенсорного устройства |
Г,г (0x47, 0x67) | С-> | Получите данные конфигурации для датчика. |
Х, х (0x58, 0x78) | <-S | Ответ данных конфигурации |
С, с (0x53, 0x73) | С-> | Установите данные конфигурации для датчика |
Р,р (0x52, 0x72) | С-> | Запросить данные датчика |
V,v (0x56, 0x76) | <-S | Ответ данных датчика |
Д, д (0x44, 0x64) | <-S | Ответ датчика с однобайтовым полем состояния |
М, м (0x4D, 0x6D) | <-S | Реакция датчика со многими точками данных |
О, о (0x4F, 0x6F) | С-> | Создать наблюдатель датчика |
И, и (0x59, 0x79) | <-S | Наблюдатель создан |
К,к (0x4B, 0x6B) | <-> | Удаление наблюдателя/прослушивателя датчика |
У,у (0x55, 0x75) | <-> | Наблюдатель/слушатель закончил |
Л,л (0x4C, 0x6C) | <-S | Запрос прослушивателя датчика |
Дж,дж (0x4A, 0x6A) | С-> | Прослушиватель датчиков создан. |
Е, е (0x45, 0x65) | <-> | Ошибка |
Ф,ф (0x46, 0x66) | <-> | Бесплатные данные для индивидуальных целей |
Группа команд:
- Вопрос – запрос
- А – ответ на запрос
- C – обнаружение датчика
- N – ответ обнаружения
- Z – сброс
- G – получить конфигурацию датчика
- S – установка конфигурации датчика
используются для поиска и настройки сенсорных блоков, использующих протокол SSI.
Группа команд:
- R – запрос данных датчика
- V – data response
- D – ответ данных с полем статуса
используются для чтения данных датчиков нечасто.
Для целей потоковой передачи данных определены следующие команды:
- O – создать датчик-наблюдатель
- Y – наблюдатель создан
- K – удалить наблюдателя
- U – наблюдатель закончил
- L – запрос прослушивателя датчика
- J – создан прослушиватель датчика.
- V – data response
- M – ответ данных со многими точками данных
SSI «точка-точка» [ править ]
Обмен сообщениями «точка-точка» с помощью SSI может осуществляться с помощью SSI/UART. Сообщение SSI UART состоит из 3-байтового заголовка UART, сообщения SSI в качестве полезной нагрузки и дополнительной циклического избыточного контрольной суммы кода . Использование контрольной суммы определяется типом сообщения/команды SSI, при этом команды в нижнем регистре указывают на использование CRC. Заголовок состоит из начального байта (0xFE), 2-байтовой (общей) длины сообщения и 2-байтовой длины побитового отрицания , помогающей идентифицировать начало кадра.
Сетевой SSI [ править ]
Сеть SSI в изменяющейся среде осуществляется с использованием nanoIP. В типичном случае использования SSI отдельное сообщение не имеет значения, поэтому nanoUDP (упрощенный UDP, в качестве формата сообщения используется определенный nanoIP). Если важны отдельные сообщения, можно использовать nanoTCP, поскольку он обеспечивает управление потоком и повторную передачу за счет размера сообщения и увеличения сетевого трафика.
Сообщение nanoUDP состоит из 5-байтового заголовка nanoUDP, n -байтовой полезной нагрузки сообщения и дополнительной 2-байтовой контрольной суммы CRC. Заголовок состоит из одного байта протокола, 2-байтовой длины сообщения (общая длина, включая заголовок и CRC), 1-байтового порта источника и 1-байтового номера порта назначения. Номер порта назначения должен быть 0x28 для сообщений SSI.
История версий [ править ]
- 0,1 14 марта 2003 г.
- 0,2 29 апреля 2003 г.
- 0,3 20 мая 2003 г.
- 0,4 2 октября 2003 г.
- 0.5 5 декабря 2003 г., несовместимо с предыдущим
- 0,6 3 ноября 2004 г.
- 0,7 22 декабря 2004 г.
- 0,8 14 января 2005 г.
- 1.0 11 апреля 2005 г.
- 1.1 27 октября 2005 г.
- 1.2 27 мая 2006 г., несовместимо с предыдущими версиями.