Выпуск #1/2023
А. Строгонов
АНАЛИЗ ЭЛЕКТРИЧЕСКИХ СХЕМ ПО ПОСТОЯННОМУ ТОКУ МЕТОДОМ НЬЮТОНА – РАФСОНА
АНАЛИЗ ЭЛЕКТРИЧЕСКИХ СХЕМ ПО ПОСТОЯННОМУ ТОКУ МЕТОДОМ НЬЮТОНА – РАФСОНА
Просмотры: 1232
DOI: 10.22184/1992-4178.2023.222.1.110.120
В статье на примере расчета электрических схем по постоянному току методом Ньютона – Рафсона показана возможность применения известных алгоритмов для анализа электрических схем, как альтернатива SPICE-моделированию, выполнена оценка их точности в сравнении с современными средствами проектирования.
В статье на примере расчета электрических схем по постоянному току методом Ньютона – Рафсона показана возможность применения известных алгоритмов для анализа электрических схем, как альтернатива SPICE-моделированию, выполнена оценка их точности в сравнении с современными средствами проектирования.
Теги: algorithm cad dc circuit analysis newton – raphson method spice алгоритм анализ электрических схем по постоянному току метод ньютона – рафсона сапр
Анализ электрических схем
по постоянному току
методом Ньютона – Рафсона
А. Строгонов, д. т. н.1
Для анализа аналоговых схем разработчики широко применяют симулятор SPICE, который входит в состав большинства САПР от ведущих мировых вендоров. Сегодня доступ к бесплатным версиям и исходным кодам этой программы ограничен, в связи с чем актуальной задачей становится поиск альтернативных методов и алгоритмов расчета электрических схем, которые можно было бы реализовать в отечественных системах схемотехнического проектирования ИС. В статье на примере расчета электрических схем по постоянному току методом Ньютона – Рафсона показана возможность применения известных алгоритмов для анализа электрических схем, выполнена оценка их точности в сравнении с современными средствами проектирования.
Основные расчетные методы анализа электрических схем изложены в широко известных работах [1, 2], посвященных вопросам автоматизации схемотехнического проектирования ИС. Эти методы не потеряли актуальность и в наши дни, поскольку заложены в основу практически всех современных SPICE-подобных симуляторов аналоговых схем.
Симулятор SPICE был разработан в Калифорнийском университете в Беркли в 1972 году, в 1975 году вышел следующий релиз – SPICE2, а в 1985 году появился SPICE3, исходный код которого был преобразован с языка программирования FORTRAN на C. В конце 1970‑х годов появились индустриальные версии SPICE.
В конце 1990‑х годов исходные коды программ SPICE3 и XSPICE (Georgia Tech Research Institute) на языке С для UNIX были размещены в Интернете. Сегодня скачать ранее открытые исходные коды программы невозможно по причине закрытия доступа к соответствующим ресурсам (таким как www.aboutspice.com). Закрыт также доступ к бесплатному симулятору LTspice, разработанному компанией Linear Technologies (принадлежит Analog Devices), а также к учебной версии Capture CIS Lite, которая входит в состав пакета OrCad от Cadence.
В вузах широко используют отечественную программу uSpice (http://www.uspice.ru/) для аналогового и цифрового схемотехнического моделирования, для задач цифровой обработки сигналов и для анализа радиочастотных цепей [4]. Учебная программа uSpice была создана c использованием переписанного для Windows открытого кода пакетов SPICE3 и XSPICE. Имеется также руководство пользователя uSpice на русском языке. Не закрытым остается доступ к учебному симулятору AIM-Spice без схемотехнического редактора (http://www.aimspice.com), описание которого приведено в [5].
Оценим возможность применения расчетных методов анализа схем, как альтернативы SPICE-моделированию, на примере реализации метода Ньютона – Рафсона для анализа схем по постоянному току и сравним полученные результаты с результатами SPICE-моделирования. Для разработки собственного алгоритма («счетного ядра») по методу Ньютона – Рафсона воспользуемся учебным пособием [3].
Метод Ньютона – Рафсона для анализа электрических схем
Метод Ньютона – Рафсона – это итерационный численный метод нахождения корня заданной функции, то есть решения уравнений вида f(x) = 0.
Рассмотрим систему n нелинейных уравнений для fi c n переменными xi:
f1(x1,x2, … ,xn) = 0,
f2(x1,x2, … ,xn) = 0,
. . .
fn(x1,x2, … ,xn) = 0,
или в матричной форме: f(x) = 0, где f – вектор функций, а x – вектор переменных.
После разложения в ряд Тейлора система уравнений в линеаризованной форме принимает вид:
f(x*) ≈ f(x) + M(x* − x),
где x* – истинное решение; M – матрица Якоби функции f:
.
Если удается подобрать истинное решение, то f(x*) → 0, тогда f(x) + M(x* − x) = 0 или f(xk) + M(xk + 1 − xk) = 0, отсюда xk + 1 = xk − M−1f(xk). На практике M−1 никогда не обращают. Делают следующее:
xk + 1 − xk = ∆xk = −M−1f(xk),
тогда систему линейных уравнений M∆xk = −f(xk), где ∆xk – шаг метода, можно решить методом Гаусса, LU- или QR-разложением. Новые значения xk + 1 можно найти по формуле: xk + 1 = xk + ∆xk.
j-й столбец матрицы Якоби M(xk) аппроксимируется центральными разностями [3]:
.
Условиями останова, например, могут быть [3]:
в простейшем случае справедливо, чтобы f(xk + 1) стремилось к нулю, то есть при подстановке найденных xk + 1 в правую часть норма должна уменьшаться: ||f(xk + 1)|| ≤ ||f(xk)||;
второй критерий останова: , где steptol = macheps2 / 3.
Демонстрационная программа
Для оценки возможности применения расчетных методов анализа схем была разработана демонстрационная программа на языке PASCAL, которая решает системы нелинейных уравнений методом Ньютона – Рафсона с использованием алгоритмов, приведенных в работах [1, 3]. Программу можно применять для анализа по постоянному току для двух и более контуров в цепи, содержащей диоды, без емкостей и индуктивностей. Перед запуском программы необходимо сформировать файл с именем soft.dat со следующим содержанием: 0.1 0.1 (начальные приближения). Если анализируемая схема состоит из двух контуров, как в рассматриваемых примерах, то n = m = 2 (n и m – размерности матрицы Якоби M(m × n) и размерности вспомогательных векторов, например, вектор правых частей f(n), вектор переменных x(n), Ньютоновский шаг ∆x(n) и др.).
В программе приняты следующие обозначения: f[i] – вектор правых частей; b0[i] – начальные приближения; x0[i] – начальный пробный шаг; x[i] – последующие пробные шаги к точному решению xc[i], где i изменяется от 1 до n.
Процедура kon обеспечивает решение уравнения Ньютона в итерационной части. Первой работает процедура kon(b0,x0), которая вычисляет x0 при начальных условиях b0. Далее опять вызывается процедура kon(b,x) для решения с минимальным шагом (для нахождения последующих пробных решений). Процедура kon внутри своего тела использует три другие процедуры: fvec(b,f); FDJAC(b,f,JAC); QRdecomp(a,f,m1,m2,x). QR-разложение, QR- и R-решения разработаны по алгоритмам A3.2.1, A3.2.2 и A3.2.2а, а конечно-разностная аппроксимация якобиана – по алгоритму A5.4.1, приведенным в работе [3].
Критерии останова реализованы в процедуре Nestop (itncount:ter;b,b0,f:tf; Var termocode:TER) (рис. 1). В программе используются критерии останова termocode 0, 1, 2 и 4 (критерий termocode 3 оставлен про запас):
termocode = 0, если не выполняется ни одно из ниже приведенных условий (termcode = 1, 2, 4);
termocode = 1, когда максимальное значение одного из элементов правой части f(xk + 1) меньше допустимой ошибки (epsdop=1e‑8;): fmaх<epsdop;
termocode = 2, если максимальная вычисленная ошибка по одному из элементов правой части меньше или равна наперед заданной ошибке epsmax <= epsdop;
termocode = 4, если число итерационных циклов решения уравнения Ньютона – Рафсона больше или равно наперед заданному числу итераций (itnlimit = 10): itncount>=itnlimit. В разработанной программе общее число итерационных циклов определяется как intcout + 1.
Примеры анализа схем
по постоянному току
Разработанную программу будем использовать для анализа схемы по постоянному току (DC Sweep), который предшествует анализу по переменному току (AC Sweep), определению частотной характеристики и анализу переходных процессов (Time Domain/transient). Полученные в результате анализа данные по постоянному току берутся в качестве входных условий для анализа переходных процессов.
Пример 1
Цепь, состоящая из источника тока и резисторов. Источники напряжений и токов могут быть взаимно преобразованы с использованием теорем Тевенина и Нортона. Будем считать, что такое преобразование произведено, и цепь содержит только источник тока и резисторы. Используя метод узловых потенциалов, определим напряжения в узлах. Метод основан на составлении уравнений по первому закону Кирхгофа. При этом, потенциал одного из узлов цепи принимается равным нулю. Примем узел 0 за базовый и будем считать его потенциал равным нулю.
Используя закон Ома, составим уравнения для нахождения каждого из токов. За ϕa возьмем потенциал узла, из которого ток выходит, а за ϕb потенциал узла, в который ток входит: . Ток, который входит в узел, берем со знаком минус, ток, который выходит из узла, берем со знаком плюс. За направления токов примем те, которые указаны на схемах. По закону Кирхгофа сумма токов, втекающих в узел равна сумме вытекающих.
На рис. 2 показана линейная цепь, состоящая из источника тока и трех резисторов. Параметры схемы: источник тока J = 0,5 А, проводимости G1 = 0,01, G2 = 0,01 и G3 = 0,01 в См (сименс). На рис. 3 показаны результаты анализа схемы по постоянному току (DC Sweep) в САПР OrCad.
Метод узловых потенциалов позволяет составить два уравнения:
для узла 1: −J + I1 + I2 = 0,
для узла 2: − I2 + I3 = 0
или
для узла 1: −0,5 + V1G1 + (V1 – V2) G2 = 0,
для узла 2: −(V1 – V2) G2 + V2G2 = 0.
Решая эти уравнения V1 = (0,5 + 0,01V2) / 0,015 и V2 = 0,5 · V1,
найдем V1 и V2: V1 = 50 В и V2 = 25 В.
Результаты расчетов представлены в табл. 1. Критерий останова программы termocode = 1. Разработанная программа вычисляет напряжения в узлах за одну итерацию. Для расчета с помощью программы необходимо сформировать вектор правых частей системы линейных уравнений (рис. 4).
Пример 2
Этот пример заимствован из [1]: нелинейная цепь, состоящая из источника тока, двух резисторов и диода (рис. 5). Требуется определить напряжения в узлах схемы. Для практических расчетов удобно ток насыщения диода Is принять равным единицы. Ток диода определяется формулой: ID = e40VD − 1. Покажем, что один диод в рассматриваемой цепи приводит к одному нелинейному уравнению.
По методу узловых потенциалов составляем систему из двух уравнений: для узла 1: −J + I1 + I2 = 0, для узла 2: −I2 + ID = 0.
Подставив значения токов получим:
1: −1 + V1G1 + (V1 − V2) G2 = 0.
1: −1 + 3V1 − 2V2 = 0.
1: V1 = 1/3 + 2/3V2.
2: −2V1 + 2V2 + e40V2 − 1 = 0.
Подставив V1 во второе уравнение, получим нелинейное уравнение с одним неизвестным:
f(V2) = 2/3V2 + 40e40V2 = 0.
Для решения такого уравнения воспользуемся методом Ньютона – Рафсона. Начальное значение напряжения положим равным V20 = 0,1 В. В работе [1] приводится численный расчет (см. табл. 2).
Найдем напряжения в узлах с помощью нашей программы. Аналогично, для расчета с помощью программы необходимо сформировать вектор правых частей системы линейных уравнений (рис. 6).
Проведем анализ схемы по постоянному току в САПР OrCad (рис. 7). Отредактируем Spice-модель диода интегральной схемы Dbreak: .model Dbreak D Is=1e‑14 Cjo=.1pF Rs=.1.
Примем в Spice-модели диода Dbreak параметр Is = 1. Другие параметры модели диода: емкость перехода при нулевом смещении Cjo = 0, паразитное сопротивление (последовательное сопротивление) Rs = 0. Остальные параметры диода примем по умолчанию. Полный перечень Spice-параметров представлен в [6].
Таким образом, Spice-модель диода для нашего случая: .model Dbreak D Is=1.
Результаты расчетов представлены в табл. 2. Число итераций itncount = 7 (общее число итерационных циклов 8), termocode = 1.
Пример 3
Этот пример также заимствован из [1]: нелинейная цепь, состоящая из источника тока, резистора и двух диодов (рис. 8). Два диода в схеме приводят к системе из двух нелинейных уравнений, решение которой потребует применения метода Ньютона – Рафсона. Рассмотрим этот пример более подробно.
Заданы следующие условия: J = 1; G = 1; ID1 = e40V1 − 1; ID2 = e40V2 − 1; ID1 = ID2.
По методу узловых потенциалов составляем систему из двух уравнений:
1: −J + ID1 + I1 = 0
2: −I1 + ID2 = 0
Подставим значения токов:
1: −2 + V1 − V2 + e40V1 = 0
2: −V1 + V2 + e40V1 − 1 = 0
Запишем систему уравнений для определения напряжений:
f1(V1,V2) = −2 + V1 − V2 + e40V1 = 0;
f2(V1,V2) = −V1 + V2 + e40V1 − 1 = 0.
Для составления первой строки матрицы Якоби необходимо функцию f1(V1,V2) дифференцировать по V1, затем по V2. Для составления второй строки необходимо f2(V1,V2) дифференцировать по V1, затем по V2. Векторная запись примера будет выглядеть следующим образом:
,
где ΔV1, ΔV2 – неизвестные, которые надо найти.
Начальные значения напряжения возьмем равными V10 = 0,1 В и V20 = 0,1 В. Для расчета с помощью программы необходимо сформировать вектор правых частей системы линейных уравнений (рис. 9).
Результаты расчетов представлены в табл. 3. Итоговое решение находится за 8 итераций (itncount = 7). Расчеты были также проверены в САПР OrCad и с использованием Spice-симулятора LTspice. На рис. 10 показана нелинейная цепь, состоящая из источника тока, резистора и двух диодов, анализируемая в САПР OrCad, а на рис. 11 – в симуляторе LTspice XVII(x64). На рис. 12 показан анализ цепи в системе Matlab/Simulink с применением пакета расширения Simscape, который поддерживает использование Spice-моделей. Как видим, результаты расчетов напряжений в узлах соответствуют расчетам с применением САПР OrCAd и симулятора LTspice.
На рис. 13 (с. <?>) приведен код разработанной программы для анализа схемы по постоянному току для примера 3.
В файл result.out выводятся результаты работы программы. Поясним его более подробно. На рис. 14 показан фрагмент файла отчета для примера 3 (начальные итерации).
Итоговое решение уравнения Ньютона – Рафсона:
xc[1]= 1.7118992323625445E‑002,
xc[2]= 4.1417076753269045E‑004.
Число итераций:
Itncount = 7.0000000000000000E+000.
Критерий останова:
Termocode = 1.0000000000000000E+000.
В табл. 4 приведены результаты итераций из работы [1]. Используются следующие обозначения: Δvk1 и Δvk2 – Ньютоновский шаг (пробные шаги); v1k + 1 и v2k + 1 – приближения к точному решению. Решение уравнения Ньютона – Рафсона определяется значениями v1 = 0,01712 В и v2 = 0,00041 В. Сравнивая первые четыре итерации, представленные на рис. 14 и в табл. 4, можно убедиться, что программа работает корректно.
Заключение
Реализация в разработанной программе решения системы нелинейных уравнений по методу Ньютона – Рафсона показала возможность применения известных алгоритмов для анализа схем по постоянному току. С учетом закрытия доступа к бесплатным версиям симулятора SPICE алгоритмы и расчетные методы, изложенные в работах [1, 3], не потеряли сегодня свою актуальность.
Рассмотренные примеры показывают, что в симуляторе SPICE используется анализ цепи методом узловых потенциалов для построения системы уравнений, описывающих схему. Метод узловых потенциалов имеет ограничения в работе с индуктивностями, источниками переменного напряжения и различными вариантами управляемых генераторов тока и напряжения. Для устранения недостатков в современных версиях SPICE применяется модифицированный метод узловых потенциалов.
ЛИТЕРАТУРА
Влах И., Сингхал К. Машинные методы анализа и проектирования электронных схем / Пер. с англ. М.: Радио и связь, 1988. 560 с.
Чуа Л. О., Лин Пен-Мин. Машинный анализ электронных схем. Алгоритмы и вычислительные методы / Пер. с англ. М.: Энергия, 1980. 640 с.
Деннис Дж., Шнабель Р. Численные методы безусловной оптимизации и решения нелинейных уравнений / Пер. с англ. М.: Мир, 1988. 440 с.
Кучумов А. А., Кучумов А. И. Электроника и схемотехника. М.: Гелиос АРВ, 2017. 368 с.
Петров М. Н., Гудков Г. В. Моделирование компонентов и элементов интегральных схем: Уч. пос. СПб: Издательство «Лань», 2011. 464 с.
https://www.allaboutcircuits.com/textbook/semiconductors/chpt‑3/spice-models/#.
по постоянному току
методом Ньютона – Рафсона
А. Строгонов, д. т. н.1
Для анализа аналоговых схем разработчики широко применяют симулятор SPICE, который входит в состав большинства САПР от ведущих мировых вендоров. Сегодня доступ к бесплатным версиям и исходным кодам этой программы ограничен, в связи с чем актуальной задачей становится поиск альтернативных методов и алгоритмов расчета электрических схем, которые можно было бы реализовать в отечественных системах схемотехнического проектирования ИС. В статье на примере расчета электрических схем по постоянному току методом Ньютона – Рафсона показана возможность применения известных алгоритмов для анализа электрических схем, выполнена оценка их точности в сравнении с современными средствами проектирования.
Основные расчетные методы анализа электрических схем изложены в широко известных работах [1, 2], посвященных вопросам автоматизации схемотехнического проектирования ИС. Эти методы не потеряли актуальность и в наши дни, поскольку заложены в основу практически всех современных SPICE-подобных симуляторов аналоговых схем.
Симулятор SPICE был разработан в Калифорнийском университете в Беркли в 1972 году, в 1975 году вышел следующий релиз – SPICE2, а в 1985 году появился SPICE3, исходный код которого был преобразован с языка программирования FORTRAN на C. В конце 1970‑х годов появились индустриальные версии SPICE.
В конце 1990‑х годов исходные коды программ SPICE3 и XSPICE (Georgia Tech Research Institute) на языке С для UNIX были размещены в Интернете. Сегодня скачать ранее открытые исходные коды программы невозможно по причине закрытия доступа к соответствующим ресурсам (таким как www.aboutspice.com). Закрыт также доступ к бесплатному симулятору LTspice, разработанному компанией Linear Technologies (принадлежит Analog Devices), а также к учебной версии Capture CIS Lite, которая входит в состав пакета OrCad от Cadence.
В вузах широко используют отечественную программу uSpice (http://www.uspice.ru/) для аналогового и цифрового схемотехнического моделирования, для задач цифровой обработки сигналов и для анализа радиочастотных цепей [4]. Учебная программа uSpice была создана c использованием переписанного для Windows открытого кода пакетов SPICE3 и XSPICE. Имеется также руководство пользователя uSpice на русском языке. Не закрытым остается доступ к учебному симулятору AIM-Spice без схемотехнического редактора (http://www.aimspice.com), описание которого приведено в [5].
Оценим возможность применения расчетных методов анализа схем, как альтернативы SPICE-моделированию, на примере реализации метода Ньютона – Рафсона для анализа схем по постоянному току и сравним полученные результаты с результатами SPICE-моделирования. Для разработки собственного алгоритма («счетного ядра») по методу Ньютона – Рафсона воспользуемся учебным пособием [3].
Метод Ньютона – Рафсона для анализа электрических схем
Метод Ньютона – Рафсона – это итерационный численный метод нахождения корня заданной функции, то есть решения уравнений вида f(x) = 0.
Рассмотрим систему n нелинейных уравнений для fi c n переменными xi:
f1(x1,x2, … ,xn) = 0,
f2(x1,x2, … ,xn) = 0,
. . .
fn(x1,x2, … ,xn) = 0,
или в матричной форме: f(x) = 0, где f – вектор функций, а x – вектор переменных.
После разложения в ряд Тейлора система уравнений в линеаризованной форме принимает вид:
f(x*) ≈ f(x) + M(x* − x),
где x* – истинное решение; M – матрица Якоби функции f:
.
Если удается подобрать истинное решение, то f(x*) → 0, тогда f(x) + M(x* − x) = 0 или f(xk) + M(xk + 1 − xk) = 0, отсюда xk + 1 = xk − M−1f(xk). На практике M−1 никогда не обращают. Делают следующее:
xk + 1 − xk = ∆xk = −M−1f(xk),
тогда систему линейных уравнений M∆xk = −f(xk), где ∆xk – шаг метода, можно решить методом Гаусса, LU- или QR-разложением. Новые значения xk + 1 можно найти по формуле: xk + 1 = xk + ∆xk.
j-й столбец матрицы Якоби M(xk) аппроксимируется центральными разностями [3]:
.
Условиями останова, например, могут быть [3]:
в простейшем случае справедливо, чтобы f(xk + 1) стремилось к нулю, то есть при подстановке найденных xk + 1 в правую часть норма должна уменьшаться: ||f(xk + 1)|| ≤ ||f(xk)||;
второй критерий останова: , где steptol = macheps2 / 3.
Демонстрационная программа
Для оценки возможности применения расчетных методов анализа схем была разработана демонстрационная программа на языке PASCAL, которая решает системы нелинейных уравнений методом Ньютона – Рафсона с использованием алгоритмов, приведенных в работах [1, 3]. Программу можно применять для анализа по постоянному току для двух и более контуров в цепи, содержащей диоды, без емкостей и индуктивностей. Перед запуском программы необходимо сформировать файл с именем soft.dat со следующим содержанием: 0.1 0.1 (начальные приближения). Если анализируемая схема состоит из двух контуров, как в рассматриваемых примерах, то n = m = 2 (n и m – размерности матрицы Якоби M(m × n) и размерности вспомогательных векторов, например, вектор правых частей f(n), вектор переменных x(n), Ньютоновский шаг ∆x(n) и др.).
В программе приняты следующие обозначения: f[i] – вектор правых частей; b0[i] – начальные приближения; x0[i] – начальный пробный шаг; x[i] – последующие пробные шаги к точному решению xc[i], где i изменяется от 1 до n.
Процедура kon обеспечивает решение уравнения Ньютона в итерационной части. Первой работает процедура kon(b0,x0), которая вычисляет x0 при начальных условиях b0. Далее опять вызывается процедура kon(b,x) для решения с минимальным шагом (для нахождения последующих пробных решений). Процедура kon внутри своего тела использует три другие процедуры: fvec(b,f); FDJAC(b,f,JAC); QRdecomp(a,f,m1,m2,x). QR-разложение, QR- и R-решения разработаны по алгоритмам A3.2.1, A3.2.2 и A3.2.2а, а конечно-разностная аппроксимация якобиана – по алгоритму A5.4.1, приведенным в работе [3].
Критерии останова реализованы в процедуре Nestop (itncount:ter;b,b0,f:tf; Var termocode:TER) (рис. 1). В программе используются критерии останова termocode 0, 1, 2 и 4 (критерий termocode 3 оставлен про запас):
termocode = 0, если не выполняется ни одно из ниже приведенных условий (termcode = 1, 2, 4);
termocode = 1, когда максимальное значение одного из элементов правой части f(xk + 1) меньше допустимой ошибки (epsdop=1e‑8;): fmaх<epsdop;
termocode = 2, если максимальная вычисленная ошибка по одному из элементов правой части меньше или равна наперед заданной ошибке epsmax <= epsdop;
termocode = 4, если число итерационных циклов решения уравнения Ньютона – Рафсона больше или равно наперед заданному числу итераций (itnlimit = 10): itncount>=itnlimit. В разработанной программе общее число итерационных циклов определяется как intcout + 1.
Примеры анализа схем
по постоянному току
Разработанную программу будем использовать для анализа схемы по постоянному току (DC Sweep), который предшествует анализу по переменному току (AC Sweep), определению частотной характеристики и анализу переходных процессов (Time Domain/transient). Полученные в результате анализа данные по постоянному току берутся в качестве входных условий для анализа переходных процессов.
Пример 1
Цепь, состоящая из источника тока и резисторов. Источники напряжений и токов могут быть взаимно преобразованы с использованием теорем Тевенина и Нортона. Будем считать, что такое преобразование произведено, и цепь содержит только источник тока и резисторы. Используя метод узловых потенциалов, определим напряжения в узлах. Метод основан на составлении уравнений по первому закону Кирхгофа. При этом, потенциал одного из узлов цепи принимается равным нулю. Примем узел 0 за базовый и будем считать его потенциал равным нулю.
Используя закон Ома, составим уравнения для нахождения каждого из токов. За ϕa возьмем потенциал узла, из которого ток выходит, а за ϕb потенциал узла, в который ток входит: . Ток, который входит в узел, берем со знаком минус, ток, который выходит из узла, берем со знаком плюс. За направления токов примем те, которые указаны на схемах. По закону Кирхгофа сумма токов, втекающих в узел равна сумме вытекающих.
На рис. 2 показана линейная цепь, состоящая из источника тока и трех резисторов. Параметры схемы: источник тока J = 0,5 А, проводимости G1 = 0,01, G2 = 0,01 и G3 = 0,01 в См (сименс). На рис. 3 показаны результаты анализа схемы по постоянному току (DC Sweep) в САПР OrCad.
Метод узловых потенциалов позволяет составить два уравнения:
для узла 1: −J + I1 + I2 = 0,
для узла 2: − I2 + I3 = 0
или
для узла 1: −0,5 + V1G1 + (V1 – V2) G2 = 0,
для узла 2: −(V1 – V2) G2 + V2G2 = 0.
Решая эти уравнения V1 = (0,5 + 0,01V2) / 0,015 и V2 = 0,5 · V1,
найдем V1 и V2: V1 = 50 В и V2 = 25 В.
Результаты расчетов представлены в табл. 1. Критерий останова программы termocode = 1. Разработанная программа вычисляет напряжения в узлах за одну итерацию. Для расчета с помощью программы необходимо сформировать вектор правых частей системы линейных уравнений (рис. 4).
Пример 2
Этот пример заимствован из [1]: нелинейная цепь, состоящая из источника тока, двух резисторов и диода (рис. 5). Требуется определить напряжения в узлах схемы. Для практических расчетов удобно ток насыщения диода Is принять равным единицы. Ток диода определяется формулой: ID = e40VD − 1. Покажем, что один диод в рассматриваемой цепи приводит к одному нелинейному уравнению.
По методу узловых потенциалов составляем систему из двух уравнений: для узла 1: −J + I1 + I2 = 0, для узла 2: −I2 + ID = 0.
Подставив значения токов получим:
1: −1 + V1G1 + (V1 − V2) G2 = 0.
1: −1 + 3V1 − 2V2 = 0.
1: V1 = 1/3 + 2/3V2.
2: −2V1 + 2V2 + e40V2 − 1 = 0.
Подставив V1 во второе уравнение, получим нелинейное уравнение с одним неизвестным:
f(V2) = 2/3V2 + 40e40V2 = 0.
Для решения такого уравнения воспользуемся методом Ньютона – Рафсона. Начальное значение напряжения положим равным V20 = 0,1 В. В работе [1] приводится численный расчет (см. табл. 2).
Найдем напряжения в узлах с помощью нашей программы. Аналогично, для расчета с помощью программы необходимо сформировать вектор правых частей системы линейных уравнений (рис. 6).
Проведем анализ схемы по постоянному току в САПР OrCad (рис. 7). Отредактируем Spice-модель диода интегральной схемы Dbreak: .model Dbreak D Is=1e‑14 Cjo=.1pF Rs=.1.
Примем в Spice-модели диода Dbreak параметр Is = 1. Другие параметры модели диода: емкость перехода при нулевом смещении Cjo = 0, паразитное сопротивление (последовательное сопротивление) Rs = 0. Остальные параметры диода примем по умолчанию. Полный перечень Spice-параметров представлен в [6].
Таким образом, Spice-модель диода для нашего случая: .model Dbreak D Is=1.
Результаты расчетов представлены в табл. 2. Число итераций itncount = 7 (общее число итерационных циклов 8), termocode = 1.
Пример 3
Этот пример также заимствован из [1]: нелинейная цепь, состоящая из источника тока, резистора и двух диодов (рис. 8). Два диода в схеме приводят к системе из двух нелинейных уравнений, решение которой потребует применения метода Ньютона – Рафсона. Рассмотрим этот пример более подробно.
Заданы следующие условия: J = 1; G = 1; ID1 = e40V1 − 1; ID2 = e40V2 − 1; ID1 = ID2.
По методу узловых потенциалов составляем систему из двух уравнений:
1: −J + ID1 + I1 = 0
2: −I1 + ID2 = 0
Подставим значения токов:
1: −2 + V1 − V2 + e40V1 = 0
2: −V1 + V2 + e40V1 − 1 = 0
Запишем систему уравнений для определения напряжений:
f1(V1,V2) = −2 + V1 − V2 + e40V1 = 0;
f2(V1,V2) = −V1 + V2 + e40V1 − 1 = 0.
Для составления первой строки матрицы Якоби необходимо функцию f1(V1,V2) дифференцировать по V1, затем по V2. Для составления второй строки необходимо f2(V1,V2) дифференцировать по V1, затем по V2. Векторная запись примера будет выглядеть следующим образом:
,
где ΔV1, ΔV2 – неизвестные, которые надо найти.
Начальные значения напряжения возьмем равными V10 = 0,1 В и V20 = 0,1 В. Для расчета с помощью программы необходимо сформировать вектор правых частей системы линейных уравнений (рис. 9).
Результаты расчетов представлены в табл. 3. Итоговое решение находится за 8 итераций (itncount = 7). Расчеты были также проверены в САПР OrCad и с использованием Spice-симулятора LTspice. На рис. 10 показана нелинейная цепь, состоящая из источника тока, резистора и двух диодов, анализируемая в САПР OrCad, а на рис. 11 – в симуляторе LTspice XVII(x64). На рис. 12 показан анализ цепи в системе Matlab/Simulink с применением пакета расширения Simscape, который поддерживает использование Spice-моделей. Как видим, результаты расчетов напряжений в узлах соответствуют расчетам с применением САПР OrCAd и симулятора LTspice.
На рис. 13 (с. <?>) приведен код разработанной программы для анализа схемы по постоянному току для примера 3.
В файл result.out выводятся результаты работы программы. Поясним его более подробно. На рис. 14 показан фрагмент файла отчета для примера 3 (начальные итерации).
Итоговое решение уравнения Ньютона – Рафсона:
xc[1]= 1.7118992323625445E‑002,
xc[2]= 4.1417076753269045E‑004.
Число итераций:
Itncount = 7.0000000000000000E+000.
Критерий останова:
Termocode = 1.0000000000000000E+000.
В табл. 4 приведены результаты итераций из работы [1]. Используются следующие обозначения: Δvk1 и Δvk2 – Ньютоновский шаг (пробные шаги); v1k + 1 и v2k + 1 – приближения к точному решению. Решение уравнения Ньютона – Рафсона определяется значениями v1 = 0,01712 В и v2 = 0,00041 В. Сравнивая первые четыре итерации, представленные на рис. 14 и в табл. 4, можно убедиться, что программа работает корректно.
Заключение
Реализация в разработанной программе решения системы нелинейных уравнений по методу Ньютона – Рафсона показала возможность применения известных алгоритмов для анализа схем по постоянному току. С учетом закрытия доступа к бесплатным версиям симулятора SPICE алгоритмы и расчетные методы, изложенные в работах [1, 3], не потеряли сегодня свою актуальность.
Рассмотренные примеры показывают, что в симуляторе SPICE используется анализ цепи методом узловых потенциалов для построения системы уравнений, описывающих схему. Метод узловых потенциалов имеет ограничения в работе с индуктивностями, источниками переменного напряжения и различными вариантами управляемых генераторов тока и напряжения. Для устранения недостатков в современных версиях SPICE применяется модифицированный метод узловых потенциалов.
ЛИТЕРАТУРА
Влах И., Сингхал К. Машинные методы анализа и проектирования электронных схем / Пер. с англ. М.: Радио и связь, 1988. 560 с.
Чуа Л. О., Лин Пен-Мин. Машинный анализ электронных схем. Алгоритмы и вычислительные методы / Пер. с англ. М.: Энергия, 1980. 640 с.
Деннис Дж., Шнабель Р. Численные методы безусловной оптимизации и решения нелинейных уравнений / Пер. с англ. М.: Мир, 1988. 440 с.
Кучумов А. А., Кучумов А. И. Электроника и схемотехника. М.: Гелиос АРВ, 2017. 368 с.
Петров М. Н., Гудков Г. В. Моделирование компонентов и элементов интегральных схем: Уч. пос. СПб: Издательство «Лань», 2011. 464 с.
https://www.allaboutcircuits.com/textbook/semiconductors/chpt‑3/spice-models/#.
Отзывы читателей