home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store
username
password
cerca
 
TUTORIAL SUI CIRCUITI LINEARI IN REGIME STAZIONARIO tipo: livello:
La pubblicazione di questo mio lavoro trae lo spunto dalla necessità di chiarire alcuni concetti di teoria dei circuiti elettrici che erano rimasti non spiegati negli articoli precedenti da me postati sullo stesso argomento.
 
 



Circuiti lineari in regime stazionario


La pubblicazione di questo mio lavoro trae lo spunto dalla necessità di chiarire alcuni concetti di teoria dei circuiti elettrici che erano rimasti non spiegati negli articoli precedenti da me postati sullo stesso argomento.

 

1.0 - Bipoli elettrici.

Nella esposizione seguente si presuppone da parte del lettore la conoscenza dei concetti fondamentali di corrente elettrica (I) e tensione elettrica (V) e delle relative unità di misura nel Sistema Internazionale (rispettivamente ampere e volt).

Dicesi elemento circuitale un qualunque dispositivo elettrico a due poli o morsetti (bipolo) del quale sia possibile determinare il comportamento elettrico esterno mediante misure simultanee di tensione e corrente ai morsetti. La rappresentazione grafica di tali coppie di valori in un sistema di assi ortogonali (V,I) oppure, alternativamente, la relazione esistente tra tali misure, rappresentabile mediante una formula matematica f(V,I)=0, dicesi caratteristica elettrica esterna tensione-corrente del bipolo.

                   

 

 

Se la curva che rappresenta la caratteristica esterna del dispositivo sul piano V - I è una retta passante per l’origine, ovvero se la funzione f(V,I)=0 è una  funzione lineare nelle variabili V ed I passante per l’origine degli assi (cioè del tipo aV+bI=0), allora il dispositivo si dirà bipolo elettrico lineare passivo (o inerte). Sono bipoli passivi ad esempio i resistori. In tutti gli altri casi, i bipoli, la cui caratteristica interseca gli assi in un punto qualsiasi, diverso dall’origine, si diranno bipoli attivi.

I generatori elettrici, ad esempio, sono bipoli attivi.

1.1 - Generatori ed utilizzatori elettrici.

Dei dispositivi lineari è possibile fornire una rappresentazione mediante modelli ideali di bipoli lineari di due tipi: i generatori e gli utilizzatori. Per gli scopi della nostra trattazione prenderemo in considerazione i seguenti tipi di bipoli ideali:

1)  generatore ideale di tensione costante, la cui caratteristica elettrica è esprimibile mediante la funzione V=V0, con il V0 valore costante; essa è rappresentata da una retta parallela all'asse delle I a distanza V0 dall'origine;

2) generatore di ideale di corrente costante, la cui caratteristica elettrica è esprimibile mediante la funzione I = I0 con I0 valore costante; essa è rappresentata da una retta parallela all'asse delle V a distanza I0 dall'origine

3) resistore ideale (utilizzatore), la cui caratteristica elettrica è esprimibile mediante la funzione V = RI con R parametro costante detto resistenza elettrica; essa è rappresentata da una retta passante per l'origine ed avente un coefficiente angolare  I/V = 1 / R

Esistono poi altri tipi di dispositivi importanti, i cosiddetti generatori pilotati di cui ci occuperemo più avanti.

2.0 - Circuiti elettrici.

I dispositivi elettrici sopra menzionati possono essere collegati fra di loro tramite i loro morsetti. Si ottiene così un circuito elettrico, di cui i bipoli sono detti lati del circuito e i punti di collegamento (morsetti) nodi del circuito.

Se almeno uno di tali dispositivi è un generatore (di tensione o di corrente costante), i lati del circuito saranno attraversati da correnti elettriche costanti e fra i nodi del circuito si misureranno tensioni elettriche costanti.

 

 

Risolvere il circuito elettrico vuol dire determinare, per ogni lato, i valori delle correnti e delle tensioni ai morsetti.

2.1 - Leggi di Kirchhoff.

Per risolvere un circuito elettrico, oltre alle caratteristiche esterne dei bipoli che lo compongono, occorre conoscere come tali bipoli siano collegati tra di loro, ossia la rappresentazione grafica (o grafo) del circuito. Tali collegamenti tra i bipoli comporteranno l'esistenza di relazioni tra le tensioni ai morsetti e tra le correnti di lato, che esprimono sostanzialmente le condizioni al contorno di ciascun bipolo, cioè come ciascun bipolo è interconnesso con gli altri.

Tali relazioni sono note come leggi di Kirchhoff delle tensioni (LKT) e delle correnti (LKC).

Legge di Kirchhoff delle tensioni (LKT): la somma algebrica delle tensioni misurate lungo i lati di una maglia chiusa di un circuito elettrico è nulla (irrotazionalità della tensione).

VDA+VAB+VBC+VCD=0

Legge di Kirchhoff delle correnti  (LKC): la somma algebrica di tutte le correnti che entrano ed escono da uno stesso nodo di un circuito elettrico è nulla (solenoidalità della corrente).

I1+I2-I3-I4=0

 

Tali leggi si traducono in relazioni lineari omogenee tra le tensioni o le correnti in cui gli unici coefficienti che moltiplicano i valori delle variabili sono i numeri +1, -1, 0.

In un circuito elettrico, costituito da l lati ed n nodi, si potranno scrivere n relazioni tra le correnti di lato ed un numero di relazioni fra le tensioni di lato pari al numero delle maglie, che si possono individuare nel circuito, numero che cresce rapidamente all'aumentare del numero di nodi e del numero di lati e che non è qui importante determinare.

Alcune di queste relazioni sono dipendenti dalle altre e cioè l'informazione che esse introducono è già contenuta nelle altre. Tali relazioni vanno quindi scartate perché inutili per la risoluzione del circuito. E' quindi indispensabile poter scrivere tutte e sole le relazioni indipendenti, che contengono le informazioni necessarie e sufficienti per poter pervenire alla risoluzione del circuito.

Una qualsiasi delle n relazioni che traducono la LKC  può essere scartata, in quanto dipendente dalle altre n-1. Se infatti proviamo a fare la somma termine a termine delle prime n -1 equazioni otteniamo sempre l'equazione relativa al nodo n: è quindi possibile scartare l'equazione relativa al nodo n.

