LazDiscret2 - программа анализа электрических цепей

Версия 0.0
Версия 1.0
Версия 2.0
Версия 2.3

Главное окно LazDiscret2

После окончания работы над первой версии программы LazPhCoord, совпавшего с защитой диплома дочерью, я вновь оказался перед проблемой, чем занять свое свободное время и "мозги". На книжной полке у меня уже долгое время пылилась книга Нерретера1, посвященная расчету электрических цепей на ПЭВМ, и у меня родилась идея написать программу расчета электрических цепей во всевозможных режимах.

Надо сказать, что в период моей преподавательской деятельности я уже писал программы расчета установившегося режима цепей постоянного и переменного тока на основе метода узловых потенциалов (МУП). В этих программах топология соединения элементов цепи вводилась указанием для каждой ветви номеров узлов, точно также был организован ввод данных в примерах программ, приведенных в книге Нерретера.

Но, после написания LazPhCoord, у меня уже были готовые абстрактные классы для графического построения схем цепей, выполнения соединения элементов, нумерации внешних узлов, визуального отображения элементов с использованием их изображений в формате enhanced-metafile Windows. Поэтому основное внимание можно было уделить отработке моделей элементов цепей и алгоритмов расчета установившихся и динамических (переходных) режимов.

Сразу же хочется сказать, что, разрабатывая LasDiscret2, я не ставил целью соревноваться с коммерческими программами типа MATLAB/Simulink и Multisim, легальное использование которых подразумевает значительные затраты. Не было у меня и цели повторять старую добрую SPICE3, на основе которой разработана масса симуляторов электронных схем. LazDiscret2 — это попытка разработки ПО, которое позволяло бы легко моделировать и проводить анализ электрических цепей на уровне дисциплины "Теоретические основы электротехники".

Вся работа над программой осуществлялось в open-source среде разработки Lazarus для компилятора Free Pascal (FPC). В процессе разработки было написано несколько версий LazDiscret2.


Версия 0.0

В начальной версии программы применялся классический МУП. Алгоритмы составления расчетных матриц практически полностью базировалось на материале [1]. Все матричные операции были реализованы на модулях работы с действительными и комплексным матрицами, написанными автором ранее. Решение системы уравнений выполнялось на основе LU-факторизации.

На первом этапе был реализован расчет установившихся режимов для цепей постоянного и синусоидального тока. При расчете предполагалось, что все синусоидальные источники имеют одинаковую частоту. Естественно, что применение классического МУП привело к необходимости исключения нулевого сопротивления для ветвей с независимой ЭДС, а также для ветвей с управляемыми источниками напряжения. Однако в схеме цепи допускалось наличие короткозамкнутых ветвей: амперметр, индуктивность в цепи постоянного тока, ключ во включенном состоянии. Для этих ветвей перед формированием расчетных матриц выполнялось исключение номеров короткозамкнутых внешних узлов, и вводились внутренняя нумерация узлов. Токи в короткозамкнутых ветвях рассчитывались на основании первого закона Кирхгофа для токов внешних узлов присоединения ветви.

Расчет динамических (переходных) режимов выполнялся на основе дискретных резистивных схем замещения реактивных элементов [2]. Как и в [1] построения резистивных схем замещения применялась формула обратного дифференцирования (backward differentiation formula — BDF). В этой версии применялся расчет с фиксированным шагом, порядок BDF мог выбираться в пределах от 1 до 6.

При расчете динамического режима линейной цепи было учтено, что основная матрица системы при фиксированном шаге интегрирования не зависит от времени. Поэтому после выхода на заданный порядок BDF выполнялось формирование основной матрицы и ее LU-факторизация. Далее на каждом шаге интегрирования формировался лишь вектор правой части системы уравнений (вектор источников), решение системы выполнялось на основании ранее факторизованной основной матрицы и текущей правой части. Такой подход позволяет значительно сократить время расчета при постоянном шаге интегрирования.

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

Для расчета нелинейных цепей применялся метод дискретных резистивных моделей нелинейных элементов на основе метода Ньютона–Рафсона [3]. Этот же подход использовался на каждом шаге интегрирования  при расчете динамических нелинейных цепей. В этой версии программы контроль сходимости расчета цепей с нелинейными элементами осуществлялся по достижению заданной точности тока/напряжения нелинейного элемента.

