Программа для моделирования работы электрической схемы, написанная на Golang.
При запуске создает png файл, содержащий график напряжения на резисторе-нагрузке, в текущей директории.
- golang 1.15
apt install golang
make
./graph plot
./graph plot --help
Generate plot images in your directory.
Available formats are: png, svg, tex, pdf, jpg, jpeg, eps, tif, tiff.
Example: graph plot -s 0.1 -o results -f png
This will create directory results/ and put plot images in "png" format into it.
Usage:
graph plot [flags]
Flags:
--buffer-size int change size of line-draw buffer (default 100)
-c, --capacitors uint change number of capacitors in circuit (default 6)
-f, --format string change resulting images format (default "svg")
-h, --help help for plot
-l, --load-resistance float change load resistance value (default 10000)
-o, --output string change results directory name (default "results")
-s, --step float change default step amount (default 0.001)
-v, --supply-voltage float change supply voltage in circuit (default 6000)
Global Flags:
--config string config file (default is $HOME/.config/graph/config.yaml)
--debug enable debug mode
- pkg/adapters/circuit
Код, относящийся к логике схемы(circuit.go). Определена основная структура состояния, а также внутренние структуры реализующие два состояния системы(charging_state.go,discharging_state.go). Для структур состояния определен шаблон функций(state.go), которые они должны реализовывать.
- pkg/adapters/plot-img
Построение графика по заданным точкам при помощи библиотеки gonum.
- pkg/adapters/integrator
Логика интегрирования.
Определен шаблон функции и во вложенных папках расположены разные реализации методов функции интегрирования.
- pkg/components/plot-cli
Запуск интегрирования.
- pkg/components/point-generator
Логика интегрирования по заданному интервалу, вызывается в pkg/components/plot-cli, запускает интегратор из pkg/adapters/integrator.
- pkg/domain
Общие данные, структуры, в частности список интеграторов, доступных pkg/components/point-generator.
Генератор Маркса.
В основе системы уравнений лежит зависимость напряжения на конденсаторе для RC цепей.
u = U0(1-e-t/τ)
Состояние системы определяется текущим напряжением на конденсаторах(C0), а также значениями τ (R*C0, Rнагр*Спосл). Количество конденсаторов равно количеству ступеней генератора.
У системы два состояния: накопление зарядов параллельно соединенными конденсаторами по очереди(заряд следующего конденсатора в цепи линейно зависит от заряда предыдущего) и падение накопленного заряда этих конденсаторов уже соединенных последовательно на сопротивление нагрузки.
При последовательной разрядке напряжение увеличивается кратно количеству ступеней генератора.
Разрядка конденсаторов начинается, когда напряжение на первом конденсаторе достигает напряжению пробоя замычек(Uразр).
При теоретическом расчете высчитывается время зарядки первого конденсатора до требуемого уровня, затем начинается разрядка конденсатора
u = Uзам*e-t/τ
Использовалась информация из презентации
X = (u1, … , un)
Зарядка конденсаторов (τi = 2*R*i*C0): f(xi) = 1/τi * (U0 - xi)
Разрядка конденсаторов (τ = Rнагрузки*Cпослед): f(xi) = -1/τi * xi
Аналитическое решение получено из формулы: ∑i ui = U0 * ∑i(1-e-t/τ) = U0*N - ∑i U0*e-t/τ
где t = -τ0ln(1-Uразр/U0) - время зарядки конденсатора до Uразр.
- Электроемкость конденсаторов (C): 1 мкФ
- Сопротивление ограничивающих резисторов (R): 5 кОм
- Напряжение источника тока (U_0): 6 кВ
- Количество ступеней конденсаторов: 5
- Напряжение пробоя замычек: 5.7 кВ
- Сопротивление нагрузки: 10 кОм
Красная функция - теория, черная - результат интегрирования.
Красная функция - теория, черная - результат интегрирования.
Красная функция - теория, черная - результат интегрирования.
Зеленая функция - метод Эйлера, черная - метод Богатского-Шампина.
Красная функция - теория, черная - результат интегрирования.
Для схемы с одним конденсатором.
Красная функция - теория, черная - результат интегрирования.
Для схемы с одним конденсатором.