LTSpice Automation

15

Mam zasilany bateryjnie przetwornik podwyższający napięcie i próbuję zmierzyć spadek napięcia maksymalnego na wejściu (akumulator) w różnych warunkach obciążenia przy dużym poborze prądu (różne cykle pracy / okresy) oprócz kilku różnych typów akumulatorów (różne napięcia / rezystancje wewnętrzne). Ponieważ symuluję tak (stosunkowo) duży czas pracy, pliki symulacji stają się dość znaczne, nie wspominając o tym, że zajmują trochę czasu. Chciałbym zautomatyzować LTSpice, aby móc programowo zmieniać wartości składników oraz ponownie przeprowadzać symulacje i rejestrować dane (wartości takich jak napięcie lub prąd). Wiem to:

  • Pliki WAV można wykorzystać do wprowadzania / wyprowadzania danych z programu
  • Program można uruchomić z wiersza poleceń

Jak dotąd moja najlepsza opcja wydaje się wykorzystywać kombinację tych dwóch opcji wraz z własnym kodem / skryptem w sposób, który osiąga moje cele, ale zastanawiam się, czy istnieje już lepsza droga.

Czy ktoś zautomatyzował LTSpice lub wiedział, czy został napisany dla niego jakikolwiek interfejs API automatyzacji (przez producenta lub osoby trzecie)?

Idealnie chciałbym mieć solver, taki, który podałem mu pożądane parametry i wypróbowałem różne wartości składników, aż znalazłem „optymalne” rozwiązanie moich ograniczeń.

Joel B.
źródło
Co powiedziała Twoja liniowa FAE? Najpierw ich zapytam.
Brian Carlton
1
Czy wiesz o komendach .STEP i .PARAM? Nie jestem pewien, czy osiągnie dokładnie to, czego pragniesz, ale w razie zainteresowania opublikuję odpowiedź z kilkoma przykładami.
Oli Glaser
1
To pytanie wydaje się być nie na temat, ponieważ nie dotyczy projektowania elektronicznego.
Leon Heller
12
@LeonHeller na JAKIEJ planecie SPICE nie jest częścią projektu?
symbol zastępczy
1
Przekonasz się, że opcje Monte Carlo są do tego idealnie dostosowane. Możesz Schmoo różne parametry, a także może wyświetlać odmiany. LT-Spice MOŻE wyłączyć tę funkcję przez SPICE natywnie obsługuje to. Zacznij od tego
symbol zastępczy

Odpowiedzi:

15

Uruchamianie symulacji wiele razy i zmiana wielu wartości składników jest nieco bardziej zaangażowana niż tylko zmiana jednej (co nie jest takie złe)

Oto koncepcja zmiany jednej wartości:

  • Dodaj instrukcję .param, używając ikony dyrektywy SPICE po prawej stronie, np. Dla wartości oporu .param X=R
  • Aby go użyć, należy wpisać {x} w wartość rezystora, a następnie dołączyć np. .step param X 100 500 50Do stopniowania wartości między 100 a 500 w krokach co 50.

Przykład:

Przykład kroku

Wynik:

Wykres

W przypadku wielu wartości jedynym sposobem, w jaki znalazłem działanie, było użycie listy wartości dla X i użycie instrukcji table. Prawdopodobnie najlepiej to wyjaśnić za pomocą przykładu (tutaj prawdopodobnie pomocne będzie przeczytanie pomocy dla używanych poleceń). Należy jednak pamiętać, że składnia polecenia tabeli ma postać tabeli (indeks, x1, y1, x2, y2, .... xn, yn), przyjmuje indeks jako dane wejściowe i zwraca interpolowaną wartość x = indeks na podstawie dostarczonego x , y pary.

W jednej z moich symulacji musiałem wykonać 12 symulacji, zmieniając 3 różne wartości składników, oto polecenia:

.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)

Wynik:

Zyskaj przykład

Mam nadzieję, że wpadłeś na pomysł, że może uda ci się stworzyć skrypt, który wygeneruje niezbędne polecenia SPICE, gdy wypełnisz pożądane wartości. Lub po prostu stwórz szablon (np. Właśnie skopiowałem i wkleiłem powyższe do kilku różnych symulacji i zmieniłem wartości)