Per quanto riguarda la LKT, per essere certi di scrivere tutte e solo le equazioni indipendenti è opportuno introdurre altre variabili oltre alle tensioni di lato e alle correnti di lato, e cioè i potenziali e di ciascun nodo, rispetto ad un nodo preso come un riferimento e quindi considerato a potenziale zero. Le tensioni di lato si esprimeranno allora come differenze tra i potenziali dei nodi a cui il lato fa capo rispetto al nodo di riferimento.

Infatti, considerando la maglia costituita dal nodo di riferimento e = 0 e dai nodi i e k, la LKT per questa maglia porta a scrivere l'equazione -ei+Vik+ek=0 e cioè  avendo convenuto di assumere per la tensione il verso, associato a quello della corrente nel lato, risultante dal considerare a potenziale più alto (+) il nodo nel quale entra la corrente. Si ha quindi

Vik=ei-ek

Così facendo sono state introdotte n-1 nuove variabili, i potenziali dei nodi indipendenti, ma è possibile scrivere l equazioni, tante quanti sono i lati del circuito. In definitiva abbiamo n-1 equazioni derivate dalla LKC, l equazioni derivate dalla LKT ed l equazioni che esprimono le caratteristiche elettriche dei lati: abbiamo in totale  n-1+2l  equazioni indipendenti, tante quante sono le incognite (n-1 potenziali, l tensioni di lato ed l correnti di lato).

3.0 - Equazioni di tableau.

Vediamo ora di esprimere in forma matriciale le equazioni lineari che abbiamo introdotto nel paragrafo precedente.

Fissato il verso della corrente (in modo del tutto arbitrario) in ciascun lato del circuito e detto i il vettore delle l correnti di lato, le l equazioni derivate dalla LKC si possono esprimere nella forma matriciale Ai = 0 dove nella matrice A (matrice di incidenza ridotta relativa agli n-1 nodi indipendenti) avente n - 1 righe ed l colonne compaiono soltanto i valori +1, - 1 e 0 e precisamente aik = 1 se il lato k esce dal nodo i, aik = -1 se il lato k entra nel nodo i, aik = 0 se il lato k non tocca il nodo i.

 

I1-I3=0

-I1+I2+I4=0

-I2-I5+I7=0

I3-I4+I5-I6=0

          

                    

 

Come si vede la matrice A descrive in sostanza il grafo del circuito: ogni riga rappresenta un nodo del grafo e ogni colonna un lato di esso. In ciascuna colonna compaiono sempre i coefficienti +1 nel nodo da cui il lato esce e -1 in quello dove entra; per quanto riguarda i lati collegati con il nodo di massa uno di questi due coefficienti è 0.

 

Scrivendo le equazioni derivate dalla LKT, dopo aver introdotto il vettore dei potenziali e, avente dimensione n – 1, e quello v delle tensioni di lato, avente dimensione l, e aver assunto per le tensioni il verso associato alle correnti di lato, come detto in precedenza, avremo la forma matriciale v = ATe essendo AT la matrice trasposta della matrice di incidenza ridotta (ossia la stessa matrice nella quale le righe sono scambiate con le colonne).

                      

 

 

 

Infine le caratteristiche elettriche possono essere rappresentate con la equazione Mv+Ni = b dove M è una matrice diagonale l x l in cui i termini della diagonale principale sono tali che mii = 1 se il lato i è un generatore di tensione o un resistore; mii = 0 se è un generatore di corrente; mik = 0 per i diverso da k; N è una matrice diagonale l x l in cui i termini della diagonale principale sono tali che nii = 1 se il lato i è un generatore di corrente, nii = -R  se il lato i è un resistore di resistenza R, nii = 0 se il lato i è un generatore di tensione, nik = 0 per i diverso da k. Il vettore b avente dimensione l ha i termini tutti nulli tranne per i lati che sono generatori di tensione o di corrente per i quali assumeranno rispettivamente i valori V0 o I0.

Facendo riferimento al circuito già visto, a 4 nodi e 7 lati, supponendo che il lato 1 sia un generatore di tensione V0 e il lato 7 un generatore di corrente I0 mentre i rimanenti lati siano resistori, avremo le seguenti equazioni caratteristiche:

       

 

 

 

Consideriamo ora il vettore w = (e,v,i)T ottenuto dalla sovrapposizione dei vettori e, v, i e la matrice T data dalla matrice di matrici

                               

 

detta anche matrice di tableau, dove 0 sono matrici nulle di opportune dimensioni ed I è una matrice identità di dimensioni l x l. Dato il vettore z = (0,0,b)T, vettore dei generatori indipendenti, il sistema di equazioni che risolvono il circuito elettrico in esame può essere scritto nella forma matriciale molto compatta Tw = z, ossia

 

Ai = 0                  ( per la LKC )

-ATe + Iv = 0      ( per la LKT )

Mv + Ni = b       ( per le caratteristiche di lato )

 

equivalente al sistema di equazioni lineari di partenza, dove 0 sono matrici nulle di opportune dimensioni ed I è una matrice identità di dimensioni l x l.

Per il circuito esaminato in precedenza le matrici T, w e z risultano quindi

 

 

       

 

 

Il metodo delle equazione di tableau per i circuiti resistivi lineari è estremamente generale e presenta notevoli vantaggi nella moderna analisi dei circuiti, che si avvale dell'uso del computer. Infatti la matrice di Tableau può essere ricavata in modo molto semplice da una ispezione del circuito ed essendo inoltre estremamente sparsa (molti termini sono infatti nulli), consente di pervenire alla soluzione del sistema con algoritmi molto efficienti. In appendice A è riportato il listato di un programma sorgente in Basic, che, dall'ispezione del grafo del circuito, calcola la matrice di tableau e risolve il sistema risultante.

4.0 – Circuiti contenenti generatori pilotati.

Per lo studio dei circuiti contenenti transistori è opportuno introdurre particolari bipoli lineari detti generatori pilotati.

Essi possono essere di quattro tipi differenti: generatori di tensione o di corrente pilotati dalla tensione o dalla corrente di un lato diverso da quello in cui sono inseriti. Le equazioni che esprimono la caratteristica esterna sono le seguenti:

1) GTPT: (generatore di tensione pilotato di tensione) vi = α vk, ovvero la tensione del generatore pilotato inserito nel lato i è α volte la tensione del lato k.

 

 

