This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
geda:circuit_simulation_improvements.ru [2012/02/20 15:14] 127.0.0.1 external edit |
geda:circuit_simulation_improvements.ru [2014/04/26 04:17] (current) vzh Updated using po4a |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | //Эта страница доступна также на следующих языках:// | ||
+ | [[circuit_simulation_improvements|English]] | ||
+ | |||
====== Усовершенствование моделирования работы электрических схем в gschem ====== | ====== Усовершенствование моделирования работы электрических схем в gschem ====== | ||
- | |||
===== Обоснование ===== | ===== Обоснование ===== | ||
Начинающим не так-то просто использовать **gschem** как оболочку для | Начинающим не так-то просто использовать **gschem** как оболочку для | ||
- | схемотехнического моделирования (для **ngspice** или **gnucap**). Вот | + | схемотехнического моделирования (для **ngspice** или **gnucap**). Вот что |
- | что новому пользователю хотелось бы делать в **gschem**: | + | новому пользователю хотелось бы делать в **gschem**: |
* определять, какие виды анализа нужно запускать; | * определять, какие виды анализа нужно запускать; | ||
* определять, графики каких напряжений и токов нужно выводить; | * определять, графики каких напряжений и токов нужно выводить; | ||
Line 13: | Line 16: | ||
вызываемой посредством IPC. | вызываемой посредством IPC. | ||
- | Существует несколько графических оболочек, но они не решают всех вышеуказанных | + | Существует несколько графических оболочек, но они не решают всех |
- | проблем: | + | вышеуказанных проблем: |
* [[http://www.geda.seul.org/tools/gspiceui/index.html|gspiceui]] | * [[http://www.geda.seul.org/tools/gspiceui/index.html|gspiceui]] | ||
* [[http://www.comefly.us/|kjwaves]] | * [[http://www.comefly.us/|kjwaves]] | ||
Line 21: | Line 25: | ||
Все оболочки имеют одну проблему --- в них нельзя указать соединение, данные | Все оболочки имеют одну проблему --- в них нельзя указать соединение, данные | ||
которого хотелось бы увидеть. Нужно знать имя соединения для узла. | которого хотелось бы увидеть. Нужно знать имя соединения для узла. | ||
- | |||
===== Набросок проекта ===== | ===== Набросок проекта ===== | ||
Допустим, нам хотелось бы совсем немного изменить **gschem** и **libgeda**, | Допустим, нам хотелось бы совсем немного изменить **gschem** и **libgeda**, | ||
- | чтобы иметь возможность по крайней мере установить несколько измерительных | + | чтобы иметь возможность, по крайней мере, установить несколько измерительных |
приборов и запустить моделирование. | приборов и запустить моделирование. | ||
- | |||
==== Измерительные приборы ==== | ==== Измерительные приборы ==== | ||
- | **Измерителями тока** могут быть обычные источники постоянного напряжения 0 В. | + | **Измерителями тока** могут быть обычные источники постоянного напряжения 0 В. Легче всего в качестве такого прибора использовать символ с двумя выводами, подобный обычному амперметру. |
- | Легче всего в качестве такого прибора использовать символ с двумя выводами, | + | Если нам захотелось бы подключить измеритель тока к выводу, то нужно, чтобы генератор списка соединений распознал его и заместил нашим «амперметром». |
- | подобный обычному амперметру. Если нам захотелось бы подключить измеритель | + | Если в качестве амперметра использовать источник напряжения, генератору не нужно будет знать имён соединений внутри схемы. Все источники напряжения 0 В со специальным именем устройства являлись бы измерителями тока. |
- | тока к выводу, то нужно, чтобы генератор списка соединений распознал его и | + | |
- | заместил нашим "амперметром". Если в качестве амперметра использовать источник | + | |
- | напряжения, генератору не нужно будет знать имён соединений внутри схемы. | + | |
- | Все источники напряжения 0 В со специальным именем устройства являлись бы | + | |
- | измерителями тока. | + | |
- | + | ||
- | **Измерителями напряжения** могут быть источники тока 0 А. Второй вывод | + | |
- | источника тока присоединяется к //GND// атрибутом ''net''. Поэтому снова генератору | + | |
- | списка соединений не нужно будет знать имён соединений, так как он сможет | + | |
- | использовать соединение, подключенное к этому специальному источнику | + | |
- | тока. Подобно вышеописанному источнику напряжения мог бы быть специальный | + | |
- | (графический) символ, который распознавался бы генератором списка соединений. | + | |
+ | **Измерителями напряжения** могут быть источники тока 0 А. Второй вывод источника тока присоединяется к //GND// атрибутом ''net''. Поэтому снова генератору списка соединений не нужно будет знать имён соединений, так как он сможет использовать соединение, подключенное к этому специальному источнику тока. | ||
+ | Подобно вышеописанному источнику напряжения мог бы быть специальный (графический) символ, который распознавался бы генератором списка соединений. | ||
==== Источники тока и напряжения ==== | ==== Источники тока и напряжения ==== | ||
- | Определить параметры источников не так просто. В настоящее время они хранятся | + | Определить параметры источников не так просто. В настоящее время они |
- | внутри атрибутов ''value'' символа, например | + | хранятся внутри атрибутов ''value'' символа, например ''value=pulse 0 1 10n |
- | ''value=pulse 0 1 10n 10n 100n 1u 2u''. | + | 10n 100n 1u 2u''. Эти настройки должны соответствовать атрибутам SPICE |
- | Эти настройки должны соответствовать атрибутам SPICE | + | |
''pulse(V1 V2 TD TR TF PW PER)''. | ''pulse(V1 V2 TD TR TF PW PER)''. | ||
Line 57: | Line 48: | ||
атрибутов, а не только строку значения. | атрибутов, а не только строку значения. | ||
- | Настройкой источников напряжения или тока могла бы заниматься модифицированная | + | Настройкой источников напряжения или тока могла бы заниматься |
- | команда редактирования атрибутов (**ee**), которая вызывала бы для | + | модифицированная команда редактирования атрибутов |
- | этих источников специальные диалоговые окна их свойств. В настоящее время эта | + | (<key>e</key><key>e</key>), которая вызывала бы для этих источников |
- | команда вызывает диалоговое окно редактирования всех атрибутов символа. | + | специальные диалоговые окна их свойств. В настоящее время эта команда |
+ | вызывает диалоговое окно редактирования всех атрибутов символа. | ||
==== Моделирование ==== | ==== Моделирование ==== | ||
Как сохранять параметры моделирования внутри **gschem**. | Как сохранять параметры моделирования внутри **gschem**. | ||
- | Для хранения параметров одного моделирования можно использовать символ с | + | Для хранения параметров одного моделирования можно использовать символ с названием устройства //SIMULATION//. |
- | названием устройства //SIMULATION//. Все параметры, определяющие один вид | + | Все параметры, определяющие один вид моделирования сохраняются как атрибуты, прикреплённые к данному объекту: |
- | моделирования сохраняются как атрибуты, прикреплённые к данному объекту: | + | |
* вид анализа (dc, ac, tran,...); | * вид анализа (dc, ac, tran,...); | ||
* параметры программы моделирования; | * параметры программы моделирования; | ||
Line 93: | Line 83: | ||
Таких объектов моделирования в одной схеме могло бы быть много. | Таких объектов моделирования в одной схеме могло бы быть много. | ||
- | Для хранения дополнительных библиотек можно использовать либо директиву | + | Для хранения дополнительных библиотек можно использовать либо директиву вложения (include), либо символ //LIBRARY//, содержащий все библиотеки в одном из двух видов: |
- | вложения (include), либо символ //LIBRARY//, содержащий все библиотеки в | + | |
- | одном из двух видов: | + | |
* как многострочный атрибут; | * как многострочный атрибут; | ||
* как несколько атрибутов библиотек, прикреплённых к символу //LIBRARY//. | * как несколько атрибутов библиотек, прикреплённых к символу //LIBRARY//. | ||
Line 102: | Line 90: | ||
различие. Глобальные и пользовательские библиотеки могут определяться в | различие. Глобальные и пользовательские библиотеки могут определяться в | ||
//''gafrc''// или в новом конфигурационном файле //''spicerc''//. | //''gafrc''// или в новом конфигурационном файле //''spicerc''//. | ||
+ | |||
==== Создание диалогового окна для моделирования внутри gschem ==== | ==== Создание диалогового окна для моделирования внутри gschem ==== | ||
- | Допустим, всё что нам нужно, чтобы добавить поддержку моделирования в | + | |
- | **gschem**, это одно диалоговое окно. | + | Допустим, всё что нам нужно, чтобы добавить поддержку моделирования в **gschem**, это одно диалоговое окно. |
* В нём должен содержаться список моделирований (в виде списка из их названий с кнопками разрешения/запрета). | * В нём должен содержаться список моделирований (в виде списка из их названий с кнопками разрешения/запрета). | ||
* В нём должны быть иконки для добавления измерителей. | * В нём должны быть иконки для добавления измерителей. | ||
Line 124: | Line 113: | ||
Какие параметры нужны для этого диалогового окна? И почему? | Какие параметры нужны для этого диалогового окна? И почему? | ||
- | Расставленные нами измерители можно использовать, чтобы сообщать программе | + | Расставленные нами измерители можно использовать, чтобы сообщать программе моделирования о том, какие нам хотелось бы сохранять переменные, или программе построения графиков о том, какие хотелось бы увидеть графики. Это вещи совершенно различные, и нам нужна возможность выбирать следующее: |
- | моделирования о том, какие нам хотелось бы сохранять переменные, или программе | + | |
- | построения графиков о том, какие хотелось бы увидеть графики. Это вещи | + | |
- | совершенно различные, и нам нужна возможность выбирать следующее: | + | |
* выводить на графиках все маркеры и сохранять только напряжения соответствующих узлов; | * выводить на графиках все маркеры и сохранять только напряжения соответствующих узлов; | ||
* выводить на графиках все маркеры, но сохранять все напряжения и токи (с помощью источников напряжения); | * выводить на графиках все маркеры, но сохранять все напряжения и токи (с помощью источников напряжения); | ||
* сохранять напряжения узлов только для схемы текущего уровня или также и для подсхем. | * сохранять напряжения узлов только для схемы текущего уровня или также и для подсхем. | ||
- | |||
==== Запуск моделирования ==== | ==== Запуск моделирования ==== | ||
Line 140: | Line 125: | ||
* выполнение скрипта запуска моделирования (**guile**, **sh**, ...). | * выполнение скрипта запуска моделирования (**guile**, **sh**, ...). | ||
- | Этот скрипт мог бы вызывать даже диспетчер, который бы занимался | + | Этот скрипт мог бы вызывать даже диспетчер, который бы занимался множеством |
- | множеством крупномасштабных моделирований. | + | крупномасштабных моделирований. |
===== Приложение ===== | ===== Приложение ===== | ||
- | ==== Символ измерителя тока (эскиз) ==== | + | ==== Символ измерителя напряжения (эскиз) ==== |
- | <code> | + | <code gschem-symbol voltage_probe.sym> |
v 20061020 1 | v 20061020 1 | ||
P 0 0 200 200 1 0 0 | P 0 0 200 200 1 0 0 | ||
Line 172: | Line 156: | ||
</code> | </code> | ||
- | + | ==== Символ измерителя тока (эскиз) ==== | |
- | ==== Символ измерителя напряжения (эскиз) ==== | + | <code gschem-symbol current_probe.sym> |
- | <code> | + | |
v 20061020 1 | v 20061020 1 | ||
P 0 200 150 200 1 0 0 | P 0 200 150 200 1 0 0 | ||
Line 209: | Line 192: | ||
value=DC 0V | value=DC 0V | ||
</code> | </code> | ||
- | |||
==== Ещё один символ измерителя тока (эскиз), который использует Kurt Peters ==== | ==== Ещё один символ измерителя тока (эскиз), который использует Kurt Peters ==== | ||
- | <code> | + | <code gschem-symbol ammeter.sym> |
v 20061020 1 | v 20061020 1 | ||
T 700 650 8 10 1 1 0 0 1 | T 700 650 8 10 1 1 0 0 1 |