SVM Circuit Simulator — это мощный инструмент для моделирования электрических цепей во временной области (Transient Analysis), основанный на Методе Переменных Состояния (State Variables Method).
Программа выполняет полный цикл анализа: от разбора нетлиста и построения топологического графа до численного интегрирования дифференциальных уравнений и построения графиков.
- Универсальность: Поддержка R, L, C, независимых источников (V, I) и управляемых источников (VCCS/Транзисторов).
- Топологический анализ: Автоматическое построение ориентированного графа, выделение Дерева и Хорд, формирование М-матрицы (матрицы главных контуров).
-
Математическое ядро:
- Автоматическая генерация матриц состояния A и B.
- Решение системы дифференциальных уравнений
$\dot{X} = A X + B U$ .
-
Умная автоматизация:
- Auto-Grounding: Если в схеме нет земли (узла 0), программа назначит её автоматически.
- Smart Time Step: Автоматическое определение шага интегрирования (от секунд для LC-контуров до пикосекунд для микроэлектроники).
- Визуализация: Генерация высококачественных графиков (PNG) для каждой переменной состояния с помощью библиотеки ScottPlot.
- .NET SDK (6.0 или выше)
- NuGet пакеты:
MathNet.Numerics(Линейная алгебра)ScottPlot(Построение графиков)
Архитектура приложения разделена на логические модули:
| Файл | Описание |
|---|---|
Program.cs |
Точка входа. Обработка пользовательского ввода, управление циклом симуляции и меню. |
CircuitReader.cs |
Парсер входных файлов (.txt). Преобразует текст в объекты компонентов. |
SimulationEngine.cs |
Движок симуляции. Отвечает за цикл времени, применение метода и управление данными. |
Solver.cs |
Математическое ядро. Строит матрицы A и B путем решения линеаризованной схемы методом узловых потенциалов. |
TopologyAnalyzer.cs |
Графовый анализатор. Строит дерево, находит циклы и формирует М-матрицу. |
GraphPlotter.cs |
Модуль визуализации. Сохраняет результаты расчетов в папку ResultPlots. |
Component.cs |
Модель данных электронного компонента. |
Схемы хранятся в папке InputCircuit (создается автоматически при запуске).
Формат файла — текстовый (Netlist), похожий на SPICE.
Формат строки:
ИМЯ ТИП ЗНАЧЕНИЕ УЗЕЛ1 УЗЕЛ2 [УПР_УЗЕЛ1 УПР_УЗЕЛ2]
- Узел 0 всегда считается Землей (GND).
| Тип | Обозначение | Пример в файле | Описание |
|---|---|---|---|
| Резистор | R |
R1 R 100 1 2 |
Резистор 100 Ом между узлами 1 и 2 |
| Конденсатор | C |
C1 C 1e-6 2 0 |
Емкость 1 мкФ между узлом 2 и землей |
| Индуктивность | L |
L1 L 0.001 2 3 |
Индуктивность 1 мГн |
| Источник Напряжения | V |
Vin V 5.0 1 0 |
Идеальный источник ЭДС 5В |
| Источник Тока | J / I |
J1 I 0.1 2 0 |
Идеальный источник тока 0.1А |
| Транзистор (VCCS) | VCCS |
T1 VCCS 0.02 2 0 1 0 |
Источник тока, упр. напряжением (S=0.02) |
Примечание для VCCS: Формат
Имя VCCS Крутизна(S) Сток Исток Затвор Исток.
Откройте терминал в папке проекта и выполните:
dotnet run- Программа покажет список файлов в папке
InputCircuit. - Введите имя файла (например,
testLC.txt). -
Настройка времени: Нажмите
Enter, чтобы использовать авто-подобранные параметры ($T_{end}$ ,$dt$ ), или введите свои значения. -
Начальные условия: Вы можете задать начальные напряжения в узлах.
- Пример:
1=5.0 2=10.0(Узел 1 = 5В, Узел 2 = 10В). - Нажмите
Enter, чтобы стартовать с нулей.
- Пример:
- В консоли будут выведены:
- Ветви дерева и хорды.
- Матрица главных контуров (M-Matrix).
- Матрица системы A.
- Уравнения состояния в символьном виде.
- Таблица значений в ходе симуляции.
- Графики сохраняются в папку
ResultPlots/{ИмяФайла_Время}/. Для каждой переменной создается отдельный PNG файл.