Это старая версия документа!
Содержание
Протокол верхнего уровня
Протокол взаимодействия верхнего уровня обеспечивает взаимодействие между пользовательским интерфейсом и материнской платой. Пользовательский интерфейс отправляет команды управления в материнскую плату контроллера, где находится модуль исполнения рецептов, обрабатывающий команды и выполняющий рецепты последовательно из сформированной очереди. Взаимодействие GUI и материнской платы осуществляется через Ethernet интерфейс протокол TPC/IP.
Структура посылки верхнего уровня.
| № байта | Определение | Значение | Описание | Примечание |
|---|---|---|---|---|
| 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 | … | 0x00…0xFF | ||
| N | Данные | 0x00…0xFF | ||
| N+3 | Stop байт | 0xA5 | Фиксированное значение |
Перечень команд протокола верхнего уровня.
| № П/П | ID команды | Описание |
|---|---|---|
| 1 | 0x1000 | Установки времени |
| 2 | 0x1001 | Выбор рецепта |
| 3 | 0x1002 | Выполнение рецепта |
Материнская плата
Модуль исполнения рецептов
Задача модуля разложить рецепт согласно таблицы рецептов на выполняемые шаги и перечень устройств задействованных в данном шаге.
Система моделирования
Целью моделирования является описание и отладка полного алгоритма работы анализатора в связке с пользовательским интерфейсом. Модель должна описывать все физические взаимосвязи работы устройства с целью моделирования реальных перемещений при отработке алгоритмов управления, а также моделировании нештатных ситуаций и отработка пользовательского интерфейса. В результате этой работы, на основании модели появляется возможность сгенерировать: 1.Набор и количество плат драйверов периферийных устройств и необходимые конфигурации драйверов для управления конкретным анализатором 2.Набор рецептов и настроек системы автоматизации, корректно работающей с ПО управления и реализующих полный функционал устройства 3.Схему подключения гидравлики и электроники внутри прибора. 4.В перспективе также появляется возможность генерирования модели микрофлуидного блока на основании гидравлической схемы, заложенной в модели, с учетом технологических особенностей используемых элементов (по аналогии с алгоритмами трассировки печатных плат по принципиальной схеме) Система моделирования должна иметь вложенную систему, основанную на описании элементарных (неделимых) элементов и сборок, описывающих взаимосвязи между составными частями. Деление на части должно быть разбито на модули функционально повторяющиеся в различных анализаторах. Такой подход позволит унифицировать разработку и дальнейшую автоматизацию новых устройств. Общая структура модели приведена ниже:
Пользовательский интерфейс отправляет команды управления в материнскую плату контроллера, где находится модуль исполнения рецептов, обрабатывающий команды и выполняющий рецепты последовательно из сформированной очереди. Во время исполнения рецепта генерируются команды переключения между состояниями виртуальных модулей, соответствующих функциональным подсистемам. Состояния каждой из подсистем описаны в виде элементарных перемещений конкретных исполнительных механизмов, хранящиеся в модулях драйверов и реализующих управляющие сигналы на элементарные исполнительные устройства. Эти сигналы в виде циклограмм импульсов на конкретных разъемах драйверов поступают в модель аналиазтора, которая принимает их на входе и моделирует движение всего устройства. Контроль правильности отработки системы производится при помощи контрольных виртуальных датчиков, определяющих положения и состояния конкретных элементов, модели анализатора (положение кареток, наличие и правильный тип жидкости в трубках и т.п.) и по ответным сигналам в пользовательском интерфейсе. После составления модели ее части (рецепты, конфигурация устройств, схема подключения контроллера и прочее) должны иметь возможность либо непосредственного исполнения в ПО реального контроллера или транслироваться в исполняемый промежуточный код (согласовывается на этапе разработки). Это позволит использовать результаты моделирования в реальных устройствах и существенно ускорить и упростить отладку.
Система моделирования подразделяется на следующие составляющие: Модель таблицы рецептов Задача модели разложить рецепт согласно таблицы рецептов на выполняемые шаги и перечень устройств задействованных в данном шаге. По сути модель таблицы рецептов представляет из себя TCP сервер который слушает заданный порт. Получив команду выполнения рецепта от GUI
Девайсы
Девайсом является конечное простое устройство имеющее набор конечных входных и выходных состояний изменяющихся по заложенному алгоритму.
Шаговый двигатель
входные внутренние параметры: количество шагов на оборот (например SRP = 200) входные внешние параметры: шаг (например step), направление движения (например dir 0,1,-1) выходные параметры (состояние): угол перемещения (например position) формула расчета состояния: position += direction * 360.0/SPR * step
Концевик
входные внутренние параметры: позиция упора (например limitPosition) входные внешние параметры: позиция (например position) выходные параметры (состояние): достижение предела (например lockedState = false) формула расчета состояния: if (position >= limitPosition) lockedState = true
Редуктор
входные внутренние параметры: передаточное число (например SRP = 400) входные внешние параметры: позиция (например positionIn) выходные параметры (состояние): угол перемещения (например positionOut) формула расчета состояния: positionOut = positionIn /SPR
Винтовая передача
входные внутренние параметры: передаточное число (например SRP = 400) входные внешние параметры: позиция (например positionIn) выходные параметры (состояние): угол перемещения (например positionOut) формула расчета состояния: positionOut = positionIn /SPR
Комбайны
Комбайном является устройство собранное из нескольких девайсов. На выходе комбайна формируется комбинированное состояние от состояний входящих в него девайсов.
Плоттер
В состав плоттера входят два двигателя, две винтовые передачи и четыре концевых ограничителя.
Шприц
data class SyringeModel(
val volume: Double, // объём шприца в мл val rodLength: Double, // длина поршня в мм val transmissionCoefficient: Double, // коэффициент передачи трансмиссии в мм/об/мин val rotationSpeed: Double // скорость вращения двигателя в об/мин
) {
fun currentVolume(): Double {
val rodDisplacement = transmissionCoefficient * rotationSpeed // перемещение поршня в мм
return volume * rodDisplacement / rodLength // текущий объём в мл
}
}
fun main() {
val syringe = SyringeModel(
volume = 50.0,
rodLength = 100.0,
transmissionCoefficient = 0.1,
rotationSpeed = 60.0
)
println("Текущий объём: ${syringe.currentVolume()} мл")
}