2) GTPC: (generatore di tensione pilotato di corrente) vi = r ik, ovvero la tensione del generatore pilotato inserito nel lato i è data dal prodotto del parametro resistenza r per la corrente del lato k.

 

 

3) GCPC: (generatore di corrente pilotato di corrente) ii = β ik ovvero una corrente del lato i è β volte la corrente del lato k.

 

 

4) GCPT: (generatore di corrente pilotato di tensione) ii = (1 / r) vk, ovvero la corrente del lato i è data dal prodotto del parametro conduttanza 1 / r per la tensione del lato k.

 

 

Per quanto detto sopra è semplice dedurre, per le matrici M e N, le seguenti relazioni:

a) se il lato i è un GTPT sarà mii = 1 e mik = - α;

b) se il lato i è un GTPC sarà mii = 1 e nik = -r;

c) se il lato i è un GCPC sarà nii = 1e nik = - β;

d) se il lato i è un GCPT sarà nii = 1 e mik = - 1 /r.

4.1 Esempio di risoluzione di un circuito resistivo lineare

Come esempio di applicazione dei concetti visti risolviamo il circuito seguente:

 

dove il lato 1 è costituito da un generatore di tensione costante V0 = 10 V, il lato 7 è un generatore di corrente pilotato dalla corrente del lato 1 (GCPC con b = 1) e i lati 2, 3, 4, 5, 6, hanno rispettivamente resistenze pari a 20 W, 30 W,40 W, 50 W, 60 W.

Utilizzando il programma dell’appendice A si ha il seguente risultato:

 

 

 

Quando il valore delle variabili e, v, i è negativo vuol dire che il verso effettivo di quella grandezza è opposto a quello indicato nello schema del circuito.

5.0 - Circuiti lineari in regime stazionario sinusoidale.

È noto che il regime sinusoidale dei circuiti lineari può essere studiato a partire dalle equazioni scritte per il regime in corrente continua a patto di sostituire la resistenza del lato con l'impedenza, che è una grandezza complessa formata da una parte reale e da una parte immaginaria, e utilizzare, quindi, per i calcoli, l'algebra dei numeri complessi.

I generatori indipendenti potranno essere rappresentati da una parte reale e da una parte immaginaria per tenere conto delle eventuali differenze di fase tra i diversi generatori inseriti nel circuito elettrico.

Il trasformatore elettrico ideale, dispositivo molto usato nei circuiti in corrente alternata sinusoidale, può essere rappresentato con due generatori pilotati: un GTPT inserito nel lato i che rappresenta il secondario del trasformatore e un GCPC inserito nel lato k che rappresenta il primario del trasformatore. Infatti le equazioni del trasformatore ideale nel funzionamento a carico sono le seguenti:

 V2=(n2/n1)*V1

I1=-(n2/n1)*I2

 

dove (n2/n1) rappresenta il rapporto spire del trasformatore.

 

In appendice B è riportato il listato di un programma sorgente in Basic che dà la soluzione di un circuito lineare in regime stazionario sinusoidale utilizzando il metodo delle equazioni di tableau, mentre in appendice C si ha lo stesso programma nel linguaggio Visual Basic.

Poiché il linguaggio Basic, a differenza del Fortran, non è in grado di effettuare operazioni con i numeri complessi, è stato necessario adottare l'algoritmo di calcolo qui di seguito illustrato.

In campo complesso il sistema matriciale Ax = b può essere rappresentato nel modo seguente: tenendo conto che una matrice i cui elementi sono numeri complessi può scomporsi nella somma di due matrici che hanno come elementi la parte reale e la parte immaginaria e cioè (aik+jbik) = (aik)+j(bik), si ottiene

 

[re(A)+j im(A)][(re(x)+j im(x)] = re(b)+j im(b)  

 

da cui svolgendo i calcoli si ottiene

 

re(A)re(x)-im(A)im(x)+j[im(A)re(x)+re(A)im(x)] = re(b)+j im(b)

 

e quindi, uguagliando la parte reale a primo membro con quella a secondo membro e analogamente per la parte immaginaria, si ottiene l’ equazione matriciale seguente:

 

che rappresenta un sistema lineare di dimensioni doppie rispetto a quello che si ha nel campo reale. Risolvendo tale sistema possiamo ricavare la parte reale e la parte immaginaria della variabile complessa x.

5.1 Esempio di risoluzione di un circuito in regime stazionario sinusoidale

Come esempio di applicazione dei concetti visti risolviamo il circuito seguente:

 

 

Utilizzando il programma riportato nell’appendice C otteniamo:

 

 

 

 

 

 

 

Appendice A

 

CLS : PRINT "     RISOLUZIONE DELLE EQUAZIONI DI TABLEAU PER I CIRCUITI RESISTIVI LINEARI"

PRINT : PRINT

PRINT "DAI IL NUMERO DEI NODI (n-1) ED IL NUMERO DEI LATI (l) DEL CIRCUITO: ";

INPUT "", n, l

DIM w(n + 2 * l, n + 2 * l + 1), z(n + 2 * l, n + 2 * l + 1), v(n + 2 * l): PRINT

PRINT "DAI IL NUMERO DEL NODO DI PARTENZA (0 per il nodo di massa), DI QUELLO DI ARRIVO"

PRINT "(0 per il nodo di massa), IL TIPO DI LATO (resistenza r, generatore di tensione gt, generatore di tensione pilotato di corrente gtpc etc...) ED IL VALORE": PRINT

FOR i = 1 TO l

100:

PRINT "LATO "; i;

INPUT ; n1, n2, t$, v

IF n1 > n OR n2 > n THEN PRINT "    NUMERO DI NODO ERRATO!!": GOTO 100

IF t$ = "gtpt" OR t$ = "GTPT" OR t$ = "gtpc" OR t$ = "GTPC" OR t$ = "gcpt" OR t$ = "GCPT" OR t$ = "gcpc" OR t$ = "GCPC" THEN PRINT TAB(30); "lato"; : INPUT ; lt: IF lt < 1 OR lt > l THEN PRINT "NUMERO DI LATO ERRATO": GOTO 100

w(n1, n + l + i) = 1: w(n2, n + l + i) = -1

w(n + i, n1) = -1:  w(n + i, n2) = 1

w(n + i, n + i) = 1

IF t$ = "r" OR t$ = "R" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + l + i) = -v: GOTO 50

