Qucs — это кроссплатформенный (Linux, Windows, MacOS-X) симулятор электронных схем с открытым кодом. О нём рассказывают мои предыдущие статьи на Хабре:
- Qucs — open-source САПР для моделирования электронных схем habrahabr.ru/post/248005
- Новости проекта Qucs: подготовка к релизу 0.0.19 habrahabr.ru/post/259193
- Новости проекта Qucs: доступен кандидат в релизы с поддержкой моделирования схем в SPICE habrahabr.ru/post/263555
В настоящее время готовятся к релизу параллельно две версии Qucs:
- Qucs — сборки с обычным набором функций. Используется только движок моделирования Qucsator
- QucsS — сборка с возможностью использования SPICE (поддерживаеются движки Ngspice, XYCE, SpiceOpus) как движка моделирования по умолчанию. Данные сборки содержат букву «S» после номера версии. Для инженеров наибольший интерес представляет Ngspice
Пока очередной релиз Qucs вновь отложен на неопределённый срок, вышел кандидат в релизы Qucs-0.0.19S-RC6 с поддержкой SPICE. Этот релиз-кандидат значительно отличается от всех предыдущих. Скачать пакеты для двух платформ (Windows и Linux) можно здесь: github.com/ra3xdh/qucs/releases/tag/0.0.19S-rc6
Под катом будет рассказано о нововведения в данном релиз-кандидате.
Установка
Linux
Процедура установки для Linux не изменилась. Нужно собирать пакет из исходников. Требуются компиляторы и Qt4 для разработчиков. Нужно собрать отдельно Qucs и движок моделирования Qucsator:
tar xvfz qucs-0.0.19S-rc6.tar.gz
cd qucs-0.0.19S-rc6
cd qucs
./configure
make
make install
cd ../qucs-core
./configure
make
make install
При этом всё поставится в /usr/local, и если туда уже установлена предыдущая версия Qucs, то она перезапишется. Чтобы установить QucsS в другой каталог, нужно изменить команду configure:
./configure --prefix=/some_qucs_location/
Если требуется только SPICE, то можно собрать только интерфейс Qucs:
tar xvfz qucs-0.0.19S-rc6.tar.gz
cd qucs-0.0.19S-rc6/qucs
./configure --prefix=/some-qucs-location/
make
make install
Ngspice следует установить при помощи пакетного менеджера. Он есть во всех современных дистрибутивах.
При первом запуске QucsS попросит указать симулятор по умолчанию.
Windows
Для Windows следует скачать бинарный инсталлятор. Совместно с QucsS рекомендуется использовать специальную сборку Ngspice, которую также можно скачать со страницы релиза. Сборка Ngspice, скачанная с официального сайта проект работать будет, но не позволяет писать логи, т.к. имеет неотключаемый GUI.
Обзор новых функций Qucs-0.0.19S-RC6
Кроме исправления багов и синхронизации с кодовой базой головного проекта, QucsS содержит ряд очень важных новых функций.
Установка симулятора по умолчанию
Изменилась процедура запуска моделирования при помощи SPICE-симулятора. Теперь можно назначить симулятор по умолчанию, который будет запускаться каждый раз, когда пользователь вызывает моделирование (например нажав F2). Использовать специальный пункт меню Simulate with SPICE теперь не нужно. Если выбран один из SPICE-движков, то для работы программы теперь не требуется движок Qucsator и полная установка.
Симулятор по умолчанию можно назначить либо при первом запуске программы, либо потом выбрав в главном меню Simulation->Select default simulator. Если выбран один из SPICE-движков, то несовместимые с ним компоненты и библиотеки не показываются. Диалог установки симулятора по умолчанию выглядит так:
Дефолтный симулятор следует выбрать в выпадающем списке в верхней части окна. Пользователям Windows нужно также обязательно указать правильный путь к исполняемым файлам симуляторов.
Расчёт рабочей точки при помощи Ngspice
Реализован расчёт рабочей точки по постоянному току (по нажатию F8) для SPICE-движков. Теперь если симулятором по умолчанию назначен Ngspice, то он и будет рассчитывать рабочую точку. Результаты расчёта выглядят так:
Новый набор аналоговых блоков XPSPICE
Компоненты XSPICE вынесены в специальную библиотеку Xanalogue. XSPICE позволяет использовать компоненты, моделирующие схему на уровне блоков. Новая библиотека содержит модели усилителей, сумматоров, перемножителей, делителей, интеграторов, ограничителей и т.п. Вот как они выглядят:
SPICE-директивы .MODEL и .INCLUDE
В дополнении к имеющему набору SPICE-совместимых полупроводниковых компонентов добавлена возможность размещения на схеме директив .MODEL и .INCLUDE, что позволяет использовать в схеме немодифицированные библиотеки полупроводниковых компонентов. Директива .INCLUDE позволяет сослаться на библиотеку, а директива .MODEL — построчно скопировать SPICE-модель и внедрить её в схему. Схема смесителя на полевых транзисторах иллюстрирует использование этой директивы.
Модели трансформаторов и сердечников
Добавлены компоненты, позволяющие моделировать трансформаторы и катушки с ферромагнитным сердечником. Имеется библиотека Transformers, содержащая трансформаторы и библиотека Cores с моделями сердечников (в основном стальные сердечники). Данный функционал доступен только через Ngspice. На рисунке показана схема лампового УНЧ (на лампе 6П6С), которая иллюстрирует использование новых библиотечных моделей трансформаторов и SPICE-моделей.
Создавать свои трансформаторы можно применяя комбинацию компонентов Icouple (обмотка) и Core (сердечник). Идеальные трансформаторы можно создать, используя компонент «K coupling»
Создание нестандартных SPICE компонентов
Добавлены два компонента «SPICE generic device» и «XSPICE generic device». Они позволяют создавать новый нестандартный компонент, зная только число выводов и букву, которая ему назначена в SPICE. Это полезно если компонент уже добавлен в движок, а графический интерфейс запаздывает. Особенно это касается симулятора XYCE, где новые компоненты добавляются в каждом релизе. На прилагаемой схеме как нестандартный компонент объявлен обычный полевой транзистор. Модель полевого транзистора подключается при помощи директивы .MODEL.
Поддержка моделей XSPICE CodeModel
Добавлена поддержка языка описания моделей аналоговых компонентов XSPICE CodeModel (известен с 1991 года). Он позволяет создавать новые модели и подключать их к движку моделирования Ngspice без перекомпиляции. Подробнее о синтаксисе CodeModel моделей можно прочитать в мануале Ngspice и XSPICE. Подключить модель CodeModel можно используя комбинацию компонентов «XSPICE generic device» (УГО компонента) и «XSPICE CodeModel» (исходный текст модели). На схеме можно видеть пример использования таких моделей:
Модель CodeModel состоит из пары файлов cfunc.mod (реализация модели) и ifspec.ifs (описание интерфейса). Вот так выглядит исходный текст (файл cfunc.mod) CodeModel модели усилителя:
void cm_gain(ARGS)
Mif_Complex_t ac_gain;
if(ANALYSIS != MIF_AC) {
OUTPUT(out) = PARAM(out_offset) + PARAM(gain) *
( INPUT(in) + PARAM(in_offset));
PARTIAL(out,in) = PARAM(gain);
} else {
ac_gain.real = PARAM(gain);
ac_gain.imag= 0.0;
AC_GAIN(out,in) = ac_gain;
}
}
Подключение немодифицированных библиотек со SPICE-моделями
Добавлен специальный компонент «SPICE Library device», который позволяет использовать SPICE-библиотеки без их модификации и слоёв совместимости. Можно использовать один из имеющихся шаблонов символов для компонента. Пока доступны только шаблоны для ОУ с 3 или 5 выводами. Достаточно указать путь к библиотеке, название компонента, шаблон символа и при необходимости параметры компонента. Схем иллюстрирует как можно таким образом подключить ОУ. Планируется автоматизировать данный процесс. В будущем SPICE библиотеки будут отображаться в менеджере библиотек вместе с нативными библиотеками Qucs, и компоненты из них будут доступны для вставки в схему. Также планируется добавить редактор библиотек и символов по аналогии с PCAD Library Executive.
Заключение
Как именно будет дальше развиваться проект QucsS — неизвестно. В настоящее время Qucs и QucsS достаточно сильно разошлись. Я рассматриваю различные варианты. Возможно Qucs и QucsS в этом году объединятся. Но не исключено и выделение QucsS в самостоятельный проект с другим названием уже в этом году.
Комментарии (9)
Wedmer
28.05.2016 15:28В свете нежелания тянуть лишние зависимости… Портирование под Qt5 планируется? Год назад обещали начать через год)
vv_kuznetsov
28.05.2016 16:01Да, помню. Планируется, но когда оно начнётся неизвестно. Сейчас заниматься этим некому, т.к. для этого придётся заморозить всю разработку, кроме портирования на Qt5, на неопределённое время. Также до начала портирования нужно договориться о приёме/отклонении некоторых критических патчей.
Wedmer
28.05.2016 16:12Там, в принципе, правок мало нужно. Если будет время, посмотрю, как и что там у вас, и предложу патчи)
vv_kuznetsov
28.05.2016 16:27Работы очень много, т.к. он с Qt3 переведён на Qt4 не полностью. Имеется критический кусок, который завязан на Qt3Support.
Wedmer
28.05.2016 17:10Так я сказал, как будет время. А так уже много опыта адаптации проектов на Qt4 под Qt5 без потери возможности сборки с четверкой. В принципе, если подскажут, где все это искать, может и раньше смогу дать оценку объема работ и, возможно, даже их начать.
ahdenchik
Пользуюсь почти каждый день Qucs 0.0.19
Очень сильно не хватает функции экспорта готовой схемы куда-либо в САПР для рисования схем/плат (в KiCAD в моём случае)
Я понимаю, что Qucs это для моделирования и тут могут быть компоненты, которых не существует в реальной жизни. И тем не менее, количество ошибок из-за невнимательной перерисовки схемы из Qucs в KiCAD достаточно велико — даже платы приходилось переразводить из-за этого.
vv_kuznetsov
Такой функции не будет. 90% схем не подлежат моделированию целиком. MicroCAP и LTSpice также не имеют функции экспорта в PCB. Целесообразно моделировать только какой-либо небольшой кусок схемы.
ahdenchik
Алгоритм обычно такой (у меня, по крайней мере): моделируешь кусок, потом вставляешь его в большую схему.
Так вот, именно на этапе переноса из Qucs в чертилку схем проводники иногда теряются! А тот, кто перерисовывает обычно расслаблен, потому что он уже убедился с помощью Qucs что его схема работает как надо.
Я умудрялся схему уровня мультивибратора перечертить неверно (лишнее соединение и одно соединение пропущено) — просто под конец дня глаза уже уставшие и плохо делают тупую копировочную работу.