Indice |
Abstract
Implementazione del calcolo automatico di reti lineari su foglio Excel, a partire dalla descrizione dei rami della rete.
Introduzione
Visto un recente articolo sull'argomento, e vedendo che: usare una finestra DOS fa paura, ed usare Scilab è per alcuni troppo complesso, ho pensato di "portare" il codice di Circe , scritto molti anni fa in Applesoft-Basic, in Excel ovvero in VisualBasic.
A tal fine ho deciso di non utilizzare nessuna estensione, ne quella interna ad Excel via Add-Ins -> Analysis Toolpak VBA, ne altre reperibili in rete.
La versione di Excel usata è la datata 2003; spero solo sia compatibile con le più recenti.
Obiettivi
Gli obiettivi prefissati sono:
a) Introduzione della rete in forma ramo-descrittiva, ovvero attraverso i parametri E,Z,J.
b) Nessuna limitazione sul numero di rami
c) Introduzione dei parametri in formato complesso sia in forma cartesiana a+jb sia in forma polare rho/theta.
Metodo
Il metodo risolutivo è come al solito quello dei "potenziali ai nodi", già esposto nell'articolo Simulazione reti in Scilab, al quale si rimanda per approfondimenti; il codice dovrà prevedere:
- La lettura dei dati in ingresso a partire da stringhe di testo, scelta indispensabile per impedire ad Excel un'interpretazione errata di un ingresso del tipo jxx; verrà eseguita quindi un'analisi della stringa per ricercare al suo interno: il valore numerico iniziale e la posizione dei caratteri "j" o "/" per passare successivamente all'estrazione rispettivamente di parte immaginaria o argomento.
- Immagazzinare i dati ottenuti in due matrici, tenendo separate le componenti reali da quelle immaginarie su colonne adiacenti ed inserendo come incognite addizionali le correnti associate ai rami con soli generatori di tensione.
- Creare le matrici composite dei coefficienti e dei termini noti per la risoluzione "per via reale" del sistema lineare
- Risolvere attraverso il calcolo del prodotto fra matrice inversa e vettore dei termini noti.
- Elaborare e visualizzare i risultati ottenuti, al fine di fornire in uscita tutti i "parametri di lato" utili.
Sistema Complesso
Il calcolo di un sistema lineare n x n a coefficienti complessi in un ambiente senza supporto di calcolo complesso, può essere superato riconducendolo ad un sistema a coefficienti reali con semplici passaggi di calcolo matriciale; indicate con M la matrice complessa dei coefficienti, e con v e z rispettivamente il vettore complesso dei termini noti e delle incognite, possiamo scrivere
Potremo sintetizzare il problema come
e sviluppando avremo
ottenendo infine
riconducendoci al calcolo di un sistema lineare a coefficienti reali di doppia dimensione; 2n x 2n.
Nel caso di un elevato numero di equazioni sarebbe anche possibile ricondursi a due sistemi n x n, ma per i nosti "quattro rami" non ci sono problemi.
In Excel non dovremo a questo punto far altro che usare la funzione di inversione matriciale per calcolare la matrice inversa e determinale la soluzione con il seguente prodotto
semplicemente due sole righe di VBasic
K = fn.MInverse(H()) z = fn.MMult(K, v)
.
Circe 2010
Come primo semplice esempio usiamo la rete già risolta con Scilab in [1]
Usiamo le stesse convenzioni e dopo aver numerato in sequenza i nodi a partire da 1 procediamo all'inserzione dei parametri nel foglio di lavoro
nell'ordine da sinistra a destra
- a) ni = numero nodo iniziale
- b) nf = numero nodo finale
l'ordine di ingresso per nodo iniziale e finale sarà legato alla convenzione desiderata per il verso della corrente di ramo IR che sarà diretta da ni a nf
- c) E = f.e.m. del generatore di tensione, con verso positivo se diretto da ni a nf
- d) Z = impedenza ramo
- e) J = corrente erogate dal generatore di corrente, con verso positivo se diretto da ni a nf
come riassunto nello schema di figura, sia nella forma a+jb sia come mod/angolo°.
Ricordo che come separatore decimale sarà accettato sia il punto sia la virgola; unica condizione restrittiva è la posizione del segno della parte immaginaria, che dovrà precedere senza spazi il simbolo dell'unità immaginaria j.
L'elaborazione fornirà:
- a) le correnti di ramo, con convenzione di verso da ni a nf
- b) le tensioni di ramo con convenzione positivo su ni e negativo su nf
- c) potenze assorbite di ramo P, Q, S e f.d.p. relativo
ed infine le potenze parziali: generate dai generatori ed assorbite dalle impedenze,
i totali a fondo griglia potranno essere utili per un controllo dei risultati ottenuti attraverso Boucherot.
Esempio Trifase
Mettiamo ora sotto pressione lo script con qualcosa di più "pesante", ovvero usiamo una rete trifase con: un carico squilibrato a stella, un carico equilibrato a triangolo e impedenze di linea; il problema scelto, risolto per via matriciale tradizionale, è tratto da un file di esempio dell'università di Roma, download.
Lo schema circuitale è quello di figura
numerati arbitrariamente i nodi a partire da 1 e inseriti i parametri :
come evidenziato dalla cornice in figura, il risultato dell'elaborazione sarà
particolarizzando anche le potenze di ramo.
Ovviamente nuovi rami potranno essere inseriti a fine elaborazione; si potrà per esempio ricavare il circuito equivalente della rete, secondo Helmholtz-Thévenin o Mayer-Norton, fra due morsetti A e B, attraverso due elaborazioni: la prima a vuoto e la seconda in cortocircuito con l'inserzione di un ramo a parametri nulli.
Corpo dell'articolo assente
Conclusione
Il codice ---> Circe2010 (beta(2))<--- ha ancora una struttura a dir poco "primitiva" e sarà probabilmente "inguardabile" da un cultore di Visual Basic, mancano le verifiche di controllo sui dati di ingresso come anche la "gestione degli errori"; il target di utilizzatori al quale il foglio è diretto dovrebbe essere comunque in grado di gestire queste lacune e collaborare ad un miglioramento del codice con consigli e critiche costruttive.
A tale scopo si potrà fare riferimento alla sezione del Forum dedicata alla simulazione.