====== Протокола обмена данными многокомпонентных дозаторов Гелиос ====== Протокол является АА55-совместимым. Необходимо добавить в прошивку: * Возможность послать удаленно команду СТОП * Возможность послать удаленно команду ОТКРЫТЬ НИЖНЮЮ ЗАДВИЖКУ * Доступ ко всем параметрам (чтение и запись) ===== Версия 2 ===== Поддерживается дозаторами: * Dzr * DzrGelios10 * DzrGelios3rzg * DzrGelios6 1. Запрос текущего состояния -> 55 <0x20+адр> <- <адр> #2 - если = 0, то работа без состояния 4 (ожидание запуска после установки рецепта) #1 - номер текущего компонента (0 - дозирование не идет, от 1 до N - номер питателя) #1 - общее кол-во компонентов минус отвешенное кол-во компонентов (не актуальный параметр) #4 - если CurStorNum = 0, то текущий общий вес если CurStorNum > 0, то набранный вес текущего компонента #1 - отладочный параметр #2 - отладочный параметр #4 - отладочный параметр #1 - см. ниже #1 - описание кодов смотреть в сопроводительной документации весового блока 21 bytes Status = 0 – стоп (или дозирование завершено) 1 – ожидание загрузки 2 – загрузка 3 – ожидание выгрузки 4 – ожидание разрешения дозирования от ккорм (установка рецепта) 5 – авария 6 – приостановка выгрузки 7 – выгрузка -------------------------------------------------------------------- 2. Запрос значений суммарных счетчиков -> 55 <0x40+адр> <- <адр> - количество счётчиков в ответе, равное CntCount, либо реальное кол-во питателей, если их кол-во меньше чем CntCount #1 #4 … #1 #4 Значение каждого счетчика изменяется только завершению дозирования соответствующим шнеком. -------------------------------------------------------------------- 3. Запрос текущего рецепта (то, что установлено на данный момент, а не сколько уже отвесили) -> 55 <0x60+адр> <- <адр> - реальное количество питателей устройства #1 #4 … #1 #4 5 + 5*N bytes -------------------------------------------------------------------- 4. Установка новой задачи -> 55 <0xA0+адр> 00 03 #1 #4 … #1 #4 8 + 5*N bytes если принята: <- <адр> 0x00 Если задача не принята, то: <- <адр> 0xFF -------------------------------------------------------------------- 5. Команды на исполнение -> 55 <0xC0+адр> #1 #1 Cmd = 0 – Старт цикла 6 – Запуск загрузки после установки рецепта 2 – старт загрузки 4 – старт разгрузки 8 – приостановка разгрузки если принята: <- <адр> 0x00 Если команда не принята, то: <- <адр> 0xFF -------------------------------------------------------------------- StorNum – номер питателя (хранилища / бункера / места размещения ингредиента) CurStorNum – номер текущего используемого питателя RestStorNum – кол-во оставшихся питателей для завершения полного дозирования CurStorWes – текущий вес набираемый CurStorNum питателем StageNum – номер стадии StageTime – время стадии IOState – состояние входов / выходов дозатора N – количество пар Wes – циклический счетчик общиго веса, прошедшего через питатель Size – кол-во байт в посылке, начиная со следующего и заканчивая мл.байтом контрольной суммы. CntCount – количество счётчиков В расчете CRC16 участвуют все байты посылки кроме ключа 55. Для 2-х и 4-х байтовых значений: старший байт - первый, младший – последний. Значения веса – целые числа. Единицы измерения – граммы. ===== Версия 1 ===== Поддерживается дозаторами: * DzrGeliosRazgr (маслодозатор) 1. Запрос текущего состояния -> 55 <0x20+адр> <- <адр> #2 - если = 0, то работа без состояния 4 (ожидание запуска после установки рецепта) #4 - набранный вес #1 - отладочный параметр #2 - отладочный параметр #2 - отладочный параметр #1 - см. ниже #1 - описание кодов смотреть в сопроводительной документации весового блока 17 bytes Status = 0 – стоп (или дозирование завершено) 1 – ожидание загрузки 2 – загрузка 3 – ожидание выгрузки 4 – ожидание разрешения дозирования от ккорм (установка рецепта) 5 – авария 7 – выгрузка -------------------------------------------------------------------- 2. Команды на исполнение -> 55 <0xC0+адр> #1 #1 Cmd = 0 – Старт цикла 6 – Запуск загрузки после установки рецепта если принята: <- <адр> 0x00 Если команда не принята, то: <- <адр> 0xFF **Остальные команды аналогичны версии 2.**