Это старая версия документа!
Управление платами удаленного ввода вывода
Плата удаленного ввода вывода подключается к головному контроллеру по 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 входах
}