IF t$ = "gt" OR t$ = "GT" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + 2 * l + 1) = v: GOTO 50

IF t$ = "gc" OR t$ = "GC" THEN w(n + l + i, n + l + i) = 1: w(n + l + i, n + 2 * l + 1) = v: GOTO 50

IF t$ = "gtpt" OR t$ = "GTPT" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + lt) = -v: GOTO 50

IF t$ = "gtpc" OR t$ = "GTPC" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + l + lt) = -v: GOTO 50

IF t$ = "gcpt" OR t$ = "GCPT" THEN w(n + l + i, n + l + i) = 1: w(n + l + i, n + lt) = -v: GOTO 50

IF t$ = "gcpc" OR t$ = "GCPC" THEN w(n + l + i, n + l + i) = 1: w(n + l + i, n + l + lt) = -v: GOTO 50

PRINT "    NON E' CHIARO DI CHE TIPO SIA IL LATO IN QUESTIONE!!": GOTO 100

50 :

PRINT: NEXT i

40:

FOR i = 0 TO n + 2 * l

FOR j = 0 TO n + 2 * l + 1

z(i, j) = w(i, j)

NEXT j

NEXT i

PRINT : PRINT

REM RISOLUZIONE DEL SISTEMA

FOR c = 1 TO n + 2 * l

MAX = 0

REM SCELTA DEL COEFF. MASSIMO

FOR d = 1 TO n + 2 * l

REM RIGA GIA'SFRUTTATA?

IF v(d) <> 0 THEN GOTO 10

FOR e = 1 TO n + 2 * l

IF w(d, e) = 0 THEN GOTO 20

IF ABS(w(d, e)) <= MAX THEN GOTO 20

MAX = ABS(w(d, e))

j = d: k = e

20:

NEXT e

10:

NEXT d

REM IDENTIFICATO MAX w(J,K) SI NORMA RIGA J

MAX = w(j, k): v(j) = 1

REM SI MARCA LA RIGA UTILIZZATA

FOR e = 1 TO n + 2 * l + 1

w(j, e) = w(j, e) / MAX

NEXT e

REM NORMALIZZATA RIGA SI AZZERA LA RESIDUA COLONNA

FOR d = 1 TO n + 2 * l

IF d = j OR w(d, k) = 0 THEN GOTO 30

M = w(d, k)

FOR e = 1 TO n + 2 * l + 1

w(d, e) = w(d, e) - M * w(j, e)

NEXT e

30:

NEXT d

NEXT c

FOR d = 1 TO n + 2 * l

FOR e = 1 TO n + 2 * l

IF w(d, e) = 1 THEN v(e) = w(d, n + 2 * l + 1)

NEXT e

NEXT d

PRINT "I VALORI DEI POTENZIALI NEI NODI SONO: "

FOR d = 1 TO n

PRINT "e"; d; "="; : PRINT USING "###.##"; v(d); : PRINT ,

NEXT d: PRINT : PRINT

PRINT "I VALORI DELLE TENSIONI E DELLE CORRENTI NEI LATI SONO: "

FOR d = n + 1 TO n + l

PRINT "v"; d - n; "="; : PRINT USING "###.##"; v(d); : PRINT ,

NEXT d: PRINT

FOR d = n + l + 1 TO n + 2 * l

PRINT "i"; d - n - l; "="; : PRINT USING "###.##"; v(d); : PRINT ,

NEXT d

PRINT : PRINT : INPUT "VUOI CAMBIARE LA CARATTERISTICA DI UN LATO "; a$

IF a$ = "n" OR a$ = "N" OR a$ = "no" OR a$ = "NO" THEN END

FOR i = 0 TO n + 2 * l

FOR j = 0 TO n + 2 * l + 1

w(i, j) = z(i, j)

NEXT j

v(i) = 0

NEXT i

300:

INPUT "QUALE LATO "; i

IF i < 1 OR i > l THEN PRINT "NUMERO DI LATO ERRATO!!": GOTO 300

FOR j = 0 TO n + 2 * l + 1: w(n + l + i, j) = 0: NEXT j

200:

PRINT "LATO "; i;

INPUT ; n1, n2, t$, v

IF n1 > n OR n2 > n THEN PRINT "    NUMERO DI NODO ERRATO!!": GOTO 200:

IF t$ = "gtpt" OR t$ = "GTPT" OR t$ = "gtpc" OR t$ = "GTPC" OR t$ = "gcpt" OR t$ = "GCPT" OR t$ = "gcpc" OR t$ = "GCPC" THEN PRINT TAB(30); "lato"; : INPUT lt

w(n1, n + l + i) = 1: w(n2, n + l + i) = -1

w(n + i, n1) = -1:  w(n + i, n2) = 1

IF t$ = "r" OR t$ = "R" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + l + i) = -v: GOTO 40

IF t$ = "gt" OR t$ = "GT" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + 2 * l + 1) = v: GOTO 40

IF t$ = "gc" OR t$ = "GC" THEN w(n + l + i, n + l + i) = 1: w(n + l + i, n + 2 * l + 1) = v: GOTO 40

IF t$ = "gtpt" OR t$ = "GTPT" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + lt) = -v: GOTO 40

IF t$ = "gtpc" OR t$ = "GTPC" THEN w(n + l + i, n + i) = 1: w(n + l + i, n + l + lt) = -v: GOTO 40

IF t$ = "gcpt" OR t$ = "GCPT" THEN w(n + l + i, n + l + i) = 1: w(n + l + i, n + lt) = -v: GOTO 40

IF t$ = "gcpc" OR t$ = "GCPC" THEN w(n + l + i, n + l + i) = 1: w(n + l + i, n + l + lt) = -v: GOTO 40

PRINT "    NON E' CHIARO DI CHE TIPO SIA IL LATO IN QUESTIONE!!": GOTO 20


 

Appendice B

 

 

CLS : PRINT "     RISOLUZIONE DELLE EQUAZIONI DI TABLEAU PER I CIRCUITI ELETTRICI LINEARI"

PRINT : PRINT : DEFDBL A-Z