В этой версии программы были реализованы следующие элементы:

  • • линейный резистор, линейная индуктивность, линейная емкость, линейная взаимная индуктивность;
  • • источник ЭДС с резистором, источник тока;
  • • управляемые источники: ИТУТ, ИНУТ, ИТУН, ИНУН. Управляемые источники напряжения (ИН) всегда требовали последовательного включения постоянного резистора для корректного преобразования в эквивалентный источник тока (ИТ);
  • • амперметр, вольтметр, компаратор;
  • • регулятор, позволяющий выполнять изменение выбранного параметра — величины пассивного элемента, источника или частоты  — в заданных пределах по заданному закону;
  • • ключи ON и OFF;
  • • нелинейный резистор, вольт-амперная характеристика которого задана таблично. Для аппроксимация нелинейной характеристики применяется кубический сплайн.

Из дополнительных функций в программе было реализованы:

  • • просмотр кривых регистраторов, полученных при расчете схем с регулятором и динамических режимов. В качестве исходных данных для регистрации берутся показания индицирующих приборов: амперметр, вольтметр и компаратор;
  • • форма построения векторных и векторно–топографических диаграмм для установившегося режима синусоидального тока.

Эта версия программы хорошо справлялась с анализом установившихся режимов постоянного и синусоидального тока, не вызывал затруднений и расчет переходного процесса в линейной цепи. Вполне удовлетворительно выполнялся расчет динамического режима с нелинейными резистивными элементами, например, с моделями диода, туннельного диода, ВАХ которых были заданы таблично.

Вместе с тем для этой версии были выявлены следующие проблемы:

  1. Отсутствие регулировки шага интегрирования приводило к излишне большому времени расчета динамических режимов.
  2. Закончилась неудачей попытка реализации нелинейных индуктивности и емкости на основе таблично заданных зависимостей дифференциальных индуктивности и емкости, как это было описано в [1]. Даже несмотря на задание очень малых шагов интегрирования процесс расчета не сходился.
  3. В некоторых примерах не совсем устойчиво работал выбранный метод контроля сходимости расчета нелинейной резистивной цепи.

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


Версия 1.0

В процессе дальнейшей работы была поставлена цель упрощения алгоритма формирования расчетных матриц и расчета токов в короткозамкнутых ветвях. Для этого был выполнен переход на модифицированный МУП, основы которого достаточно подробно описаны в [4]. Переход на ММУП позволил снять ограничение в необходимости включения сопротивления в ветви с ЭДС и управляемыми источниками напряжения. Соответственно с положениями ММУП был изменен алгоритм формирования расчетных матриц для всех элементов зависимых от тока: резистор (R ветвь), индуктивность, взаимная индуктивность,  управляемые источники (управляемые током и источники напряжения), амперметр, ключи, нелинейный резистор (R ветвь), нелинейная индуктивность, нелинейная взаимная индуктивность.

Изучение исходных текстов SPICE3 версии 3f5 помогло оптимизировать алгоритм формирования расчетных матриц системы для ускорения расчета динамических режимов и нелинейных цепей, когда требуется неоднократное переформирование расчетной системы уравнений. Доступ к элементам матриц был переведен с индексов на указатели, которые определялись на этапе инициализации расчета.

Также в стиле SPICE3 версии 3f5 был изменен контроль сходимости при анализе нелинейных цепей, что позволило значительно увеличить устойчивость расчетов.

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

Было введено регулирование шага интегрирования при расчете динамических режимов на основе метода прогноз–коррекция, описанных в [3] и [4]. Регулирование шага осуществлялось для расчета после выхода на заданный порядок BDF, который был ограничен 3. При расчете динамического режима линейных цепей, если шаг интегрирования оказывался неизменным в течении kBDF шагов (kBDF — порядок BDF), то расчет проводится без переформирования основной матрицы до следующего изменения шага. Такой подход позволяет сократить время на формирование и факторизацию основной матрицы.

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

