Версия от 16:30, 5 мая 2022; Valemak(обсуждение | вклад)(Новая страница: «{{Панель управления/Электроника}} {{Перевод от valemak}} {{Myagkij-редактор}} =Странные особенности программы SPICE<ref>[https://www.allaboutcircuits.com/textbook/reference/chpt-7/spice-quirks/ www.allaboutcircuits.com - SPICE Quirks]</ref>= {{Цитата|Мусор на входе, мусор на выходе.|Аноним}} SPICE – очень надёжная программа,...»)
SPICE – очень надёжная программа, но у неё есть свои маленькие странности, с которыми придётся свыкнуться. Под «странностью» я подразумеваю требование к пользователю написать исходный файл определённым образом, чтобы он работал без сообщений об ошибках.
Я сейчас толкую не про какие-либо баги в SPICE, могущие привести к ошибочным или вводящим в заблуждение результатам: их правильнее называть «ошибками». Раз уж речь зашла об ошибках (багах), то отметим, что программа SPICE также их не лишена.
Но вернёмся к «странностям». Некоторые (или все) из них могут быть уникальными для SPICE версии 2g6, единственной версии, которую я широко использовал. Возможно, они были исправлены в более поздних версиях.
Хорошее начало
SPICE требует, чтобы исходный файл начинался не с первой инструкции в схеме (как вы помните, сам SPICE инструкции называет «карты» в «колоде»). Первый символ в исходном файле может быть переводом строки, строкой заголовка или комментарием: просто должно быть что-то там перед первой строкой непосредственно программы, определяющей компонент файла.
В противном случае SPICE вообще откажется проводить анализ, заявив, что в «колоде» есть серьёзная ошибка (например, неправильное подключение узлов).
Хороший конец
SPICE настаивает, чтобы строка .end в самом конце исходного файла не заканчивалась символом перевода строки или возврата каретки. Другими словами, когда вы закончите набирать «.end», вы не должны нажимать клавишу ↵ Enter на клавиатуре.
Курсор в вашем текстовом редакторе должен остановиться сразу справа от «d» после «.end» и ни символом дальше. Несоблюдение этой странной особенности приведёт к сообщению об ошибке «отсутствует карта .end» (англ. «missing .end card») в конце полного вывода анализа.
Эта ошибка не влияет на фактический анализ схемы, поэтому я обычно игнорирую это сообщение. Однако, если вы хотите получить «идеальный» результат, вы должны обратить внимание на эту идиосинкразию.
Должен быть узел 0
Вам предоставляется большая свобода в нумерации узлов схемы, но вы должны иметь узел 0 где-то в вашем списке связей, чтобы SPICE работал. Узел 0 является узлом по умолчанию для заземления цепи и является точкой отсчёта для всех напряжений, указанных в местах расположения отдельных узлов.
Когда SPICE выполняет простой анализ постоянного тока, выходные данные будут содержать список напряжений во всех ненулевых узлах цепи. Точкой отсчёта («землёй») для всех этих показаний напряжения является узел 0. Например:
Caption text
node
voltage
node
voltage
(1)
15,0000
(2)
0,6522
В этом анализе имеется постоянное напряжение 15 вольт между узлом 1 и «землёй» (узел 0) и постоянное напряжение 0,6522 вольта между узлом 2 и «землёй» (узел 0). В обоих этих случаях полярность напряжения в узле 0 отрицательна по отношению к другому узлу (другими словами, оба узла 1 и 2 положительны по отношению к узлу 0).
Избегайте разомкнутых цепей
SPICE не может работать с разомкнутыми цепями любого типа. Если в вашем списке связей указана, например, цепь с разомкнутым источником напряжения, SPICE откажется выполнять анализ.
Ярким примером ошибки такого типа является «подключение» источника напряжения ко входу источника, зависящего от напряжения (используемого для имитации операционного усилителя). SPICE должен видеть полный путь тока, поэтому я обычно привязываю к источнику напряжения мощный резистор (обычно он в списках связей называется rbogus, т.е. «фиктивный резистор», на схемах RФиктивн.), чтобы он действовал как минимальная нагрузка.
Избегайте определённых связок компонентов
SPICE не может работать с определёнными непрерывными связками компонентов в цепи, а именно с источниками напряжения и катушками индуктивности. Следующие циклы заставят SPICE прервать анализ:
Список связей с параллельными индуктивностями
netlist l1 2 4 10m l2 2 4 50m l3 2 4 25m
Список связей с индукторной петлёй
netlist v1 1 0 dc 12 l1 1 0 150m
Список связей с последовательными ёмкостями
netlist c1 5 6 33u c2 6 7 47u
Причина, по которой SPICE не может справиться с подобными ситуациями, заключается в том, как он выполняет анализ постоянного тока: он рассматривает все катушки индуктивности как закороченные, а все конденсаторы – как разомкнутые участки цепи. Поскольку короткие замыкания (0 Ом) и разомкнутые цепи (бесконечное сопротивление) либо содержат, либо порождают математические бесконечности, компьютер просто не может справиться с подобными вычислениями, и поэтому SPICE прекратит анализ при возникновении любого из этих условий.
Как же тогда работать с катушками индуктивности и конденсаторами в SPICE?
Чтобы сделать подобные конфигурации компонентов приемлемыми для SPICE, необходимо вставлять резисторы соответствующих номиналов в соответствующие места, устраняя соответствующие короткие замыкания и обрывы цепи. Если требуется последовательный резистор, нужно брать очень низкое значение сопротивления.
И наоборот, если требуется параллельный резистор, то берётся очень высокое значение сопротивления. Например:
Чтобы устранить проблему с параллельной катушкой индуктивности, вставляем резистор очень низкого номинала последовательно с каждой вызывающей помехи катушкой индуктивности.
Список связей с параллельными индуктивностями
original netlist l1 2 4 10m l2 2 4 50m l3 2 4 25m
«Подправленный» список связей с параллельными индуктивностями
Как и в предыдущем примере с параллельными катушками индуктивности, важно сделать корректирующий резистор (RФиктивн.) очень низким по сопротивлению, чтобы не оказывать существенного влияния на работу схемы.
Чтобы исправить цепь последовательных конденсаторов, один из конденсаторов должен иметь шунтирующий (обходной) резистор. Для анализа SPICE требуется наличие пути постоянного тока к каждому конденсатору.
Список связей с последовательными ёмкостями
original netlist c1 5 6 33u c2 6 7 47u
«Подправленный» список связей с последовательными ёмкостями
Фиктивное значение R, равное 9 тераом, обеспечивает путь постоянного тока к C1 (и в обход C2) без существенного влияния на работу схемы.
Измерение и вывод на печать силы тока
Хотя печать или построение графика напряжения в SPICE довольно просты, вывод значений для силы тока несколько сложнее. Измерения напряжения задаются путём объявления соответствующих узлов схемы.
Например, если мы хотим узнать напряжение на конденсаторе, выводы которого соединяются между узлами 4 и 7, мы можем сделать оператор .print таким:
Конденсатор между узлами 4 и 7
c1 4 7 22u .print ac v(4,7)
Однако, если нужно, чтобы SPICE измерял силу тока, проходящего через этот конденсатор, то это уже не так легко и просто. Токи в SPICE должны указываться относительно источника напряжения, а не любого произвольного компонента. Например:
Добавление источника напряжения, относительно которого измеряется сила тока
c1 4 7 22u vinput 6 4 ac 1 sin .print ac i(vinput)
Эта «карта» .print даёт указание SPICE распечатать силу тока, проходящего через источник напряжения VВход, которая оказывается такой же, как сила тока, проходящего через наш конденсатор между узлами 4 и 7. Но что, если в нашей схеме нет такого источника напряжения, для отсылки на измеряемый ток?
Одним из решений является включение шунтирующего резистора в цепь и измерение напряжения на нём. В этом случае я выбрал значение сопротивления шунта 1 Ом, чтобы получить 1 вольт на ампер тока, проходящего через C1:
Добавление шунтирующего резистора для конденсатора
c1 4 7 22u rshunt 6 4 1 .print ac v(6,4)
Тем не менее, добавление в нашу цепь дополнительного сопротивления, достаточно большого, чтобы снизить значимое напряжение для предполагаемого диапазона тока, может неблагоприятно повлиять на ситуацию. Это лучшее решение для SPICE, хотя в реальной жизни такое решение для измерения тока никогда не будет актуальным:
Добавление «фиктивного» источника напряжения для конденсатора
c1 4 7 22u vbogus 6 4 dc 0 .print ac i(vbogus)
Вставка «фиктивного» источника постоянного напряжения с нулевым напряжением вообще не влияет на работу схемы, но предоставляет SPICE удобное место для измерения силы тока. Интересно, что не имеет значения, что VФиктивн. является источником постоянного тока, когда мы хотим измерить переменный ток!
Тот факт, что SPICE будет выводить показания переменного тока, определяется спецификацией «ac» в «карте» .print и ничем более. Следует также отметить, что способ, которым SPICE присваивает полярность при измерениях тока, немного странный. В качестве примера возьмём следующую схему:
Пример того, как странно SPICE присваивает полярность при измерении силы тока
При общем напряжении 10 вольт и общем сопротивлении 10 кОм можно ожидать, что SPICE сообщит, что ток через источник напряжения V1 будет 1 мА (1e-03), но на самом деле SPICE выдаст отрицательное значение 1 мА (-1e-03)! SPICE считает, что ток со стороны отрицательного полюса источника постоянного напряжения (нормальное направление) является отрицательным (а не положительным) значением.
Иногда я добавляю «фиктивный» источник напряжения в цепь постоянного тока, подобную этой, просто чтобы заставить SPICE выводить положительное значение силы тока:
«Фиктивный» источник напряжения для вывода положительного значения силы тока
example v1 1 0 r1 1 2 5k r2 2 3 5k vbogus 3 0 dc 0 .dc v1 10 10 1 .print dc i(vbogus) .end
Обратите внимание, VФиктивн. расположен так, что ток цепи входит в его положительную сторону (узел 3) и выходит из отрицательной стороны (узел 0). Такая ориентация обеспечит положительное выходное значение тока цепи.
Анализ Фурье
При выполнении анализа Фурье (в частотной области) сигнала я обнаружил, что необходимо либо распечатать, либо построить график сигнала с использованием «карт» .print или .plot соответственно. Если вы не распечатаете или не начертите его, SPICE на мгновение остановится во время анализа, а затем прервет задание после вывода «начального переходного решения».
Кроме того, при анализе прямоугольной волны, создаваемой функцией «импульсного» источника, вы должны задать форме волны некоторое конечное время нарастания и спада, иначе результаты анализа Фурье будут неверными. По какой-то причине идеальная прямоугольная волна с нулевым временем нарастания/спада создаёт значительные уровни чётных гармоник в соответствии с опцией анализа Фурье SPICE, что некорректно для реальных прямоугольных волн.