Описание работы комплекса
Диаскан
Комплекс предназначен для сбора, хранения и доступа к данным УЗ
диагностики.
Комплекс представляет собой набор нескольких компонентов, работающих
независимо, и обменивающихся командами и данными. Взаимодействие
осуществляется через протокол gRPC.
Состав комплекса
Комплекс Диаскан состоит из нескольких основных
компонентов:
- service_control сервис управления, он
знает как работать со всем остальными компонентами, и является по сути
интерфейсом управления комплексом.
- service_receiver сервис обработки
данных из
Сырых данных, собирает данные по сети, проверяет
их, выделает данные каналов, транслирует А-сканы и собранные блоки
данных.
- service_storage сервис записи и
хранения данных.
- start_registration утилита
управление регистрацией.
viewer утилита просмотра данных
(Диаскоп).
и вспомогательных:
Для обмена данных между компонентами используется протокол
gRPC.
Схема взаимодействия компонентов комплекса:

Сервисы
service_control
Сервис управления, он знает как работать со всем остальными
компонентами, и является по сути интерфейсом управления
комплексом.
Позволяет:
- Запускать/останавливать регистрацию данных.
- Предоставляет доступ к записанным данным.
- Предоставляет доступ к служебной информации и статусу
комплекса.
Конфигурация сервиса хранится в файле
service_receiver.yaml.
# точка подключения к самому сервису
server:
host: "" # пустая строка означает прослушивание всех адресов на хосте
port: 55010
# точка подключения сервера внешних данных
external_data:
host: "" # пустая строка означает localhost
port: 50060
# точка подключения к service_receiver
service_receiver:
host: ""
port: 55011
# точка подключения к service_receiver
service_storage:
host: ""
port: 55012
service_receiver
Сервис обработки сетевых пакетов от ВМ:
- читает данные из указанного адреса сети,
- проверяет их,
- выделает данные каналов в соответствии с описанием в
конфигурации,
- транслирует А-сканы,
- рассчитывает координатную привязку,
- формирует блоки данных и транслирует их.
Конфигурация сервиса хранится в файле
service_receiver.yaml.
VM:
ip: 0.0.0.0 # адрес, куда идут пакеты от ВМ
port: 5432 # порт, куда идут пакеты от ВМ
packet_size: 1276 # размер пакета
expected_pps: 100000 # ожидаемый поток пакетов, используется для рассчета размера внутренних буферов приема данных
# описание формата пакета (положения А-сканов каналов)
AScans:
base_offset: 0 # базовое смещение, добавляется к offsets
default_size: 290 # размер А-скана канала (может уточнятся для конкретного А-скана)
offsets: [60, 364, 668, 972] # смещения А-сканов в пакете
Modules: # описание исходных данных для каналов,
- { packet_num: 0, num: 0, offset_index: 0} # модуль 0 размещает свои данные в пакете 0, на месте 0
- { packet_num: 0, num: 1, offset_index: 1}
- { packet_num: 0, num: 2, offset_index: 2}
- { packet_num: 0, num: 4, offset_index: 3}
# можно записать в сокращенной форме
- { packet_num: 1, num: [ 4, 5, 6, 7], offset_index: [0, 1, 2, 3]}
# описание групп каналов
Groups:
- { name: "65", start_delay: 5, end_delay: 90, alpha: 65, gamma: 0 }
- { name: "58", start_delay: 20, end_delay: 140, alpha: 58, gamma: 34 }
# описание схем прозвучивания (привязки данных в пакетах к каналам данных)
Schemes:
- name: "scheme1"
# каналы данных
channels:
- { rail: 1, channel: 0, module: 0, group: "65", name: "65-4", shift: 10, trend: "fwd" } # канал (1:0) извлекается из модуля 0: (пакет 0, аскан 0)
- { rail: 2, channel: 0, module: 1, group: "65", name: "65-4", shift: 10, trend: "fwd" } # канал (2:0) извлекается из модуля 1: (пакет 0, аскан 1)
# можно использовать следующую запись:
- { rail: [1,2], channel: 1, module: [ 2, 3], group: "65", name: "65-3", shift: 10, trend: "bwd" }
# описание рабочего режима сбора данных
Data:
scheme: "scheme1"
block_length: 1000 # длинна блока данных
# точка доступа управления сервисом (должна соответствовать service_receiver.yaml)
Commands:
ip: 0.0.0.0
port: 55011
service_storage
Сервис записи и хранения и доступа к данным.
Конфигурация сервиса хранится в файле
service_storage.yaml.
# точка доступа управления сервисом (должна соответствовать service_receiver.yaml)
server:
host: ""
port: 55012
# описание хранения данных
data_storage:
db: service_storage.db # имя файла БД
root_dir: D:/temp/data # директория хранения файлов данных
start_registration
Программа управления регистрацией. Позволяет начать, остановить
регистрацию, а также контролировать процесс регистрации.
Управляет сервисами управления service_control, service_receiver, service_storage для начала и остановки
регистрации. И также показывает текущий статус регистрации.
Экран программы управления регистрацией перед запуском регистрации:

Экран программы управления регистрацией после запуска регистрации:

ascan_viewer
Программа просмотра А-сканов в реальном времени. Подключается к service_receiver и получает А-сканы по мере
их поступления
Экран программы просмотра А-сканов: 
Содержит следующие элементы:
- Выбор хоста сервиса service_receiver, к которому будет
подключаться просмотрщик.
- Выбор порта сервиса service_receiver.
- Кнопка перегрузка подключения к сервису.
- Выбор модуля (группы каналов) для просмотра.
- Выбор режима эха. Указывает количество повторений А-скана в
пакете.
- Область отображения А-сканов выбранного модуля.
vm_emulator
Программа эмуляции пакетов ВМ, для тестирования. Позволяет отправлять
пакеты, имитирующие работу ВМ, для тестирования комплекса.
Экран программы эмуляции ВМ: 