LTSpice Automation


15

У меня есть повышающий преобразователь с питанием от батареи, и я пытаюсь измерить максимальное падение входного (аккумуляторного) напряжения при различных условиях нагрузки при высоких потреблении тока (разные рабочие циклы / периодичности) в дополнение к нескольким типам батарей (различные напряжения / внутренние сопротивления). Поскольку я моделирую такое (относительно) большое количество рабочего времени, файлы моделирования становятся довольно существенными, не говоря уже о том, что они занимают время. Я хотел бы автоматизировать LTSpice, чтобы я мог программно изменять значения компонентов и повторно запускать симуляции и собирать данные (такие значения, как напряжение или ток). Я знаю это:

  • WAV-файлы могут быть использованы для ввода / вывода данных из программы
  • Программу можно запустить из командной строки

Пока что мой лучший вариант, кажется, использует комбинацию этих двух вариантов вместе с моим собственным кодом / сценарием таким образом, чтобы достигать моих целей, но я просто задаюсь вопросом, есть ли лучший выход уже там.

Кто-нибудь автоматизировал LTSpice или знает, был ли написан какой-либо API-интерфейс для автоматизации (изготовителем или третьими лицами)?

В идеале мне хотелось бы иметь решатель, такой, чтобы я задавал ему нужные параметры, и он пробовал различные значения компонентов, пока не нашел «оптимальное» решение моих ограничений.


Что сказал ваш Линейный FAE? Я бы сначала спросил их.
Брайан Карлтон

1
Знаете ли вы о командах .STEP и .PARAM? Не уверен, что он достигнет именно того, чего вы хотите, но я опубликую ответ с парой примеров, если вам интересно.
Оли Глейзер

1
Этот вопрос кажется не по теме, потому что он не касается электронного дизайна.
Леон Хеллер

12
@LeonHeller на КАКОЙ планете SPICE не является частью дизайна?
заполнитель

1
Вы обнаружите, что варианты Монте-Карло идеально подходят для этого. Вы можете Schmoo различные параметры, и он также может отображать изменения. LT-Spice МОЖЕТ отключить это, SPICE изначально поддерживает это. Начало там
заполнитель

Ответы:


15

Многократный запуск симуляции и изменение значений нескольких компонентов немного сложнее, чем просто изменение (что не так уж плохо)

Вот концепция для изменения одного значения:

  • Добавьте оператор .param, используя значок директивы SPICE справа, например, для значения сопротивления .param X=R
  • Чтобы использовать его, вы должны ввести {x} в значение резистора, а затем включить, например, .step param X 100 500 50шаг от 100 до 500 с шагом 50.

Пример:

Пример шага

Результат:

график

Для нескольких значений я нашел единственный способ работать со списком значений для X и с помощью оператора таблицы. Это, вероятно, лучше всего объяснить на примере (чтение справки по используемым командам, вероятно, будет здесь полезно). Но обратите внимание, что синтаксис команды таблицы находится в форме таблицы (index, x1, y1, x2, y2, .... xn, yn), принимает индекс в качестве входных данных и возвращает интерполированное значение для x = index на основе предоставленного x у пар.

В одной из моих симуляций мне нужно было выполнить 12 симуляций при изменении 3 различных значений компонентов, вот команды:

.step param X list 1 2 3 4 5 6 7 8 9 10 11 12
.param Rin1 = table(X, 1, 1,1p, 2, 1p, 3, 1p, 4, 4478, 5, 4080, 6, 3400, 7, 2200, 8, 1p, 9, 1p, 10, 1p, 11, 1p, 12, 1p)
.param Rin2 = table(X, 1, 4997, 2, 4997, 3, 4997, 4, 499, 5, 897, 6, 1577, 7, 2777,  8, 4997, 9, 4997, 10, 4997, 11, 4997, 12, 4997)
.param Tval = table(X, 1, 56, 2, 56, 3, 27, 4, 1G, 5, 1G, 6, 1G, 7, 1G, 8, 1G, 9, 330, 10, 330, 11, 120, 12, 120)
.param Kval = table(X, 1, 316, 2, 147, 3, 147, 4, 6340, 5, 6340, 6, 6340, 7, 6340, 8, 6340, 9, 6340, 10, 825, 11, 825, 12, 316)

Результат:

Пример получения