PRINT "DAI IL NUMERO DEI NODI (n-1) ED IL NUMERO DEI LATI (l) DEL CIRCUITO: ";

INPUT "", n, l: s = n + 2 * l

DIM w(2 * s, 2 * s + 1), z(2 * s, 2 * s + 1), v(2 * s): PRINT

PRINT "DAI IL NUMERO DEL NODO DI PARTENZA (0 per il nodo di massa), DI QUELLO DI ARRIVO"

PRINT "(0 per il nodo di massa), IL TIPO DI LATO (impedenza z, generatore di tensione gt, generatore di tensione pilotato di corrente gtpc etc...) ED IL VALORE (parte reale e parte immaginaria)": PRINT

OPEN "Circuito.txt" FOR OUTPUT AS 1

FOR i = 1 TO l

100:

PRINT "LATO "; i; : PRINT #1, "LATO "; i;

INPUT ; n1, n2, t$, re, im:

IF t$ = "gtpt" OR t$ = "GTPT" OR t$ = "gtpc" OR t$ = "GTPC" OR t$ = "gcpt" OR t$ = "GCPT" OR t$ = "gcpc" OR t$ = "GCPC" THEN

PRINT #1, n1, n2, t$, re, im, "lato ";

ELSE

PRINT #1, n1, n2, t$, re, im

END IF

IF n1 > n OR n2 > n THEN PRINT "    NUMERO DI NODO ERRATO!!": GOTO 100

IF t$ = "gtpt" OR t$ = "GTPT" OR t$ = "gtpc" OR t$ = "GTPC" OR t$ = "gcpt" OR t$ = "GCPT" OR t$ = "gcpc" OR t$ = "GCPC" THEN

PRINT TAB(30); "lato"; : INPUT ; lt: IF lt = i OR lt < 1 OR lt > l THEN PRINT "NUMERO DI LATO ERRATO": GOTO 100

PRINT #1, lt

END IF

w(n1, n + l + i) = 1: w(n2, n + l + i) = -1

w(n + i, n1) = -1:  w(n + i, n2) = 1

w(n + i, n + i) = 1

FOR j = 1 TO s

FOR k = 1 TO s

w(j + s, k + s) = w(j, k): NEXT: NEXT

IF t$ = "z" OR t$ = "Z" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + l + i) = -re: w(s + n + l + i, s + n + l + i) = -re

w(s + n + l + i, n + l + i) = -im: w(n + l + i, s + n + l + i) = im

GOTO 50

END IF

 

IF t$ = "gt" OR t$ = "GT" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, 2 * s + 1) = re: w(s + n + l + i, 2 * s + 1) = im

GOTO 50

END IF

 

IF t$ = "gc" OR t$ = "GC" THEN

w(n + l + i, n + l + i) = 1: w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, 2 * s + 1) = re: w(s + nn + l + i, 2 * s + 1) = im

GOTO 50

END IF

 

IF t$ = "gtpt" OR t$ = "GTPT" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + lt) = -re: w(s + n + l + i, s + n + lt) = -re

w(s + n + l + i, n + lt) = -im: w(n + l + i, s + n + lt) = im

GOTO 50

END IF

 

IF t$ = "gtpc" OR t$ = "GTPC" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + l + lt) = -re:  w(s + n + l + i, s + n + l + lt) = -re

w(s + n + l + i, n + l + lt) = -im: w(n + l + i, s + n + l + lt) = im

GOTO 50

END IF

 

IF t$ = "gcpt" OR t$ = "GCPT" THEN

w(n + l + i, n + l + i) = 1: w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, n + lt) = -re: w(s + n + l + i, s + n + lt) = -re

w(s + n + l + i, n + lt) = -im: w(n + l + i, s + n + lt) = im

GOTO 50

END IF

 

IF t$ = "gcpc" OR t$ = "GCPC" THEN

w(n + l + i, n + l + i) = 1: w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, n + l + lt) = -re: w(s + n + l + i, s + n + l + lt) = -re

w(s + n + l + i, n + l + lt) = -im: w(n + l + i, s + n + l + lt) = im

GOTO 50

END IF

 

PRINT "    NON E' CHIARO DI CHE TIPO SIA IL LATO IN QUESTIONE!!": GOTO 100

50 :

PRINT

NEXT i

40:

FOR i = 0 TO 2 * s

FOR j = 0 TO 2 * s + 1

z(i, j) = w(i, j)

NEXT j

NEXT i

PRINT : PRINT

REM RISOLUZIONE DEL SISTEMA

FOR c = 1 TO 2 * s

MAX = 0

REM SCELTA DEL COEFF. MASSIMO

FOR d = 1 TO 2 * s

REM RIGA GIA'SFRUTTATA?

IF v(d) <> 0 THEN GOTO 10

FOR e = 1 TO 2 * s

IF w(d, e) = 0 THEN GOTO 20

IF ABS(w(d, e)) <= MAX THEN GOTO 20

MAX = ABS(w(d, e))

j = d: k = e

20:

NEXT e

10:

NEXT d

REM IDENTIFICATO MAX w(J,K) SI NORMA RIGA J

MAX = w(j, k): v(j) = 1

REM SI MARCA LA RIGA UTILIZZATA

FOR e = 1 TO 2 * s + 1

w(j, e) = w(j, e) / MAX

NEXT e

REM NORMALIZZATA RIGA SI AZZERA LA RESIDUA COLONNA

FOR d = 1 TO 2 * s

IF d = j OR w(d, k) = 0 THEN GOTO 30

M = w(d, k)

FOR e = 1 TO 2 * s + 1

w(d, e) = w(d, e) - M * w(j, e)

NEXT e

30:

NEXT d

NEXT c

FOR d = 1 TO 2 * s

FOR e = 1 TO 2 * s

IF w(d, e) = 1 THEN v(e) = w(d, 2 * s + 1)

NEXT e

NEXT d

PRINT "I VALORI DEI POTENZIALI NEI NODI SONO: "

FOR d = 1 TO n

PRINT "e"; d; "="; : PRINT #1, "e"; d; "=";

PRINT USING "###.###"; v(d); : PRINT " "; : PRINT #1, v(d), v(d + s)

PRINT USING "###.###"; v(d + s); : PRINT "  "; :

NEXT d: PRINT

PRINT "I VALORI DELLE TENSIONI E DELLE CORRENTI NEI LATI SONO: "

