Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-release > by-pkgid > f2f28f61487f3042d93877451f0a311f > files > 11

geda-docs-1.8.2-4.mga5.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title></title>
  <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
  <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
  <link rel="stylesheet" media="print" type="text/css" href="./print.css" />

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>


<h1 class="sectionedit51"><a name="усовершенствование_моделирования_работы_электрических_схем_в_gschem" id="усовершенствование_моделирования_работы_электрических_схем_в_gschem">Усовершенствование моделирования работы электрических схем в gschem</a></h1>
<div class="level1">

</div>
<!-- EDIT51 SECTION "Усовершенствование моделирования работы электрических схем в gschem" [1-139] -->
<h2 class="sectionedit52"><a name="обоснование" id="обоснование">Обоснование</a></h2>
<div class="level2">

<p>
Начинающим не так-то просто использовать <strong>gschem</strong> как оболочку для
схемотехнического моделирования (для <strong>ngspice</strong> или <strong>gnucap</strong>). Вот
что новому пользователю хотелось бы делать в <strong>gschem</strong>:
</p>
<ul>
<li class="level1"><div class="li"> определять, какие виды анализа нужно запускать;</div>
</li>
<li class="level1"><div class="li"> определять, графики каких напряжений и токов нужно выводить;</div>
</li>
<li class="level1"><div class="li"> собственно запускать моделирование.</div>
</li>
</ul>

<p>
Запуск моделирования и постобработка могут быть во внешней программе,
вызываемой посредством IPC.
</p>

<p>
Существует несколько графических оболочек, но они не решают всех вышеуказанных
проблем:
</p>
<ul>
<li class="level1"><div class="li"> <a href="http://www.geda.seul.org/tools/gspiceui/index.html" class="urlextern" title="http://www.geda.seul.org/tools/gspiceui/index.html"  rel="nofollow">gspiceui</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://www.comefly.us/" class="urlextern" title="http://www.comefly.us/"  rel="nofollow">kjwaves</a></div>
</li>
<li class="level1"><div class="li"> <a href="http://easy-spice.sourceforge.net/" class="urlextern" title="http://easy-spice.sourceforge.net/"  rel="nofollow">easyspice</a></div>
</li>
</ul>

<p>
Все оболочки имеют одну проблему — в них нельзя указать соединение, данные
которого хотелось бы увидеть. Нужно знать имя соединения для узла.
</p>

</div>
<!-- EDIT52 SECTION "Обоснование" [140-1543] -->
<h2 class="sectionedit53"><a name="набросок_проекта" id="набросок_проекта">Набросок проекта</a></h2>
<div class="level2">

<p>
Допустим, нам хотелось бы совсем немного изменить <strong>gschem</strong> и <strong>libgeda</strong>,
чтобы иметь возможность по крайней мере установить несколько измерительных
приборов и запустить моделирование.
</p>

</div>
<!-- EDIT53 SECTION "Набросок проекта" [1544-1916] -->
<h3 class="sectionedit54"><a name="измерительные_приборы" id="измерительные_приборы">Измерительные приборы</a></h3>
<div class="level3">

<p>
<strong>Измерителями тока</strong> могут быть обычные источники постоянного напряжения 0 В.
Легче всего в качестве такого прибора использовать символ с двумя выводами,
подобный обычному амперметру. Если нам захотелось бы подключить измеритель
тока к выводу, то нужно, чтобы генератор списка соединений распознал его и
заместил нашим “амперметром”. Если в качестве амперметра использовать источник
напряжения, генератору не нужно будет знать имён соединений внутри схемы.
Все источники напряжения 0 В со специальным именем устройства являлись бы
измерителями тока.
</p>

<p>
<strong>Измерителями напряжения</strong> могут быть источники тока 0 А. Второй вывод
источника тока присоединяется к <em>GND</em> атрибутом <code>net</code>. Поэтому снова генератору
списка соединений не нужно будет знать имён соединений, так как он сможет
использовать соединение, подключенное к этому специальному источнику
тока. Подобно вышеописанному источнику напряжения мог бы быть специальный
(графический) символ, который распознавался бы генератором списка соединений.
</p>

