Základy kreslenia#

Princíp vytvárania zapojení v CircuitMacros spočíva v zápise príkazov do štandardného textového súboru, ktorý po kompilácii vytvára prvky zapojenia na virtuálnej ploche. Súbor s príkazmi začína .PS a končí .PE. Príkazy a texty mimo tohto označenia sú ignorované.

Listing 2 : Prvý program#
.PS               # začiatok postupnosti príkazov
scale=2.54        # nastavenie parametru veľkosti obrázku
cct_init          # inicializácia knižnice s analogovými prvkami (rezistor, ...)

resistor;         # príkaz pre vykreslenie rezistoru

.PE               # koniec postupnosti príkazov

Najjednoduchším spôsobom kreslenia zapojení je použitie jednoduchého programu PyCirkuit, ktorý obsahuje editor diagramov, prehliadač generovaných obrázkov a umožnuje ich export do rôznych formátov. V ďaľších príkladoch budeme uvádzať len príkazy na kreslenie zapojenia bez spoločných príkazov pre formátovanie a nastavenie generovania obrázkov (.PS, .PE …).

_images/pck_01.png

Obr. 5 Editácia a preklad zapojenia v programe PyCirkuit#

Príkaz na riadku je ukončený bodkočiarkou ; alebo znakom ukončenia riadku (neviditeľný znak \n). Bodkočiarku využijeme aj vtedy, ak budeme do jedného riadku zadávať niekoľko príkazov. Po nakreslení zapojenia vygenerujeme obrázok tlačítkom Export vo vhodnom formáte, ktorý si zvolíme v konfigurácii programu.

_images/pck_02.png

Obr. 6 Konfigurácia formátu exportovaných obrázkov v programe PyCirkuit#

Ukladanie prvkov #

Každý prvok diagramu alebo schémy je vykreslený v diagrame na 2D pozícii, ktorá je uchovávaná vo virtuálnom kurzore označenom ako Here. Prvky v zapojení (resistor, capacitor) ukladáme za sebou v zadaných smeroch príkazmi up_, down_, right_ a left_ . Pri zmene smeru sa automaticky mení aj orientácia prvku. Pre zobrazenie bodu spojenia niekoľkých prvkov použijeme makro dot.

right_;
resistor;
resistor;
dot;
down_;
capacitor;
right_;
diode;
_images/cm_0014a.png

Obr. 7 Ukladanie prvkov zapojenia na základe ich poradia v programe.#

Po vykreslení prvku zapojenia sa hodnota kurzora Here posúva v smere ukladania tak, aby prvky zapojenia na seba nadväzovali. Polohu kurzoru môžeme presunúť na novú pozíciu (x,y) pomocou príkazu

move to (x,y);

alebo vykreslením prepojovacieho vodiča alebo čiary príkazom line. Kurzor Here sa po vykreslení presunie na koniec čiary

line to (x,y);                 # vykreslenie čiary z Here do (x,y) 
line right_ d;                 # čiara z Here zadaným smerom a dĺžkou
line from (x1,y1) to (x2,y2);  # čiara medzi dvoma bodmi

Referencie a atribúty #

Každý prvok v zapojení môžeme označiť pomocou textovej referencie ukončenej znakom :, táto musí byť zapísaná veľkými písmenani a nesmie začínať číslicou. Po vytvorení je referencia globálna, je ju možno použiť v ktorejkoľvek časti zapojenia

R1: resistor;       # referencia R1
r1: resistor;       # chyba
1R: resistor;       # chyba

K prvkom zapojenia a polohe ich častí môžeme pristupovať pomocou referencie a pomenovaných atribútov oddelených od seba bodkou .. Skupiny prvkov, napríklad dvojpóly (resistor …), majú spoločné atribúty a každý typ prvku môže mať naviac aj vlastné, špecifické atribúty. Napríklad, spoločné atribúty pre dvojpóly sú

.start    .s         - bod v ktorom bol začiatok kreslenia prvku
.end      .e         - bod v ktorom skončilo kreslenie prvku
.center   .c         - geometrický stred prvku