FOR d = n + 1 TO n + l

PRINT "v"; d - n; "="; : PRINT #1, "v"; d - n; "=";

PRINT USING "###.###"; v(d); : PRINT " "; : PRINT #1, v(d), v(d + s)

PRINT USING "###.###"; v(d + s); : PRINT "  "; :

NEXT d: PRINT

FOR d = n + l + 1 TO s

PRINT "i"; d - n - l; "="; : PRINT #1, "i"; d - n - l; "=";

PRINT USING "###.###"; v(d); : PRINT " "; : PRINT #1, v(d), v(d + s)

PRINT USING "###.###"; v(d + s); : PRINT "  "; :

NEXT d

CLOSE

PRINT : PRINT : INPUT "VUOI CAMBIARE LA CARATTERISTICA DI UN LATO "; a$

IF a$ = "n" OR a$ = "N" OR a$ = "no" OR a$ = "NO" THEN END

FOR i = 0 TO 2 * s

FOR j = 0 TO 2 * s + 1

w(i, j) = z(i, j)

NEXT j

v(i) = 0

NEXT i

300:

INPUT "QUALE LATO "; i

IF i < 1 OR i > l THEN PRINT "NUMERO DI LATO ERRATO!!": GOTO 300

FOR j = 0 TO 2 * s + 1: w(n + l + i, j) = 0: w(n + l + i + s, j) = 0: NEXT j

200:

PRINT "LATO "; i;

INPUT ; n1, n2, t$, re, im

IF n1 > n OR n2 > n THEN PRINT "    NUMERO DI NODO ERRATO!!": GOTO 200

 

IF t$ = "gtpt" OR t$ = "GTPT" OR t$ = "gtpc" OR t$ = "GTPC" OR t$ = "gcpt" OR t$ = "GCPT" OR t$ = "gcpc" OR t$ = "GCPC" THEN PRINT TAB(30); "lato"; : INPUT ; lt: IF lt = i OR lt < 1 OR lt > l THEN PRINT "NUMERO DI LATO ERRATO": GOTO 200

 

w(n1, n + l + i) = 1: w(n2, n + l + i) = -1

w(n + i, n1) = -1:  w(n + i, n2) = 1

w(n + i, n + i) = 1

 

FOR j = 1 TO s

FOR k = 1 TO s

w(j + s, k + s) = w(j, k): NEXT: NEXT

 

IF t$ = "z" OR t$ = "Z" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + l + i) = -re: w(s + n + l + i, s + n + l + i) = -re

w(s + n + l + i, n + l + i) = -im: w(n + l + i, s + n + l + i) = im

GOTO 40

END IF

 

IF t$ = "gt" OR t$ = "GT" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, 2 * s + 1) = re: w(s + n + l + i, 2 * s + 1) = im

GOTO 40

END IF

 

IF t$ = "gc" OR t$ = "GC" THEN

w(n + l + i, n + l + i) = 1: w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, 2 * s + 1) = re: w(s + nn + l + i, 2 * s + 1) = im

GOTO 40

END IF

 

IF t$ = "gtpt" OR t$ = "GTPT" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + lt) = -re: w(s + n + l + i, s + n + lt) = -re

w(s + n + l + i, n + lt) = -im: w(n + l + i, s + n + lt) = im

GOTO 40

END IF

 

IF t$ = "gtpc" OR t$ = "GTPC" THEN

w(n + l + i, n + i) = 1: w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + l + lt) = -re:  w(s + n + l + i, s + n + l + lt) = -re

w(s + n + l + i, n + l + lt) = -im: w(n + l + i, s + n + l + lt) = im

GOTO 40

END IF

 

IF t$ = "gcpt" OR t$ = "GCPT" THEN

w(n + l + i, n + l + i) = 1: w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, n + lt) = -re: w(s + n + l + i, s + n + lt) = -re

w(s + n + l + i, n + lt) = -im: w(n + l + i, s + n + lt) = im

GOTO 40

END IF

 

IF t$ = "gcpc" OR t$ = "GCPC" THEN

w(n + l + i, n + l + i) = 1: w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, n + l + lt) = -re: w(s + n + l + i, s + n + l + lt) = -re

w(s + n + l + i, n + l + lt) = -im: w(n + l + i, s + n + l + lt) = im

GOTO 40

END IF

 

PRINT "    NON E' CHIARO DI CHE TIPO SIA IL LATO IN QUESTIONE!!": GOTO 200

 


Appendice C

 

Listato del form Avvio.frm

 

'$INCLUDE: 'GLOBAL.BI'

 

SUB Form_Load ()

Print :  Print

Print "           RISOLUZIONE DEI CIRCUITI LINEARI IN REGIME STAZIONARIO"

Print :  Print

Print "  Dai il numero dei nodi (n-1) ed il numero dei lati (l) del circuito."

Print "  Per spostarsi utilizzare il tasto TAB."

End Sub

 

SUB Command1_Click ()

s = n + 2 * l

End Sub

 

SUB txtLati_KeyPress (KeyAscii As Integer)

If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

End Sub

 

SUB txtNodi_KeyPress (KeyAscii As Integer)

If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

End Sub

 

SUB txtLati_LostFocus ()

l = Val(txtLati.Text)

cmdOK.SetFocus

End Sub

 

SUB txtNodi_LostFocus ()

n = Val(txtNodi.Text)

txtLati.SetFocus

End Sub

 

SUB cmdSalva_Click ()

nomefile$ = InputBox$("Nome del file", "Salvataggio file di uscita", "out.txt")

If nomefile$ = "" Then nomefile$ = "file.txt"

Open nomefile$ For Output As 1

Print #1, "RISOLUZIONE DEI CIRCUITI LINEARI IN REGIME STAZIONARIO"

Print #1,

Print #1, "DESCRIZIONE DEL CIRCUITO"

Print #1, "n°lato", "Nodo part.", "Nodoarr.", "Tipo lato", "Val.reale", "Val.immag."

form4.Print "RISOLUZIONE DEI CIRCUITI LINEARI IN REGIME STAZIONARIO"

form4.Print

form4.Print "DESCRIZIONE DEL CIRCUITO"

form4.Print "n°lato", "Nodo part.", "Nodo arr.", "Tipo lato", "Val.reale", "Val.immag."