</div>
<!-- EDIT54 SECTION "Измерительные приборы" [1917-3800] -->
<h3 class="sectionedit55"><a name="источники_тока_и_напряжения" id="источники_тока_и_напряжения">Источники тока и напряжения</a></h3>
<div class="level3">

<p>
Определить параметры источников не так просто. В настоящее время они хранятся
внутри атрибутов <code>value</code> символа, например
<code>value=pulse 0 1 10n 10n 100n 1u 2u</code>.
Эти настройки должны соответствовать атрибутам SPICE
<code>pulse(V1 V2 TD TR TF PW PER)</code>.
</p>

<p>
Было бы здорово иметь диалоговое окно, предлагающее пользователям имена
атрибутов, а не только строку значения.
</p>

<p>
Настройкой источников напряжения или тока могла бы заниматься модифицированная
команда редактирования атрибутов (<strong>ee</strong>), которая вызывала бы для
этих источников специальные диалоговые окна их свойств. В настоящее время эта
команда вызывает диалоговое окно редактирования всех атрибутов символа.
</p>

</div>
<!-- EDIT55 SECTION "Источники тока и напряжения" [3801-5005] -->
<h3 class="sectionedit56"><a name="моделирование" id="моделирование">Моделирование</a></h3>
<div class="level3">

<p>
Как сохранять параметры моделирования внутри <strong>gschem</strong>.
</p>

<p>
Для хранения параметров одного моделирования можно использовать символ с
названием устройства <em>SIMULATION</em>. Все параметры, определяющие один вид
моделирования сохраняются как атрибуты, прикреплённые к данному объекту:
</p>
<ul>
<li class="level1"><div class="li"> вид анализа (dc, ac, tran,…);</div>
</li>
<li class="level1"><div class="li"> параметры программы моделирования;</div>
</li>
<li class="level1"><div class="li"> программа моделирования? (можем ли мы запускать моделирование для одной и той же схемы в двух программах моделирования сразу?);</div>
</li>
<li class="level1"><div class="li"> параметры для моделирования (глобальные параметры, температура, …).</div>
</li>
</ul>
<pre class="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=???
}</pre>

<p>
Таких объектов моделирования в одной схеме могло бы быть много.
</p>

<p>
Для хранения дополнительных библиотек можно использовать либо директиву
вложения (include), либо символ <em>LIBRARY</em>, содержащий все библиотеки в
одном из двух видов:
</p>
<ul>
<li class="level1"><div class="li"> как многострочный атрибут;</div>
</li>
<li class="level1"><div class="li"> как несколько атрибутов библиотек, прикреплённых к символу <em>LIBRARY</em>.</div>
</li>
</ul>

<p>
Между глобальными, пользовательскими и локальными библиотеками должно быть
различие. Глобальные и пользовательские библиотеки могут определяться в
<em><code>gafrc</code></em> или в новом конфигурационном файле <em><code>spicerc</code></em>.
</p>

</div>
<!-- EDIT56 SECTION "Моделирование" [5006-7336] -->
<h3 class="sectionedit57"><a name="создание_диалогового_окна_для_моделирования_внутри_gschem" id="создание_диалогового_окна_для_моделирования_внутри_gschem">Создание диалогового окна для моделирования внутри gschem</a></h3>
<div class="level3">

<p>
Допустим, всё что нам нужно, чтобы добавить поддержку моделирования в
<strong>gschem</strong>, это одно диалоговое окно.
</p>
<ul>
<li class="level1"><div class="li"> В нём должен содержаться список моделирований (в виде списка из их названий с кнопками разрешения/запрета).</div>
</li>
<li class="level1"><div class="li"> В нём должны быть иконки для добавления измерителей.</div>
</li>
<li class="level1"><div class="li"> Оно могло бы содержать кнопки для большинства общих символов: резистора, конденсатора, катушки индуктивности, диода, … [R,C,L,D,M,E,F,G,H..]</div>
</li>
<li class="level1"><div class="li"> Оно могло бы содержать несколько диалоговых элементов для настройки SPICE.</div>
</li>
<li class="level1"><div class="li"> Оно могло бы содержать кнопки моделирования и закрытия.</div>
</li>
<li class="level1"><div class="li"> Несколько добавочных кнопок, таких как, например: копировать моделирование, удалить моделирование, общие параметры…</div>
</li>
</ul>

