Vai al contenuto
PLC Forum


Binario Elettrificato, Correnti Nei Conduttori


darius77

Messaggi consigliati

Sapreste indicarmi come creare un filtro su ingressi o uscite analogiche per avere il segnale il + possibile stabile?

Oppure se siemens a gia dei blocchi che fanno questa funzione?

grazie

ciao darius

Link al commento
Condividi su altri siti


Ciao,

dipende dal tipo di segnale che hai.

Puoi fare una media matematica, per es fai x letture e ogni volta le sommi in un buffer poi raggiunto il nr lo dividi. E' semplice come codice, ma ha lo svantaggio che hai il valore aggiornato dopo x campionamenti.

Io spesso uso un filtro, non so come si chiama, ma con ingresso a gradino, restituisce un andamento come la tensione di carica di un condensatore.

E' molto efficace per variabili che hanno picchi brevi, ed hai un valore aggiornato ad ogni ciclo. (lo uso sempre per le pressioni..) ed il codice è veramente semplicissimo:

qui c'è il calcolo del fattore+1 perchè l'ho messo impostabile. Se lo fai fisso sostituisci le word con delle costanti.

qui è in formato REAL, ma lo puoi fare anche in INT

La formula utilizzata è

Formula filtro:

Out= (K*out_Prec + In)/K+1

dove K è il fattore di filtro

// fatore di filtro
// fattore 0  = nessun filtro
// fattore 0,5= raggiunge il 98% dopo 4   cicli
// fattore 1  = raggiunge il 98% dopo 6   cicli
// fattore 50 = raggiunge il 98% dopo 200 cicli

// calcolo smooth+1
      L     DB40.DBD   32           // fattore di filtro
      L     1.000000e+000
      +R    
      T     DB40.DBD   36          // fattore +1

// filtro
      L     DB40.DBD   32               // fattore di filtro
      L     DB40.DBD   20               // La tua uscita
      *R    
      L     #Readout                      // Il tuo ingresso
      +R    
      L     DB40.DBD   36               // fattore+1
      /R    
      T     DB40.DBD   20               // La tua uscita

Link al commento
Condividi su altri siti

Livio Orsini

C'è un sistema semplice, che ha un ritardo solo iniziale, è conosciuto come media scorrevole o anche "slide window" (finestra scorrevole). Prepari un vettore (array) di "n" elementi (10 p.e.) lo riempi. Quando il vettore è pieno ricominci da capo. Cerco di chiarire meglio esemplificando. Assumiamo che n = 10, quindi sarà X[9]. Inizi scrivendomil valore in X[0], poi continui con scrivendo in X[1] econtinui così sino a scrivere in X[9]. A questo punto l'array è pieno sommi e dividi per n e ottieni la media. La prossima scrittura la fai in X[0]. Hia creato una coda circolare perchè il tuo array è sempre pieno, ma aggiornato con gli ultimi 10 valori, quindi puoi continuare ad estrarre la tua media dopo il ritardo iniziale.

Un ingresso a gradino viene visto come una rampa di "n" passi.

Link al commento
Condividi su altri siti

qui c'è il calcolo del fattore+1 perchè l'ho messo impostabile. Se lo fai fisso sostituisci le word con delle costanti.

qui è in formato REAL, ma lo puoi fare anche in INT

La formula utilizzata è
Formula filtro:
Out= (K*out_Prec + In)/K+1
dove K è il fattore di filtro

ok, ma il fattore+1 da dove lo prendi? e come fai a determinare il conteggio di cicli di plc tramite un fattore?

E' interessante xche' devo gestire delle pressioni da pompe variabili , e mi sarebbe molto utile.

ciao e grazie

Link al commento
Condividi su altri siti

ok, ma il fattore+1 da dove lo prendi?

il fattore nel mio caso è impostato da un pannello, che so 1,2... 50 quello che vuoi. Fattore+1 è semplicemente calcolato, appunto come "fattore" e poi gli sommo 1.

e come fai a determinare il conteggio di cicli di plc tramite un fattore?

Non so se c'è un calcolo, io l'ho sperimentato inserendo la formuletta in un foglio excel e poi ho provato con differenti fattori. Ti ho indicato alcuni valori come traccia, poi tu scegli il valore che meglio fa al caso tuo. Se devi solo visualizzare, e non hai problemi di tempo, puoi mettere 50-70 così hai una bella lettura stabile. Se devi fare regolazioni, prova 1-10.

