SCSyrup

Knihovna pro symbolickou analýzu spínaných obvodů.

Pomocí knihovny funkcí SCSyrup lze pro idealizovaný SC nebo SI obvod určit symbolicky nebo numerisky vyjádřenou přenosovou funkci (různého typu) nebo dvojbranovou matici (opět různého typu), a to pro dvou nebo vícefázově spínané obvody. Obdržené výsledky lze dále zpracovávat standardními příkazy Maple.

Algoritmus použitý v knihovně SCSyrup je založen na modifikované metodě uzlových napětí, kde místo proudů jsou použity náboje. Knihovna počítá správně pouze takové obvody, u který dojde za dobu trvání jedné fáze k ustálení přechodových dějů.

Obvodové prvky, které lze použít: kondenzátor, spínač spínající v dané fázi, ideální operační zesilovač a všechny typy řízených zdrojů a proudovou buňku SI obvodů.

Syntaxe:

Syntaxe popisu obvodu se prakticky neliší od syntaxe popisu obvodu rozšířeného programu SPICE nebo knihovny Syrup. Navíc je nutné definovat spínací fáze.

Spínací fáze:

P <počet fází> [<T1/T> <T2/T> ... ]

Nepovinnými parametry jsou definice relativních časových intervalů jednotlivých fází. Počet intervalů musí odpovídat počtu fází a a jejich součet (T1/T + T2/T + ...) musí být roven jedné. Definice počtu fází je povinná.

Základní prvky:

Kondenzátor.............. C<řetězec> <+uzel> <-uzel> [<hodnota>]

Spínač........................ S<řetězec> <uzel> <uzel> <fáze>

Operační zesilovač.... A<řetězec> <+výst. uzel> <-výst. uzel> <+vst. uzel> <-vst. uzel>

SI buňka .................... T<řetězec> <výst. uzel> <vst. uzel> <fáze> [<převodní vodivost>]

Řízené zdroje:

Napětím řízený zdroj napětí..... E<řetězec> <+výst. uzel> <-výst. uzel> <+řídící uzel> <-řídící uzel> [<řídící konstanta>]

Proudem řízený zdroj proudu... F<řetězec> <+výst. uzel> <-výst. uzel> <řídící proud> [<řídící konstanta>]

Napětím řízený zdroj proudu.... G<řetězec> <+výst. uzel> <-výst. uzel> <+řídící uzel> <-řídící uzel> [<řídící konstanta>]

Proudem řízený zdroj napětí..... H<řetězec> <+výst. uzel> <-výst. uzel> <řídící proud> [<řídící konstanta>]

přičemž řídícím proudem je proud nezávislého napěťového zdroje, orientovaný od kladné k záporné svorce.

Výpočet přenosové funkce:
TransferS - Symbolicky

TransferN - s dosazením hodnot prvků (pokud byly hodnoty zadány)

TransferS(<popis obvodu>,<vst. uzel>,<výst. uzel>,<fáze buzení>,<fáze výstupní veličiny>,<typ buzení>,<typ zakončení>)
<popis obvodu> - nejčastěji jméno proměné (viz příklad)
<vst. uzel> - číslo vstupního uzlu
<výst. uzel> - číslo výstupního uzlu
<fáze buzení> - číslo fáze, pro kterou se budou uvažovat vstupní vzorky signálu při výpočtu přenosu

<fáze výstupní veličiny> - číslo fáze, pro kterou se budou uvažovat výstupní vzorky signálu při výpočtu přenosu

<typ buzení> - posloupnost písmen V a Q , přičemž jejich počet musí odpovídat počtu fází. Potom první písmeno určuje podmínky na vstupních svorkách v první fázi, druhé ve druhé fázi, ... , přičemž ještě záleží na definici fázi buzení. Písmena mají následující význam:

V - znamená připojení napěťového zdroje ke vstupní svorce v dané fázi, pokud fáze buzení definuje přenos právě pro tuto fázi. Vstupní veličinou je potom napětí. V ostatních fázích znamená označení V , že je vstupní svorka připojena ke společnému uzlu (na zem).

Q - znamená připojení zdroje náboje pro SC obvody nebo zdroje proudu pro obvody SI ke vstupní svorce v dané fázi, pokud fáze buzení definuje přenos právě pro tuto fázi. Vstupní veličinou je potom náboj, resp. proud. V ostatních fázích znamená označení Q , že je vstupní svorka odpojena od budícího zdroje.

