Vai al contenuto
PLC Forum


Trasduttori Namur


rangeli

Messaggi consigliati

Salve a tutti.

Cerco questo tipo di aiuto:

devo misurare due portate, una di aria e

l'altra di gas (metano o gpl) con turbine che in uscita hanno generatori d'impulsi

namur.

Ovviamente il numero d'impulsi generato è proporzionale alla portata misurata.

Ho a disposizione una CPU 312C e ho visto che per acquisire i trasduttori namur mi devo

equipaggiare con l'apposito modulo a 16 ingressi namur 6ES7 321-7TH00-0AB0.

La 312C, come tutte le C, è dotata di misuratore di frequenza integrato, con tanto di

superficie di programmazione e SFB dedicato (SFB 48), ma per misurare vuole,

giustamente, che gli appositi ingressi siano cablati con il relativo generatore

d'impulsi.

Io qui il generatore d'impulsi ce lo avrei invece sul modulo namur...........

Il mio problema è che non ho trovato alcuna documentazione, o esempio pratico, di come

si debba scrivere il programma in S7 per arrivare a leggere il numero di impulsi/s e

quindi risalire alla portata misurata.

C'entra niente il misuratore di frequenza integrato nelle C con il fatto che il modulo

6ES7 321-7TH00-0AB0 si possa montare solo se in rack c'è una CPU di quel tipo?

E' pensabile la più banale delle soluzioni sotto forma di:

U Ex.x (ingresso namur)

= Ey.y (ingresso misuratore frequenza integrato)

per poi procedere a sfruttare il misuratore di frequenza integrato?

Vi ringrazio in anticipo

Link al commento
Condividi su altri siti


Salve,

C'entra niente il misuratore di frequenza integrato nelle C con il fatto che il modulo

6ES7 321-7TH00-0AB0 si possa montare solo se in rack c'è una CPU di quel tipo?

a parer mio direi di no, il modulo per ingressi NAMUR può essere installato anche in presenza di CPU non del tipo compatto cioè la serie C.

Quindi la funzione SFB48 (misuratore di frequenza) non ha alcuna attinenza con il modulo NAMUR.

U Ex.x (ingresso namur)

= Ey.y (ingresso misuratore frequenza integrato)

per poi procedere a sfruttare il misuratore di frequenza integrato?

Effettivamente in S7 una sintassi del tipo di quella da te descritta e possibile, quindi attivare un'ingresso come risultato di una combinazione logica è attuabile.

Ora non so però sè per gli ingressi onboard delle CPU integrate, essendo dedicati a particolari funzioni di conteggio vi siano delle limitazioni.

Forse fai prima a provare........

