Инструменты пользователя

Инструменты сайта


start

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
start [2024/10/22 20:03] – Imported from DOCX administratorstart [2024/11/28 18:38] (текущий) – [Материнская плата] administrator
Строка 1: Строка 1:
-====== Общая структура пакетов ======+====== Структура программного взаимодействия ======
  
-=====   =====+В устройстве выделяется 3 уровня программного обеспечения: 
 +  * верхний (пользовательский интерфейс оператора "прибора"); 
 +  * основной (программное обеспечение основного вычислительного модуля); 
 +  * аппаратный (программное обеспечение модуля обладающего своим MCU);
  
-|  № байта   Определение   Значение   Описание  |  Примечание  | +===== Пользовательский интерфейс оператора (верхний уровень) ===== 
-   Start байт   0x02  | Фиксированное значение |    +Данный уровень программного обеспечения предназначен для взаимодействия оператора с прибором.  
-   Количество байт данных   1…255  | Количество байт данных c 1-го байта по N-ый байт    +Он обеспечивает: 
- 2   ID команды   0x00…0xFF    Младший байт  +  * авторизацию пользователя в системе; 
- 3   :::   0x00…0xFF  :::  Старший байт  +  * логирование действий пользователя; 
- 4   Данные    0x00…0xFF      +  * отправки команды на выполнение рецепта; 
- …   …   …      +  * логирование действий элементов системы при выполнении рецепта; 
-   Данные    0x00…0xFF      +  * остановку выполнения рецепта; 
- N+3   Stop байт   0xA5  | Фиксированное значение |    | +  * логирование результатов выполнения рецепта; 
-|    |    |    |  |    |+  * отображение в удобном для пользователя виде результатов выполнения рецепта (таблицы, графики и т.п.). 
 +С точки зрения физического уровня пользовательский интерфейс (далее GUI) взаимодействует с основным вычислительным модулем (далее материнская плата) посредством USB, RS-232/485, Ethernet (LAN, Wi-Fi, GSM), Bluetooth. GUI отправляет команды управления (номера рецептов) в материнскую плату, где находится модуль исполнения рецептов, обрабатывающий команды и выполняющий рецепты последовательно из сформированной очереди.   
 +  
 +Структура посылки верхнего уровня.   
 +^ № байта ^      Определение       ^ Значение  ^            Описание                ^ Примечание  ^    
 +| 0       | Start байт             | 0x02      | Фиксированное значение                         |  
 +| 1       | ID устройства          | 1…255                                        |             | 
 +| 2       | Количество байт данных | 1…255     | Количество байт данных c 1-го по N |             
 +3       | ID команды             | 0x00…0xFF |                                    | Младший байт| 
 +4       ID команды             | 0x00…0xFF |                                    | Старший байт| 
 +5       | Данные                 | 0x00…0xFF |                                                
 +3       ...                    0x000xFF                                                
 +| N       | Данные                 | 0x00…0xFF |                                                
 +| N+3     | Stop байт              | 0xA5      | Фиксированное значение                         |
  
  
-===== Структура посылки =====+Перечень команд протокола верхнего уровня. 
 +^ № П/П ^ ID команды ^ Описание          ^ 
 +| 1     | 0x1000     | Установка времени | 
 +| 2     | 0x1001     | Запустить рецепт 
 +| 3     | 0x1002     | Выполнение рецепта| 
 +| 4     | 0x1003     | Остановить рецепт | 
 +| 5     | 0x1004     | Результаты рецепта|
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |  0x02  | Фиксированное значение |    | 
-|  1  |  Количество байт данных  |  1…255  | Количество байт данных c 1-го байта по N-ый байт |    | 
-|  2  |  ID устройства  |  0x00…0xFF  |  |    | 
-|  3  |  Тип сообщения    0x00…0xFF  |  |    | 
-|      4 |  …\\ Данные    …  |  |    | 
-|    |  :::  |    |  |    | 
-|  N  |  :::  |  0x00…0xFF  |  |    | 
-|  N+3  |  Stop байт  |  0xA5  | Фиксированное значение |    | 
  
  
-===== Перечень  ===== 
  
