1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 <link rel=
"stylesheet" media=
"screen" type=
"text/css" href=
"./style.css" />
6 <link rel=
"stylesheet" media=
"screen" type=
"text/css" href=
"./design.css" />
7 <link rel=
"stylesheet" media=
"print" type=
"text/css" href=
"./print.css" />
9 <meta http-equiv=
"Content-Type" content=
"text/html; charset=utf-8" />
14 <em>Эта страница доступна также на следующих языках:
</em>
15 <a href=
"geda-circuit_simulation_improvements.html" class=
"wikilink1" title=
"geda-circuit_simulation_improvements.html">English
</a>
18 <h1 id=
"усовершенствованиемоделированияработыэлектрическихсхемвgschem">Усовершенствование моделирования работы электрических схем в gschem
</h1>
23 <h2 id=
"обоснование">Обоснование
</h2>
27 Начинающим не так-то просто использовать
<strong>gschem
</strong> как оболочку для
28 схемотехнического моделирования (для
<strong>ngspice
</strong> или
<strong>gnucap
</strong>). Вот что
29 новому пользователю хотелось бы делать в
<strong>gschem
</strong>:
32 <li class=
"level1"><div class=
"li"> определять, какие виды анализа нужно запускать;
</div>
34 <li class=
"level1"><div class=
"li"> определять, графики каких напряжений и токов нужно выводить;
</div>
36 <li class=
"level1"><div class=
"li"> собственно запускать моделирование.
</div>
41 Запуск моделирования и постобработка могут быть во внешней программе,
42 вызываемой посредством IPC.
46 Существует несколько графических оболочек, но они не решают всех
47 вышеуказанных проблем:
50 <li class=
"level1"><div class=
"li"> gspiceui
</div>
52 <li class=
"level1"><div class=
"li"> kjwaves
</div>
54 <li class=
"level1"><div class=
"li"> easyspice
</div>
59 Все оболочки имеют одну проблему --- в них нельзя указать соединение, данные
60 которого хотелось бы увидеть. Нужно знать имя соединения для узла.
65 <h2 id=
"набросокпроекта">Набросок проекта
</h2>
69 Допустим, нам хотелось бы совсем немного изменить
<strong>gschem
</strong> и
<strong>libgeda
</strong>,
70 чтобы иметь возможность, по крайней мере, установить несколько измерительных
71 приборов и запустить моделирование.
76 <h3 id=
"измерительныеприборы">Измерительные приборы
</h3>
80 <strong>Измерителями тока
</strong> могут быть обычные источники постоянного напряжения
0 В. Легче всего в качестве такого прибора использовать символ с двумя выводами, подобный обычному амперметру.
81 Если нам захотелось бы подключить измеритель тока к выводу, то нужно, чтобы генератор списка соединений распознал его и заместил нашим «амперметром».
82 Если в качестве амперметра использовать источник напряжения, генератору не нужно будет знать имён соединений внутри схемы. Все источники напряжения
0 В со специальным именем устройства являлись бы измерителями тока.
86 <strong>Измерителями напряжения
</strong> могут быть источники тока
0 А. Второй вывод источника тока присоединяется к
<em>GND
</em> атрибутом
<code>net
</code>. Поэтому снова генератору списка соединений не нужно будет знать имён соединений, так как он сможет использовать соединение, подключенное к этому специальному источнику тока.
87 Подобно вышеописанному источнику напряжения мог бы быть специальный (графический) символ, который распознавался бы генератором списка соединений.
92 <h3 id=
"источникитокаинапряжения">Источники тока и напряжения
</h3>
96 Определить параметры источников не так просто. В настоящее время они
97 хранятся внутри атрибутов
<code>value
</code> символа, например
<code>value=pulse
0 1 10n
98 10n
100n
1u 2u</code>. Эти настройки должны соответствовать атрибутам SPICE
99 <code>pulse(V1 V2 TD TR TF PW PER)
</code>.
103 Было бы здорово иметь диалоговое окно, предлагающее пользователям имена
104 атрибутов, а не только строку значения.
108 Настройкой источников напряжения или тока могла бы заниматься
109 модифицированная команда редактирования атрибутов
110 (
<kbd>E
</kbd><kbd>E
</kbd>), которая вызывала бы для этих источников
111 специальные диалоговые окна их свойств. В настоящее время эта команда
112 вызывает диалоговое окно редактирования всех атрибутов символа.
117 <h3 id=
"моделирование">Моделирование
</h3>
121 Как сохранять параметры моделирования внутри
<strong>gschem
</strong>.
125 Для хранения параметров одного моделирования можно использовать символ с названием устройства
<em>SIMULATION
</em>.
126 Все параметры, определяющие один вид моделирования сохраняются как атрибуты, прикреплённые к данному объекту:
129 <li class=
"level1"><div class=
"li"> вид анализа (dc, ac, tran,...);
</div>
131 <li class=
"level1"><div class=
"li"> параметры программы моделирования;
</div>
133 <li class=
"level1"><div class=
"li"> программа моделирования? (можем ли мы запускать моделирование для одной и той же схемы в двух программах моделирования сразу?);
</div>
135 <li class=
"level1"><div class=
"li"> параметры для моделирования (глобальные параметры, температура, ...).
</div>
138 <pre class=
"code">v
20061020 1
139 C
41500 49200 1 0 0 spice-directive-
1.sym
141 device=spice_simulation_block
143 simulation_name=random name
145 simulation_type=DC
0V
1V
0.1V
146 parametric_simulation1=V1 lin
0 5 0.1
147 parametric_simulation2=R1.value lin
10k
100k
10k
155 Таких объектов моделирования в одной схеме могло бы быть много.
159 Для хранения дополнительных библиотек можно использовать либо директиву вложения (include), либо символ
<em>LIBRARY
</em>, содержащий все библиотеки в одном из двух видов:
162 <li class=
"level1"><div class=
"li"> как многострочный атрибут;
</div>
164 <li class=
"level1"><div class=
"li"> как несколько атрибутов библиотек, прикреплённых к символу
<em>LIBRARY
</em>.
</div>
169 Между глобальными, пользовательскими и локальными библиотеками должно быть
170 различие. Глобальные и пользовательские библиотеки могут определяться в
171 <em><code>gafrc
</code></em> или в новом конфигурационном файле
<em><code>spicerc
</code></em>.
176 <h3 id=
"созданиедиалоговогоокнадлямоделированиявнутриgschem">Создание диалогового окна для моделирования внутри gschem
</h3>
180 Допустим, всё что нам нужно, чтобы добавить поддержку моделирования в
<strong>gschem
</strong>, это одно диалоговое окно.
183 <li class=
"level1"><div class=
"li"> В нём должен содержаться список моделирований (в виде списка из их названий с кнопками разрешения/запрета).
</div>
185 <li class=
"level1"><div class=
"li"> В нём должны быть иконки для добавления измерителей.
</div>
187 <li class=
"level1"><div class=
"li"> Оно могло бы содержать кнопки для большинства общих символов: резистора, конденсатора, катушки индуктивности, диода, ... [R,C,L,D,M,E,F,G,H..]
</div>
189 <li class=
"level1"><div class=
"li"> Оно могло бы содержать несколько диалоговых элементов для настройки SPICE.
</div>
191 <li class=
"level1"><div class=
"li"> Оно могло бы содержать кнопки моделирования и закрытия.
</div>
193 <li class=
"level1"><div class=
"li"> Несколько добавочных кнопок, таких как, например: копировать моделирование, удалить моделирование, общие параметры...
</div>
198 При создании такого диалогового окна все объекты моделирования собираются в
199 перечень видов моделирования (в виде списка с кнопками разрешения/запрета).
203 При изменении настроек меняются атрибуты соответствующего объекта
209 <h3 id=
"диалоговоеокнопараметров">Диалоговое окно параметров
</h3>
213 Какие параметры нужны для этого диалогового окна? И почему?
217 Расставленные нами измерители можно использовать, чтобы сообщать программе моделирования о том, какие нам хотелось бы сохранять переменные, или программе построения графиков о том, какие хотелось бы увидеть графики. Это вещи совершенно различные, и нам нужна возможность выбирать следующее:
220 <li class=
"level1"><div class=
"li"> выводить на графиках все маркеры и сохранять только напряжения соответствующих узлов;
</div>
222 <li class=
"level1"><div class=
"li"> выводить на графиках все маркеры, но сохранять все напряжения и токи (с помощью источников напряжения);
</div>
224 <li class=
"level1"><div class=
"li"> сохранять напряжения узлов только для схемы текущего уровня или также и для подсхем.
</div>
230 <h3 id=
"запускмоделирования">Запуск моделирования
</h3>
234 Кнопка моделирования в диалоговом окне должна вызывать следующие действия:
237 <li class=
"level1"><div class=
"li"> сохранение схемы (спрашивать пользователя или использовать временный файл?);
</div>
239 <li class=
"level1"><div class=
"li"> создание списка соединений с помощью
<strong>gnetlist
</strong>;
</div>
241 <li class=
"level1"><div class=
"li"> создание файлов моделирования и включение туда списка соединений (можно ли это сделать тоже с помощью
<strong>gnetlist
</strong>?);
</div>
243 <li class=
"level1"><div class=
"li"> выполнение скрипта запуска моделирования (
<strong>guile
</strong>,
<strong>sh
</strong>, ...).
</div>
248 Этот скрипт мог бы вызывать даже диспетчер, который бы занимался множеством
249 крупномасштабных моделирований.
254 <h2 id=
"приложение">Приложение
</h2>
259 <h3 id=
"символизмерителянапряженияэскиз">Символ измерителя напряжения (эскиз)
</h3>
262 <dt><a href=
"/./doku.php?do=export_code&id=:geda:circuit_simulation_improvements.ru.txt&codeblock=1" title=
"Download Snippet" class=
"mediafile mf_sym">voltage_probe.sym
</a></dt>
263 <dd><pre class=
"code gschem-symbol">v
20061020 1
266 T
100 0 5 10 0 1 0 0 1
268 T
0 100 5 10 0 1 0 0 1
270 T
0 100 5 10 0 1 0 0 1
272 T
0 100 5 10 0 1 0 0 1
275 V
300 300 150 3 10 0 0 -
1 -
1 0 -
1 -
1 -
1 -
1 -
1
276 L
300 200 240 360 3 10 0 0 -
1 -
1
277 L
300 200 360 360 3 10 0 0 -
1 -
1
278 T
0 500 9 10 0 0 0 0 1
280 T
200 50 9 6 1 1 0 0 1
282 T
0 700 9 10 0 0 0 0 1
284 T
0 900 9 10 0 0 0 0 1
290 <h3 id=
"символизмерителятокаэскиз">Символ измерителя тока (эскиз)
</h3>
293 <dt><a href=
"/./doku.php?do=export_code&id=:geda:circuit_simulation_improvements.ru.txt&codeblock=2" title=
"Download Snippet" class=
"mediafile mf_sym">current_probe.sym
</a></dt>
294 <dd><pre class=
"code gschem-symbol">v
20061020 1
295 P
0 200 150 200 1 0 0
297 T -
150 50 5 10 0 1 0 0 1
299 T
50 250 5 10 0 1 0 0 1
301 T
50 250 5 10 0 1 0 0 1
303 T
50 250 5 10 0 1 0 0 1
306 V
300 200 150 3 10 0 0 -
1 -
1 0 -
1 -
1 -
1 -
1 -
1
307 L
300 300 380 140 3 10 0 0 -
1 -
1
308 L
300 300 220 140 3 10 0 0 -
1 -
1
309 T
0 500 9 10 0 0 0 0 1
311 T
200 370 9 6 1 1 0 0 1
313 P
600 200 450 200 1 0 0
315 T
500 50 5 10 0 1 0 0 1
317 T
500 250 5 10 0 1 0 0 1
319 T
500 250 5 10 0 1 0 0 1
321 T
500 250 5 10 0 1 0 0 1
324 L
240 180 360 180 3 10 0 0 -
1 -
1
325 T
0 700 9 10 0 0 0 0 1
331 <h3 id=
"ещёодинсимволизмерителятокаэскизкоторыйиспользуетkurtpeters">Ещё один символ измерителя тока (эскиз), который использует Kurt Peters
</h3>
334 <dt><a href=
"/./doku.php?do=export_code&id=:geda:circuit_simulation_improvements.ru.txt&codeblock=3" title=
"Download Snippet" class=
"mediafile mf_sym">ammeter.sym
</a></dt>
335 <dd><pre class=
"code gschem-symbol">v
20061020 1
336 T
700 650 8 10 1 1 0 0 1
338 T
700 850 5 10 1 1 0 0 1
340 T
700 1050 5 10 0 0 0 0 1
342 T
700 1250 5 10 0 0 0 0 1
344 T
700 1450 5 10 0 0 0 0 1
345 description=ammeter for spice
346 P
300 1200 300 900 1 0 0
348 T
350 1000 5 8 1 1 0 0 1
350 T
350 1000 5 8 0 1 0 2 1
352 T
400 850 9 8 1 1 0 5 1
354 T
300 700 5 8 0 1 0 5 1
357 P
300 0 300 300 1 0 0
359 T
350 100 5 8 1 1 0 0 1
361 T
350 100 5 8 0 1 0 2 1
363 T
300 500 5 8 0 1 0 3 1
365 T
300 300 5 10 1 1 0 0 1
368 L
300 400 400 500 3 0 0 0 -
1 -
1
369 L
200 500 300 400 3 0 0 0 -
1 -
1
370 T
700 450 5 10 0 1 0 0 1
372 L
300 400 300 800 3 0 0 0 -
1 -
1
373 L
100 800 500 400 3 0 0 0 -
1 -
1
374 B
0 300 600 600 3 0 0 0 -
1 -
1 0 -
1 -
1 -
1 -
1 -
1
375 L
200 800 100 800 3 0 0 0 -
1 -
1
376 L
100 700 100 800 3 0 0 0 -
1 -
1</pre>