Spice симулятор

Тема в разделе "Флудилка", создана пользователем PLUTARX, 30 июл 2026.

  1. PLUTARX

    PLUTARX Нерд

  2. PLUTARX

    PLUTARX Нерд

    сверху есть кнопка отцентровать схему
    upload_2026-8-14_1-32-42.png
     
  3. PLUTARX

    PLUTARX Нерд

    выкатил обновление
    В этом обновлении я начал переносить часть расчётного ядра симулятора в WebAssembly.

    Раньше вся тяжёлая математика выполнялась через JavaScript. Теперь операции с матрицами, которые используются при расчёте схемы, могут выполняться в WebAssembly. Это должно снизить нагрузку на браузер и сделать работу стабильнее на сложных схемах, быстрых импульсах и при одновременной работе осциллографа и логического анализатора.

    Параллельно я продолжил наполнять модели компонентов.

    Для конденсаторов добавлены профили с учётом ESR, ESL и изменения ёмкости MLCC под постоянным напряжением. Также добавлены отдельные профили для электролитических и танталовых конденсаторов.

    Для диодов учитываются параметры переходного процесса: ёмкость перехода, утечки, прямое и обратное поведение, восстановление и пробой.

    Для транзисторов добавлены параметры сопротивлений, усиления, порогового напряжения, паразитных ёмкостей и других характеристик, влияющих на переключение. Также появилась возможность импортировать численные параметры из простых SPICE-моделей.

    При этом WebAssembly не заменяет весь симулятор. Физические модели компонентов и логика решателя остаются прежними. Если WebAssembly недоступен, автоматически используется JavaScript-режим.

    Для проверки добавлены сравнения результатов JavaScript и WebAssembly, а также стресс-тесты на быстрых сигналах и длительных расчётах. Цель обновления — не просто увеличить скорость, а сохранить реалистичное поведение компонентов и стабильность симуляции.
     
  4. PLUTARX

    PLUTARX Нерд

    Обновление симулятора: исправлена сходимость транзисторных схем
    Выложил очередное обновление PLUTARX Lab.

    Основное изменение касается расчёта схем с биполярными транзисторами. В некоторых усилительных и RLC-схемах после загрузки страницы появлялась ошибка:

    «Нелинейный расчёт не сошёлся за 160 итераций».

    Интересно, что локально та же схема могла работать нормально. Причина оказалась не в сервере и не в WebAssembly, а в холодном запуске решателя. Локальная схема часто продолжала расчёт из уже найденного состояния, а после загрузки с сервера начинала вычисления с нуля.

    Что исправлено:

    • переработан расчёт коллекторной ветви BJT;
    • добавлена корректная линеаризация транзистора для метода Ньютона;
    • устранено колебание решателя между двумя промежуточными состояниями;
    • улучшен запуск сохранённых транзисторных схем с нулевого состояния;
    • уменьшено количество лишних повторных расчётов;
    • добавлены отдельные тесты для BJT-схем с резисторами, конденсаторами и индуктивностью;
    • проверена работа NPN, PNP, MOSFET, LM2596 и измерительных приборов.
    Для сравнения: проблемная тестовая схема раньше за 250 шагов создавала 1240 ошибок сходимости и рассчитывалась около 4,4 секунды. После исправления она проходит те же 250 шагов без единой ошибки примерно за 0,1 секунды.

    Перед публикацией прогнал полный набор — все 325 тестов прошли успешно.

    Обновление уже доступно на сайте:
    https://plutarx-lab.ru/app

    Если страница была открыта во время обновления, желательно один раз выполнить Ctrl+F5, чтобы браузер загрузил новую версию решателя.

    Буду благодарен, если проверите свои транзисторные схемы и сообщите, если где-то ещё появится ошибка сходимости или необычное поведение.
     
  5. parovoZZ

    parovoZZ Гуру

    какой именно пробой и почему не мгновенно?
     
  6. parovoZZ

    parovoZZ Гуру

    как раз-таки основной, т.к. мы закладываем детерминированную функцию в поведение схемы. А когда входные параметры детерминированные, анализ поведения становится очень простым и повторяемым. Вот очень простой сценарий - как поведёт себя схема при различных температурах? Заложили 3-4 значения из диапазона и получили 3-4 набора графиков. И что очень удобно в PSpice подобных программах - схема рассчитывается в абсолютно всех узлах, а не только там, куда подключен прибор. Да и понятие измерительного прибора в них отсутствует.
     
  7. PLUTARX

    PLUTARX Нерд

    Какой именно пробой и почему не мгновенно? Ну, видимо, диод должен сначала ознакомиться с документацией, понять, что ток превысил допустимый, и немедленно самоуничтожиться. :)

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

    Именно поэтому диод может какое-то время работать в перегруженном режиме, нагреваться, а уже затем выйти из строя.

    В моём симуляторе этот процесс не реализован по принципу «ток превысил X — диод моментально взорвался». Учитывается тепловой процесс, поэтому между возникновением перегрузки и разрушением компонента проходит время.

    Физика, к сожалению, тоже не всегда работает через if (current > max) diode = dead;. :)
     
  8. PLUTARX

    PLUTARX Нерд

    Я вашу позицию уже понял. Дальше обсуждать её, спорить с вами или что-то вам доказывать не вижу смысла
    Я не запрещаю вам пользоваться LTspice или любым другим симулятором, который вы считаете более удобным и правильным для своих задач.
    Предлагаю на этом нашу дискуссию закончить.
     
  9. parovoZZ

    parovoZZ Гуру

    Не знай, что там за документация, а у полупроводников существует два вида пробоя p-n перехода - тепловой и электрический. Тепловой не обратимый, т.к. является следствием нарушения структуры кристалла. Электрический пробой полностью обратимый, т.к. является одним из режимов работы p-n перехода. Так работают стабилитроны, туннельные диоды и тиристоры.
     
  10. PLUTARX

    PLUTARX Нерд

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

    Самое большое направление последних изменений — транзисторы. Я постепенно ухожу от одного условного набора параметров для всех компонентов и добавляю индивидуальные модели конкретных деталей. Сейчас в базе есть, в частности, 2N3904, 2N3906, IRLZ44N, AO3400, AO3415 и IRF9540N.

    Для BJT добавлены коэффициент β, предельные напряжения, VCE(sat), fT, ёмкости переходов, параметры хранения заряда и тепловые характеристики. Для MOSFET описываются VGS(th), RDS(on), зависимость сопротивления от напряжения на затворе, Ciss/Coss/Crss, Qg/Qgd, встроенный body diode, токовые и тепловые ограничения. Для некоторых моделей добавлена паспортная SOA.

    В расчётном ядре уже используются важные электрические параметры MOSFET: рабочие области канала, зависимость сопротивления от VGS, модуляция длины канала, ёмкости затвор–исток/затвор–сток и встроенный диод. Qg используется как вспомогательная оценка, когда недостаточно данных по ёмкостям. Остальные паспортные параметры пока могут быть только частью базы или отображаться в интерфейсе — я стараюсь это не смешивать с тем, что реально участвует в solver.

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

    Отдельно переработал осциллограф. Теперь можно выводить не только напряжение, но и ток, переключать режимы каналов, использовать независимый вертикальный масштаб, общий нулевой уровень, Time/div, триггер, паузу, zoom и pan. Также остаются FFT, X-Y режим, курсоры и автоматические измерения фронтов и статистики.

    Часть расчётов вынесена в Worker, а адаптивный переходный решатель умеет откатывать неудачный шаг и пересчитывать его более мелкими интервалами. Это особенно важно для схем с быстрыми переключениями MOSFET и импульсными преобразователями.

    Параллельно привожу визуальную часть компонентов к единому стилю. Переработал символы MOSFET и BJT, их геометрию, подписи выводов и расположение connection points. Для обновлённых символов красные точки подключения должны попадать точно в торцы белых выводов — без смещения и лишних зазоров.

    Как и раньше, я не пытаюсь представить проект как замену LTspice, PSpice или профессиональным лабораторным инструментам. Мне интереснее сделать понятный интерактивный стенд, где можно собрать схему и наблюдать её поведение во времени. Работу продолжаю
    upload_2026-8-18_12-23-54.png
    переключения мосфета на частоте 1мгц с катушкой индуктивности 100 нгн
    зелный график напряжение фиолетовый ток
     
  11. PLUTARX

    PLUTARX Нерд

    upload_2026-8-18_16-24-34.png
    вот таже схема но с резистором и диодом
     
  12. PLUTARX

    PLUTARX Нерд

    За последнее время заметно доработал симулятор, в основном в двух направлениях: стабильность расчёта схем с микроконтроллерами и работу осциллографа.

    Исправил проблему, которая проявлялась в схемах с аппаратным ШИМ, MOSFET и повышающими преобразователями. Раньше в момент переключения сигнала расчёт мог терять сходимость. Теперь симулятор точно учитывает фронты ШИМ и синхронизирует с ними шаг расчёта. Благодаря этому такие схемы работают стабильнее, при этом физика не упрощалась: сохранены паразитные ёмкости, лавинный пробой и поведение катушек с конденсаторами.

    Серьёзно переработал осциллограф. Раньше история накапливалась и со временем могла нагружать интерфейс. Теперь используется ограниченный кольцевой буфер: свежие данные постепенно заменяют старые, без резкой очистки графика и постоянной записи на диск. Глубина истории адаптивная: для медленных сигналов она может достигать трёх минут, а на высоких частотах доступный промежуток автоматически уменьшается. При этом сохраняются реальные отсчёты, поэтому при приближении график не превращается в искажённую или выдуманную линию.

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

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

    Отдельно оптимизировал передачу и отрисовку больших пакетов данных. Интерфейс стал отзывчивее, особенно при длительной работе. Все изменения проверены тестами, при этом результаты расчёта схем не изменились.

    Ещё раз повторю: основная идея проекта — не ЗАМЕНИТЬ профессиональные SPICE-программы, а сделать доступный интерактивный стенд, на котором можно прямо во время симуляции менять компоненты, подключать нагрузку и сразу наблюдать переходные процессы.

    Это просто проект, который ни на что не претендует. Не нравится или считаешь его ерундой — проходи мимо и не трать своё драгоценное время.
     
  13. PLUTARX

    PLUTARX Нерд

    кстати немного поработал с адаптацией под ноуты

    Основное внимание уделено адаптации интерфейса под ноутбуки, разные разрешения экранов и масштабирование браузера.

    Добавлены автоматический и компактный режимы интерфейса, настройка его масштаба и возможность уменьшить визуальные эффекты. Переработаны шапка, библиотека компонентов, боковые панели и карточки параметров — теперь они занимают меньше места и не перекрывают рабочую область.

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

    Изменения затрагивают только интерфейс: работа схем, физические модели и расчёты остались без изменений.
     
  14. PLUTARX

    PLUTARX Нерд

    полностью переехал на новое расчётное ядро

    Завершил большой этап разработки — симулятор полностью переведён на новое расчётное ядро.

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

    Что это даёт

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

    Стабильная длительная симуляция. Расчёт может работать продолжительное время без накопления незавершённых задач и устаревших ответов.

    Корректные Pause и Start. После паузы симуляция продолжает работу с того же подтверждённого состояния.

    Надёжная работа осциллографа. Сбор данных отделён от основного расчёта и не может повредить состояние симуляции.

    Защита от запоздавших результатов. Старый ответ расчётного процесса не сможет перезаписать более новое состояние схемы.

    Корректная обработка неудачного шага. Если нелинейный расчёт не сошёлся, ядро уменьшает шаг и повторяет попытку, не оставляя частично применённых результатов.

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

    Безопасная замена компонентов. Замена одной детали сбрасывает состояние только этой детали, не затрагивая соседние компоненты.

    Более понятная диагностика. Ошибки подключения, плавающие выводы и реальные проблемы сходимости теперь легче отличить друг от друга.

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

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

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

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

    Основной этап переезда завершён. Дальше работа продолжится над отдельными компонентами, поведением проводников, удобством редактора и точностью физических моделей