Комментарии 19
Хорошо, что программа развивается и выходят статьи с такими руководствами. Было бы здорово увидеть и русскоязычный раздел документации на сайте проекта, который уже есть чем начать заполнять.
Да, в ближайшее время сделаю репозиторий и проект overleaf для русскоязычной документации. План по английской документации здесь: https://github.com/ra3xdh/qucs_s/issues/554
Вы делаете очень крутую работу! Но я сходу не смог разобраться, а вытались интегрироваться с kicad? или как раз из за невозможности это сделать приходится создавать графическую оболочку для решателя "заного" ?
Просто для меня, как не знакомого с внутренностями вашего проекта и кикада (да и вообще не программиста) кажется, что и там и там графический интерфейс схожий, проделано куча работы, а у кикада есть система плагинов, бери да встраивай!
Разработка Qucs ведётся с 2003 года. Изначально он задумывался авторами, которые в настоящее время ушли из open-source, как открытый аналог САПР AWR или ADS более с уклоном на моделирование СВЧ устройств. Даже интерфейс сделали похожий на ADS. Но потом область применения программы расширили. KiCAD стал делать свой модуль с симулятором много позже.
Объединить Qucs и KiCAD едва ли возможно в виду архитектурных различий и использования разных фреймворков (Qt и WX) для GUI. Также область назначения обеих программ несколько разная. Qucs по-прежнему имеет уклон в моделирование СВЧ.
А Вы не думали над возможностью импорта net-листов схем из KiCAD-а? Было бы круто.
Нет, реализация подобного не рассматривается. В 99% случаев из нетлиста KiCAD можно импортировать только RCL. Для остального в библиотеках KiCAD нет SPICE-моделей. Нужны какие-то костыли. Ну и если даже удастся импортировать схему целиком с моделями, то на чём-то подобном вот этому: https://raw.githubusercontent.com/ra3xdh/TRX_RA3XDH/master/TRX_RA3XDH.png симулятор зависнет. В данном примере кстати все модели есть. На мой взгляд лучше моделировать схему малыми частями. Существует брошенный проект для обратного преобразования qucs2kicad https://github.com/Valber/qucs2kicad Также начиная с версии 24.2.0 поддерживается интеграция с утилитой Qucs-RFLayout https://github.com/thomaslepoix/Qucs-RFlayout , которая генерирует топологию KiCAD из схемы с микрополосковыми линиями.
Спасибо за ссылки, а по импорту net-листов пожелание более скромное, просто импортировать принципиальную схему один к одному, с номиналами RCL, и наименованиями всех компонентов что экономит время, и позволяет избежать ошибок ручного копирования.
Касаемо, подгрузки SPICE-моделей к УГО(понятно, что при этом ограничения совместимости форматов SPICE-моделей учитываются в ручную), то хорошо бы современем, это упростить, до 1 клика, примерно как в KiCAD и LT-SPICE,
Если УГО типовое, например полный дифференциальный усилитель, просто открываем диалог подрузки SPICE-модели, в котором задаем соотвествие портов УГО, и SPICE-модели, и дополнительно по необходимости режим совмеcтимости SPICE-модели с NgSpice(т.е. по сути как в KiCAD).
Либо если типовое УГО не выбирали, то в один клик формируется УГО-прямоугольник в котором имена портов могут быть переименованы(т.е. по сути как в LT-SPICE, без предварительного выбора УГО), сейчас в один клик Qucs-S уже делает 95% этого, но вот порты УГО-прямоугольника при этом просто так не переименуешь, требуется целый ритуал с подсхемой(либо, что не очень хорошо, переименование портов в самой SPICE-модели).
импортировать принципиальную схему один к одному
Технически такое в принципе возможно. Но делать это некому, так как требуется написание большого объёма кода. Я точно за эту задачу не возьмусь. Вспоминаем, что KiCAD разрабатывают специалисты из CERN на зарплате. Ну и как я писал ранее, большие схемы просто зависнут при попытке симуляции, а маленькие схемы перерисовать вручную не составляет труда. Всё равно в физическую схему для корректной симуляции нужно что-то добавлять либо убирать. Но если кто-то сделает патч с подобной фичей "под ключ", то я его приму.
упростить, до 1 клика, примерно как в KiCAD и LT-SPICE
Существует компонент SpiceLibComp https://qucs-s-help.readthedocs.io/en/latest/SubLib.html#usage-of-unmodified-spice-libraries Там предполагается, что к этому компоненту можно просто подключить шаблон символа и указать файл с моделью SUBCKT. Но эта система имеет недоработки. Пока нет шаблонов символов и редактора таких шаблонов. Также нельзя задать соответствие портов символа и подсхемы. И иногда Ngspice показывает warning nested subcircuits. Поэтому я не включил информацию про данный способ в эту статью. Компонент SpiceLibComp нужно дорабатывать. Опять же помощь приветствуется.
В качестве примера два скриншота реверсивного усилителя от КВ трансивера в KiCAD и Qucs. В принципе импорт из KiCAD возможен, но чтобы запустить симуляцию схема потребовала доработки. Ну и если бы я импортировал схему трансивера целиком, то симуляция бы просто зависла, несмотря на то, что для всех компонентов есть модели. Да и разработка здесь была в обратном порядке. Сначала я отладил мелкие узлы в симуляторе, а потом перерисовал их в KiCAD, чтобы сделать разводку ПП.


Написал план улучшений по SpiceLibComp https://github.com/ra3xdh/qucs_s/issues/679 Может быть кто-то возьмётся.
Простая программа ВЧ моделирования Калифорнийского университета встретилась в интернете. DOS-стайл, но схема рисуется очень быстро. Модельки внутри непростые.

