Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

21
voti

Circe 2010

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


\dot{M}=A+jB\ \ ,\ \ \dot{v}=r+js\ \ ,\ \ \dot{z}=x+jy


Potremo sintetizzare il problema come


\dot{M}\, \dot{z}=\dot{v}


e sviluppando avremo


\begin{align}
& (A+jB)(x+jy)=r+js \\ 
& Ax-By=r\,\,\,\,\,,\,\,\,\,\,\,Ay+Bx=s \\ 
\end{align}


ottenendo infine


\left( \begin{matrix}
   A & -B  \\
   B & A  \\
\end{matrix} \right)\cdot \left( \begin{matrix}
   x  \\
   y  \\
\end{matrix} \right)=\left( \begin{matrix}
   r  \\
   s  \\
\end{matrix} \right)


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


\left( \begin{matrix}
   x  \\
   y  \\
\end{matrix} \right)=\left( \begin{matrix}
   A & -B  \\
   B & A  \\
\end{matrix} \right)^{-1}\cdot \left( \begin{matrix}
   r  \\
   s  \\
\end{matrix} \right)


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

Esempio

Esempio


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

Convenzioni bipolo

Convenzioni bipolo

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.

Input dati rete

Input dati rete


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
Output

Output


ed infine le potenze parziali: generate dai generatori ed assorbite dalle impedenze,


Potenze parziali

Potenze parziali

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

Trifase squilibrato

Trifase squilibrato


numerati arbitrariamente i nodi a partire da 1 e inseriti i parametri :


\begin{align}
  & \bar{E}_{1}=230\,V\ \ ,\ \ \ \bar{E}_{2}=230\,e^{-j\frac{2\pi }{3}}\ \ ,\ \ \ \bar{E}_{3}=230\,e^{-j\frac{4\pi }{3}} \\ 
 & \dot{Z}_{1}=\left( 4+j\,2 \right)\,\,\Omega \ \ ,\ \ \dot{Z}_{2}=\left( 6+j\,6 \right)\,\,\Omega \ \ ,\ \ \dot{Z}_{2}=\left( 5-j\,3 \right)\,\,\Omega  \\ 
 & \dot{Z}_{L}=\left( 0,6+j\,0,5 \right)\,\,\Omega \ \ ,\ \ \dot{Z}_{N}=\left( 1,2+j\, \right)\,\,\Omega  \\ 
\end{align}


come evidenziato dalla cornice in figura, il risultato dell'elaborazione sarà

Inserimento e Output

Inserimento e Output

particolarizzando anche le potenze di ramo.

Output Potenze

Output Potenze

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.

Download Circe2010_b2 (27 kB)

2

Commenti e note

Inserisci un commento

di ,

Grazie Renzo! Cosi` riusciro` anch'io a risolvere qualche circuito :). Si possono aggiungere dei generatori pilotati, usando le conduttanze direzionali nella matrice?

Rispondi

di ,

Complimenti, molto carino il foglio di calcolo! All'inizio ho fatto un po di fatica a leggere i risultati tra le varie righe e colonne, ma i titoli a piè di colonna aiutano, ed è solo questione di abitudine penso. Un dubbio che mi è venuto, magari stupido, è sul controllo del numero di condizionamento della matrice; aiuterebbe magari averlo tra i risultati dell'elaborazione per capire la "bontà" dei nostri calcoli, visto che abbiamo la matrice e la sua inversa già pronte dalle macro. Ancora complimenti Renzo! Buon Lavoro

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.