Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux, Windows и FreeBSD), написан на С++ с использованием набора библиотек Qt и разрабатывается полностью в частном порядке (в отличие, например от KiCAD, который имеет спонсора в лице CERN). В феврале этого года проект восстал из мёртвых и вышел релиз 0.0.23. Главным новшеством версии 0.0.23 было то, что программа теперь портирована на Qt5, чем обеспечена собираемость на современных дистрибутивах Linux. Актуальным релизом на текущий момент является 0.0.24 https://github.com/ra3xdh/qucs_s/releases/tag/0.0.24, в котором добавлено несколько новых видов моделирования. Далее будут рассмотрены основные возможности программы и показано как в Qucs-S смоделировать схему.



История разработки


Qucs-S является форком проекта Qucs, который начали разрабатывать немцы Stefan Jahn и Michael Margraf в 2003 году. В настоящее время материнский проект практически неактивен и последний релиз был в 2017 году. Изначально Qucs поставлялся со своим собственным движком моделирования, нацеленным более на анализ ВЧ схем в частотной области. Этот движок имел серьёзные проблемы со сходимостью при моделировании во временной области и был несовместим со SPICE, что не позволяло напрямую применять модели электронных компонентов, распространяемые производителями.


В 2014 году я начал разработку набора патчей, который бы позволял подключать к Qucs в качестве движка открытый Ngspice. В итоге эта разработка привела к созданию форка Qucs-S (Qucs with SPICE). В 2017-2020 годах вышло три релиза Qucs-S, последние из которых были корректирующими, проект был скорее мёртв. В этом году я провёл ритуал некромантии, портировал Qucs-S на Qt5, и тем самым возвратил программу к жизни.


Про основы работы в Qucs и про Qucs-S рассказывают мои предыдущие статьи:



Поддерживаемые движки моделирования


В настоящее время Qucs-S поддерживает четыре движка моделирования:


  • Ngspice Это рекомендованный симулятор. Он совместим с большинством моделей, которые можно найти на разнообразных ресурсах. Сейчас проектом руководит Holger Vogt из университета Дуйсбург-Эссен.
  • XYCE Это симулятор разработанный с нуля Сандийскими национальными лабораториями. Имеется возможность моделирования гармонического баланса (HB) и S-параметров.
  • SpiceOpus
  • Qucsator Это изначальный движок, применявшийся в Qucs. Имеет возможность моделированя S-параметров, но нестабилен во временной области.

Qucs-S поддерживает все виды моделирования реализованные в применяемом SPICE-движке, а именно моделирования во временной и частотной области, шумовой анализ, анализ нелинейных искажений, Фурье-анализ, моделирования гармонического баланса.


Установка


Для Linux имеются репозитории для Debian/Ubuntu, Fedora и OpenSUSE. Имеются также пакеты для Arch, которые можно установить через AUR, и порт для FreeBSD. Для нестандартных случаев можно собрать Qucs-S из исходников или воспользоваться AppImage. Поддержку своего дистрибутива Linux можно проверить здесь. Бинарные пакеты собираются автоматически при помощи OpenSUSE Build Service.


Сам Qucs-S не предоставляет движка моделирования. Рекомендуется использовать Ngspice, который для Debian/Ubuntu устанавливается по зависимостям, а в прочих случаях его нужно установить вручную.


Для Windows следует скачать zip-архив с portable версией Qucs-S со страницы релиза. Далее нужно распаковать архив и запустить файл qucs-s.exe из поддиректории bin. Ngspice следует скачать с официального сайта и установать в C:\Spice64, иначе не будут работать модели XSPICE. При первом запуске следует указать путь к файлу ngspice_con.exe в настройках программы. Последние версии Ngspice для Windows теперь поставляют два исполняемых файла ngspice.exe и ngspice_con.exe Для правильной работы Qucs-S нужен ngspice_con.exe, который может писать логи в консоль. Обычный ngspice.exe запускает графическое окно, и все текстовые сообщения остаются внутри этого окна.


Основы работы с программой