-|  №  |  ID команды    Описание  | 
-|  1  |  0x1000  |  Команда установки времени и даты  | 
-|  2  |  0x1001  |  Выбор рецепта  | 
-|  3  |  0x1002  |  Старт выполнения программы  | 
-|  4  |    |    | 
-|  5  |    |    | 
-|  6  |    |    | 
-|  7  |    |    | 
-|  8  |    |    | 
-|  9  |    |    | 
  
 +===== ПО материнской платы (основной уровень) =====
 +Под основным уровнем программного обеспечения подразумевается программа выполняемая в основном вычислительном модуле. 
 +Задачи данного программы уровня:
 +  * Выполнение основной логике прибора (Модуль исполнения рецептов). В данном случае в приборе реализованы алгоритмы всех возможных рецептом. Каждый рецепт имей свой идентификатор доступный пользователя ПК. Так же данная программа хранит в себе все тайминги для выполнения рецептов и ключевые значения для проверки правильности его выполнения. В данном уровне кода реализованы все алгоритм сценариев отработки ошибок. Что имеется в виду — ошибка аппаратного уровня (модуля) может повлиять на работу не только самого модуля но и других узлов входящих в состав прибора. По этому основной уровень программного обеспечению все цело и полностью владеет информацией критериях ошибок от каждого из модулей и алгоритма поведения всего прибора при возникновении такой ошибки в одном из модулей.
 +  * Возможность конфигурирования (Конфигурационный модуль). Основной код программы должен обеспечить получение от пользователя конфигурационных данных своего узла. Разбить эти данные на соответствующие конфигурационные параметры и отправить их соответствующему модулю аппаратного уровня. В случае отсутствие и аппаратного модуля (узла) своего собственного MCU (данный модуль подключен на прямую к вычислительному модулю по одному из физических интерфейсов SPI, I2C, UART  и является ведомой периферией для вычислительного модуля), вычислительный модуль повторяет алгоритм хранения и применения параметров как был описано для аппаратный уровня с одним уточнение что данные параметры хранятся во FLASH памяти вычислительного модуля. Данная часть программного обеспечения знает абсолютно все о физических интерфейсах взаимодействия с периферийными модулями.
 +  * Взаимодействие с GUI (Модуль взаимодействия с GIU) производится через отправку следующих сообщений:
  
-===== Перечень типов сообщений протокола нижнего уровня =====+ a. Применить свойство. 
 + б. Выполнить команду. 
 + в. Вычитать состояние 
 + г. Отправить сообщение 
 +Для такого взаимодействия доступны следующие физические интерфейсы (USB, RS-232/485, Ethernet (LAN, Wi-Fi, GSM), Bluetooth). 
  
-|  №  |  ID команды    Описание  | +==== Модуль исполнения рецептов ==== 
-|  1  |  0xAA  |  Команда  | +Задача модуля разложить рецепт согласно таблицы рецептов на выполняемые шаги и перечень устройств задействованных в данном шаге.
-|  2  |  0xBB  |  Сообщение  | +
-|  3  |  0xCC  |  Ошибка  |+
  
 +==== Конфигурационный модуль ====
  
-Команда установки времени (0x1000)+==== Модуль взаимодействия с GIU ====
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  13  |  |    | 
-|  2  |  ID команды  |  0x00  |  |  Младший байт  | 
-|  3  |  :::  |  0x10  | ::: |  Старший байт  | 
-|  4  |  Устанавливаемое время  |  …  |  |    | 
-|  …  |  :::  |  …  |  |    | 
-|  10  |  :::  |  …  |  |    | 
-|  11  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  12  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  13  |  Stop байт  |    |  |    | 
  
  
-Формат упаковки времени 
  
