Skip to content

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>
Максимальная длина строки - 300 символов, включая завершающие строку \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]