<p>
При создании такого диалогового окна все объекты моделирования собираются в
перечень видов моделирования (в виде списка с кнопками разрешения/запрета).
</p>

<p>
При изменении настроек меняются атрибуты соответствующего объекта
моделирования.
</p>

</div>
<!-- EDIT57 SECTION "Создание диалогового окна для моделирования внутри gschem" [7337-9086] -->
<h3 class="sectionedit58"><a name="диалоговое_окно_параметров" id="диалоговое_окно_параметров">Диалоговое окно параметров</a></h3>
<div class="level3">

<p>
Какие параметры нужны для этого диалогового окна? И почему?
</p>

<p>
Расставленные нами измерители можно использовать, чтобы сообщать программе
моделирования о том, какие нам хотелось бы сохранять переменные, или программе
построения графиков о том, какие хотелось бы увидеть графики. Это вещи
совершенно различные, и нам нужна возможность выбирать следующее:
</p>
<ul>
<li class="level1"><div class="li"> выводить на графиках все маркеры и сохранять только напряжения соответствующих узлов;</div>
</li>
<li class="level1"><div class="li"> выводить на графиках все маркеры, но сохранять все напряжения и токи (с помощью источников напряжения);</div>
</li>
<li class="level1"><div class="li"> сохранять напряжения узлов только для схемы текущего уровня или также и для подсхем.</div>
</li>
</ul>

</div>
<!-- EDIT58 SECTION "Диалоговое окно параметров" [9087-10313] -->
<h3 class="sectionedit59"><a name="запуск_моделирования" id="запуск_моделирования">Запуск моделирования</a></h3>
<div class="level3">

<p>
Кнопка моделирования в диалоговом окне должна вызывать следующие действия:
</p>
<ul>
<li class="level1"><div class="li"> сохранение схемы (спрашивать пользователя или использовать временный файл?);</div>
</li>
<li class="level1"><div class="li"> создание списка соединений с помощью <strong>gnetlist</strong>;</div>
</li>
<li class="level1"><div class="li"> создание файлов моделирования и включение туда списка соединений (можно ли это сделать тоже с помощью <strong>gnetlist</strong>?);</div>
</li>
<li class="level1"><div class="li"> выполнение скрипта запуска моделирования (<strong>guile</strong>, <strong>sh</strong>, …).</div>
</li>
</ul>

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

</div>
<!-- EDIT59 SECTION "Запуск моделирования" [10314-11256] -->
<h2 class="sectionedit60"><a name="приложение" id="приложение">Приложение</a></h2>
<div class="level2">

</div>
<!-- EDIT60 SECTION "Приложение" [11257-11289] -->
<h3 class="sectionedit61"><a name="символ_измерителя_тока_эскиз" id="символ_измерителя_тока_эскиз">Символ измерителя тока (эскиз)</a></h3>
<div class="level3">
<pre class="code">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</pre>

</div>
<!-- EDIT61 SECTION "Символ измерителя тока (эскиз)" [11290-11805] -->
<h3 class="sectionedit62"><a name="символ_измерителя_напряжения_эскиз" id="символ_измерителя_напряжения_эскиз">Символ измерителя напряжения (эскиз)</a></h3>
<div class="level3">
<pre class="code">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</pre>

</div>
<!-- EDIT62 SECTION "Символ измерителя напряжения (эскиз)" [11806-12512] -->
<h3 class="sectionedit63"><a name="ещё_один_символ_измерителя_тока_эскиз_который_использует_kurt_peters" id="ещё_один_символ_измерителя_тока_эскиз_который_использует_kurt_peters">Ещё один символ измерителя тока (эскиз), который использует Kurt Peters</a></h3>
<div class="level3">
<pre class="code">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</pre>

</div>
<!-- EDIT63 SECTION "Ещё один символ измерителя тока (эскиз), который использует Kurt Peters" [12513-] --></body>
</html>