-|  № байта   Порядковый номер бит  |  Определение   Значение   Примечание  | +===== Аппаратный уровень ===== 
-|  4  |  0-7  |  Миллисекунды   0x02  |  Младший байт  | +Данный уровень относится к модулям, которые имеют свой MCU и взаимодействуют с основным вычислительный модулем. Для данного программного обеспечения характеры следующие свойства: 
-|  5  |  8-15  |  :::  |  1…255  |  Старший байт  | +1. Самодостаточность: Данное ПО запускается на модуле сразу после подачи питания. Для данных устройств характерно наличие встроенной FLASH памяти хранящей базовые конфигурационные настройки модуля. После подачи питания и вычитывание базовых настроек модуль переходит в выполнению внутреннего алгоритма с мониторингом своих критических ошибок. В зависимости от физического интерфейса связи с вычислительным модулем сообщение о наличие ошибки может выполнять в виде посылки сообщения, либо выставления флага, который будет вычитан вычислительном модулем во время следующего сеанса связи с данным устройством. При этом устройство само может отрабатывать заложенные в него аварийные алгоритмы (требует обсуждения). 
-|  6  |  16-21  |  Минуты   0-60  |    | +2.  ЗависимоеПри всей своей самодостаточности устройство полностью зависимо от команд вычислительного модуля. По этим подразумевается следующеепосле подачи питания, считывания и применения конфигурации по умолчанию устройство (модуль), переходит в бесконечный цикл ожидания команды от вычислительного модуля с мониторингом своих внутренних состояний. От вычислительного модуля доступны следующие типы команд: 
-|  :::  |  22-23  |  Резерв не используется   -  |  -  | +  * изменить параметр конфигурации периферии модуля или все конфигурацию целиком 
- 7  |  24-28в  |  Часы  |  0-24  |    | +  * вычитать текущую конфигурацию периферии устройства или всего устройства целиком. 
-|  :::  |  29-30  |  Резерв не используется   -  |  -  | +  * выполнить команду (для каждого устройства набор команд и их структура будет индивидуальным). Так как набор параметров у каждого устройства фиксированное число то будет реализован следующий алгоритм хранения этих параметров во FLASH памяти: в определенную область при производстве будет зашиваться базовая конфигурация которая будет защищена от записи (золотая конфигурация). Оставшаяся память будет разделена на равные сегменты в которых будет храниться конфигурация которую будет применять вычислительный модуль (пользователь). При подачи питания модуль будет проверять наличие пользовательской конфигурации в случае ее отсутствия будет производится вычитка (золотой конфигурации). 
-|  :::  |  31  |  Метка летнего зимнего времени\\ 1 –летнее     |    | +3. уникальность. Каждый модуль будет иметь свой уникальный идентификатор (расширение на будущее). 
-|  8  |  32-36  |  День месяца   1-31  |    | +(отработка данного подхода на модуле управления шаговыми двигателями)
-|  :::  |  37-39  |  День недели     |    | +
-|  9  |  40-44  |  Месяц   1-12  |    | +
- :::  |  45-47  |  Резерв не используется     |    | +
-|  10  |  48-54  |  Год   0-127  |    | +
-|  :::  |  55  |  Резерв не используется     |    |+
  
  
-**День недели**  
  
-Понедельник - 1 
  
-Вторник - 2 
  
-Среда - 3 
  
-Четверг - 4 
  
-Пятница - 5 
  
-Суббота - 6 
  
-Воскресенье – 7 
  
-Ответ на команду установки времени 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  11  |  |    | 
-|  2  |  Текущая дата и время на приборе  |  …  | Секунды |    | 
-|  3  |  :::  |  …  | Минуты |    | 
-|  4  |  :::  |  …  | Час |    | 
-|  5  |  :::  |    | День недели |    | 
-|  6  |  :::  |    | Число |    | 
-|  7  |  :::  |    | Месяц |    | 
-|  8  |  :::  |    | Год (количество лет от 2023) |    | 
-|  9  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  10  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  11  |  Stop байт  |    |  |    | 
  
  
-Команда выбора рецепта (0x1001) 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  7  |  |    | 
-|  2  |  ID команды  |  0x01  |  |  Младший байт  | 
-|  3  |  :::  |  0x10  | ::: |  Старший байт  | 
-|  4  |  № рецепта  |  0…255  |  |    | 
-|  5  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  6  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  7  |  Stop байт  |    |  |    | 
  
  
-Ответ на команду выбора рецепта 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  5  |  |    | 
-|  2  |  № выбранного рецепта  |  …  |  |    | 
-|  3  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  4  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  5  |  Stop байт  |    |  |    | 
  
  
-STEP_DRIVER 
  