form1.Hide

form2.Show

End Sub

 

SUB cmdOK_Click ()

s = n + 2 * l

cmdSalva.SetFocus

End Sub

 

 

 

 

Listato del form Calc.frm

 

'$INCLUDE: 'GLOBAL.BI'

 

SUB Form_Load ()

form4.windowstate = 2

End Sub

 

SUB cmdCalc_Click ()

Rem RISOLUZIONE DEL SISTEMA

For c = 1 To 2 * s

MAX = 0

Rem SCELTA DEL COEFF. MASSIMO

For d = 1 To 2 * s

Rem RIGA GIA'SFRUTTATA?

If v(d) <> 0 Then GoTo 10

For e = 1 To 2 * s

If w(d, e) = 0 Then GoTo 20

If Abs(w(d, e)) <= MAX Then GoTo 20

MAX = Abs(w(d, e))

j = d:  k = e

20:

Next e

10:

Next d

Rem IDENTIFICATO MAX w(J,K) SI NORMA RIGA J

MAX = w(j, k):  v(j) = 1

Rem SI MARCA LA RIGA UTILIZZATA

For e = 1 To 2 * s + 1

w(j, e) = w(j, e) / MAX

Next e

Rem NORMALIZZATA RIGA SI AZZERA LA RESIDUA COLONNA

For d = 1 To 2 * s

If d = j Or w(d, k) = 0 Then GoTo 30

M = w(d, k)

For e = 1 To 2 * s + 1

w(d, e) = w(d, e) - M * w(j, e)

Next e

30:

Next d

Next c

For d = 1 To 2 * s

For e = 1 To 2 * s

If w(d, e) = 1 Then v(e) = w(d, 2 * s + 1)

Next e

Next d

form4.Print

form4.Print "I VALORI DEI POTENZIALI NEI NODI SONO: "

Print #1,

Print #1, "I VALORI DEI POTENZIALI NEI NODI SONO: "

For d = 1 To n

form4.Print "e"; Format$(d); " = "; "("; Format$(v(d), "#,##0.000"); ";";

form4.Print Format$(v(d + s), "#,##0.000"); ")"

Print #1, "e"; Format$(d); " = "; "("; Format$(v(d), "#,##0.000"); ";";

Print #1, Format$(v(d + s), "#,##0.000"); ")"

Next d

form4.Print

form4.Print "I VALORI DELLE TENSIONI E DELLE CORRENTI NEI LATI SONO: "

Print #1,

Print #1, "I VALORI DELLE TENSIONI E DELLE CORRENTI NEI LATI SONO: "

For d = n + 1 To n + l

form4.Print "v"; Format$(d - n); " = "; "("; Format$(v(d), "#,##0.000"); ";";

form4.Print Format$(v(d + s), "#,##0.000"); ")"; Tab(30); "i"; Format$(d - n); " = ";

form4.Print "("; Format$(v(d + l), "#,##0.000"); ";"; Format$(v(d + s + l), "#,##0.000"); ")"

Print #1, "v"; Format$(d - n); " = "; "("; Format$(v(d), "#,##0.000"); ";";

Print #1, Format$(v(d + s), "#,##0.000"); ")"; Tab(30); "i"; Format$(d - n); " = ";

Print #1, "("; Format$(v(d + l), "#,##0.000"); ";"; Format$(v(d + s + l), "#,##0.000"); ")"

Next d

cmdFine.SetFocus

End Sub

 

SUB cmdFine_Click ()

If nomefile$ = "file.txt" Then

Close 1

Kill "file.txt"

End If

End

End Sub

 

 

Listato del form Dati.frm

 

'$INCLUDE: 'GLOBAL.BI'

 

SUB Form_Load ()

msg$ = "Dai il numero del nodo di partenza, di quello di arrivo, "

msg$ = msg$ + "utilizzando lo 0 per il nodo di massa, "

msg$ = msg$ + "il tipo di lato (resistenza R, generatore di tensione gt "

msg$ = msg$ + "generatore di tensione pilotato di corrente gtpc ecc.), "

msg$ = msg$ + "ed il valore come parte reale e parte immaginaria, "

msg$ = msg$ + "oppure i valori di R, L, C."

msg$ = msg$ + " Per spostarsi utilizzare il tasto TAB."

MsgBox (msg$)

i = 1

etiNum.Caption = Str$(i)

combo1.AddItem ""

combo1.AddItem "gt"

combo1.AddItem "gc"

combo1.AddItem "gtpt"

combo1.AddItem "gtpc"

combo1.AddItem "gcpt"

combo1.AddItem "gcpc"

combo1.AddItem "R"

combo1.AddItem "L"

combo1.AddItem "C"

combo1.AddItem "RL"

combo1.AddItem "RC"

End Sub

 

SUB cmdOK_Click ()

re = Val(txtReale.text)

im = Val(txtImmag.text)

w(n1, n + l + i) = 1:  w(n2, n + l + i) = -1

w(n + i, n1) = -1:   w(n + i, n2) = 1

w(n + i, n + i) = 1

For j = 1 To s

For k = 1 To s

w(j + s, k + s) = w(j, k)

Next k

Next j

 

If t$ = "R" Or t$ = "L" Or t$ = "C" Or t$ = "RL" Or t$ = "RC" Then

w(n + l + i, n + i) = 1:  w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + l + i) = -re:  w(s + n + l + i, s + n + l + i) = -re

w(s + n + l + i, n + l + i) = -im:  w(n + l + i, s + n + l + i) = im

End If

 

If t$ = "gt" Then

w(n + l + i, n + i) = 1:  w(s + n + l + i, s + n + i) = 1

w(n + l + i, 2 * s + 1) = re:  w(s + n + l + i, 2 * s + 1) = im

End If

 

If t$ = "gc" Then

w(n + l + i, n + l + i) = 1:  w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, 2 * s + 1) = re:  w(s + nn + l + i, 2 * s + 1) = im

End If

 

If t$ = "gtpt" Then

w(n + l + i, n + i) = 1:  w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + lt) = -re:  w(s + n + l + i, s + n + lt) = -re

w(s + n + l + i, n + lt) = -im:  w(n + l + i, s + n + lt) = im

End If

 

If t$ = "gtpc" Then