Надеюсь, вы поняли идею, возможно, вы могли бы создать сценарий, который будет производить необходимые команды SPICE, когда вы заполните желаемые значения. Или просто создайте шаблон (например, я просто скопировал и вставил вышеуказанное в несколько разных симуляций и изменил значения)

Если вышеперечисленное не делает то, что вы хотите, то, возможно, посмотрите на что-то вроде мультисима NI (я думаю, что у него есть некоторые опции пакетного моделирования, хотя я не уверен, насколько они полезны). Также может быть полезно спросить о LTSPice форум и посмотреть, если кто-то знает о лучшем способе ведения дел.


3
Это не так чисто, как хотелось бы, но для свободного программного обеспечения я могу только быть благодарен, что они бросили мне кость. Спасибо за демонстрацию этой техники. Это определенно приблизит меня к тому, что я ищу.
Джоэл Б

1
Спасибо, это помогло мне понять мою симуляцию. Теперь я должен выяснить, как поставить легенду на сюжет, чтобы я мог сказать, какая симуляция какая.

8

Я думаю, что на самом деле можно запустить LTSpice из командной строки и запустить симуляцию переходного процесса:

На морозе:

cd <wherever LTSpice is installed on your computer>
scad3.exe -Run -b MyCircuit.asc

В Linux:

cd ~/.wine/drive_c/Program Files (x86)/LTC/LTspiceIV
wine ./scad3.exe -Run -b MyCircuit.asc

1
Это отличная находка! Сейчас я думаю о том, как использовать это для автоматизированного проектирования.
Джоэл Б

1
@JoelB: да, я тоже это использую. К сожалению, есть несколько недостатков: 1) В отличие от графического интерфейса, решатель работает однопоточным, поэтому он медленнее. 2) У вас нет «отчета о прогрессе», как в GUI
blondiepassesby

3

LTSpice может быть запущен в пакетном режиме с -bпереключателем командной строки.

Из файла справки LTSpice:

-b: запустить в пакетном режиме. Например, "scad3.exe -b deck.cir" оставит данные в файле deck.raw

Как читать и интерпретировать вывод .raw оставлено в качестве упражнения для читателя.

Также обратите внимание, среди параметров командной строки:

-ascii: использовать ASCII .raw файлы. Серьезно снижает производительность программы.


Как именно я это запускаю? В режиме командной строки это. Я обычно не пользователь Windows и не знаю, как это сделать на компьютере с Windows.
Tropical_Peach

1
Я никогда не бегал так. Вы должны попробовать это сами. Вы можете открыть командное окно («cmd.exe» в меню «Пуск») или запустить его на любом языке, который вы используете для последовательности ваших тестов.
Фотон

Если вы используете matlab, у них есть скрипт для преобразования .raw файлов mathworks.com/matlabcentral/fileexchange/…
Voltage Spike

3

Вы уже проверяли в " Менеджере очередей LTSpice "? ( Ссылка перенаправляет на мой собственный веб-сайт, где вы можете загрузить программное обеспечение, но я не являюсь его автором, который первоначально поделился программой на форуме, который сегодня закрыт. Публикация на моем веб-сайте - это способ оживить ее ).

Этот инструмент очень помог мне в прошлом. Вы можете подготовить много файлов моделирования и запустить их в виде очереди.

Диспетчер очереди LTSpice


Очереди не автоматизация.
Гарри Свенссон

1
Если автоматизация, которая вам нужна, это организация очередей, это, безусловно, так и есть! Это решает проблему ОП напрямую.
Даниил

1
Если это программное обеспечение с закрытым исходным кодом, которое вы не написали, я бы ожидал, что пользователи будут с подозрением относиться к его запуску.
Дэйв Твид

1

Если это просто LT Spice и вы не можете пройти через GUI, я бы порекомендовал скрипт-программу AutoIt. Я использовал его для автоматизации некоторых критически важных приложений Windows, в которых отсутствовал active-x-DDE-COM.dll - что угодно. Вы можете настроить его на ожидание файлов, нажатие кнопок Windows, пунктов меню, вызов программ с аргументами и т. Д.

Посмотри на:

http://www.autoitscript.com/site/

http://www.autoitscript.com/forum/

Я бы пошел на Winbatch, если вы хотите заплатить за программу сценария.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.