-STEPDRIVE_SET_DIRECTION (0x2000) 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  0x08  |  |    | 
-|  2  |  ID команды  |  0x00  |  |  Младший байт  | 
-|  3  |  :::  |  0x20  | ::: |  Старший байт  | 
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | 
-|  5  |  Направление движения  |  0x22\\ 0x44  | 0x22 – Движение в прямом направлении\\ 0x44 – Движение в обратном направлении |    | 
-|  6  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  7  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  8  |  Stop байт  |    |  |    | 
  
  
-STEPDRIVE_SET_SPEED(0x2001) 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  0x0B  |  |    | 
-|  2  |  ID команды  |  0x01  |  |  Младший байт  | 
-|  3  |  :::  |  0x20  | ::: |  Старший байт  | 
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | 
-|  5  |  Скорость\\ uint32_t \\ мм/с  |    | Значение скорости в миллиметрах в секунду |    | 
-|  6  |  :::  |    | ::: |    | 
-|  7  |  :::  |    | ::: |    | 
-|  8  |  :::  |    | ::: |    | 
-|  9  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  10  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  11  |  Stop байт  |    |  |    | 
  
  
-STEPDRIVE_SET_PARAMETERS (0x2002) 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  0x0С  |  |    | 
-|  2  |  ID команды  |  0x02  |  |  Младший байт  | 
-|  3  |  :::  |  0x20  | ::: |  Старший байт  | 
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | 
-|  5  |  Направление движения  |  0x22\\ 0x44  | 0x22 – Движение в прямом направлении\\ 0x44 – Движение в обратном направлении |    | 
-|  6  |  Скорость\\ uint32_t \\ мм/с  |    | Значение скорости в миллиметрах в секунду |    | 
-|  7  |  :::  |    | ::: |    | 
-|  8  |  :::  |    | ::: |    | 
-|  9  |  :::  |    | ::: |    | 
-|  10  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  11  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  12  |  Stop байт  |    |  |    | 
  
  
-ENABLE_ENCODER_CONTROLL (0x2003)+====== Система моделирования ====== 
 +Целью моделирования является описание и отладка полного алгоритма работы анализатора в связке с пользовательским интерфейсом. Модель должна описывать все физические взаимосвязи работы устройства с целью моделирования реальных перемещений при отработке алгоритмов управления, а также моделировании нештатных ситуаций и отработка пользовательского интерфейса. В результате этой работы, на основании модели появляется возможность сгенерировать: 
 +1.Набор и количество плат драйверов периферийных устройств и необходимые конфигурации драйверов для управления конкретным анализатором 
 +2.Набор рецептов и настроек системы автоматизации, корректно работающей с ПО управления и реализующих полный функционал устройства 
 +3.Схему подключения гидравлики и электроники внутри прибора. 
 +4.В перспективе также появляется возможность генерирования модели микрофлуидного блока на основании гидравлической схемы, заложенной в модели, с учетом технологических особенностей используемых элементов (по аналогии с алгоритмами трассировки печатных плат по принципиальной схеме) 
 +Система моделирования должна иметь вложенную систему, основанную на описании элементарных (неделимых) элементов и сборок, описывающих взаимосвязи между составными частями. Деление на части должно быть разбито на модули функционально повторяющиеся в различных анализаторах. Такой подход позволит унифицировать разработку и дальнейшую автоматизацию новых устройств. Общая структура модели приведена ниже: 
 + {{ :структура_модели.jpg?nolink |}} 
 +Пользовательский интерфейс отправляет команды управления в материнскую плату контроллера, где находится модуль исполнения рецептов, обрабатывающий команды и выполняющий рецепты последовательно из сформированной очереди. Во время исполнения рецепта генерируются команды переключения между состояниями виртуальных модулей, соответствующих функциональным подсистемам. Состояния каждой из подсистем описаны в виде элементарных перемещений конкретных исполнительных механизмов, хранящиеся в модулях драйверов и реализующих управляющие сигналы на элементарные исполнительные устройства. Эти сигналы в виде циклограмм импульсов на конкретных разъемах драйверов поступают в модель аналиазтора, которая принимает их на входе и моделирует движение всего устройства. Контроль правильности отработки системы производится при помощи контрольных виртуальных датчиков, определяющих положения и состояния конкретных элементов, модели анализатора (положение кареток, наличие и правильный тип жидкости в трубках и т.п.) и по ответным сигналам в пользовательском интерфейсе. 
 +После составления модели ее части (рецепты, конфигурация устройств, схема подключения контроллера и прочее) должны иметь возможность либо непосредственного исполнения в ПО реального контроллера или транслироваться в исполняемый промежуточный код (согласовывается на этапе разработки). Это позволит использовать результаты моделирования в реальных устройствах и существенно ускорить и упростить отладку.
  