w(n + l + i, n + i) = 1:  w(s + n + l + i, s + n + i) = 1

w(n + l + i, n + l + lt) = -re:   w(s + n + l + i, s + n + l + lt) = -re

w(s + n + l + i, n + l + lt) = -im:  w(n + l + i, s + n + l + lt) = im

End If

 

If t$ = "gcpt" Then

w(n + l + i, n + l + i) = 1:  w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, n + lt) = -re:  w(s + n + l + i, s + n + lt) = -re

w(s + n + l + i, n + lt) = -im:  w(n + l + i, s + n + lt) = im

End If

 

If t$ = "gcpc" Then

w(n + l + i, n + l + i) = 1:  w(s + n + l + i, s + n + l + i) = 1

w(n + l + i, n + l + lt) = -re:  w(s + n + l + i, s + n + l + lt) = -re

w(s + n + l + i, n + l + lt) = -im:  w(n + l + i, s + n + l + lt) = im

End If

form4.Print Format$(i), Format$(n1), Format$(n2), t$;

Print #1, Format$(i), Format$(n1), Format$(n2), t$;

If t$ = "gtpt" Or t$ = "gtpc" Or t$ = "gcpt" Or t$ = "gcpc" Then

form4.Print "("; Format$(lt); ")";

Print #1, "("; Format$(lt); ")";

End If

form4.Print , Format$(re), Format$(im, "#,##0.000")

Print #1, , Format$(re), Format$(im, "#,##0.000")

etiNum.Caption = ""

txtPart.text = ""

txtArr.text = ""

combo1.listindex = 0

txtReale.text = ""

txtImmag.text = ""

txtNlato.text = ""

txtValR.text = ""

txtValL.text = ""

txtValC.text = ""

txtPart.SetFocus

If i = l Then

Form2.Hide

form4.Show

form4.cmdCalc.SetFocus

Else

i = i + 1

etiNum.Caption = Str$(i)

End If

End Sub

 

SUB txtPart_LostFocus ()

n1 = Val(txtPart.text)

If n1 < 0 Or n1 > n Then

txtPart.text = ""

Beep

txtPart.SetFocus

End If

End Sub

 

SUB txtTipo_LostFocus ()

End Sub

 

SUB txtArr_LostFocus ()

n2 = Val(txtArr.text)

If n2 < 0 Or n2 > n Or n2 = n1 Then

txtArr.text = ""

Beep

txtArr.SetFocus

End If

End Sub

 

SUB txtNlato_LostFocus ()

lt = Val(txtNlato.text)

If lt < 0 Or lt > l Or lt = i Then

txtNlato.text = ""

txtNlato.SetFocus

Beep

Else

txtReale.SetFocus

End If

End Sub

 

SUB txtReale_LostFocus ()

re = Val(txtReale.text)

End Sub

 

SUB txtImmag_LostFocus ()

im = Val(txtImmag.text)

cmdOK.SetFocus

End Sub

 

SUB Combo1_Click ()

t$ = combo1.text

If t$ = "gt" Or t$ = "gc" Then txtReale.SetFocus

If t$ = "gtpt" Or t$ = "gtpc" Or t$ = "gcpt" Or t$ = "gcpc" Then

txtNlato.SetFocus

End If

If t$ = "R" Or t$ = "RL" Or t$ = "RC" Then

txtValR.SetFocus

End If

If t$ = "L" Then

txtValL.SetFocus

End If

If t$ = "C" Then

txtValC.SetFocus

End If

End Sub

 

SUB txtReale_KeyPress (KeyAscii As Integer)

If KeyAscii < 45 Or KeyAscii > 58 Then KeyAscii = 0

End Sub

 

SUB txtImmag_KeyPress (KeyAscii As Integer)

If KeyAscii < 45 Or KeyAscii > 58 Then KeyAscii = 0

End Sub

 

SUB txtPart_KeyPress (KeyAscii As Integer)

If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

End Sub

 

SUB txtArr_KeyPress (KeyAscii As Integer)

If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

End Sub

 

SUB txtNlato_KeyPress (KeyAscii As Integer)

If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

End Sub

 

SUB txtValR_KeyPress (KeyAscii As Integer)

If KeyAscii < 46 Or KeyAscii > 58 Then KeyAscii = 0

End Sub

 

SUB txtValR_LostFocus ()

txtReale.text = txtValR.text

txtImmag.text = "0"

If t$ = "RL" Then txtValL.SetFocus

If t$ = "RC" Then txtValC.SetFocus

If t$ = "R" Then cmdOK.SetFocus

End Sub

 

SUB txtValL_KeyPress (KeyAscii As Integer)

If KeyAscii < 46 Or KeyAscii > 58 Then KeyAscii = 0

End Sub

 

SUB txtValL_LostFocus ()

txtImmag.text = Str$(Val(txtValL.text) * 314 * .001!)

If t$ = "L" Then

txtReale.text = "0"

cmdOK.SetFocus

End If

If t$ = "RL" Then cmdOK.SetFocus

End Sub

 

SUB txtValC_KeyPress (KeyAscii As Integer)

If KeyAscii < 46 Or KeyAscii > 58 Then KeyAscii = 0

End Sub

 

SUB txtValC_LostFocus ()

If Val(txtValC.text) = 0 Then

cmdOK.SetFocus

Else

txtImmag.text = Str$(-1000000! / 314 / Val(txtValC.text))

End If

If t$ = "C" Then txtReale.text = "0"

cmdOK.SetFocus

End Sub

 

 

 

 

 




  il parere della community
esprimi il tuo voto approvi questa pagina? promo


  non sei autenticato, per questo non puoi visualizzare i commenti sulla pagina. Se sei registrato accedi oppure registrati.


difficoltà
costo
informazioni
Questa pagina è stata creata da zx81
il 24/07/2012 ore 10:03
ultima modifica del 24/07/2012 ore 11:14
la pagina è stata visitata 1137 volte




Lo staff di www.grix.it non si assume responsabilità sul contenuto di questa pagina.
Se tu sei l'autore originale degli schemi o progetti proposti in questo articolo, e ritieni che siano stati violati i tuoi diritti, contatta lo staff di www.grix.it per segnalarlo.

   
 






 
 
indietro | homepage | torna su copyright © 2004/2013 GRIX.IT - la community dell'elettronica amatoriale