Atribút je ekvivalentom hodnotu súradnice označenej časti prvku. Nasledujúci príklad zobrazuje použitie referencií a atribútov v zapojení. Pomocná mriežka je vykreslená pre zobrazenie skutočných pozícií prvkov zapojenia

    move to (1,1);
R1: resistor;                 # referencia, R1.start = (1,1)
    move to (1,2)
C1: capacitor;                # referencia C1.start = (1,2)
    line from R1.start to C1.end; # spoj medzi bodmi zadanými referenciami a atribútmi
_images/cm_0014b.png

Obr. 8 Použitie referencií pri ukladaní prvkov zapojenia.#

Vlastnosti prvkov #

Makrá pre zobrazenie prvkov majú zvyčajne niekoľko parametrov, pomocou ktorých môžeme meniť a upravovať zobrazenie prvku v zapojení. Napríklad pre zobrazenie rezistoru má makro zo štandardnej knižnice CircuitMacros nasledujúci formát

resistor(linespec, n, chars, cycle wid)

linespec    - dĺžka rezistoru, môže byť aj so zadaním smeru
n           - počet cyklov v USA norme rezistoru
chars       - typ zobrazenia rezistoru (napr. E - europske zobrazenie)
cycle wid   - velkosť cyklov v USA norme

Súčasťou zapojenia elektronického obvodu je textový popis prvkov, ktorý zvyčajne pozostáva z označenie prvku, napríklad \(R_1\) a jeho hodnoty, napríklad \(100 \Omega\). Ukladanie popisov prvkov v komplikovanejších obvodoch pomocou jednoduchých textov by bolo značne náročné, naviac s rizikom nesprávneho označenia alebo pomiešania označenia, napríklad pri zmene hodnoty alebo úprave polohy prvkov. Pre zjednodušenie popisu (označenie, hodnota) posledného zobrazovaného prvku typu dvojpól môžeme preto použiť makrá, ktoré zväzujú texty s označením a s príslušným prvkom

llabel( slabel, xlabel, elabel )  - označenie po lavej strane v smere ukladania
rlabel( slabel, xlabel, elabel )  - označenie po pravej strane v smere ukladanie 

parametre:

    slabel       - označenie v bode začiatku prvku
    xlabel       - označenie v strede prvku
    elabel       - označenie v bode konca prvku

Použitie makier na označovanie prvkov garantuje presné a definované umiestnenie popisu voči prvku a rovnaké umiestnenie popisov pre všetky prvky v zapojení. Relatívna poloha popisu prvku sa nemení ani pri presunutí prvku do iného bodu zapojenia. Tieto vlastnosti značne uľahčujú kreslenie zapojení, pretože v zapojeniach elektronických obvodov je zvyčajne veľké množstvo textu a popisov prvkov. Nasledujúci príklad ukazuje zapojenie s označením prvkov a využitie referencie pre zadanie počiatočného bodu kreslenia prvku (R2). V označení prvkov zapojenia môžeme použiť syntax pre zápis matematických výrazov v LaTeX-e, napríklad R_1 = \(R_1\) (vyžaduje inštaláciu LaTeX-u)

    move to (0.5, 2.5);  
R1: resistor(2,,E); llabel(a,R_1,b); rlabel(,10k,);
D1: dot;
C1: capacitor(down_ 2,); rlabel(,C_1,); llabel(,10 \mu F,);
R2: resistor(from D1 right_ 2,,E); llabel(,R_2,); rlabel(,33k,);
_images/cm_0014c.png

Obr. 9 Označenie prvkov zapojenia.#

Kreslenie diagramov #

V CircuitMacros môžeme využívať príkazy jazyka dpic pre kreslenie diagramov pomocou 2D objektov ako je box, circle, ellippse, arc, ako aj lineárnych objektov line, arrow, spline a príkaz pre presun kurzora move. Pre kreslenie komplikovanejších diagramov (signálové grafy, vývojové diagramy) sú v CircuitMacros dostupné knižnice špecializovaných makier pre zvolený typ diagramu.

box wid 2 ht 1 "Box";
line -> right_ 1;
circle rad 0.5 "r=0.5";
line -> right_ 1;
ellipse wid 2 ht 1 "Ellipse";
_images/cm_0014d.png

Obr. 10 Jednoduchý diagram vykreslený pomocou príkazov dpic#