-|  № байта   Определение  |  Значение  |  Описание   Примечание  | +Система моделирования подразделяется на следующие составляющие: 
-|  0  |  Start байт  |    |  |    | +Модель таблицы рецептов 
-|  1  |  Количество байт данных  |  0x08  |  |    | +Задача модели разложить рецепт согласно таблицы рецептов на выполняемые шаги и перечень устройств задействованных в данном шаге. По сути модель таблицы рецептов представляет из себя TCP сервер который слушает заданный порт. Получив команду выполнения рецепта от GUI 
-|  2  |  ID команды  |  0x03  |  |  Младший байт  | +
-|  3  |  :::  |  0x20  | ::: |  Старший байт  | +
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | +
-|  5  |  Использование\\ энкодера   0x11\\ 0x55  | 0x11 – Энкодер используется\\ 0x44 – Энкодер не активен (параметр по умолчанию) |    | +
-|  6  |  Контрольная сумма   0x00…0xFF  |  |  Младший байт +
-|  7  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | +
-|  8  |  Stop байт     |  |    |+
  
 +===== Девайсы =====
 + Девайсом является конечное простое устройство имеющее набор конечных входных и выходных состояний изменяющихся по заложенному алгоритму.  
  
-STEPDRIVE_COMAND_INIT (0x2100)+==== Материнская плата ==== 
 +Девайс материнская плата представляет из себя устройство которое слушает заданный порт (при физическом исполнении к материнской плате подключены драйвера по различным интерфейсам Ethernet, RS-232, RS-485, CAN, USB и т.п.). Структура МП должна содержать интерфейс по которому к ней будут подключатся девайсы (GUI пользователя и драйвера устройств) и входные данные. В случае модели в качестве порта будет выступать TCP сокет (IP адрес и номер порта) который ждет клиентов. В качестве клиентов выступаю драйвера устройств и GUI пользователя. Структура взаимодействия МП с клиентами изображена на схеме. 
 +==== Драйвер ==== 
 +Драйвер обеспечивает управление   
 +{{ :структура.jpg?nolink |}} 
 +=== Описание структуры взаимодействия === 
 +По каналу 1 (от GUI) на материнскую плату приходит номер рецепта. Материнская плата получив рецепт раскладывает его на под рецепты согласно таблице рецептов. То есть разбивает рецепт на устройства задействованные в нем и порядок положений для каждого устройства для выполнения заданного рецепта. Так же на материнской плате хранится логика положений согласно которой происходит построение последовательности движений по положениям (пример: двигатель не может перейти из положения 1 в положение 2 пока не откроется клапан, а закрытие клапана возможно только при положении 1 двигателя). Далее по каналу 2 МП посылает на драйвер положение в которое должен перейти его девайс. В свою очередь драйвер содержит в себе таблицу положений согласно которой происходит перевод девайса из одно положения в другое. Драйвер получив номер положения отправляет по каналу 3 действия которые должен выполнить девайс что бы занят требуемое положение. В ответ девайс шлет на драйвер положение в котором он сейчас находиться при получении команды и при достижении требуемого положения. Либо ошибку, если не получилось достичь требуемого положения. Драйвер транслирует на МП положение в котором находится девайс.    
  
-Команда первичной инициализации+==== Шаговый двигатель ==== 
 +входные внутренние параметры: количество шагов на оборот (например SRP = 200) входные внешние параметры: шаг (например step), направление движения (например dir 0,1,-1) выходные параметры (состояние): угол перемещения (например position) формула расчета состояния: position += direction * 360.0/SPR * step 
  
-|  № байта  |  Определение   Значение   Описание  |  Примечание  | +==== Концевик ==== 
-|  0  |  Start байт  |    |  |    | +входные внутренние параметры: позиция упора (например limitPosition) входные внешние параметрыпозиция (например position) выходные параметры (состояние): достижение предела (например lockedState = false) формула расчета состояния: if (position >= limitPosition) lockedState = true
-|  1  |  Количество байт данных  |  0x07  |  |    | +
-|  2  |  ID команды  |  0x00  |  |  Младший байт  | +
-|  3  |  ::  0x21  | ::: |  Старший байт +
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | +
-|  5  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт +
-|  6  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | +
-|  7  |  Stop байт     |  |    |+
  
 +==== Редуктор ====
  
-STEPDRIVE_COMAND_ HOME (0x2101)+входные внутренние параметры: передаточное число (например SRP = 400) 
 +входные внешние параметры: позиция (например positionIn) 
 +выходные параметры (состояние): угол перемещения (например positionOut) формула расчета состояния: positionOut = positionIn /SPR
  
