Содержание

Протокола обмена данными многокомпонентных дозаторов Гелиос

Протокол является АА55-совместимым.

Необходимо добавить в прошивку:
  • Возможность послать удаленно команду СТОП
  • Возможность послать удаленно команду ОТКРЫТЬ НИЖНЮЮ ЗАДВИЖКУ
  • Доступ ко всем параметрам (чтение и запись)

Версия 2

Поддерживается дозаторами:

    1. Запрос текущего состояния

->  55 <0x20+адр> <size> <CSH><CSL>

<-  <адр> <size> 
    <TaskMode>#2     - если = 0, то работа без состояния 4 (ожидание запуска после установки рецепта) 
    <CurStorNum>#1   - номер текущего компонента (0 - дозирование не идет, от 1 до N - номер питателя) 
    <RestStorNum>#1  - общее кол-во компонентов минус отвешенное кол-во компонентов (не актуальный параметр)
    <CurStorWes>#4   - если CurStorNum = 0, то текущий общий вес
                       если CurStorNum > 0, то набранный вес текущего компонента
    <CurStage>#1     - отладочный параметр
    <StageTime>#2    - отладочный параметр
    <IOState>#4      - отладочный параметр
    <Status>#1       - см. ниже
    <ErrorCode>#1    - описание кодов смотреть в сопроводительной документации весового блока
    <CSH><CSL>
				21 bytes

Status = 
0 – стоп (или дозирование завершено) 
1 – ожидание загрузки
2 – загрузка 
3 – ожидание выгрузки
4 – ожидание разрешения дозирования от ккорм (установка рецепта)
5 – авария
6 – приостановка выгрузки
7 – выгрузка



--------------------------------------------------------------------
    2. Запрос значений суммарных счетчиков

->  55 <0x40+адр> <size> <CntCount> <CSH><CSL>

<-  <адр> <size> 
    <N> - количество счётчиков в ответе, равное CntCount, либо реальное 
          кол-во питателей, если их кол-во меньше чем CntCount
    <StorNum1>#1 <Wes1>#4 … 
    <StorNumN>#1 <WesN>#4 
    <CSH><CSL>
    
    Значение каждого счетчика изменяется только завершению дозирования соответствующим шнеком.



--------------------------------------------------------------------
    3. Запрос текущего рецепта (то, что установлено на данный момент, а не сколько уже отвесили)

->  55 <0x60+адр> <size> <CSH><CSL>

<-  <адр> <size> 
    <N>  - реальное количество питателей устройства
    <StorNum1>#1 <Wes1>#4 … 
    <StorNumN>#1 <WesN>#4 
    <CSH><CSL>
							5 + 5*N bytes



--------------------------------------------------------------------
    4. Установка новой задачи

->  55 <0xA0+адр> <size> 00 03
    <N> 
    <StorNum1>#1 <Wes1>#4 … 
    <StorNumN>#1 <WesN>#4
    <CSH><CSL>
							8 + 5*N bytes

если принята:
<-  <адр> <size> 0x00 <CSH><CSL>

Если задача не принята, то:
<-  <адр> <size> 0xFF <CSH><CSL>



--------------------------------------------------------------------
    5. Команды на исполнение

->  55 <0xC0+адр> <size> 
    <Cmd>#1 
    <Value>#1 
    <CSH><CSL>

Cmd = 
0 – Старт цикла
6 – Запуск загрузки после установки рецепта

2 – старт загрузки
4 – старт разгрузки
8 – приостановка разгрузки


если принята:
<-  <адр> <size> 0x00 <CSH><CSL>

Если команда не принята, то:
<-  <адр> <size> 0xFF <CSH><CSL>



--------------------------------------------------------------------
StorNum – номер питателя (хранилища / бункера / места размещения ингредиента)
CurStorNum – номер текущего используемого питателя
RestStorNum – кол-во оставшихся питателей для завершения полного дозирования
CurStorWes – текущий вес набираемый CurStorNum питателем
StageNum – номер стадии
StageTime – время стадии
IOState – состояние входов / выходов дозатора
N – количество пар <StorNum><Kg>
Wes – циклический счетчик общиго веса, прошедшего через питатель
Size – кол-во байт в посылке, начиная со следующего и заканчивая мл.байтом контрольной суммы.

CntCount – количество счётчиков

В расчете CRC16 участвуют все байты посылки кроме ключа 55.

Для 2-х и 4-х байтовых значений: старший байт - первый, младший – последний.

Значения веса – целые числа. Единицы измерения – граммы.

Версия 1

Поддерживается дозаторами:

    1. Запрос текущего состояния

->  55 <0x20+адр> <size> <CSH><CSL>

<-  <адр> <size> 
    <TaskMode>#2     - если = 0, то работа без состояния 4 (ожидание запуска после установки рецепта) 
    <CurStorWes>#4   - набранный вес 
    <CurStage>#1     - отладочный параметр
    <StageTime>#2    - отладочный параметр
    <IOState>#2      - отладочный параметр
    <Status>#1       - см. ниже
    <ErrorCode>#1    - описание кодов смотреть в сопроводительной документации весового блока
    <CSH><CSL>
				17 bytes

Status = 
0 – стоп (или дозирование завершено) 
1 – ожидание загрузки
2 – загрузка 
3 – ожидание выгрузки
4 – ожидание разрешения дозирования от ккорм (установка рецепта)
5 – авария
7 – выгрузка

--------------------------------------------------------------------
    2. Команды на исполнение

->  55 <0xC0+адр> <size> 
    <Cmd>#1 
    <Value>#1 
    <CSH><CSL>

Cmd = 
0 – Старт цикла
6 – Запуск загрузки после установки рецепта

если принята:
<-  <адр> <size> 0x00 <CSH><CSL>

Если команда не принята, то:
<-  <адр> <size> 0xFF <CSH><CSL>

Остальные команды аналогичны версии 2.