Jeśli powyższe nie robi tego, co chcesz, to może spójrz na coś takiego jak multisim NI (myślę, że ma kilka opcji symulacji wsadowej, chociaż nie jestem pewien, czy są one przydatne). Może być również pomocne zapytać na LTSPice forum i sprawdź, czy ktoś wie o lepszym sposobie robienia rzeczy.

Oli Glaser
źródło
3
Nie jest to tak czyste, jak bym tego chciał, ale w przypadku wolnego oprogramowania mogę być tylko wdzięczny, że rzuciły mi kość. Dzięki za demonstrację tej techniki. To z pewnością zbliży mnie do tego, czego szukam.
Joel B,
1
Dziękuję, pomogło mi to rozgryźć moją symulację. Teraz muszę wymyślić, jak umieścić legendę na fabule, aby móc stwierdzić, która symulacja jest która.
8

Myślę, że tak naprawdę jest możliwe uruchomienie LTSpice z wiersza poleceń i uruchomienie symulacji przejściowej:

Podczas windoze:

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

W systemie Linux:

cd ~/.wine/drive_c/Program Files (x86)/LTC/LTspiceIV
wine ./scad3.exe -Run -b MyCircuit.asc
blondiepassesby
źródło
1
To doskonałe znalezisko! Teraz zastanawiam się, jak mogę to wykorzystać do zautomatyzowanego projektowania.
Joel B,
1
@JelB: tak, do tego też używam. Istnieje niestety kilka niedociągnięć: 1) W przeciwieństwie do GUI, solver działa jednowątkowo, więc jest wolniejszy 2) Nie masz żadnego „raportu postępu” jak w GUI
blondiepassesby
3

LTSpice można uruchomić w trybie wsadowym za pomocą -bprzełącznika wiersza polecenia.

Z pliku pomocy LTSpice:

-b: Uruchom w trybie wsadowym. Np. „Scad3.exe -b deck.cir” pozostawi dane w pliku deck.raw

Jak czytać i interpretować .raw wyjście jest pozostawione jako ćwiczenie dla czytelnika.

Zauważ też, że wśród przełączników wiersza poleceń:

-ascii: Użyj plików .raw ASCII. Poważnie obniża wydajność programu.

The Photon
źródło
Jak to dokładnie uruchomić? To znaczy w trybie wiersza poleceń. Zwykle nie jestem użytkownikiem systemu Windows i nie mam pojęcia, jak to zrobić na komputerze z systemem Windows.
Tropical_Peach
1
Nigdy tak nie działałem. Musisz to wypróbować sam. Możesz otworzyć okno poleceń („cmd.exe” w menu Start) lub uruchomić je z dowolnego języka, którego używasz do sekwencjonowania testów.
Photon
Jeśli używasz Matlaba, mają skrypt do konwersji plików .raw mathworks.com/matlabcentral/fileexchange/...
Voltage Spike
3

Czy sprawdziłeś już w „ LTSpice Queue Manager ”? ( Link przekierowuje na moją własną stronę internetową, na której można pobrać oprogramowanie, ale nie jestem jego autorem, który pierwotnie udostępnił program na zamkniętym forum. Udostępnianie go za pośrednictwem mojej witryny jest sposobem na jego ożywienie ).

To narzędzie bardzo mi pomogło w przeszłości. Możesz przygotować wiele plików symulacji i uruchomić je w kolejce.

Menedżer kolejek LTSpice

justinmassiot
źródło
Kolejkowanie to nie automatyzacja.
Harry Svensson,
1
Jeśli automatyzacja, której potrzebujesz, to kolejkowanie, to na pewno tak! To rozwiązuje problem OP bezpośrednio.
Daniel
1
Jeśli jest to oprogramowanie o zamkniętym kodzie źródłowym, którego nie napisałeś, spodziewam się, że użytkownicy będą w sposób zrozumiały ostrożni w jego uruchamianiu.
Dave Tweed
1

Jeśli to tylko LT Spice i nie można przejść przez GUI, poleciłbym program skryptowy AutoIt. Użyłem go do automatyzacji niektórych krytycznych aplikacji Windows, którym brakowało active-x-DDE-COM.dll-cokolwiek. Możesz ustawić go tak, aby oczekiwał na pliki, naciskał przyciski Windows, menu, programy wywołujące z argumentami itp.

Spójrz na:

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

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

Wybrałbym Winbatch, jeśli chcesz zapłacić za program skryptowy.

Dejvid_no1
źródło