<typ zakončení> - posloupnost písmen V a Q , přičemž jejich počet musí opět odpovídat počtu fází. Potom první písmeno určuje podmínky na výstupních svorkách v první fázi, druhé ve druhé fázi, ... , přičemž ještě záleží na definici fáze výtupní veličiny. Písmena mají následující význam:

V - znamená, že výstupní svorka je v dané fázi naprázdno, a pokud fáze výstupní veličiny definuje přenos právě pro tuto fázi, je tímto určena promenná výstupní veličiny - napětí.

Q - znamená, že výstupní svorka je v dané fázi nakrátko (zkratována na zem), a pokud fáze výstupní veličiny definuje přenos právě pro tuto fázi, je tímto určena proměnná výstupní veličiny - náboj pro SC obvody a proud pro obvody SI

.

Popis všech příkazů [CMatrixN, CMatrixS, FourportN, FourportS, TAbs, TA... pro výpočty i jejich syntaxi lze nalést v helpu.

Občas je dobré trochu uklidit!

> restart;

Načtení knihovny pro analýzu SC obvodů

> read "f:/usr/bicak/maple/nds/scsyrup.m";

> with(scsyrup);

`SC Syrup version 2.21 loaded.`

`(pozor prvek T ma prohozeny vstup a vystup Tx out ...

[CMatrixN, CMatrixS, FourportN, FourportS, TAbs, TA...

Analýza obvodů se spínanými kapacitory

Jednoduchý spínaný obvod (SC) obsahující dva kondenzátory a dva spínače. Obvod se chová jako dolní propust.

[Maple Bitmap]

> scobvod:=TEXT(`Spinany RC obvod`,

> `*komentář`,

> `P 2`, #dvoufázově spínaný obvod

> `C1 2 0 1`, #kapacitor C1 mezi uzly 2,0 s hodnotou 1

> `C2 3 0 1`,

> `S1 1 2 1`, #Spínač S1 mezi uzly 1,2 spínající v první (sudé) fázi

> `S2 2 3 2`,

> `.end`);

scobvod := TEXT(`Spinany RC obvod`,`*komentář`,`P 2...

Výpočet symbolické přenosové funkce z uzlu 1 do uzlu 2, vstup i výstup je v sudé fázi. Vstupním i výstupním signálem je napětí, podrobnější informace viz help .

> TS1:=TransferS(scobvod,1,3,1,1,VV,VV);

TS1 := C1/(z*C2+z*C1-C2)

Přenosová funkce s dosazením hodnot prvků

> TN1:=TransferN(scobvod,1,3,1,1,VV,VV);

TN1 := 1/(2*z-1)

Výpočet modulové kmitočtové charakteristiky v dB pro fvz = 100Hz a 200Hz To lze pomocí "klasických" příkazů MAPLE nebo s využitím příkazu TAbs pro výpočet modulu z knihovny SCSyrup.

> simplify(evalc(abs(subs(z = exp(I*omega/100),TN1))));

> M_TN_1:=TAbs(TN1,100);

> M_TN_2:=TAbs(TN1,200);

1/(sqrt(-4*cos(1/100*omega)+5))

M_TN_1 := 1/(sqrt(-4*cos(1/100*omega)+5))

M_TN_2 := 1/(sqrt(-4*cos(1/200*omega)+5))

> plots[semilogplot]([20*log10(subs(omega=2*Pi*f,M_TN_1)),20*log10(subs(omega=2*Pi*f,M_TN_2))],f=0.5..50);

[Maple Plot]

Podobně lze zobrazit i fázovou charakteristiku.

Pozor na vzorkovací teorém (všimněte si lineární osy kmitočtu)!

> plot([20*log10(subs(omega=2*Pi*f,M_TN_1)),20*log10(subs(omega=2*Pi*f,M_TN_2))],f=0.5..200);

[Maple Plot]

Algoritmus použitý v SCSyrupu počítá s kapacitní maticí obvodu. Pomocí příkazu CMatrixS, resp. CMatrixN lze tuto matici zobrazit v symbolickém, resp. numerickém tvaru.

> CMatrixS(scobvod);

matrix([[C1, 0, -C1/(sqrt(z))], [0, C2, -C2/(sqrt(z...

Výpis proměnných - vektorů uzlových napětí a budících nábojů.

> Vectors(scobvod);

Dále také int_sc.mws.

Analýza obvodů se spínanými proudy

Elementární proudová paměťová buňka

[Maple Bitmap]

> Telem:=TEXT(`T element, resp. elementarní paměťová buňka`,

> `P 2`, #dvoufázově spínaný obvod

> `T1 1 1 1 gm`, #proudová buňka T<řetězec> <výst. uzel> <vst. uzel> <fáze> [<převodní vodivost>]

> `.end`):

> CMatrixN(Telem);

> Vectors(Telem);

matrix([[gm, 0], [gm/(sqrt(z)), 0]])

> TransferN(Telem,1,1,1,2,QQ,VQ);

-1/(sqrt(z))

Modifikovaná proudová paměťová buňka

[Maple Bitmap]

Při výstupu z uzlu 5 musíme uzel 2 zktatovat ve fázi 2. Při výstupu z uzlu 2 bychom museli uzel 5 zkratovat pro obě fáze - tj. bychom obvod redukovali na elementarní paměťovou buňku, analyzovanou v předchozím případě.

> SI_bunka:=TEXT(`SI paměťová buňka`,

> `P 2`,

> `T1 2 2 1 1`,

> `T2 5 2 1 alpha`,

> `Sp 2 0 2`,

> `.end`):

> CMatrixN(SI_bunka);

matrix([[1, 0, 0], [alpha, 0, 0], [alpha/(sqrt(z)),...

> TransferN(SI_bunka,2,5,1,1,QQ,QQ);

> TransferN(SI_bunka,2,5,1,2,QQ,QQ);

-alpha

-alpha/(sqrt(z))

Integrátor v technice SI

[Maple Bitmap]

> SI_int:=TEXT(`SI integrátor`,

> `P 2`,

> `T1 1 1 2 1`,

> `T2 1 1 1 1`,

> `T3 2 1 1 alpha`,

> `.end`):

> CMatrixN(SI_int);

matrix([[1, 0, 1/(sqrt(z)), 0], [alpha, 0, 0, 0], [...

> TransferN(SI_int,1,2,1,1,QQ,QQ);

-alpha*z/(z-1)

Ztrátový integrátor v technice SI (schéma je schodné jako v předchozím případě) - nyní uvažujeme nenulové výstupní vodivosti tranzistorů

Takto realizujeme výstupní vodivost: [Maple Bitmap]

> SIint_re:=TEXT(`ztrátový SI integrátor`,

> `P 2`, #dvoufázově spínaný obvod

> `T1 1 1 2 1`, #Proudová buňka T1

> `T2 1 1 1 1`, #Proudová buňka T2

> `T3 2 1 1 alpha`, #Proudová buňka T3

> `G12 1 0 1 0 2*G`, #Výstupní vodivost buněk T1 a T2

> `G3 2 0 2 0 G3`, #Výstupní vodivost buňky T3

> `.end`):

Admitanční matice obvodu

> CMatrixN(SIint_re);

matrix([[2*G+1, 0, 1/(sqrt(z)), 0], [alpha, G3, 0, ...

> Kss:=TransferN(SIint_re,1,2,1,1,QQ,QQ);

Kss := -alpha*(2*G+1)*z/(4*z*G^2+4*z*G+z-1)

> collect(%,z);

-alpha*(2*G+1)*z/((4*G^2+4*G+1)*z-1)

Zjednodušený bikvad v proudovém módu

[Maple Bitmap]

> obvod:=TEXT(`SI biquad`,

> `P 2`,

> `S12 1 2 1`,

> `T1 2 2 2 1`,

> `T2 2 2 1 1`,

> `T3 5 2 1 alpha3`,

> `S40 5 0 1`,

> #Pokud není tranzistor v některé fázi připojen, musí se připojit přes spínač na zem

> `S56 5 6 2`,

> `T4 6 6 2 1`,

> `T5 6 6 1 1`,

> `T6 9 6 1 1`,

> `T7 1 6 1 alpha2`,

> `T8 10 6 1 alpha4`,

> `S106 10 6 1`,

> `S100 10 0 2`,

> `.end`):

> TransferN(obvod,1,9,1,1,QV,QQ);

-z*alpha3/(alpha4*z^2+z^2-2*z-alpha4*z+1+alpha3*alp...

>