Nel caso invece la cosa risultasse non fattibile, allora dovresti crearti una funzione che incrementi dei contatori di tipo DINT (uno per aria l'altro per gas), quindi imposti un richiamo a tempo di OB35 a valori che riterrai opportuni, trasferendo il contenuto dei contatori verso altre due variabili che opportunamente scalate daranno il valore delle portate, subito dopo effettuerai il reset del tuo contatore.

Ultima cosa, ma per questo non meno importante, bisogna vedere la frequenza massima che i NAMUR danno di ritorno quando ti trovi nella condizione di massima portata, giusto per vedere sè gli ingressi digitali della 6ES7 321-7TH00-0AB0 riescono ad acquisire tutte le transizioni da OFF af ON.

Modificato: da cagliostro
Link al commento
Condividi su altri siti

La tecnica "namur" differenzia, rispetto ad altri sensori più "tradizionali" per la gestione dei segnali elettrici. L'ingresso di conteggio deve essere predisposto per questo tipo di tecnologia.

Non conosco a memoria tutte le CPU e le relative varianti della serie 300; ce ne sono veramente tante. In alcuni casi le schede hanno, tra i parametri di configurazione, la possibilità di scegliere tra ingresso NPN o NAMUR.

Nel tuo caso, devi verificare semplicemente che la scheda di conteggio appunto supporti ingressi in tecnologia NAMUR.

Per quanto riguarda invece la funzione di conteggio, essa è indipendente dal tipo di tecnologia del sensore. Le scheda di contegio, in base al modello, hanno un processore, o parte di esso, dedicato a tale scopo e gli ingressi non si possono elaborare in immagine di memoria; per la scheda di conteggio è del tutto irrilevante l'immagine di memoria. (In via generale).

Link al commento
Condividi su altri siti

Ringrazio sentitamente tanto cagliostro quanto mubeta.

Combinando le vostre risposte mi sentirei di dire allora che l'operazione banale che avevo in mente sia sintatticamente valida ma che non porti ad alcun risultato in quanto E=E è l'operazione tipica che sfrutta l'immagine di memoria.

Potrei invece leggere un numerino scrivendo in un FC una cosa del tipo:

U E x.x (ingresso namur)

FP M y.y

= M z.z

//:

U M z.z

ZV Zx

e poi scrivendo nell'OB35

L Zx

T DINT

//;

U Mw.w (bit sempre TRUE)

R Zx

Sono sulla strada giusta?

Link al commento
Condividi su altri siti

Sono sulla strada giusta?

Concettualmente si, ma poi bisogna verificare la frequenza massima da misurare. Il tempo ciclo massimo della CPU deve garantirti almeno una frequenza doppia di quella da misurare, (ammesso che il periodo on/off del segnale sensore sia pressoché del 50 %, altrimenti è tutto da verificare).

Ti conviene in ogni caso passare tramite una scheda di conteggio veloce e leggere direttamente da questa il numero di impulsi su unità di tempo.

Link al commento
Condividi su altri siti

Salve,

concordo quanto postato da mubeta nel messaggio #5.

Se poi sono verificate le condizioni tipo freq. max, tempo scansione CPU, duty cycle del segnale etc. etc.

puoi utilizzare la tua funzione.

Sappi però che la capacità massima di conteggio dei contatori Z va da 0 a 999 in BCD.

Per cui anche in questo caso devi essere certo che trà un richiamo e l'altro di OB35, il tuo contatore non sia andato oltre il 999 ripartendo da 0.

Guardando in linea di principio l'esempio del codice da te postato puoi anche omettere l'uso del oneshot e scrivere direttamente:

U E x.x (ingresso namur)

ZV Zx

mentre in OB35 prima di traferire il dato di portata metterei un fattore K di scalatura per ottenere la visualizzazione a te più congeniale.

L Zx

BTI //da BCD a INT

ITD //da INT a DINT

DTR //da DINT a REAL

L1.0 //costante di scalatura per ottenre il dato nel valore relativo all'unita ingegneristica scelta [m3/h l/h etc. etc.]

*R

T DINT valore finale scalato

SET //mette ad 1 LRC

R Zx //resetta il contatore Zx

Poi sicuramente ci sono altre tecniche per ottenere quello che vuoi, ma se le frequenze fornite dai NAMUR sono basse, per cui leggibili sia dall'ingresso PLC etc. etc. come detto sopra, allora puoi usare il tuo metodo.

Modificato: da cagliostro
Link al commento
Condividi su altri siti

Non so se esagero, ma visto che ho trovato due angeli custodi come voi, mi spingo oltre: la frequenza massima che dovrei misurare è di circa 80 impulsi/s, quindi avrei a che fare con un periodo di 12,5 ms.

Nei dati tecnici dell'unità namur leggo che il ritardo d'ingresso per la transazione da 0 a 1 e da 1 a 0 è pari a 2,5-3,5 ms. Fino a qui mi sembra che ci siamo.

Nei dati della CPU (HW Config> Proprietà dell'Oggetto> Generale) leggo 0,2 ms/1000 istruzioni, e interpreto questo rapporto come il tempo che impiega la CPU ad elaborare 1000 istruzioni quindi, con un programma di 1000 istruzioni, avrei un tempo ciclo di 0,2 ms.

Ammettendo di avere un 20% del tempo ciclo riservato alla comunicazione (HW Config> Proprietà dell'Oggetto> Ciclo/Merker di Clock) e seguendo il consiglio di mubeta (frequenza ciclo almeno doppia rispetto alla frequenza del segnale) il massimo tempo ciclo per me ammissibile sarebbe (12,5/2)*0,8= 5 ms.

A questo tempo ciclo corrisponderebbe un programma costituito da (5/0,2)*1000= 25000 istruzioni.

E qui casca l'asino, cioè io: 25000 istruzioni significano 25000 righe di programma? (mi sembrano tantissime).

A programma scritto in AWL, compilato con 0 Errori 0 Avvisi, dove posso andare a leggere, o calcolare, il numero di istruzioni complessivo?

Vi ringrazio in anticipo........

Link al commento
Condividi su altri siti

le istruzioni sono il numero totale di righe awl. Le istruzioni grafiche si comportano come il NOP e quindi hanno il loro peso.

Hai omesso pero di considerare nei calcoli due fattori: il tempo di elaborazione della cpu per cose sue, ed il duty cycle del segnale da processare.

La 312 non é tanto veloce, potrebbe andare fuori tempo calcolato ogni tanto.

Link al commento
Condividi su altri siti

Salve,

come nel messaggio#8 di mubeta e già ribadito nei precedenti post, sarebbe interessante conoscere il duty cicle del segnale.

Poi non so se il codice del programma da te sviluppato volge al termine oppure devi fare ancora parecchia "roba"......ma una stima del tempo di ciclo la puoi avere interrogando la tua CPU dal menù Diagnostica impostazioni==>Stato dell'unitaà==>Tempo di ciclo.

Oppure se ti è più comodo dal blocco OB1, interrogando le variabili temporanee OB1_PREV_CYCLE / OB1_MIN_CYCLE / OB1_MAX_CYCLE.

Ovviamente questo vale se ti trovi nelle condizioni reali, cioè non con CPU simulata (PLCSim), e la presenza di periferia decentrata perfettamente funzionante (nessun led tipo SFo BF acceso o lampeggiante)......

Link al commento
Condividi su altri siti

Come faccio a conoscere il duty cycle del segnale del trasduttore namur?

E' quello che nei dati tecnici della scheda namur viene chiamato "Tempo di Elaborazione Interno"?

Come faccio a valutare il tempo che la cpu si prende per le cose sue? Dove lo posso leggere o impostare?

Non so se nei prossimi giorni potrò essere così assiduo in questo forum, in quanto sono in partenza per un lungo viaggio di lavoro.

Continuo a ringraziarvi per il meraviglioso supporto..........

Link al commento
Condividi su altri siti

Il duty cycle non ha nulla a che vedere col sensore. Dato il periodo del segnale da rilevare, è la percentuale del tempo di permanenza ad uno del medesimo.

Non puoi sapere od impostare a priori il tempo ciclo di elaborazione della CPU, che varia molto anche in relazione all'hardware. Devi ipotizzarlo con l'eperienza. Se hai già tutto l'hardware im mano, puoi scaricarvi il programma dentro e rilevare il tempo massimo di scansione programma, diciamo, dopo qualche minuto di permanenza in RUN. Ma siccome l'hardware lo si ordina solo dopo la progettazione ed alcune certezze, fai qualche ipotesi in relazione alle esperienze passate.

Puoi raggirare il problema, ad esempio creando il programma di lettura segnale con un OB a tempo, ad esempio 5 ms, ricordando di leggere lo stato della periferia di ingresso, prima di interrogare il segnale. Quantomeno, se il duty cycle è verificato, rispetto ai numeri che avevi scritto, ci riesci anche col la 312 senza scheda di conteggio veloce.

Link al commento
Condividi su altri siti

Salve,

Come faccio a conoscere il duty cycle del segnale del trasduttore namur?

Se non è espressamente riportato nelle caratteristiche tecniche del Namur o comunque del trasduttore impiegato, la prima cosa che mi viene in mente è quella di utilizzare un oscilloscopio.

E' quello che nei dati tecnici della scheda namur viene chiamato "Tempo di Elaborazione Interno"?

Penso proprio di no, se magari alleghi marca e codice del namur o del trasduttore completo, magari posso darti suggerimenti in merito.

Come faccio a valutare il tempo che la cpu si prende per le cose sue? Dove lo posso leggere o impostare?

ti avevo dato indicazione nel messaggio#9

Poi non so se il codice del programma da te sviluppato volge al termine oppure devi fare ancora parecchia "roba"......ma una stima del tempo di ciclo la puoi avere interrogando la tua CPU dal menù Diagnostica impostazioni==>Stato dell'unità==>Tempo di ciclo.

Oppure se ti è più comodo dal blocco OB1, interrogando le variabili temporanee OB1_PREV_CYCLE / OB1_MIN_CYCLE / OB1_MAX_CYCLE

Direi a mio personale avviso, che la via più paratica è quella di scrivere in OB1 qualche istruzione come a seguire, rispetto alla visualizzazione

fatta da menù Diagnostica impostazioni==>Stato dell'unità==>Tempo di ciclo, perchè in questo caso dovresti schiacciare ripetutamente il tasto

aggiorna per conoscere istante per istante il tempo di ciclo.

Buon viaggio e buon lavoro

//Estrae tempo della scansione precedente del programma in ms 

      L     #OB1_PREV_CYCLE
      T     MB     6

//Estrae tempo della scansione minima del programma in ms 

      L     #OB1_MIN_CYCLE
      T     MB     7

//Estrae tempo della scansione massima del programma in ms 

      L     #OB1_MAX_CYCLE
      T     MB     8

immagineykj.png

Link al commento
Condividi su altri siti

E se invece installi due barriere a sicurezza intrinseca nelle quali entri con i namur ed esci con segnali +24Vdc da collegare agli ingressi veloci della cpu?

Saresti sicuro di non avere problemi di perdita di impulsi (verifica solo la frequenza di commutazione supportata dalle barriere) e spenderesti anche meno.

Due barriere (o una barriera doppia, per due namur) sicuramente costano meno del modulo 6ES7321-7TH00-0AB0 (a listino €701,04 ai quali devi aggiungere anche il costo del connettore).

Una spesa esagerata per utilizzare solo due ingressi.

Modificato: da batta
Link al commento
Condividi su altri siti

Ringrazio veramente tutti.

Mi documenterò sulle barriere a sicurezza intrinseca e sui convertitori da namur a digitale, prevalentemente per mia scienza, perchè il mio intento principale rimane sempre quello di acquisire e leggere il segnale del trasduttore senza interporre altre apparecchiature.

A questo scopo lo stesso produttore dei misuratori di portata (la Krom Schroder) mette a disposizione degli strumenti di lettura che acquisiscono il namur, danno il valore istantaneo, e hanno in opzione un'uscita 4-20. Il costo di due strumenti messi insieme è praticamente uguale a quello della scheda siemens ma io, come detto, per ragioni che non sto qui ad esporre in quanto non interessanti, voglio evitare di aggiungere altre apparecchiature.

Ad ogni buon conto, quale sarebbe il prezzo (a spanne si intende...) di una barriera o di un convertitore adatto allo scopo?

Link al commento
Condividi su altri siti

Che tu aggiunga un modulo Siemens-S7 oppure una barriera a sicurezza intrinseca, sempre qualcosa devi mettere.

Tieni presente poi che tu stai lavorando con gas infiammabili.

Questo mi fa pensare che siano stati utilizzati sensori namur perché sono in zona pericolosa.

Il modulo che dovresti utilizzare quindi non è il 6ES7321-7TH00-0AA0 ma, casomai, il 6ES73217RD00-0AA0, al quale si possono collegare 4 sensori namur posti in zona Ex.

Se è così, ti va pure bene, perché costa circa la metà del modulo da te proposto.

Utilizzando questo modulo rimane sempre il problema di rilevare 80 impulsi/secondo, perché non puoi mandare il segnale sull'ingresso veloce.

Sul costo delle barriere a sicurezza intrinseca, non ti so dire con precisione. Ma per due sensori dovresti comunque spendere meno dei 300 e passa euro che ti costerebbe il modulo Siemens.

Link al commento
Condividi su altri siti

Se non erro, la scheda FM350-2 fa al caso tuo: è una scheda di conteggio/misura di frequenza a 8 canali e dovrebbe accettare direttamente segnali namur...

ciao

Link al commento
Condividi su altri siti

A parte la questione costo (due barriere costano sicuramente meno di una FM350-2), rimane da capire se i sensori sono in zona Ex oppure no.

Se sono in zona Ex non basta utilizzare un qualsiasi modulo in grado di accettare sensori namur, ma serve un modulo certificato per questo tipo di applicazioni.

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