В версии 1.0 программы добавлены следующие модели элементов:

  • • ветвь с  идеальным источником ЭДС;
  • • нелинейная индуктивность — на основе таблично заданной вебер-амперной характеристики индуктивности;
  • • нелинейная емкость  — на основе таблично заданной кулон–вольтной характеристики емкости;
  • • нелинейная взаимная индуктивность — на основе таблично заданной кривой намагничивания сердечника;
  • • полупроводниковый диод — на основе физической модели [3] без учета барьерной и диффузионной емкостей;
  • • длинная линия — модель на основе представления в виде четырехполюсника для расчета установившихся режимов постоянного и переменного тока.

Из дополнительных функций было введено:

  • • вычисление и просмотр спектрограмм токов и напряжений, полученных в результате расчета динамических режимов;
  • • просмотр кривых мгновенных значений токов и напряжений, полученных в результате расчета линейных цепей с синусоидальными источниками различной частоты методом суперпозиции;
  • • просмотр изменения величины и фазы тока или напряжения вдоль длинной линии в установившихся режимах постоянного и синусоидального тока.

Версия 2.0

При работе над этой версией были внесены следующие изменения и доработки:

1. Для формирования и решения матричного уравнения был применен модуль работы с разреженными матрицам fpcSparse1_4, представляющий перевод на ObjectPascal компилятора FPC пакета Sparse1.4, (C) 2003, Kenneth S. Kundert, выполненный автором. Соответственно была переработана логика формирования и решения матричного уравнения ММУП.

2. Для исключения использования изображений элементов в формате enhanced-metafile Windows был выполнен переход по отрисовке изображений на основании бинарного скрипта аналогично LazPhCoord версии 2. Это позволило значительно уменьшить объем файла ресурсов программы.

3. Полностью переписаны подпрограммы расчета динамических режимов в линейных и нелинейных цепях для введения регулировки шага по методу прогноз–коррекция на этапе выхода на заданный порядок BDF. Это позволило исключить необходимость задания начального шага интегрирования. В линейной цепи с ключом и однородными источниками для возможности вычисления прогноза на первом шаге интегрирования выполняется расчет цепи для момента времени t=0 с учетом начальных условий реактивных элементов с заменой индуктивностей на источники тока, а емкостей на источники ЭДС.

4. Для повышения устойчивости расчетов схем с моделью диода, особенно при режимах постоянного тока, был изменен алгоритм расчета параметров резистивной модели для Uд>0 по методике, описанной в  [4].

5. Для расчета длинной линии в динамическом режиме были реализованы две модели [5]: на основе уравнений с запаздывающим аргументом и с использованием цепочечной П–образной схемы замещения. Модель с использованием уравнений с запаздывающим аргументом находится в стадии отладки.


Версия 2.3

По сравнению с версией 2.0 в текущую версию внесены следующие изменения:

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

2. Добавлены следующие новые элементы:

  • • независимые источники ЭДС и тока с зависимым от времени значением, реализовано пять функций источника: импульс, синусоидальный с затухающей амплитудой, экспоненциальный импульс, одночастотный ЧМ и кусочно-линейный;
  • • нелинейная элементы — R, L, C и M — с аналитически заданными характеристиками;
  • • нелинейные управляемые источники с аналитически заданными характеристиками.

3. Имеется окно построения графиков аналитически заданных характеристик.

4. Интерфейс главного окна программы дополнен инструментальной панелью, ускоряющий доступ к ряду команд меню.

5. Внесено управление доступностью команд в зависимости от режима работы и наличия открытого проекта.

6. Переработано окно настройки программ с целью разделения опций на группы.


Литература

1. Нерретер В. Расчет электрических цепей на персональной ЭВМ. — М.: Энергоатомиздат, 1991.

2. Расчет электрических цепей и электромагнитных полей на ЭВМ // М.Г. Александрова и др.: Под ред. Л.В. Данилова и Е.С. Филиппова. — М.: Радио и связь, 1983.

3. Чуа Л.О., Лин Пен-Мин. Машинный анализ электронных схем: Алгоритмы и вычислительные методы. — М.: Энергия, 1980

4. Влах И., Сингхал К. Машинные методы анализа и проектирования электронных схем. — М.: Радио и связь, 1988.

5. Демирчян К.С., Бутырин П.А. Моделирование и машинный расчет электрических цепей. — М.: Высш. шк., 1988.

 

К началу