SSVC0059_V2 UART API Documentation
Version 1.6
Документация UART API для SSVC0059_V2 Данный документ описывает формат обмена данными по UART с контроллером SSVC0059_V2, включая управляющие команды (запросы) и телеметрию (сообщения).
Общий формат обмена
Запросы (Команды) Запрос состоит из заглавных латинских букв, цифр и знака подчеркивания. Запрос должен заканчиваться символом \n или \r.
Ответы и Телеметрия (Сообщения)
Все ответы и сообщения телеметрии передаются в формате JSON в одной строке, заканчивающейся символом \n
1. Управляющие команды (Requests)
1.1 Общая структура запроса
Запрос состоит из заглавных латинских букв, цифр и знака подчеркивания. Запросы заканчиваются символом \n или \r.
Ответы передаются в формате JSON в одной строке, заканчивающейся символом \n.
Запроы SET и STATUS дополнительно принимают параметры запроса.
1.2 Общая структура ответа
Ответы на команды имеют следующую структуру:
type: "response"— Тип сообщения.request- Полученная команда в кавычках.result- "OK" — при успешном выполнении команды, "unknown" - неизвестная команда.
В зависимости от типа запроса, в ответе могут содержаться дополнительные поля, специфичные запросу
2. Запросы и их описание
2.1 AT
Возвращает ответ об успешности соединения по UART
- Пример запроса
AT
- Пример ответа
{
"type": "response",
"request": "AT",
"result": "OK"
}
2.2 NEXT
Переключает на следующий этап ректификации. Команда аналогична нажатию кнопки Далее/Выход на этапах Головы / Тело / Хвосты. Доступна только в процессе ректификации. На последнем этапе завершает ректификацию и выводит SSVC в дежурный режим
- Пример запроса
NEXT
- Пример ответа
{
"type": "response",
"request": "NEXT",
"result": "OK"
}
2.3 PAUSE
Вход в режим ручного управления клапаном текущего этапа, клапан закрыт. Команда доступна только в процессе ректификации.
- Пример запроса
PAUSE
- Пример ответа
{
"type": "response",
"request": "PAUSE",
"result": "OK"
}
2.4 RESUME
Выход из режима ручного управления клапаном. Команда доступна только в процессе ректификации и в режиме паузы.
- Пример запроса
RESUME
- Пример ответа
{
"type": "response",
"request": "RESUME",
"result": "OK"
}
2.5 STOP
Остановка процесса ректификации на этапах Головы, Тело, Хвосты.
- Пример запроса
STOP
- Пример ответа
{
"type": "response",
"request": "STOP",
"result": "OK"
}
2.6 START
Запуск ректификации, работает только из дежурного режима.
Для работы необходимо включение опции Удаленный пуск на третьем экране стартовых настроек
- Пример запроса
START
- Пример ответа
{
"type": "response",
"request": "START",
"result": "OK"
}
2.7 STATUS
Отображение информации на экране контроллера в дежурном режиме. Принимается строка 15 символов.
- Пример запроса
STATUS 192.168.100.200
- Пример ответа
{
"type": "response",
"request": "STATUS",
"result": "OK"
}
2.8 VERSION
Возвращает версию прошивки, версию API и наименование производителя
- Пример запроса
STATUS 192.168.100.200
- Пример ответа
{
"type": "response",
"request": "VERSION",
"result": "OK",
"manufacturer": "SmartModule",
"model": "SSVC0059_V2",
"version": "2.2.37",
"api": "1.0"
}
2.9 SET
Команда "SET" используется для задания различных настроек. Команда работает во всех режимах, когда контроллер принимает запросы по UART. Команда "SET" имеет следующий общий формат:
SET <параметр1>=<значение1>,<параметр2>=<значение2>,...,<параметрN>=<значениеN>
Перечень принимаемых параметров (все поддерживаемые версиями прошивок 2.2. и 2.3.):
"heads=[<время_включения>,<период>]"- Скорость отбора голов."hearts=[<время_включения>,<период>]"- Скорость отбора тела."hyst=<значение>"- Гистерезис."decrement=<значение>"- Декремент."formula=[0|1]"- Формула."tank_mmhg=<значение>"- Давление в кубе относительно атмосферного в миллиметрах ртутного столба (мм рт. ст.)."heads_timer=<время>"- Время отбора голов."hearts_timer=<время>"- Таймер фиксации температуры отбора тела."start_delay=<время>"- Отложенный пуск."hearts_finish_temp=<температура>"- Температура, при которой завершается отбор тела."formula_start_temp=<температура>"- Начальная температура для формулы."valve_bw=[<скорость1>, <скорость2>, <скорость3>]"- Пропускные способности клапанов в мл/ч."tails=[<значение1>, <значение2>]"- Скорость отбора хвостов. Актуально в firmware 2.2.*.-
"tails_temp=<температура>"- Температура завершения отбора хвостов. Актуально в firmware 2.2.*. -
"late_heads=[<время_включения>,<период>]"- Скорость отбора подголовников. Актуально в firmware 2.3.*. -
"late_heads_timer=<значение>"- Время отбора подголовников, с. Значение должно кратно 300 с (5 минут). Актуально в firmware 2.3.*. -
"parallel=[<время_включения>,<период>]"- Параллельный отбор клапаном 3. Актуально в firmware 2.3.*. "parallel_v1=[<время_включения>,<период>]"- Параллельный отбор клапаном 1. Актуально в firmware 2.2.*.-
"parallel_v3=[[<температура>,<время_включения>,<период>], [<температура>,<время_включения>,<период>], [<температура>,<время_включения>,<период>], [<температура>,<время_включения>,<период>]]"- Параллельный отбор клапаном 3. Актуально в firmware 2.2.*. -
"release_speed=<значение>"- Скорость сброса (время открытого клапана). Актуально с опцией "Сброс и снижение". "release_timer=<время>"- Время сброса, с. Актуально с опцией "Сброс и снижение"."heads_final=<значение>"- Скорость отбора к окончанию голов. Актуально с опцией "Сброс и снижение".
Оперативные параметры текущего этапа
"s_temp=<температура>"- Температура, °C. Число с одним знаком после запятой. Максимальное значение - 110.0"s_hyst=<гистерезис>"- Гистерезис, °C. Число с двумя знаками после запятой. Минимальное значение - 0.06, максимальное - 50.06"s_speed=[<время_включения>,<период>]"- Скорость отбора. Синтаксис и органичения аналогичные как для "heads"."s_decrement=<декремент>"- Декремент, %. Целое число. Максимальное значение - 100."s_timer=<время>"- Таймер, с. Целое число. Максимальное значение - 86400.
Синтаксис параметров.
heads, late_heads, hearts, tails, s_speed, parallel_v1 - скорость отбора
heads - головы;
hearts - тело;
late_heads - подголовники;
tails - "хвосты";
s_speed - оперативные параметры;
parallel_v1 - параллельный отбор клапаном 1. Актуально в firmware 2.2.*.
parallel - параллельный отбор клапаном 3. Актуально в firmware 2.3.*.
- Описание: Настройки скорости отбора (время открытого клапана и период цикла).
- Синтаксис:
"heads=[<время_включения>,<период>]" "<время_включения>": вещественное число с одной десятичной цифрой (например, "99.0")."<период>": целое число.- Ограничения:
- время_включения ≤ 99.9
- период ≤ 999
- время_включения ≤ период
- Пример:
heads=[99.0,100]
hyst
- Описание: Устанавливает значение гистерезиса
- Синтаксис:
"hyst=<значение>" "<значение>"— число с двумя знаками после запятой (например, 0.25).- Ограничения:
- Значение должно быть положительным числом но не более 50.0.
- Пример:
"hyst=0.25"
decrement
- Описание: Устанавливает величину в процентах, на которую будет уменьшаться скорость отбора тела при "зелете" температуры.
- Синтаксис:
"decrement=<значение>" "<значение>"— целое число (например, 20).- Ограничения:
- Значение должно быть целым положительным числом от 0 до 100 включительно.
- Пример:
"decrement=20"
formula
- Описание: Использовать или нет формулу для снижения скорости отбора тела в зависимости от температуры на ТД2.
- Синтаксис:
"formula=[0|1]" "[0|1]"— 0 - не использовать формулу, 1 - использовать.- Пример:
"formula=1"
tank_mmhg
- Описание: Устанавливает давление в кубе в миллиметрах ртутного столба (мм рт. ст.) относительно атмосферного.
- Синтаксис:
"tank_mmhg=<значение>" "<значение>"— целое число (например, 30).- Ограничения:
- Значение должно быть положительным не более 50.
- Пример:
"tank_mmhg=50"
heads_timer
- Описание: Таймер отбора голов (время в секундах).
- Синтаксис:
"heads_timer=<время>" "<время>"— целое число (например, 36000).- Ограничения:
- Значение должно быть положительным не более 86400, кратное 300 (соответствует 5 минутам).
- Пример:
"heads_timer=36000"
late_heads_timer
- Описание: Таймер отбора подголовников (время в секундах).
- Синтаксис:
"late_heads_timer=<время>" "<время>"— целое число (например, 36000).- Ограничения:
- Значение должно быть положительным не более 86400, кратное 300 (соответствует 5 минутам).
- Пример:
"late_heads_timer=36000"
hearts_timer
- Описание: Таймер фиксации температуры отбора тела, мин
- Синтаксис:
"hearts_timer=<время>" "<время>"— целое число (например, 10).- Ограничения:
- Значение должно быть положительным не более 30.
- Пример:
"hearts_timer=30"
tails_temp
- Описание: Устанавливает завершения отбора хвостов, в градусах Цельсия.
- Синтаксис:
"tails_temp=<температура>" "<температура>"— число с плавающей точкой (например, 109.9).- Ограничения:
- Температура должна быть положительным числом не более 110.0.
- Пример:
"tails_temp=109.9"
start_delay
- Описание: Отложенный пуск (время в секундах).
- Синтаксис:
"start_delay=<время>" "<время>"— целое число (например, 6000).- Ограничения:
- Значение должно быть положительным не более 18000.
- Пример:
"start_delay=18000"
hearts_finish_temp
- Описание: Температура на ТД2, при которой завершается отбор тела, в градусах Цельсия.
- Синтаксис:
"hearts_finish_temp=<температура>" "<температура>"— число с плавающей точкой (например, 93.0).- Ограничения:
- Температура должна быть положительным числом не более 110.0.
- Пример:
"hearts_finish_temp=93.0"
formula_start_temp
- Описание: Начальная температура для начала работы формулы, в градусах Цельсия.
- Синтаксис:
"formula_start_temp=<температура>" "<температура>"— число с плавающей точкой (например, 84.0).- Ограничения:
- Температура должна быть положительным числом не более 100.0 и не менее 84.0.
- Пример:
"formula_start_temp=84.0"
valve_bw
- Описание: Устанавливает пропускные способности клапанов в мл/ч.
- Синтаксис:
valve_bw=[<скорость1>,<скорость2>,<скорость3>] - Каждая скорость
"<скоростьN>"— целое число. - Ограничения:
- Все скорости ≤ 20000.
- Пример:
valve_bw=[10000,20000,15000]
parallel_v3
- Описание: Устанавливает параметры параллельного отбора клапаном 3 на этапе отбора тела. Акутально для прошивок 2.2.*
- Синтаксис:
parallel_v3=[[%2d.%1d,%2d.%1d,%3d],[%2d.%1d,%2d.%1d,%3d],[%2d.%1d,%2d.%1d,%3d],[%2d.%1d,%2d.%1d,%3d]]Задается 4 диапазона. В каждом диапазоне передаются три начения "<температура>"- начало диапазона, вещественное число с одной десятичной цифрой (например, "84.0"). (Первый диапазон всегда начинается с 0.0. Полученное значение температуры в первом диапазоне игнорируется)."<время_включения>": вещественное число с одной десятичной цифрой (например, "99.0")."<период>": целое число.- Ограничения:
- время_включения < период
- температура ≤ 99.9
- время_включения ≤ 99.9
- период ≤ 999
- Пример:
SET parallel_v3=[[0.0,0.4,10],[81.1,0.5,50],[86.2,0.6,50],[96.3,1.1,100]]
release_speed
- Описание: Скорость сброса (время открытого клапана), с.
- Синтаксис:
"release_speed"=<время_включения> "<время_включения>": вещественное число с одной десятичной цифрой (например, "99.0").- Ограничения:
- время_включения ≤ 99.9
- Примечание: Значение должно быть меньше периода этапа отбора голов. Данный контроль возлагается на передающую сторону.
- Пример:
release_speed=99.0
release_timer
- Описание: Время сброса, с. Включается опция "Сброс и снижение" при значении больше 0.
- Синтаксис:
"release_timer=<время>" "<время>"— целое число (например, 600).- Ограничения:
- Значение должно быть положительным и не более 1200 (20 минут).
- Пример:
release_timer=600
heads_final
- Описание: Скорость отбора к окончанию голов, с. Включается опция "Сброс и снижение" при любом знаении.
- Синтаксис:
"heads_final"=<время_включения> "<время_включения>": вещественное число с одной десятичной цифрой (например, "10.5").- Ограничения:
- время_включения ≤ 99.9
- Примечание: Значение должно быть меньше периода этапа отбора голов. Данный контроль возлагается на передающую сторону.
- Пример:
heads_final=10.5
Проверка на ошибки:
-
При неверном формате или несоответствии ограничений возвращается сообщение об ошибке: Пример:
{"type": "response","request": "SET heads=[1,2]","result": "error: heads=[1,2]"} -
Для неизвестных параметров возвращается сообщение об ошибке: Пример:
{"type": "response","request": "ABCD","result": "unknown"}
Примеры корректных команд
SET heads=[30.0,180],hearts=[2.5,5],formula=1
SET heads=[60.0,360],hearts=[2.0,4],hyst=0.19,formula=0
SET heads=[20.5,245],hearts=[1.5,3],hyst=0.25,decrement=20,formula=1,tank_mmhg=50,heads_timer=36000,hearts_timer=30,start_delay=18000,hearts_finish_temp=93.0,formula_start_temp=84.0,valve_bw=[10000,11000,12000]
SET formula=1
SET formula=0
SET tank_mmhg=50
SET heads_timer=36000
SET heads_timer=86400
SET hearts_timer=30
SET start_delay=18000
SET hearts_finish_temp=110.0
SET formula_start_temp=84.0
SET formula_start_temp=100.0
SET valve_bw=[10000,11000,12000]
Примеры команд с ошибками
SET heads=[60.0,360],hearts=[2.0,4],hyst=0.19,decrement=30,formula=2
SET heads=[100.0,180],hearts=[2.5,5],formula=1
SET heads=[99.9,1000],hearts=[2.5,5]
SET heads=[99.1,99],hearts=[2.5,5],formula=1
SET hyst=50.01
SET decrement=101
SET tank_mmhg=51
SET heads_timer=86401
SET hearts_timer=31
SET start_delay=18001
SET hearts_finish_temp=110.1
SET formula_start_temp=83.9
SET formula_start_temp=100.1
SET valve_bw=[10000,11000,21000]