Библиотека моделирования динамических систем с использованием Python - Студенческий научный форум

XVIII Международная студенческая научная конференция Студенческий научный форум - 2026

Библиотека моделирования динамических систем с использованием Python

Узков А.Ю. 1, Мозговенко А.А. 1
1Федеральное государственное бюджетное образовательное учреждение высшего образования (ФГБОУ ВО) «Мелитопольский государственный университет»
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Постановка проблемы

В современных условиях разработки электронных устройств возникает необходимость в эффективном инструменте моделирования схем до их физической реализации. Существующие решения часто имеют ограниченную гибкость или сложность в расширении функциональности.

Требуется создание программного обеспечения, позволяющего:

  • Создавать математические модели электронных схем

  • Проводить различные виды анализа

  • Обеспечивать возможность расширения базового функционала

Анализ последних исследований и публикаций

Современные системы моделирования электронных схем активно развиваются в направлении повышения точности и скорости вычислений.

Особое внимание уделяется:

  • Интеграции с другими инструментами проектирования

  • Расширению библиотек компонентов

  • Внедрению новых методов анализа

  • Улучшению пользовательского интерфейса

Формулировка целей статьи

Целью работы является разработка программного обеспечения для моделирования электронных схем, которое:

  • Обеспечивает создание математических моделей схем

  • Реализует основные виды анализа (DC и AC)

  • Имеет модульную архитектуру для дальнейшего расширения

  • Предоставляет удобный интерфейс для работы с данными

Основная часть

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

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

Представим диаграмму класса Circuit:

Рис. 1 Диаграмма класса Circuit

При инициализации объекта класса Circuit формируется список узлов и список компонентов из переданного нетлиста. Также для инициализации объекта можно указать тип модели, которая будет создаваться. реализовано два метода: общий табличный метод и гибридный ГМ10. Но Такая реализация предполагает возможность добавления других необходимых пользователю методов путем дописывания соответствующего кода.

Также на данной диаграмме видны два возможных анализа: DC-анализ и AC-анализ. В дальнейшем планируется доработать еще несколько типов анализа.

Методы DC и AC анализов возвращают словарь с такой структурой:

  • Название анализа;

  • начало отсчета времени;

  • Конец отсчета времени;

  • Шаг времени;

  • Список векторов напряжений и токов (для каждого момента времени и каждого элемента схемы).

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

Рис. 2 Диаграмма последовательности работы программы

На диаграмме, представленной выше, изображено подробное описание логики возможного сеанса использования данной программы. Пользователь создает компоненты, необходимые ему для моделирования. Затем необходимо создать объект схемы Circuit и передать ему нетлист для формирования математической модели. При вызове метода для анализа схемы пользователю будет предоставлено решение уравнений равновесия данной модели в виде текстового или графического ответа.

Для реализации компонентов был создан класс Component с общими полями и методами. Все компоненты из базового набора подражают классу Component. То есть, для создания нового компонента необходимо просто переопределить или добавить необходимые поля и/или методы. Это также упрощает создание новейших, нужных юзеру частей схемы, не входящих в базисный набор.

Рис. 3 Диаграмма класса Component

Класс Resistor следует классу Component и выглядит так:

Рис. 4 Диаграмма класса Resistor

Осмотрим параметры, необходимые для инициализации объекта класса:

classResistor(Component):

def__init__(self, name: str, nodes: list, resistance: float):

  • name – название для компонента в схеме;

  • nodes – список из узлов, к которым подключен резистор (в данном случае 2 узла)

  • resistance – числовое значение с плавающей точностью для определения сопротивления

Пример создания объекта:

R1 = Resistor('R1', [0,1],3)# 3 Ohm

Класс CurrentSource следует классу Component и выглядит так:

Рис. 5Диаграмма класса CurrentSource

Осмотрим параметры, необходимые для инициализации объекта класса:

class CurrentSource(Component):