Link al commento
Condividi su altri siti

Ok ti faccio un esempio pratico:

dato Out= (K*out_Prec + In)/K+1

diciamo inizialmente la lettura vale 0, ho in uscita 0.

Supponiamo Fattore=1 (ovviamente fattore+1 =2!)

istante 1 IN=0 Out=0

istante 2 IN=100 out=50

istante 3 IN=100 out=75

istante 4 IN=100 out=87,5

istante 5 IN=100 out=93,75

istante 6 IN=100 out=96,87

ecc ecc

Link al commento
Condividi su altri siti

Gabriele Riva

floppydisco meglio mettere le parentesi finali, altrimenti il tutto viene diviso per K e non funziona

dato Out= (K*out_Prec + In)/(K+1)

Link al commento
Condividi su altri siti

Io lo faccio in Un'altro modo. Funziona con pocchi merker.

Lo uso per stabilizzare le celle di pressione,celle per i KG,anche a stabilizzare un ingresso analogico con picchi.

Ti serve una funzione RANGE e un temporizzatore.Hai finito tutto.

Funziona cosi.

ge.jpg

Il linguaggio e KOP in GE FANUC

Non ho sotto mano Step7. Stassera te lo scrivo in Step7 KOP

Usi un 5 FISSO , questo e la toleranza che hai su quell ingresso.Quindi Hai il tuo ingresso e +5 oppure -5 di valore che tu prendi a fuoco.

Se la AI si trova in quell campo di PIU 5 e MENO 5 . Non verra aggiornata la lettura che e TEMP_AI.

Quindi se tu hai 100 sul AI , e si cambia di continuo varia tra 98 e 103,la lettura sara sempre 100 nel TEMP_AI.

Se al improvizo scendera a 0 oppure a 200.Deve rimanere superiore di quello per 1secondo.Vedrai che ho usato un temporizzatore in milisec.

Quindi se e Fuori RANGE di 105 oppure 95 e resta tale per 10milisec Allora verra aggiornata la lettura attuale dal AI in TEMP_AI.

Di conseguenza tu leggerai 200 nel TEMP_AI quindi il RANGE sara poi 205 e 195. Quindi la uscita del range si eccita di nuovo e disecita il tempo.

Cosi avrai un stabilizzatore anche in secondi oltre che in valore di 5.

Puoi cambiarlo con registri sia il tempo che la toleranza 5.

Se hai bisogno te lo scrivo in Step7.

Funzione RANGE non cè mi pare in Step7 ma ti fai delle bobine con delle comparazioni.

Per essempio Minore o Uguale fai una bobina e dopo fai Maggiore e uguale per un altra merker.

Le usi in paralello per fare La matematika del range! :D

Spero di essere stato chiaro. L'italiano non è la mia stato la mia parte forte.

Link al commento
Condividi su altri siti

Io di solito faccio così:

L #IngressoFiltro
L #UscitaFiltro
-R 
L #K
/R 
T #Tmp1

L #UscitaFiltro
+R 
T #UscitaFiltro

Comunque ci sono molte altre discussioni.

Link al commento
Condividi su altri siti

Trovato.

Non puoi farlo con il filtro di temporizzatore per un semplice motivo.

Immagina che hai un ingresso che oscilla da 0 a 100 pero il suo valore e 99 sempre fisso...e ogni tanto va a zero.

Quindi se in quell momento che tu lo filtri con un timer...per sfiga becca proprio quell momento di zero?

Vai a campionare un valore sbagliato.

Questo e meglio.Lo testato con il simulatore.Funziona che è una meraviglia!

Filter_AI.jpg

Link al commento
Condividi su altri siti

Dreamwish, il tuo codice non è un vero e proprio filtro, funzionerà anche... ma presenta alcuni difetti:

Tu congeli l'uscita se l'oscillazione in ingresso si mantiene entro certi valori (+/-5)

- Se l'osclillazione è maggiore (fuori da questa finestra) viene riportata in uscita senza alcun filtro

- Se l'osclillazione è nella finestra l'uscita rimane congelata in un valore casuale del range

- Hai un timer di campionamento di 1 sec. per cui l'uscita sarà sempre a gradini, può andar bene per un display ma non per contollare un processo.

Ciao

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Quoto il suggerimento di Livio

