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

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


start

Это старая версия документа!


Протокол верхнего уровня

Протокол взаимодействия верхнего уровня обеспечивает взаимодействие между пользовательским интерфейсом и материнской платой. Пользовательский интерфейс отправляет команды управления в материнскую плату контроллера, где находится модуль исполнения рецептов, обрабатывающий команды и выполняющий рецепты последовательно из сформированной очереди. Взаимодействие 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()} мл")

}

start.1721637767.txt.gz · Последнее изменение: 2024/07/22 08:42 — administrator