﻿SSVC0059_V2 UART API version 1.5

Документация по синтаксису команды "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.*.

- "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 (аналогично для hearts - "тело", late_heads - "подголовники", tails - "хвосты", s_speed - оперативные параметры)
- Описание: Настройки скорости для "голов" (время открытого клапана и период цикла).
- Синтаксис:
  "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]
  

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]