gia' usato in svariate applicazioni con buoni risultati ( facendo pero' scorrere in basso le letture ad ogni nuova lettura , solo per avere le ultime letture in ordine )

l'unica modifica e' quella di tagliare i picchi bassi o alti se il tuo sistema da' delle letture errate

Luca

Link al commento
Condividi su altri siti

  • 1 year later...

Ciao a tutti, mi sta venendo un terribile dubbio sulle correnti circolanti sul neutro, mi spiego meglio:

O un interruttore magentotermico differenziale 4P con cui devo alimentare un binario elettrificato per illuminazione.

Ho 7 A a fase, per cui il binario avendo come portata per conduttore di 16A sono apposto.

Pero che correnti avrei sul neutro?LA somma delle 3 fasi e cioe 21A?

Link al commento
Condividi su altri siti

Sempronio1960

Per binario elettrificato cosa intendi? Un binario ferroviario con trazione elettrica a 3 kV? Nel caso non devi assolutamente collegarti al binario, altrimenti c'è il rischio di portare sulla bassa tensione il 3 kV in caso di guasti.

Link al commento
Condividi su altri siti

Benny Pascucci
Per binario elettrificato cosa intendi?
Ciò che si intende quando ci si riferisce a un binario elettrificato.... :rolleyes: , iaki ha usato il termine tecnico giusto!

Un binario ferroviario con trazione elettrica a 3 kV?
:o

Nel caso non devi assolutamente collegarti al binario, altrimenti c'è il rischio di portare sulla bassa tensione il 3 kV in caso di guasti.
E' una battuta? Se è così, non l'ho capita....qualcuno me la spiega, per favore.... :unsure:
Link al commento
Condividi su altri siti

Sempronio1960
Ciò che si intende quando ci si riferisce a un binario elettrificato....
E' una battuta? Se è così, non l'ho capita....qualcuno me la spiega, per favore....

No, non è una battuta, è deformazione professionale :rolleyes: Dico davvero ...

Link al commento
Condividi su altri siti

Scusate un'attimo........binari a 3kV a parte!!!!!!!!

Ma quando mai:

Nella distribuzione trifase la corrente circolante sul nutro non è la somma algebrica delle fasi ! ma bensì la somma vettoriale infatti se avessi carichi perfettamente equilibrati sulle tre fasi la corrente circolante sul neutro sarebbe uguale a ZERO.

Sarebbe un miracolo avere un sistema illuminante con tante lampade distribuite su 3f+n EQUILIBRATO anche se tutte le lampade fossero uguali, della stessa marca e della stessa potenza.

E poi se si decidesse di accenderne due gruppi anziché tre?

E se una lampada si interrompe?

Link al commento
Condividi su altri siti

  • 5 months later...
Mi potete spiegare questo vettore array come viene implementato

Vettore è il termine italiano, array è un termine inclese che, nella pratica informatica, indica la medesima cosa.

Cerco di spiegartelo con un esempio.

Immagna di dovere tener conto di 10 valori che sono assunti nel tempo da una variabile, per esempio, di una velocità. Esegui le misure ogni secondo ed ottieni il valore istantaneo secondo per secondo. Ora se vuoi analizzare la vairaizione della velocità nell'intervallo di 10 secondi cosa devi fare? Semplice, riservi 10 celle di memoria, byte, word o doppia word, dipende dalla dimensione della variabile. Alla priam lettura memorizzi il valore nellea prima cella, alla seconda nella seconda e così via sino al riempimento di tutte e 10 le celle.

Questo insieme di celle di memoria è detto vettore di "n" elementi (10 in questo caso) o array di "n" elementi, o anche matrice ad 1 dimensione, ovvero matrice di 1 colonna e 10 righe nel caso in esame. La notazione per l'array è, solitamente "nome_array[n]".

Nel caso dei PLC S7_200 e S7_300 esistono delle istruzioni che puntano all'array. In altre parole crei una variabile che corrisponde all'indirizzo della prima cella di memoria, per scrivere (o leggere) nella memoria basta usare questa istruzione specifica, poi incrementi la variabile ed alla prossima memorizzazione avrai scritto nella cella successiva.

Link al commento
Condividi su altri siti

Si potrebbe anche usare la media pesata passando come parametro il peso più opportuno al filtro.

P= 0<=peso<=1

V= valore non filtrato

Vm= valore filtrato

Vm= (Vm*P)+(V*(1-P))

con P=0 il filtro è inefficace

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...