Управление платами удаленного ввода вывода

Плата удаленного ввода вывода подключается к головному контроллеру по RS-232, отправка сообщений осуществляется по транспортному протоколу рассмотренному в отдельной статье.

Данная статья описывает порядок запросов и команд, обрабатываемых платой.

Для упаковки данных используется MessagePack. Ниже форматы запросов и ответов описаны в JSON для наглядности.

Все Запросы/ответы имеют поле t: uint16. Старший взведенный бит означает что тело содержит ответ на соответствующий запрос. Тип ответа вычисляется как 0x8000 XOR (тип запроса)

Версия прошивки

Запрос отправляется головным контроллером с целью определения версии прошивки и/или наличия связи и готовности устройства.

Запрос:

{
   "t": 0x0000       // uint16, тип запроса/ответа
}

Ответ (отправляется вместе с ACK):

{
   "t": 0x8000,      // uint16, тип запроса/ответа
   "v": "1.0.0",     // ASCII   строка с версией
}

Замыкание реле (выхода)

Запрос отправляется головным контроллером.

Запрос:

{
   "t":    0x0001,       // uint16, тип запроса/ответа
   "n":    0x00,         // uint8,  номер выхода (начиная с нуля)
   "ton":  0x00000000,   // uint32, длительность замыкания, в миллисекундах
   "toff": 0x00000000,   // uint32, длительность размыкания после замыкания, в миллисекундах
   "cimp": 0x00,         // uint8,  число импульсов (повторов циклов замыкания/размыкания)
}

Ответ (отправляется вместе с ACK):

{
   "t": 0x8001       // uint16, тип запроса/ответа
}

По завершении управления сигналов не отправляется.

Получение сигнала на входе

Отправляется платой

Запрос:

{
   "t":    0x0002,       // uint16, тип запроса/ответа
   "n":    0x00,         // uint8,  номер входа
}

Ответ (отправляется вместе с ACK):

{
   "t": 0x8002       // uint16, тип запроса/ответа
}

Настройка входов

Отправляется головным контроллером

Запрос:

{
   "t":    0x0002,       // uint16, тип запроса/ответа
   "n":    0x00,         // uint8,  номер входа
   "v":    0x00,         // uint8,  0 - срабатывает по замыканию
                         //         1 - срабатывает по размыканию
}

Ответ (отправляется вместе с ACK):

{
   "t": 0x8002       // uint16, тип запроса/ответа
}

Опрос входов

Запрос отправляется головным контроллером с целью определения состояния входов устройства.

Запрос:

{
   "t": 0x0003       // uint16, тип запроса/ответа
}

Ответ (отправляется вместе с ACK):

{
   "t": 0x8003,      // uint16, тип запроса/ответа
   "n": 0b00000000,  // uint8,  битовая маска с состоянием входов - 1 сигнальное состояние - 0 нет
                     //         0b00000101 - говорит о наличии сигнала на 1 и 3 входах
   
}

Смотри так же

  • public/doc/hw/expand-io/requests.txt
  • Последнее изменение: 13:38 22/11/2023
  • ili