При первом запуске Qucs-S сообщит, что нужно выбрать движок моделирования и откроет диалоговое окно, показанное на скриншоте. В последствии настройки можно поменять в меню Simulation->Select default simulator. Под Linux Ngspice обычно расположен в /usr/bin/ngspice, а под Windows устанавливается по умолчанию в C:/Spice64/bin/ngspice_con.exe



После того как выбран симулятор, открывается окно редактора схемы. Теперь можно смоделировать какую-нибудь схему. Для примера соберём инвертирующий усилитель Нортона на операционном усилителе NE5532. Редактирование схемы в Qucs интуитивно понятно и те, кто работал с другими электрическими САПР, легко разберутся с редактором. Следует отметить несколько особенностей. Виды моделирования и диаграммы также являются компонентами и размещаются на схеме. Они находятся в группах Simulations и Diagrams и выбираются из панели компонентов в правой части окна, откуда их можно перетаскивать на поле схемы. Операционный усилитель является библиотечным компонентом и его следует взять со вкладки Libraries в правой части окна. Собираем схему и размещаем на ней виды моделирования. Требуется смоделировать переходный процесс (Transisent analysis) и АЧХ схемы (AC analysis) Должно получиться как показано на скриншоте. Вход и выход схемы нужно пометить при помощи Insert->Wire label.



Уравнение также является особым компонентом и вставляется через меню Insert→Equation или кнопкой на панели инструментов. Способ задания уравнений в Qucs-S отличается от того, что было в Qucs. Теперь в первом параметре нужно выбрать из списка к какому виду моделирования относится уравнение, так как для напряжений и токов используется нотация SPICE. Например v(out) это напряжение на узле out Диалоговое окно, открываемое при двойном клике по уравнению, показано на скриншоте. Данное уравнения рассчитывает коэффициент усиления схемы в децибелах.



После того, как схема собрана, выбираем в главном меню Simulation->Simulate или нажимаем на клавиатуре F2 и запускаем моделирование. Появляется окно в котором сообщается, что Ngspice промоделировал схему без ошибок.



Ознакомившись с отчётом симулятора, нажимаем Exit и переходим на страницу просмотра, где можно разместить диаграммы. Диаграммы также можно разместить и прямо на схеме как это сделано на КДПВ. Сигналы, которые нужно вывести на диаграмму можно выбрать в диалоговом окне свойств диаграммы. На следующих двух скриншотах показан диалог свойств диаграммы и окно просмотра с АЧХ и осциллограммами сигналов на входе и на выходе. Видно, что усилитель усиливает сигнал.




На диаграммах можно размещать маркеры, которые действуют аналогично курсорам на цифровом осциллографе. Начиная с версии Qucs-S 0.0.24 теперь можно задавать точную позицию маркера по оси X в диалоговом окне свойств. Например можно установить маркер точно на частоте 1 кГц на графике АЧХ.



Новые виды моделирования в Qucs-S


Ngspice начиная с версии 37, которая вышла в мае этого года, поддерживает моделирование S-параметров. В Qucs-S начиная с версии 0.0.24 также можно промоделировать S-параметры при помощи Ngspice и больше не требуется устанавливать и использовать для этой цели Qucsator. Пример схемы широкополосного усилителя высокой частоты для КВ трансивера показан на скриншоте.



До версии Qucs-S 0.0.24 требовалось прибегать к написанию скрипта постпроцессора Ngspice, чтобы выполнить анализ спектра (FFT). Начиная с версии 0.0.24 в приложении реализован специальный вид моделирования: анализ спектра (Spectrum ananlysis – FFT). Пример моделирования спектра на выходе диодного кольцевого смесителя показан на скриншоте. Параметрами данного моделирования являются полоса частот (BW), шаг по частоте (dF) и тип оконной функции.



Заключение


Симулятор Qucs-S восстал из мёртвых и теперь будет развиваться. В планах у меня синхронизировать релизы с новыми функциями, появляющимися в Ngspice. Например в Ngspice-38 разработчики планируют добавить поддержку цифровых компонентов, совместимых по синтаксису нетлиста и списка цепей с LTSpice. Как только они будут доступны в Ngspice, я добавлю их поддержку в Qucs-S. Также в следующем релизе планируются некоторые улучшения пользовательского интерфейса.


