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

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


start

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


Структура программного взаимодействия

В устройстве выделяется 3 уровня программного обеспечения:

  • верхний (пользовательский интерфейс оператора «прибора»);
  • основной (программное обеспечение основного вычислительного модуля);
  • аппаратный (программное обеспечение модуля обладающего своим MCU);

Пользовательский интерфейс оператора (верхний уровень)

Данный уровень программного обеспечения предназначен для взаимодействия оператора с прибором. Он обеспечивает:

  • авторизацию пользователя в системе;
  • логирование действий пользователя;
  • отправки команды на выполнение рецепта;
  • логирование действий элементов системы при выполнении рецепта;
  • остановку выполнения рецепта;
  • логирование результатов выполнения рецепта;
  • отображение в удобном для пользователя виде результатов выполнения рецепта (таблицы, графики и т.п.).

С точки зрения физического уровня пользовательский интерфейс (далее GUI) взаимодействует с основным вычислительным модулем (далее материнская плата) посредством Ethernet по протоколу TCP. 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 0x00…0xFF
N Данные 0x00…0xFF
N+3 Stop байт 0xA5 Фиксированное значение

Перечень команд протокола верхнего уровня.

№ П/П ID команды Описание
1 0x1000 Установка времени
2 0x1001 Запустить рецепт
3 0x1002 Выполнение рецепта
4 0x1003 Остановить рецепт
5 0x1004 Результаты рецепта

Материнская плата

Под основным уровнем программного обеспечения подразумевается программа выполняемая по основном вычислительном модуле. Задачи данного программы уровня: - Выполнение основной логике прибора. В данном случае в приборе реализованы алгоритмы всех возможных рецептом. Каждый рецепт имей свой идентификатор доступный пользователя ПК. Так же данная программа хранит в себе все тайминги для выполнения рецептов и ключевые значения для проверки правильности его выполнения. В данном уровне кода реализованы все алгоритм сценариев отработки ошибок. Что имеется в виду — ошибка аппаратного уровня (модуля) может повлиять на работу не только самого модуля но и других узлов входящих в состав прибора. По этому основной уровень программного обеспечению все цело и полностью владеет информацией критериях ошибок от каждого из модулей и алгоритма поведения всего прибора при возникновении такой ошибки в одном из модулей. - Возможность конкурирования. Основной код программы должен обеспечить получение от пользователя конфигурационных данных своего узла. Разбить эти данные на соответствующие конфигурационные параметры и отправить их соответствующему модулю аппаратного уровня. В случае отсутствие и аппаратного модуля (узла) своего собственного MCU (данный модуль подключен на прямую к вычислительному модулю по одному из физических интерфейсов SPI, I2C, UART и является ведомой периферией для вычислительного модуля), вычислительный модуль повторяет алгоритм хранения и применения параметров как был описано для аппаратный уровня с одним уточнение что данные параметры хранятся во FLASH памяти вычислительного модуля. Данная часть программного обеспечения знает абсолютно все о физических интерфейсах взаимодействия с периферийными модулями. - Взаимодействие с пользователем (ПК) производится через отправку следующих сообщений:

a.	Применить свойство.
б.	Выполнить команду.
в.	Вычитать состояние
г.	Отправить сообщение

Для такого взаимодействия доступны следующие физические интерфейсы (USB, RS-232/485, Ethernet (LAN, Wi-Fi, GSM), Bluetooth).

Модуль исполнения рецептов

Задача модуля разложить рецепт согласно таблицы рецептов на выполняемые шаги и перечень устройств задействованных в данном шаге.

Система моделирования

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

Винтовая передача

public class Leadscrew(

  context: Context,
  public val leverage: NumericalValue<Meters>,

) : ModelConstructor(context) {

  public fun torqueToForce(
      stateOfTorque: DeviceState<NumericalValue<NewtonsMeters>>,
  ): DeviceState<NumericalValue<Newtons>> = DeviceState.map(stateOfTorque) { torque ->
      NumericalValue(torque.value / leverage.value )
  }
  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 )
  }

}

Комбайны

Комбайном является устройство собранное из нескольких девайсов. На выходе комбайна формируется комбинированное состояние от состояний входящих в него девайсов.

Плоттер

В состав плоттера входят два двигателя, две винтовые передачи и четыре концевых ограничителя. На выходе плоттера комбинированное состояние положения обоих двигателей.

Шприц

Движение поршня шприца осуществляется путем воздействия двигателя. Входными параметры поршня: объём шприца в мл (volume), длина поршня в мм (rodLength), коэффициент передачи трансмиссии в мм/об/мин (transmissionCoefficient) и скорость вращения двигателя в об/мин (rotationSpeed). Выходные параметры текущий объём в мл. Для расчёта необходимо вычислить перемещение поршня в мм (rodDisplacement = transmissionCoefficient * rotationSpeed). Текущий объём = volume * rodDisplacement / rodLength

start.1729623579.txt.gz · Последнее изменение: 2024/10/22 18:59 — administrator