Офигенный софт, на самом деле. Пользуюсь давно, версия по-моему что-то типа 0.16 в официальных репозиториях убунты тогда была, не помню уже точно. Редактор схемы, кстати, я считаю намного удобнее, чем Altium Designer, например. Очень всё просто, но понятно и предсказуемо, поэтому вносить изменения получается быстрее.
Я не СВЧист. Изредка использую развёртку по АЧХ. Больше "Моделирование переходного процесса". Импульсные, триггерные, автогенераторные схемы - ван лав. Часто наталкиваюсь на то, что симуляция заходит в тупик на очередном переключении. Есть ли какие-то общие рекомендации для параметров симуляции, или для самой схемы при моделировании таких устройств?
Часто наталкиваюсь на то, что симуляция заходит в тупик на очередном переключении.
Во первых следует проверить, что точно Ngspice установлен и точно включен в настройках программы. Для Убунты существует библиотека ngspice-kicad, которая симулятором не является. Совместно с Qucs-S она работать не будет. Если используется KiCAD из PPA, то установить системный ngspice из репозитория нельзя, так как там идёт конфликт пакетов: https://github.com/ra3xdh/qucs_s/issues/333
Общего алгоритма отладки сходимости при моделировании переходных процессов нет. Сообщения об ошибках у Ngspice довольно невнятные. Следует проверять схему на наличие плавающих узлов и т.п. Также в последних версиях Ngspice появилась проблема с диодами: https://github.com/ra3xdh/qucs_s/discussions/710
Ясно. Проверю. Может, несхождение симуляции действительно было именно в предыдущих версиях. qucsator, вроде так назывался тогда математический движок.
Сейчас по вашим статьям добавил qucs в список реп. Версия 24.2.1. ngspice установлен, и судя по логам из qucs, работает.
В базовой библиотеке косяк встретил. "Источник напряжения прямоугольной формы", когда его параметры задаются из уравнения, а не руками, перестаёт генерировать. А я им пользуюсь и как пилообразный генератор, и для развёртки ВАХ, как на железе. Его модель в нетлист для ngspice, насколько я в итоге разобрался, неправильно выводится.
Последние версии не пробовал, но и в перечнях изменений не видел этого бага. Зарепортить кому-либо? Что приложить для этого? Или может я сам пришлю правки. Но дайте понять, в какой области исходников это всё искать.
Версия 24.2.1.
Новейшая версия 24.3.0
В базовой библиотеке косяк встретил. "Источник напряжения прямоугольной формы", когда его параметры задаются из уравнения, а не руками, перестаёт генерировать.
Это уже исправлено: https://github.com/ra3xdh/qucs_s/issues/819 Было связано с тем, что нужно обеспечивать совместимость SPICE и qucsator.
Огромное спасибо!
У меня не последняя версия, т.к. ставлю из репозиториев для убунты 20. Но раз проект развивается так стремительно, имеет смысл и из последних исходников попробовать собрать.
Поставил я таки в старую систему релиз 24.3.2 из исходников. Прекрасно работает.
Ngspice с моделированием переходных процессов действительно справляется гораздо лучше, чем Qucsator. Но если, например, конденсатор висит в воздухе (при отладке схемы где-нибудь разрыв делаю), Ngspice сразу говорит - сингулярность. Qucsator как-то умел это обходить.
Скомпилилось не сразу. Но по подсказкам компилятора внёс изменения, и всё заработало.
Правки
diff --git a/qucs/components/libcomp.cpp b/qucs/components/libcomp.cpp
index eab40cd5..20c835b7 100644
--- a/qucs/components/libcomp.cpp
+++ b/qucs/components/libcomp.cpp
@@ -27,6 +27,7 @@
#include <QDir>
#include <QRegularExpression>
#include <QDebug>
+#include <memory>
LibComp::LibComp()
{
diff --git a/qucs/diagrams/diagramdialog.h b/qucs/diagrams/diagramdialog.h
index 1114463d..73561741 100644
--- a/qucs/diagrams/diagramdialog.h
+++ b/qucs/diagrams/diagramdialog.h
@@ -26,6 +26,7 @@
#include <QDialog>
#include <QRegularExpression>
#include <QRegularExpressionValidator>
+#include <memory>
#include <vector>
class QVBoxLayout;
diff --git a/qucs/extsimkernels/spicelibcompdialog.cpp b/qucs/extsimkernels/spicelibcompdialog.cpp
index 18f46e94..955c304c 100644
--- a/qucs/extsimkernels/spicelibcompdialog.cpp
+++ b/qucs/extsimkernels/spicelibcompdialog.cpp
@@ -281,7 +281,7 @@ int SpiceLibCompDialog::parseLibFile(const QString &filename)
subcir_start = true;
subcir_body.clear();
QStringList pin_names;
- QStringList tokens = line.split(QRegularExpression("[ \\t]"),Qt::SkipEmptyParts);
+ QStringList tokens = line.split(QRegularExpression("[ \\t]"),qucs::SkipEmptyParts);
if (tokens.count() > 3) {
subname = tokens.at(1);
} else continue;
-- не туда
Добавил в статью информацию по импорту SPICE моделей в версии 24.3.0 и выше. В новейших версиях программы данная процедура значительно упростилась, и оборачивать модели в подсхемы более не требуется. Также можно импортировать модели дискретных компонентов через кнопку Fill from SPICE MODEL в диалоге свойств транзисторов и им подобных компонентов синего цвета.
Qucs-S: руководство по использованию SPICE-моделей и созданию библиотек