Skip to content

SENATOROVAI/System_Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

System Programming

Проект посвящен моделированию и управлению динамическим объектом. В нем реализованы эмулятор объекта, протокол обмена данными, ПИД-регулятор, фильтрация измерений и инструменты для идентификации модели по логам.

Основная цель работы - построить замкнутую систему управления, подобрать параметры регулятора и сравнить качество переходного процесса по экспериментальным данным.

Задача

Необходимо было разработать программную систему, которая:

  • эмулирует дискретный динамический объект с шумом измерений;
  • передает измерения через бинарный протокол;
  • выполняет идентификацию объекта по логам эксперимента;
  • рассчитывает управляющее воздействие в замкнутом контуре;
  • фильтрует шумные измерения;
  • сохраняет логи для последующего анализа в MATLAB;
  • предоставляет простой графический интерфейс для запуска сценария и наблюдения за траекторией.

Решение

Решение состоит из Qt-приложения и набора MATLAB-скриптов.

В C++ реализованы:

  • дискретная модель объекта в пространстве состояний;
  • эмулятор объекта с таймером, шумом и логированием;
  • кодирование и разбор кадров протокола;
  • низкочастотный фильтр;
  • ПИД-регулятор;
  • фильтр Калмана для сглаживания измерений;
  • модифицированный регулятор с производной по оценке скорости;
  • QML-интерфейс с визуализацией текущего положения, задания и графиков.

В MATLAB реализованы:

  • чтение логов эксперимента;
  • идентификация передаточной функции методом наименьших квадратов;
  • подбор коэффициентов ПИД-регулятора;
  • расчет показателей качества;
  • генерация Simulink-модели для проверки схемы управления.

Технологический стек

  • C++11
  • Qt 5 / Qt Quick / QML
  • Qt Charts
  • Qt Test
  • qmake
  • MATLAB
  • Simulink

Структура проекта

.
├── code
│   ├── app
│   │   ├── controller      # регуляторы, фильтры и логика сценариев
│   │   ├── emulator        # дискретная модель объекта и эмулятор
│   │   ├── protocol        # бинарный протокол обмена
│   │   ├── main.cpp        # точка входа Qt-приложения
│   │   ├── main.qml        # пользовательский интерфейс
│   │   └── ControllerUI.pro
│   └── tests
│       ├── test_*.h        # модульные тесты
│       ├── testmain.cpp
│       └── tests.pro
├── logs                    # логи идентификации и замкнутого контура
├── matlab                  # скрипты анализа, идентификации и настройки
├── report.docx             # отчет по работе
└── README.md

Сборка и запуск

Приложение

cd code/app
qmake ControllerUI.pro
make
./ControllerUI

После запуска можно задать начальное положение, нажать Start и наблюдать движение объекта и график переходного процесса.

Тесты

cd code/tests
qmake tests.pro
make
./tests

Тесты проверяют дискретную модель, протокол, низкочастотный фильтр, ПИД-регулятор и фильтр Калмана.

Автоматический сценарий без ручного управления

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

cd code/app
SCENARIO_SECONDS=60 LOG_PATH=../../logs/run.txt USE_FILTER=1 ./ControllerUI

Доступные параметры:

  • SCENARIO_SECONDS - длительность сценария в секундах;
  • LOG_PATH - путь для сохранения лога;
  • USE_FILTER - включение фильтрации измерений;
  • USE_MODIFIED - включение модифицированного регулятора;
  • USE_CONSTREF - использование постоянного задания.

MATLAB-анализ

Основные скрипты находятся в каталоге matlab:

  • identify_lsm.m - идентификация модели объекта по логу;
  • design_pid.m - подбор коэффициентов ПИД-регулятора;
  • kalman_design.m - описание матриц фильтра Калмана;
  • quality.m - расчет интегральной ошибки и среднеквадратичного отклонения;
  • build_simulink.m - генерация Simulink-модели;
  • read_log.m - чтение логов в матричный вид.

Пример запуска:

cd matlab
[a0, a1, b0] = identify_lsm('../logs/ident_log.txt');
[Kp, Ki, Kd, Tf] = design_pid(a0, a1, b0);
quality('../logs/closedloop_formula_filter.txt');

Результат

Проект демонстрирует полный цикл разработки системы управления: от эмуляции и сбора данных до идентификации модели, настройки регулятора, фильтрации измерений и оценки качества управления по логам.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors