User Tools

Site Tools


geda:circuit_simulation_improvements.ru

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
geda:circuit_simulation_improvements.ru [2012/02/13 03:21]
vzh Rewording, spelling
geda:circuit_simulation_improvements.ru [2014/04/26 04:17]
vzh Updated using po4a
Line 1: Line 1:
 +//Эта страница доступна также на следующих языках://​
 +[[circuit_simulation_improvements|English]]
 +
 +====== Усовершенствование моделирования работы электрических схем в gschem ======
 +
 +===== Обоснование =====
 +Начинающим не так-то просто использовать **gschem** как оболочку для
 +схемотехнического моделирования (для **ngspice** или **gnucap**). Вот что
 +новому пользователю хотелось бы делать в **gschem**:
 +
 +  * определять,​ какие виды анализа нужно запускать;​
 +  * определять,​ графики каких напряжений и токов нужно выводить;​
 +  * собственно запускать моделирование.
 +
 +Запуск моделирования и постобработка могут быть во внешней программе,​
 +вызываемой посредством IPC.
 +
 +Существует несколько графических оболочек,​ но они не решают всех
 +вышеуказанных проблем:​
 +
 +  * [[http://​www.geda.seul.org/​tools/​gspiceui/​index.html|gspiceui]]
 +  * [[http://​www.comefly.us/​|kjwaves]]
 +  * [[http://​easy-spice.sourceforge.net/​|easyspice]]
 +
 +Все оболочки имеют одну проблему --- в них нельзя указать соединение,​ данные
 +которого хотелось бы увидеть. Нужно знать имя соединения для узла.
 +
 +===== Набросок проекта =====
 +Допустим,​ нам хотелось бы совсем немного изменить **gschem** и **libgeda**,​
 +чтобы иметь возможность,​ по крайней мере, установить несколько измерительных
 +приборов и запустить моделирование.
 +
 +==== Измерительные приборы ====
 +**Измерителями тока** могут быть обычные источники постоянного напряжения 0 В.  Легче всего в качестве такого прибора использовать символ с двумя выводами,​ подобный обычному амперметру.
 +Если нам захотелось бы подключить измеритель тока к выводу,​ то нужно, чтобы генератор списка соединений распознал его и заместил нашим «амперметром».
 +Если в качестве амперметра использовать источник напряжения,​ генератору не нужно будет знать имён соединений внутри схемы. ​ Все источники напряжения 0 В со специальным именем устройства являлись бы измерителями тока.
 +
 +**Измерителями напряжения** могут быть источники тока 0 А. Второй вывод источника тока присоединяется к //GND// атрибутом ''​net''​. Поэтому снова генератору списка соединений не нужно будет знать имён соединений,​ так как он сможет использовать соединение,​ подключенное к этому специальному источнику тока.
 +Подобно вышеописанному источнику напряжения мог бы быть специальный (графический) символ,​ который распознавался бы генератором списка соединений.
 +
 +==== Источники тока и напряжения ====
 +Определить параметры источников не так просто. В настоящее время они
 +хранятся внутри атрибутов ''​value''​ символа,​ например ''​value=pulse 0 1 10n
 +10n 100n 1u 2u''​. ​ Эти настройки должны соответствовать атрибутам SPICE
 +''​pulse(V1 V2 TD TR TF PW PER)''​.
 +
 +Было бы здорово иметь диалоговое окно, предлагающее пользователям имена
 +атрибутов,​ а не только строку значения.
 +
 +Настройкой источников напряжения или тока могла бы заниматься
 +модифицированная команда редактирования атрибутов
 +(<​key>​e</​key><​key>​e</​key>​),​ которая вызывала бы для этих источников
 +специальные диалоговые окна их свойств. В настоящее время эта команда
 +вызывает диалоговое окно редактирования всех атрибутов символа.
 +
 +==== Моделирование ====
 +Как сохранять параметры моделирования внутри **gschem**.
 +
 +Для хранения параметров одного моделирования можно использовать символ с названием устройства //​SIMULATION//​.
 +Все параметры,​ определяющие один вид моделирования сохраняются как атрибуты,​ прикреплённые к данному объекту:​
 +  * вид анализа (dc, ac, tran,...);
 +  * параметры программы моделирования;​
 +  * программа моделирования?​ (можем ли мы запускать моделирование для одной и той же схемы в двух программах моделирования сразу?​);​
 +  * параметры для моделирования (глобальные параметры,​ температура,​ ...).
 +<​code>​
 +v 20061020 1
 +C 41500 49200 1 0 0 spice-directive-1.sym
 +{
 +device=spice_simulation_block
 +refdes=A1
 +simulation_name=random name
 +simulation_active=1
 +simulation_type=DC 0V 1V 0.1V
 +parametric_simulation1=V1 lin 0 5 0.1
 +parametric_simulation2=R1.value lin 10k 100k 10k
 +option_TNOM=100 Deg
 +option_ABSTOL=1e-3
 +global_param1=???​
 +global_param2=???​
 +}
 +</​code>​
 +
 +Таких объектов моделирования в одной схеме могло бы быть много.
 +
 +Для хранения дополнительных библиотек можно использовать либо директиву вложения (include), либо символ //​LIBRARY//,​ содержащий все библиотеки в одном из двух видов:
 +  * как многострочный атрибут;​
 +  * как несколько атрибутов библиотек,​ прикреплённых к символу //​LIBRARY//​.
 +
 +Между глобальными,​ пользовательскими и локальными библиотеками должно быть
 +различие. Глобальные и пользовательские библиотеки могут определяться в
 +//''​gafrc''//​ или в новом конфигурационном файле //''​spicerc''//​.
 +
 +
 +
 +==== Создание диалогового окна для моделирования внутри gschem ====
 +
 +Допустим,​ всё что нам нужно, чтобы добавить поддержку моделирования в **gschem**, это одно диалоговое окно.
 +  * В нём должен содержаться список моделирований (в виде списка из их названий с кнопками разрешения/​запрета).
 +  * В нём должны быть иконки для добавления измерителей.
 +  * Оно могло бы содержать кнопки для большинства общих символов:​ резистора,​ конденсатора,​ катушки индуктивности,​ диода, ... [R,​C,​L,​D,​M,​E,​F,​G,​H..]
 +  * Оно могло бы содержать несколько диалоговых элементов для настройки SPICE.
 +  * Оно могло бы содержать кнопки моделирования и закрытия.
 +  * Несколько добавочных кнопок,​ таких как, например:​ копировать моделирование,​ удалить моделирование,​ общие параметры...
 +
 +При создании такого диалогового окна все объекты моделирования собираются в
 +перечень видов моделирования (в виде списка с кнопками разрешения/​запрета).
 +
 +При изменении настроек меняются атрибуты соответствующего объекта
 +моделирования.
 +
 +
 +==== Диалоговое окно параметров ====
 +Какие параметры нужны для этого диалогового окна? И почему?​
 +
 +Расставленные нами измерители можно использовать,​ чтобы сообщать программе моделирования о том, какие нам хотелось бы сохранять переменные,​ или программе построения графиков о том, какие хотелось бы увидеть графики. Это вещи совершенно различные,​ и нам нужна возможность выбирать следующее:​
 +  * выводить на графиках все маркеры и сохранять только напряжения соответствующих узлов;
 +  * выводить на графиках все маркеры,​ но сохранять все напряжения и токи (с помощью источников напряжения);​
 +  * сохранять напряжения узлов только для схемы текущего уровня или также и для подсхем.
 +
 +==== Запуск моделирования ====
 +Кнопка моделирования в диалоговом окне должна вызывать следующие действия:​
 +  * сохранение схемы (спрашивать пользователя или использовать временный файл?);
 +  * создание списка соединений с помощью **gnetlist**;​
 +  * создание файлов моделирования и включение туда списка соединений (можно ли это сделать тоже с помощью **gnetlist**?​);​
 +  * выполнение скрипта запуска моделирования (**guile**, **sh**, ...).
 +
 +Этот скрипт мог бы вызывать даже диспетчер,​ который бы занимался множеством
 +крупномасштабных моделирований.
 +
 +===== Приложение =====
 +==== Символ измерителя напряжения (эскиз) ====
 +<code gschem-symbol voltage_probe.sym>​
 +v 20061020 1
 +P 0 0 200 200 1 0 0
 +{
 +T 100 0 5 10 0 1 0 0 1
 +pintype=pas
 +T 0 100 5 10 0 1 0 0 1
 +pinseq=1
 +T 0 100 5 10 0 1 0 0 1
 +pinnumber=1
 +T 0 100 5 10 0 1 0 0 1
 +pinlabel=1
 +}
 +V 300 300 150 3 10 0 0 -1 -1 0 -1 -1 -1 -1 -1
 +L 300 200 240 360 3 10 0 0 -1 -1
 +L 300 200 360 360 3 10 0 0 -1 -1
 +T 0 500 9 10 0 0 0 0 1
 +device=VOLTAGE_PROBE
 +T 200 50 9 6 1 1 0 0 1
 +refdes=I_VP?​
 +T 0 700 9 10 0 0 0 0 1
 +net=GND:2
 +T 0 900 9 10 0 0 0 0 1
 +value=DC 0A
 +</​code>​
 +
 +==== Символ измерителя тока (эскиз) ====
 +<code gschem-symbol current_probe.sym>​
 +v 20061020 1
 +P 0 200 150 200 1 0 0
 +{
 +T -150 50 5 10 0 1 0 0 1
 +pintype=pas
 +T 50 250 5 10 0 1 0 0 1
 +pinseq=1
 +T 50 250 5 10 0 1 0 0 1
 +pinnumber=1
 +T 50 250 5 10 0 1 0 0 1
 +pinlabel=1
 +}
 +V 300 200 150 3 10 0 0 -1 -1 0 -1 -1 -1 -1 -1
 +L 300 300 380 140 3 10 0 0 -1 -1
 +L 300 300 220 140 3 10 0 0 -1 -1
 +T 0 500 9 10 0 0 0 0 1
 +device=CURRENT_PROBE
 +T 200 370 9 6 1 1 0 0 1
 +refdes=V_IP?​
 +P 600 200 450 200 1 0 0
 +{
 +T 500 50 5 10 0 1 0 0 1
 +pintype=pas
 +T 500 250 5 10 0 1 0 0 1
 +pinseq=2
 +T 500 250 5 10 0 1 0 0 1
 +pinnumber=2
 +T 500 250 5 10 0 1 0 0 1
 +pinlabel=2
 +}
 +L 240 180 360 180 3 10 0 0 -1 -1
 +T 0 700 9 10 0 0 0 0 1
 +value=DC 0V
 +</​code>​
 +
 +==== Ещё один символ измерителя тока (эскиз),​ который использует Kurt Peters ====
 +<code gschem-symbol ammeter.sym>​
 +v 20061020 1
 +T 700 650 8 10 1 1 0 0 1
 +refdes=VAM?
 +T 700 850 5 10 1 1 0 0 1
 +device=Ammeter
 +T 700 1050 5 10 0 0 0 0 1
 +footprint=none
 +T 700 1250 5 10 0 0 0 0 1
 +numslots=0
 +T 700 1450 5 10 0 0 0 0 1
 +description=ammeter for spice
 +P 300 1200 300 900 1 0 0
 +{
 +T 350 1000 5 8 1 1 0 0 1
 +pinnumber=1
 +T 350 1000 5 8 0 1 0 2 1
 +pinseq=1
 +T 400 850 9 8 1 1 0 5 1
 +pinlabel=+
 +T 300 700 5 8 0 1 0 5 1
 +pintype=pwr
 +}
 +P 300 0 300 300 1 0 0
 +{
 +T 350 100 5 8 1 1 0 0 1
 +pinnumber=2
 +T 350 100 5 8 0 1 0 2 1
 +pinseq=2
 +T 300 500 5 8 0 1 0 3 1
 +pintype=pwr
 +T 300 300 5 10 1 1 0 0 1
 +pinlabel=-
 +}
 +L 300 400 400 500 3 0 0 0 -1 -1
 +L 200 500 300 400 3 0 0 0 -1 -1
 +T 700 450 5 10 0 1 0 0 1
 +value=DC 0V
 +L 300 400 300 800 3 0 0 0 -1 -1
 +L 100 800 500 400 3 0 0 0 -1 -1
 +B 0 300 600 600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
 +L 200 800 100 800 3 0 0 0 -1 -1
 +L 100 700 100 800 3 0 0 0 -1 -1
 +</​code>​
  
geda/circuit_simulation_improvements.ru.txt · Last modified: 2014/04/26 04:17 by vzh