def__init__(self, name: str, nodes: list, current: float, ac_curr ent=None):

  1. name – название для компонента в схеме;

  2. nodes – список из узлов, к которым подключен резистор (в данном случае 2 узла)

  3. current – ​​числовое значение с плавающей точной для определения силы тока

  • ac_current – ​​функция зависимая от времени (для анализа по переменному току), принимающая функцию или кортеж значений для функций по умолчанию.

Пример создания объекта:

I2 = CurrentSource('I2', [0,1],2)#2 Ampere

Класс VoltageSource следует классу Component и выглядит так:

Рис. 5 Диаграмма класса VoltageSource

Осмотрим параметры, необходимые для инициализации объекта класса:

classVoltageSource(Component):

def__init__(self, name: str, nodes, voltage, ac_voltage=None):

  1. name – название для компонента в схеме;

  2. nodes – список из узлов, к которым подключен резистор (в данном случае 2 узла)

  • voltage – числовое значение с плавающей точностью для определения напряжения

  • ac_ voltage – функция зависимая от времени (для анализа по переменному току), принимающая функцию или кортеж значений для функций по умолчанию. Имеющиеся функции:

Пример создания объекта:

V2 = VoltageSource('V2', [0,1],1)#1 Volt

Для выполнения АC-анализа необходимо вызвать метод solve_AC(), имеющий следующие входные параметры:

defsolve_AC(self, start, stop, step):

  • start – начало отсчета времени;

  • stop – конец отсчета времени;

  • step – шаг времени.

Данный метод возвращает словарь, содержащий результаты выполнения матричного уравнения Ax=b для каждого шага времени. На базе данного словаря можно строить графические результаты анализа.

Рассмотрим схему, состоящую из двух элементов: источника тока и резистора и двух узлов (один из которых нулевой).

Рис. 6 Схема к примера

Код для описания конфигурации схемы:

R1 = Resistor('R1', [0,1],3)# 3 Ohm

I2 = CurrentSource('I2', [0,1],2)#2 Ampere

test_circuit = Circuit()

test_circuit.add_components([R1, I2])

Пусть сила тока источника равна 2 Ампера, а сопротивление резистора – 3 Ом.

Проведем DC анализ для данных значений:

test_circuit.solve_DC()#DC

Рис. 7 Результаты примера

Выводы

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

  • Создана гибкая архитектура на основе объектно-ориентированного подхода

  • Реализованы базовые методы анализа DC и AC

  • Обеспечена возможность расширения функциональности

  • Система позволяет получать детальные результаты анализа в удобной форме

Список литературы

  1. Бессонов, Л. А. Теоретические основы электротехники : учебник / Л. А. Бессонов. — 12‑е изд., перераб. и доп. — Москва : Юрайт, 2024. — 704 с. — (Высшее образование). — ISBN 978‑5‑534‑17654‑2.

  2. Демирчян, К. С. Теоретические основы электротехники : учебник : в 3 т. / К. С. Демирчян, Л. Р. Нейман, Н. В. Коровин, В. Л. Чечурин. — 5‑е изд., испр. и доп. — Санкт‑Петербург : Питер, 2023. — Т. 1. — 512 с. — ISBN 978‑5‑4461‑2234‑5.

  3. Зевеке, Г. В. Основы теории цепей : учебник для вузов / Г. В. Зевеке, П. А. Ионкин, А. В. Нетушил, С. В. Страхов. — 6‑е изд., стер. — Москва : Энергоатомиздат, 2022. — 528 с. — ISBN 978‑5‑283‑03305‑9.

  4. Лутц, М. Программирование на Python : в 2 т. / М. Лутц ; пер. с англ. — 5 е изд. — Москва : Вильямс, 2024. — Т. 2. — 960 с. — ISBN 978 5 907458 13 0.

  5. Маккинни, У. Python для анализа данных / У. Маккинни ; пер. с англ. — 3 е изд. — Москва : Диалектика, 2023. — 576 с. — ISBN 978 5 907514 95 4.

  6. Марченко, А. Л. Программирование на языке Python : учебник / А. Л. Марченко. — 2 е изд., испр. и доп. — Москва : ИНФРА М, 2024. — 416 с. — (Высшее образование). — ISBN 978 5 16 018234 8.

Просмотров работы: 0