Помощь в разработке приветствуется. В профиле проекта на Гитхабе можно ознакомиться с багтрекером и планами дальнейшей разработки программы. Если планируете какое-то глобальное улучшение, то рекомендуется предварительно написать и изложить, что вы собираетесь делать. Также проекту можно помочь финансово через страницу на Boosty и тем самым тоже приблизить следующий релиз.


Ресурсы по Qucs-S


Комментарии (29)


  1. ioccy
    23.07.2022 14:23
    +2

    Да, из-за сходимости и кривых встроенных моделей перешел на Micro-Cap. Надеюсь, когда-нибудь вы запилите загрузку моделей из гуя.


    1. vv_kuznetsov Автор
      23.07.2022 15:12
      +3

      Да, из-за сходимости и кривых встроенных моделей перешел на Micro-Cap

      С переходом на Ngspice в качестве движка теперь проблемы со сходимостью решились. Qucsator я поддерживаю в основном для обратной совместимости со старыми версиями Qucs и некоторых специфичных задач, как моделирование микрополосковых линий, которых в Ngspice нет.

      Надеюсь, когда-нибудь вы запилите загрузку моделей из гуя

      Автоматическая загрузка SPICE-моделей уже есть https://qucs-s-help.readthedocs.io/en/latest/SubLib.html#usage-of-the-whole-spice-library Можно положить библиотеку в $HOME/.qucs/user_lib и оно будет видно в менеджере библиотек, но с УГО квадратиком. Если модель, совместима с Ngspice, то всё будет работать.


  1. slava37md
    23.07.2022 17:04
    +2

    А я написал на javascript расчёт переходных процессов, только не в электронных схемах, а в автоматике: https://slava37md2.github.io/free-ACS-CAD/free-sapr-sau.html . Когда-то в институте мечтали с друзьями сделать и для электронных схем, но руки так и не дошли.


  1. IAMBIRD
    23.07.2022 17:20
    +1

    Интерфейс напомнил о существовании LogicCircuit (хорошая и очень простая программа для симуляции логических элементов).

    А тут можно собрать какой-нибудь блок из электроники и потом оперировать им как модулем?


    1. vv_kuznetsov Автор
      23.07.2022 19:22
      +2

      А тут можно собрать какой-нибудь блок из электроники и потом оперировать им как модулем?

      Да, подсхемы есть. С помощью них можно решить подобную задачу.


  1. developer7
    23.07.2022 19:18
    +4

    Лет 15 назад использовал для этого Proteus

    Был удобно что он поддерживал виртуальные контроллеры и можно было загрузить туда прошивку. Было прикольно как программа в виртуальном контроллере через COM порт общалась с реальным миром и датчиками. Можно было ставить точки останова и шагать по программе. И в самом протеусе одновременно можно было покрутить переменные резисторы, подключить виртуальные осциллографы и всякие мультиметры. Интересное время было )


    1. vv_kuznetsov Автор
      23.07.2022 19:21
      +4

      Да, про Proteus знаю, пользовался им когда студентом был и потом работал на заводе схемотехником. Сейчас для моделирования схем на МК существует открытый SimulIDE https://www.simulide.com/


    1. iamkisly
      25.07.2022 01:20

      Он и сейчас с успехом используется у любителей. Я на нем делаю симуляции цифровых схем и самоделок на arduino.


      1. vv_kuznetsov Автор
        25.07.2022 09:52

        Но лучше всё же не заниматься пиратством, а использовать открытый аналог, тем более Arduino в SimulIDE поддерживается.


        1. iamkisly
          25.07.2022 12:33

          Ну.. мне не удобно пользоваться SimulIDE. Он конечно дает потрясающую наглядность для в случае крупноузловой сборки.. но неудобно. Проще воспользоваться ISIS с триальными ограничениями.


  1. Racheengel
    23.07.2022 20:03

    А движок редактора схем жёстко привязан к набору компонент, или его можно использовать вне qucs? Как отдельную qt библиотеку?


    1. vv_kuznetsov Автор
      24.07.2022 09:29

      Отделить редактор схемы от всего остального проблематично. К тому же там УГО компонентов захардкожено на C++, что не очень хорошо. Существует ещё симулятор Caneda https://github.com/Caneda/Caneda (похоже теперь скорее мёртвый), может быть оттуда отделить редактор схемы будет проще. Там к тому же компоненты представляются в виде XML.


      1. iamkisly
        25.07.2022 12:41

        Вот это и проблема большинства opensource инициатив. Как правило пишется сильно связанный код, который тяжело повторно переиспользовать, мигрировать на новый фреймворк или портировать.


        1. vv_kuznetsov Автор
          25.07.2022 17:02

          Некоторые попытки уйти от компонентов захардкоженных на С++ предпринимаются. Пока их было 10 это было не критично, а когда стало 100, то стало представлять проблему. Но это не только в open-source, мало где задумываются об архитектуре на начальных стадиях разработки. С другой стороны пользователю всё равно что там у программы внутри: компоненты захардкожены на C++ или сделаны на XML и какой там фреймворк. Главное чтобы симуляция работала. Старый Qucs на Qt4 (который EOL в 2015 году) до сих пор имеет по 1000 скачиваний в неделю на SF.


  1. engine9
    23.07.2022 21:11
    +2

    Хорошее дело.


  1. ahdenchik
    23.07.2022 21:13
    +1

    Отказался от QUCS во время этой его последней стагнации, и вот почему:

    Четыре раза подряд я перерисовывал готовые схемы из QUCS в KiCAD, и каждый раз при этом привносил мелкие, но досадные ошибки. После чего однозначно решил, что симулятор и редактор должны быть единым целым или иметь возможность взаимнооднозначного экспорта-импорта. В это же время как раз завезли симуляцию той же ngspice в сам KiCAD, так что в нём и стал всё симулировать.

    Текущие недостатки симуляции в KiCAD:

    * Нет виртуальных измерительных приборов - все величины отображаются только относительно "нуля" схемы

    * Отвратительный осциллограф - в нём нет не то что диаграммы Смита, но даже разноса сигнала разных порядков между левой и правой шкалой, управления шкалой Y, логарифмической шкалы. Короче, нет вообще ничего! Ощущение будто сами авторы этим осциллоскопом не пользуются.

    * Мало настроек через GUI - многое приходится писать текстом на языке Spice, что мне кажется неудобным

    Поэтому, с теплотой вспоминаю QUCS. Если бы функционал QUCS каким-то образом перенесли в KiCAD я был бы счастлив.


    1. vv_kuznetsov Автор
      24.07.2022 09:40

      В KiCAD, насколько знаю, моделирование до последнего момента было экспериментальной функцией и не включено в дефолтной сборке. Реализовано оно довольно примитивно.

      Четыре раза подряд я перерисовывал готовые схемы из QUCS в KiCAD

      В моём случае совершенно не вижу проблем. Всегда моделировал только отдельные маленькие куски от большой схемы. MicroCAP и LTSpice тоже не имеют редактора ПП и нормально существуют. Всё же симулятор должен быть отдельно. На полной схеме часто имеется множество компонентов, которые не подлежат симуляции. Если не секрет, то какое именно у вас было устройство, что его можно было промоделировать 1:1 как на схеме в Кикаде?

      Если бы функционал QUCS каким-то образом перенесли в KiCAD я был бы счастлив

      Это сделать невозможно. Код KiCAD и Qucs слишком сильно отличается и объединить их нельзя.


      1. iamkisly
        25.07.2022 01:24

        А зачем объединять, когда надо работать над импорт-экспортом?


        1. vv_kuznetsov Автор
          25.07.2022 09:49

          Технически сделать экспорт схемы в KiCAD возможно, но требует времени. Пока есть более важные задачи, напрямую связанные с моделированием. Ещё планируется в каком-то виде реализовать импорт библиотек LTSpice, так как сейчас библиотеки это узкое место.

          Ещё существует вот такая утилита https://github.com/Valber/qucs2kicad , но она обновлялась последний раз в 2011 году. За это время кикадовцы сменили формат файла схемы.


      1. ahdenchik
        25.07.2022 06:23

        У меня схемы начинающего: усилители, генераторы, смесители, демодуляторы. Всё на низкой частоте, ничего особенного.

        В KiCAD есть крыжики "не переносить на плату" - это для симуляции элементов, которых не будет (ёмкость линии или виртуальный источник тока какой-нибудь) и "не симулировать" - для тех компонентов, что симуляции не подлежат.

        Насчёт примитивности не понял: там ровно тот же ngspice используется


        1. vv_kuznetsov Автор
          25.07.2022 09:46

          У меня схемы начинающего: усилители, генераторы, смесители, демодуляторы.

          Понятно. Я например вот такой аппарат https://github.com/ra3xdh/TRX_RA3XDH_v2/blob/master/TRX_RA3XDH_v2.png моделировал по частям, так как там имеется много повторяющихся блоков и запихивать схему в симулятор целиком нет смысла. И обычно что-то всё равно приходится перерисовывать с даташитов и т.п.

          Насчёт примитивности не понял: там ровно тот же ngspice используется

          Я имел в виду, что интерфейс примитивный, многих типов диаграмм пока нет и т.п. Моделирование в KiCAD как будто сделано для галочки, чтобы было. Может быть потом они его доработают, тем более что разработчик этой подсистемы работает в CERN.


  1. quaer
    24.07.2022 01:24
    +1

    TI лочит свои модели для использования их только со своей TINA-TI, AD привязан к своему LTspice. Для быстрого моделирования силовых - SIMPLIS. Для иделизированных компонентов - idealCircuit и NL5. Немного сбоку, судя по всему умирающий из-за невозможности конкурировать с бесплатными программами, любимый аналоговиками, Micro-Cap. А для кого эта, если судя по этому тексту, её 1 человек тащит и какова перспектива?


    1. vv_kuznetsov Автор
      24.07.2022 10:00

      Qucs-S имеет открытый исходный код и запускается нативно под Linux. Как показала практика, проприетарщики могут изменить условия использования своего ПО и, например, сделать его по подписке как Eagle. Поэтому открытые САПР важны. Основная аудитория Qucs -- это радиолюбители, также имеются академические пользователи, которые используют Qucs для отладки Verilog-A моделей. Пока ещё не все SPICE-модели распространяются зашифрованными. Также Qucs-S предоставляет GUI для движка моделирования XYCE, используемого в академических кругах. Google выпускает открытый SkywaterPDK для микроэлектроники. Для разработки топологии ИМС предлагается использовать KLayout, а для моделирования рисовать схему в xcircuit и запускать Ngspice в консоли. Вместо этого для симуляции вполне можно использовать Qucs-S+Ngspice.


      1. quaer
        24.07.2022 11:54

        Как долго Qucs сможет оставаться бесплатным и развиваться? Производители микросхем предоставляют свой софт сейчас бесплатно, как сервис. И так как разработчик скорее будет доверять их софту, чем стороннему, выглядит так, что сторонний софт постепенно умирает сейчас.


        1. prokoudine
          24.07.2022 13:22

          Столько, сколько он нужен самому автору.


        1. vv_kuznetsov Автор
          24.07.2022 13:37

          Как долго Qucs сможет оставаться бесплатным

          Сменить лицензию софт под GPL (чтобы закрыть исходники) может только с согласия всех его контрибуторов, которые когда-либо присылали патчи. Даже если поставить цель сменить лицензию, собрать со всех согласие невозможно, так что Qucs останется под GPL вечно.


          1. quaer
            24.07.2022 16:12

            Это всего лишь текущее состояние со всеми его багами.


  1. nagayev
    24.07.2022 14:00

    А мы в вузе использовали Electronics Workbench)


    1. vv_kuznetsov Автор
      24.07.2022 14:18

      У нас уже был Multisim, причём лицензионный.