-Команда возвращение двигателя в нулевую позицию+==== Винтовая передача ====
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | +public class Leadscrew( 
-|  0  |  Start байт    |  |    | +    context: Context, 
-|  1  |  Количество байт данных  |  0x07  |  |    +    public val leverageNumericalValue<Meters>, 
-|  2  |  ID команды  |  0x01  |  |  Младший байт +ModelConstructor(context) {
-|  3  |  :::  |  0x21  | ::: |  Старший байт  | +
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | +
-|  5  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт +
-|  6  |  :::  |  0x00…0xFF  | ::: |  Старший байт +
-|  7  |  Stop байт  |    |  |    |+
  
 +    public fun torqueToForce(
 +        stateOfTorque: DeviceState<NumericalValue<NewtonsMeters>>,
 +    ): DeviceState<NumericalValue<Newtons>> = DeviceState.map(stateOfTorque) { torque ->
 +        NumericalValue(torque.value / leverage.value )
 +    }
  
-STEPDRIVE_COMAND_ GO_STEPS (0x2102)+    public fun degreesToMeters( 
 +        stateOfAngle: DeviceState<NumericalValue<Degrees>>, 
 +        offset: NumericalValue<Meters> = NumericalValue(0), 
 +    ): DeviceState<NumericalValue<Meters>> = DeviceState.map(stateOfAngle) { degrees -> 
 +        offset + NumericalValue(degrees.value * 2 * PI / 360 * leverage.value ) 
 +    }
  
-Команда пройти расстояние в мм+}
  
-|  № байта  |  Определение  |  Значение   Описание   Примечание  | +===== Комбайны ===== 
-|  0  |  Start байт  |    |  |    | +Комбайном является устройство собранное из нескольких девайсов. На выходе комбайна формируется комбинированное состояние от состояний входящих в него девайсов. 
-|  1  |  Количество байт данных   0x07  |  |    | +
-|  2  |  ID команды  |  0x02  |  |  Младший байт  | +
-|  3  |  :::  |  0x21  | ::: |  Старший байт  | +
-|  4  |  ID двигателя   |  0 -255  | Внутренний индификатор двигателя |    | +
-|  5  |  Расстояние необходимое пройти\\ uint32_t  |    | Необходимое расстояние в мм необходимое пройти двигателю |    | +
-|  6  |  :::  |    | ::: |    | +
-|  7  |  :::  |    | ::: |    | +
-|  8  |  :::  |    | ::: |    | +
-|  5  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт +
-|  6  |  :::  |  0x00…0xFF  | ::: |  Старший байт +
-|  7  |  Stop байт  |    |  |    |+
  
 +==== Плоттер ====
 +В состав плоттера входят два двигателя, две винтовые передачи и четыре концевых ограничителя. На выходе плоттера комбинированное состояние положения обоих двигателей.  
  
-STEPDRIVE_COMAND_JOGGE (0x2103)+==== Шприц ==== 
 +Движение поршня шприца осуществляется путем воздействия двигателя. 
 +Входными параметры поршня: объём шприца в мл (volume), длина поршня в мм (rodLength), коэффициент передачи трансмиссии в мм/об/мин (transmissionCoefficient) и скорость вращения двигателя в об/мин (rotationSpeed). 
 +Выходные параметры текущий объём в мл. Для расчёта необходимо вычислить перемещение поршня в мм (rodDisplacement = transmissionCoefficient * rotationSpeed). Текущий объём = volume * rodDisplacement / rodLength
  
-Однократная команда движение на заданное количество шагов (количество может быть как конфигурируемым там и зашитым внутри прошивки) 
  
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  0x07  |  |    | 
-|  2  |  ID команды  |  0x03  |  |  Младший байт  | 
-|  3  |  :::  |  0x21  | ::: |  Старший байт  | 
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | 
-|  5  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  6  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  7  |  Stop байт  |    |  |    | 
- 
- 
-STEPDRIVE_COMAND_STOP (0x2104) 
- 
-Однократная команда остановки действия применяется к командам 2100 - 2102 
- 
-|  № байта  |  Определение  |  Значение  |  Описание  |  Примечание  | 
-|  0  |  Start байт  |    |  |    | 
-|  1  |  Количество байт данных  |  0x07  |  |    | 
-|  2  |  ID команды  |  0x04  |  |  Младший байт  | 
-|  3  |  :::  |  0x21  | ::: |  Старший байт  | 
-|  4  |  ID двигателя    0 -255  | Внутренний индификатор двигателя |    | 
-|  5  |  Контрольная сумма  |  0x00…0xFF  |  |  Младший байт  | 
-|  6  |  :::  |  0x00…0xFF  | ::: |  Старший байт  | 
-|  7  |  Stop байт  |    |  |    | 
  
  
start.1729627412.txt.gz · Последнее изменение: 2024/10/22 20:03 — administrator