Vai al contenuto
PLC Forum


Contatore Veloce con una DI normale


LaRocca

Messaggi consigliati

Salve a tutti..

Come poso creare un contatore veloce con una Digital Input normale..

Io ho fatto il siguente:

in il OB 13 a 10ms ho fatto cuesto

L PEB 10 // CON CUESTO AVIVO OGNI 10 S LA IMAGINE..

T EB 10

// SE VOGLIO PER ESSEMPIO LA DI E10.0 COME INPUT VELOCE..

U E10.0

UN M10.0 // ESTATO ACTUALE DE LA INPUT

S M10.1 // AL CONTATORE

U E10.0

= M10.0 // REFRESH

Doppo in un altro FC che lavora con il contatore facio cualcosa del genero..

U M10.1

ZV Z1 // INCREMENTO IL CONTATORE

U M10.1

R M10.1

U E0.0

R Z1// RESET DEL CONTATORE VELOCE CON DI..

Se avette unaltra soluzione per fare cuesto mi piacerebbe averla..

:rolleyes:

Link al commento
Condividi su altri siti


Gabriele Corrieri

Ciao Tony,

ma usi un modulo di ingresso normale o qualche modulo speciale?

Se usi gli ingressi ad interrupt puoi facilmente contare gli interrupt che si generano.

Non so comunque fino a quanto su in frequenza si possa contare con un modulo normale. Alcuni nostri fornitori di automazione usavano prima dell'ingresso una schedina divisore programmabile con dei ponticelli, in modo da dare un impulso ogni multiplo binario intero (2,4,8,16,32 ....) si potrebbe anche farla come divisore decimale ... dipende cosa c'è dopo nel programma, se serve davvero una risposta in tempi brevissimi o se è solo un conteggio con tempi più accettabili.

Link al commento
Condividi su altri siti

Ho provato ad usare una DI normale (Siemens) per collegarmi ad un encoder assoluto, purtroppo l'encoder girava molto di + di quello che pensavo con il risultato che ogni tanto perdevo (problema della scheda), ho risolto montando un'encoder SSI (+ relativa scheda speciale)

Link al commento
Condividi su altri siti

X LaRocca.

Dici che usi un DI normale (non veloce), quindi il tuo contatore non può essere veloce!

Il ritardo medio di un DI è sempre di alcuni msec (dipende dal filtro insrito). Tieni presente che se hai un filtro con ritardo di 2 msec. puoi pensare di contare impulsi ad ONDA QUADRA di 10 msec e non più veloci.

Se leghi l'OB13(?) ad un interupt di 10 msec. conti impulsi ad onda quadra di oltre 20 msec. Per avere la sicurezza di contare giusto devi fare due campioni per ogni mezzo periodo.

Ciao Livio

Link al commento
Condividi su altri siti

Dai dati tecnici delle schede Input Siemens la massima velocità di lettura dovrebbe essere pari a una onda quadra con periodo di 10ms ( coma già detto da Orsini ).

Io provando con una simulazione ero riuscito ad arrivare fino a 5 ms ( senza errori ) utilizzando un normale comando "U E1.0" nel blocco OB1.

Chiaramente il tempo di ciclo complessivo della CPU era inferiore alla metà del periodo dell'onda quadra.

Se il tempo ciclo è maggiore si può utilizzare l'OB35 ( con tempo sempre impostato ad un valore inferiore alla metà del periodo dell'onda quadra ) .

Si carica la PEB su un MB

Si gestisce il bit del MB abbinato all'ingresso come fronte di salita.

Col fronte si gestisce il conteggio.

Tutto deve essere fatto nell' OB35.

CIAO

Link al commento
Condividi su altri siti

In presenza di ingressi periodici ben conosciuti e relativamente "veloci" uso anchio questa tecnica, in fondo le schede normali costano meno e di regola in questi casi non è necessario la velocità di un interrupt basta che il conteggio sia giusto ...

In S7 300 uso questo metodo solo su schede montate sullo stesso rack della CPU per evitre di all'ungare tempi cilco a causa del bus ...

io personalmente sono arrivato a 5 ms ciclo con OB35 e una CPU 315 2DP

Dipende sempre da cio che si ha e di cio che si ha bisogno ... al limite la

314C e tutta la serie Compac ha ingressi gia predisposti per interrupt e quindi se si sceglie questa CPU si è gia a buon punto peccato per i "soli" 48 Kbyte ...

Forse è anche meglio ribadire che la teccnica a campionamento è meglio usarla solo se si conosce bene le frequenze in gioco e se si conosce con buona probabilità il cmportamento dell'ingresso monitorato ...

ciao

Link al commento
Condividi su altri siti

Salve a tutti..

Veramente cuello che dici il amico Livio é vero non é un contatore molto veloce, ma purtropo cuello che io voglio fare e di potere leggere una Input un pó piu veloce, cosi mi guadagno il comprare una High Speed Counter che costa un sacco di soldi..

unaltra cosa ho sbagiato di OB13 é veramente il OB35 perche sto usando un PLC S7-300 con CPU 318-2DP, ma soltanto penso anche dei PLC s5 é ogni tanto svagio di OB, scusate..

Comento che cuello che dice Federico é la mia realta.. solo ho visogno del conteggio giusto...

Mi piacerebbe sapere come fate voi a legere la input o fate cualcosa come ho fatto io?? Livio dice "la sicurezza di contare giusto devi fare due campioni per ogni mezzo periodo", ma non intendo cosa vole spiegare cui.. se me pó dare una meglio Idea del asunto é spiegarzi con un essempio breve per chiarare il concepto..

:rolleyes:

Link al commento
Condividi su altri siti

Gabriele Corrieri

Ciao a tutti,

... mi scuserai Federico, ma la serie COMPACT può usare anche gli ingressi (non ricordo quali a memoria) come contatori veloci fino almeno a 20KHz, se non a 50, questo per 4 canali in quadratura ... :) una bella roba ... peccato il costo.

Per i 48Kb a cosa sono riferiti? Alla RAM immagino, anche perchè la EEPROM è sparita,insieme alla batteria sostituite dalla Micro Memory Card MMC ... a proposito, qualcuno ha visto qualche prommer non Siemens per queste memorie? O anche Siemens al limite, il listino mi pare porti ancora il vecchio prommer S5/S7 MC951 ... :(

Per Tony, quello che dice Livio è il famoso (?) teorema di Shannon ... ossia se devi campionare (sia in digitale sia in analogico, non cambia la filosofia) un segnale, bene devi monitorarlo almeno al doppio della sua frequenza ... un esempio facile facile ... se campioni con la scheda audio a 44100Hz il massimo segnale che riuscirai a campionare sarà a 22050 Hz ... che per noi è il rovescio ... se il tuo segnale viaggia a 5Hz, devi leggerlo almeno a 10Hz ( ossia ogni 100mS) ... spero sia chiaro.

Non chiedetemi altre spiegazioni su come funzioni il teorema di Shannon perchè non le saprei dare, visto che lo so solo applicare, Livio che ne sa molto più di me potra darci anche la dimostrazione matematica.

Ciao a tutti.

Link al commento
Condividi su altri siti

Ciao gabriele,

si hai ragione pui fare il conteggio veloce con la serie compaq, ma siccome non uso molto i conteggi veloci ma l'interrupt mi viene automatico a pensare all'interrupt ... deformazione profesionale :D ... excuse me ...

I 48Kb erano riferiti all 314C ... ma anche qui commetto delle bagianate, perchè dipende da cosa si fa ... se hai macchine sono sufficienti se hai impianti complessi non sono sufficenti ... mea culpa che non mi spiego :( sing ...

Il promer, se hai un Pg esiste una schedina ... da inserire al posto delle eeprom ... ma non son mai riuscito a caricarci un programma che all'avvio funzionasse ... poi siccome io faccio impianti uso le 316 2DP ... non mi sono più posto il problema ... provo a vchiedere al mio collega di scrivania se è riuscito ad usare il promer per schedine della compact ...

Il costo è relativo ... a me risulta che costi meno dell 315 2DP pur essendo più veloce di 3 volte ... e poi con ingressi veloci che ha è un vero affare ... secondo me ...

Ciao quello che dici di Shanon o Nyquist (io preferisco Nyquist :P ) dipende quale ti riferisci ... :P

Se qualcuno è interessato alla matematica è molto semplice ...

se f(t) è il tuo segnale nel tempo (lascio perdere alcune conseguenze ovvie)

allore F(s) è la sua trasformata nella frequenza complessa ...

ponendo s=j*w otteniamo la trasfomata di Forier da cui esaminiamo le frequenze di interesse del nostro segnale ... bene Forier ha una propietà ... se diagramiamo il modulo di F(j*w) sicuramente vedremo due code che si estendono una verso jw->+infinito e una jw-> - infinito ...

Questo perchè la nostra trasformata "ci simetrizza l'asse delle ascisse" (se c'è qualche matematico non si offenda del termine usato ... non mi metta al muro per carità ...) in poche parole posto un limite alle frequenze volute si si dovrà sceglie la banda passante >= alle frequenze volute quindi essendo simmetrico anche per le frequenze negative ... otteniamo che la banda passante è pari a 2 volte le frequenze positive di interesse da cui Nyquist asserisce che la banda passante è 2 volte le frequenze di interesse positive ... e quindi bisogna campionare almeno con una banda passante pari a quella del segnale ... Shanon invece dice che bisogna campionare almeno 2 volte più veloce delle frequenze positive di interesse ...

.... Se c'è qualche purista ... non si offenda della spiegazione, ma mi sa che ho creato ancor più confusione ... spero di no ...

ciao

Link al commento
Condividi su altri siti

Per contare un segnale di tipo a onda quadra bisogna gestire uno dei due fronti del segnale ( es. da 0 a 1 ) , per fare questo bisogna intercettare sia il passaggio del segnale da 0 a 1 che il passaggio da 1 a 0 ( cioè leggere con frequenza doppia rispetto alla frequenza del segnale ) altrimenti c'è il richio che fra una lettura e quella successiva il segnale vada a 1 e poi ritorni a 0 senza che il software se ne accorga perdendo cosi un conteggio.

E' chiaro che questo vale se le due semionde sono uguali ( il tempo del segnale a 1 è uguale al tempo del segnale a 0 ) altrimenti la frequenza di lettura pari al doppio non è più sufficiente ma ci vuole una frequenza maggiore.

Ritornando all'esempio proposto da LaRocca discorso analogo va fatto per il contatore Z1 che deve essere quindi inserito nell'OB35 assieme alla routine di lettura.

CIAO... _--_--_

Link al commento
Condividi su altri siti

Come dice Scipione per avere la sicurezza del conteggio bisogna intercettare sia il passaggio da zero a uno, sia il passaggio da 1 a zero. Quindi il periodo di campionamento deve essere la metà della durata della semionda (onda quadra simmetrica). Il teorema di Shannon dice una cosa doversa: puoi riprodurre qualsiasi segnale di qualsiasi forma purchè si eseguano 2N+e campioni, dove N è la massima frequenza della più alta armonica presente nel segnale campionato. Se applicassimo Shannon ad un'onda quadra la frequenza di campionamento sarebbe, teoricamente infinita. Dato che un'onda quadra contiene TUTTE le armoniche (par o dispari in funzione che sia più o meno simmetrica rispetto allo zero).

Oltre a questo è necessario tenere conto dei ritardi di propagazione dovuti ai filtri HW e SW della scheda d'ingresso.

Diverso se si fa ricorso ad un ingresso di interrupt. Qui è necessario rlevare solo il fronte (0 -->1 o viceversa) Se invece si intende effettuare un conteggio bidirezionale basato sulle fasi relative ai due canali, le cose si complicano perchè oltre a verificare le transizioni è necessario verificare le fasi relative

Ciao Livio

Link al commento
Condividi su altri siti

Per rilevare il conteggio bidirezionale, se non servono prestazioni troppo spinte si può utillizzare un ingresso per il conteggio ed uno per la direzione ... quindi anche usando un encoder si riesce egualmente (se gira relatvamente piano) a contare in modo corretto lo spostamento ... anche se in uesto caso meglio un modulo adeguato ...

Livio e Scippione hanno ragione, ma spesso vien spontaneo considerare simmetrico il segnale ... se così non fosse ...

; ___ ___

_| |_| |_|

Si può far riferimento a questo, si assume che il segnale sia simmetrico e con semiperiodo pari al tempo più breve ... cioè se ho 0V per 5ms e 5V per 10 ms, il mio segnale fittizzio sarà simmetrico con periodo pari a 2*5ms ...

e qui si effettua la regola di campionamento con il nuovo segnale che risimetrizza il tutto ...

Ovviamente è sottointeso che bisogna ricavarsi i fronti o di salita o di discesa o entrambi ...

Ciao

Link al commento
Condividi su altri siti

  • 1 year later...

Una possibilità (forse l'unica) per gestire il conteggio

(compreso la direzione), rilevato da un encoder,

con ingressi digitali "normali" ed a velocità sufficientemente

sostenute è la seguente:

Utilizzare un encoder assulto mono/giro con codice gray (es.256 impulsi 8bit)

montato generalmente esternamente al motore (es. su cremagliera esterna)

per un compremesso accettabile max-frequenza/max-risoluzione.

Contare UP/DOWN i giri attraverso un semplice algoritmo, la quota sarà data

da :n.giri + lettura istantanea x K

dove K è la valorizzazione del singolo impulso.

La cosa funziona perchè ad alte velocità è sufficiente contare i giri

mentre alle basse fino a quasi zero diventano riconoscibili i

singoli impulsi.

Ho installato diverse applicazioni di questo tipo:

Velocità max 100 mt/primo

Risoluzione max 0.2mm

I costi sono bassissimi

Ciao :D

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