Vai al contenuto
PLC Forum


CPU 1212C , blocco dati non ritentivo , perchè ?


luigi69

Messaggi consigliati

Buon inizio settimana .

Domanda veloce veloce , giusto per fare impazzire ad inizio settimana... mai usato una 1212 per valori ritentivi , ovvero , ne ho usate un paio per semplici automatismi .

Adesso , un contatore veloce HSC , voglio ( vorrei )  i dati di conteggio ritentivi , ma alla mancanza di tensione , azzera tutto...

Stesso programma con contatori veloci in due 1214 , funziona.... la 1212 non ha i blocchi dati ritentivi ?

 

Cattura_dati_conteggio.thumb.JPG.b1783b26a771d9b15a3419b71a761d95.JPG

 

la spunta c'è....

Link al commento
Condividi su altri siti


Non è questione di blocchi ritentivi, che ci sono anche nella 1212, ma di come è gestito il contatore veloce.

Il contatore veloce ha una sua memoria, e quella non è ritentiva. Nel DB viene trsaferito il valore letto dal contatore e, quindi, anche se il DB è ritentivo, viene perso quando si spegne il PLC.
Probabilmente, nella 1214 sono state implementate istruzioni per caricare nel modulo di conteggio l'ultimo valore letto. Il quale, ultimo valore letto, è stato memorizzato in una variabile ritentiva.
Prova a vedere se trovi qualcosa nell'OB Startup, o istruzioni lanciate dal merker di prima scansione.

Link al commento
Condividi su altri siti

Grazie batta , ma non ho capito il suggerimento.   Potere usufruire del merker ma per cosa ?

A parte che questo mi serve da monito personale.... Con S5   prendevi una 100 anziché una 103 , dicendo , costa un po meno, tanto non devo espandersi....e sc oprivi che finiva la memoria mentre programmavi....con la serie 300 , l unica volta che ho usato una 312 il cliente ha voluto espandere in lungo  e in largo ....da allora mai più preso sotto la 313

Adesso appunto to....  sempre lavorato con le 1214 , mai avuto problemi....

Devo avere fatto qualche cosa di male....( magari in una vita precedente ) e adesso be pago le conseguenze...

Link al commento
Condividi su altri siti

Non conosco la serie1200, quindi non so se c'è la possibilità di avere un interrupt che agisce sul fronte della mancanza rete.

Ci sono dispositivi che dall'alimentatore ricevono un segnale che genera un interrrupt con il quale esegui il salvataggio di alcuni dati. In genere hai qualche decina di ms di tempo per effettuare il salvataggio di alcuni dati "speciali".

 

Si può anche fare esternamente, alla caduta della rete si da un fronte ad un ingresso veloce legato ad interrupt, con questo salvi il valore dello HSC in un'area di memoria ritentiva; al riavvio, OB1 presetterà lo HSC con il valore salvato.

 

 

Link al commento
Condividi su altri siti

3 ore fa, luigi69 ha scritto:

sempre lavorato con le 1214 , mai avuto problemi....

Non mi risulta ci siano differenze tra la 1212 e la 1214 per quanto riguarda la ritenzione dei dati.
Anche con la 1214 il contatore viene azzerato con mancanza di alimentazione, o con CPU in stop.
Ma il prgramma l'hai sviluppato tu o qualcun altro?
Non mi risulta esista un modo per rendere ritentivi i valori dei contatori veloci.
L'unica cosa che puoi fare, è ricaricare l'ultimo valore letto quando la cpu riparte.
Nella variabile ritentiva "conteggio_impulsi" immagino che tu vada a scrivere, ad ogni ciclo, il valore corrente del contatore veloce.
Se nell'OB Startup metti le istruzioni per caricare come valore corrente il valore di "conteggio_impulsi", ecco che il contatore veloce ripartirà da quel valore.
Io credo che nel programma della 1214 ci sia qualcosa del genere.

Link al commento
Condividi su altri siti

56 minuti fa, batta ha scritto:

Non mi risulta esista un modo per rendere ritentivi i valori dei contatori veloci.

Concordo con batta, i contatori veloci non nascono per essere ritenitivi, anche con PLC di altre marche la situazione è analoga, allo spegnimento i dati vengono persi o meglio alla riaccensione il contatore veloce viene posto a zero all'avvio, quindi a meno che non fai un salvataggio allo spegnimento o al presentarsi di un calo di tensione che certifica lo spegnimento del PLC per salvare i dati in locazioni ritenitive il dato del contatore veloce lo perdi, daltronde ciò è giustificato dal fatto che il contatore veloce è intrinsecamente gestito fuori scansione programma o in interrupt e quindi è logico che si perda il suo dato perchè se fosse ritenitivo chi certifica che l'asse in questione nel transitorio dallo spegnimento alla riaccensione non si sia mosso? Potresse essere altro che una fonte di errore.

Questa mia affermazione deriva da un abitudine di programmazione che ho ma può darsi che nel caso in questione di Siemens io stesso mi sbagli oppure c'è una procedura per ovviare a ciò che io non conosco.

Link al commento
Condividi su altri siti

Ma sentito che si possa rendere ritentivo hsc, io rilevo da un relè AC la mancanza rete e salvo il valore che viene ricaricato allo start. Facendo così potresti perderti gli impulsi se per inerzia la macchina continua a ruotare e dovrebbe contare ancora dei passi.

Per applicazioni simili, cercavo di garantire l'alimentazione del PLC per alcuni secondi tanto da poter effettuare il salvataggio dopo il tempo max di possibile rotazione... 

 

Link al commento
Condividi su altri siti

1 ora fa, leleviola ha scritto:

è logico che si perda il suo dato perchè se fosse ritenitivo chi certifica che l'asse in questione nel transitorio dallo spegnimento alla riaccensione non si sia mosso?

Perfettamente d'accordo. Una cosa è affidarsi ad un encoder assoluto che rileva la posizione corretta anche nel caso venga mosso quando non è alimentato e, quindi, salvo il caso di scollegamento del cinematismo, garantisce sempre la corretta posizione dell'asse.
Tutt'altra cosa è mantenere in memoria un valore che, se l'asse viene mosso quando il plc non è alimetato, dopo non sarebbe più attendibile.
Prima di procedere con metodi per memorizzare il valore di un contatore veloce, è indispensabile analizzare cosa accadrebbe in caso di ripartenza con quota errata. Se si parla solo di lievi inconvenienti, memorizzare una quota per evitare di dover fare un azzeramento dell'asse ad ogni accensione ha senso. Nel caso una quota errata possa provocare danni, non c'è scelta: all'accensione, si effettua la ricerca del riferimento dell'asse.

Link al commento
Condividi su altri siti

Vi ringrazio per le risposte  cerco di fare riferimento alle singole frasi , cosicchè io possa essere il piu chiaro possibile , e voi possiate eliminare magari delle considerazioni gia fatte o dei test gia eseguiti

 

Grazie @Livio Orsini  ma a meno che io abbia preso una cantonata , e ne sto discutendo con voi adesso , il tutto mi funziona su una 1214..quindi per fortuna , qualche cosa è gia diciamo "di serie"

 

3 ore fa, batta ha scritto:

Non mi risulta ci siano differenze tra la 1212 e la 1214 per quanto riguarda la ritenzione dei dati.

Anche io batta avevo questo pensiero , ed a meno che non stia prendendo una cantonata ,  è l'unica cosa con cui mi sto giustificando il problema

 

3 ore fa, batta ha scritto:

Ma il prgramma l'hai sviluppato tu o qualcun altro?
Non mi risulta esista un modo per rendere ritentivi i valori dei contatori veloci.

si assolutamente , fatto io

in un caso anche 3 contatori  HSC 1, 2 3 , li appoggio in una DB ed uso l'istruzione CTRL_HSC  per azzerare il valore quando mi serve ( un caso gi una morsa aperta da una vite senza fine , a morsa tutta da un lato , tocco un micro , azzero il conteggio e di li calcolo una quota )

3 ore fa, batta ha scritto:

Nella variabile ritentiva "conteggio_impulsi" immagino che tu vada a scrivere, ad ogni ciclo, il valore corrente del contatore veloce.

esatto

 

3 ore fa, batta ha scritto:

Io credo che nel programma della 1214 ci sia qualcosa del genere.

se si , non fatta da me , allego il blocco dati di un sistema fatto con cuna 1214 che conta tre encoder , funziona, e anche spento , una volta riacceso ho i valori in una DB, il sistema è identico a quello "provato" questa mattina

 

ecco..stamattina funzionava e adesso come purtroppo capita, non mi lascia caricare le immagini...

 

 

2 ore fa, leleviola ha scritto:

Concordo con batta, i contatori veloci non nascono per essere ritenitivi, anche con PLC di altre marche la situazione è analoga, allo spegnimento i dati vengono persi o meglio alla riaccensione il contatore veloce viene posto a zero all'avvio, quindi a meno che non fai un salvataggio allo spegnimento o al presentarsi di un calo di tensione che certifica lo spegnimento del PLC per salvare i dati in locazioni ritenitive il dato del contatore veloce lo perdi, daltronde ciò è giustificato dal fatto che il contatore veloce è intrinsecamente gestito fuori scansione programma o in interrupt e quindi è logico che si perda il suo dato perchè se fosse ritenitivo chi certifica che l'asse in questione nel transitorio dallo spegnimento alla riaccensione non si sia mosso? Potresse essere altro che una fonte di errore.

 

Grazie lele , ma ...non è la prima volta che lo uso....e mi funziona.....

adesso non riesco ad allegare immagini , ma lo ho fatto ultimamente per il conteggio di rotazione di un albero dove  è avvolto un tendove "veloce"   tipo magazzino , di quelli alti 4 metri che si aprono nel giro di pochi secondi...anche se va via corrente, nella DB mi rimane il dato dell'ultimo conteggio

 

42 minuti fa, max.bocca ha scritto:

Ma sentito che si possa rendere ritentivo hsc,

però max , perchè una volta trasferito il valore in una db , non posos renderlo ritentivo ?   non il contatore che si azzera, ma il valore nella DB ?  al pari di un conteggio pezzi o di un lotto , che se dichiaro come ritentivo , anche se va via corrente...rimane

 

42 minuti fa, batta ha scritto:

Tutt'altra cosa è mantenere in memoria un valore che, se l'asse viene mosso quando il plc non è alimetato, dopo non sarebbe più attendibile.

si , mi è capitato , i meccanici muovo l'asse per manutenzione  , e allora richiedo un all'accensione di una macchina un azzeramento

 

43 minuti fa, batta ha scritto:

Prima di procedere con metodi per memorizzare il valore di un contatore veloce, è indispensabile analizzare cosa accadrebbe in caso di ripartenza con quota errata. Se si parla solo di lievi inconvenienti, memorizzare una quota per evitare di dover fare un azzeramento dell'asse ad ogni accensione ha senso. Nel caso una quota errata possa provocare danni, non c'è scelta: all'accensione, si effettua la ricerca del riferimento dell'asse.

esatto , ma in questa applicazione , che usa un motore autofrenante  e per di piu ridotto di velocità con un inverter , considero lieve  l'inconveniente .

 

ho settato un encoder ifm per una risoluzione bassa  ( 100 impulsi giro )  , su un albero che ne fa meno di 7 giri .  Considero 0 impulsi una determinata posizione , e 650.....675 l'opposto

alle volte il freno cede un po , e mi fermo a contare circa 3...quindi 0 o 3 , vuole dire un errore del 3% su un giro completo....accettabilissimo per il mio caso....se manca tensione , che il conteggio fosse 3..o 2  o meno 2  torna a 0 , e fino a qui va bene

se quando ho compiuto i giri , esempio leggo 650 impulsi , se manca corrente , aimè il contatore vale 0 , e quindi manualmente viene fatto ruotare in modo manuale e una vola arrivato in posizione , con un pulsante, faccio acquisire lo 0

 

Domani appena posso , vado a vedere cosa succede  sul programma gemello fatto 1 anno fa con la 1214 , che funziona,.,.,..

 

io per adesso vi ringrazio e vi auguro una buona notte

Link al commento
Condividi su altri siti

Ma con quale versione di TIA usi il contatore veloce, non vorrei che tale possibilità fosse possibile con le vecchie versioni di TIA,

non capisco perchè con un modello di PLC riesci a fare quello che dici e con un altro no

Link al commento
Condividi su altri siti

12 minuti fa, leleviola ha scritto:

non capisco perchè con un modello di PLC riesci a fare quello che dici e con un altro no

 

Potrebbero esserci differenze tra i 2 modelli. E solo un'ipotesi, visto che non conosco la serie 1200.

Link al commento
Condividi su altri siti

12 ore fa, luigi69 ha scritto:

perchè una volta trasferito il valore in una db , non posos renderlo ritentivo ?   non il contatore che si azzera, ma il valore nella DB ?  al pari di un conteggio pezzi o di un lotto , che se dichiaro come ritentivo , anche se va via corrente...rimane

Succede questo:
- L'ultima operazione prima dello spegnimento è un trasferimento del valore corrente del HSC nella variabile ritentiva.
- All'accensione, per un attimo nella variabile ritentiva c'è il valore precedente ma, subito dopo, in quella stessa variabile ci vai a copiare il valore corrente del HSC che, alla riaccensione, vale zero (o altro valore configurato).

Quindi, se vuoi che il tuo HSC riparta dal valore che aveva al momento dello spegnimento, nell'OB Startup devi inserire un'istruzione per impostare il valore corrente del HSC con il valore memorizzato nella variabile ritentiva.

 

1 ora fa, leleviola ha scritto:

Ma con quale versione di TIA usi il contatore veloce, non vorrei che tale possibilità fosse possibile con le vecchie versioni di TIA,

Potrei anche sbagliare, ma non mi risulta.
Anche perché una eventuale ritenzione del valore corrente del HSC non dipende dalla versione del TIA, ma sarebbe, casomai, una caratteristica dell'hardware. E, sebbene io non usi molto il 1200, non mi sono mai imbattuto in contatori veloci ritentivi. E, anche ammesso che ci siano, si troverebbe l'impostazione nella configurazione hardware.

 

Tutto cambia, ovviamente, se al posto dei contatori veloci della CPU si usa un encoder assoluto con relativo modulo, ma non mi pare sia questo il caso.

Modificato: da batta
Link al commento
Condividi su altri siti

1 ora fa, batta ha scritto:

Quindi, se vuoi che il tuo HSC riparta dal valore che aveva al momento dello spegnimento, nell'OB Startup devi inserire un'istruzione per impostare il valore corrente del HSC con il valore memorizzato nella variabile ritentiva.

siccome il PLC tra le prime operazioni che fa quando si avvia è porre a zero i registri

bisogna vedere se il PLC esegue prima l'OB Startup oppure il porre a zero i contatori veloci, se il porre a zero gli HSC lo fa dopo l'OB Startup sei fregato oppure usi un merker di clock con il bit di prima scansione e alla prima scansione fai caricare il valore salvato del contatore

Link al commento
Condividi su altri siti

30 minuti fa, leleviola ha scritto:

bisogna vedere se il PLC esegue prima l'OB Startup oppure il porre a zero i contatori veloci

Non conta cosa mette a zero per prima, perché il trasferimento del valore corrente dal HSC alla variabile nel DB viene fatto da programma, quindi, fino a quando non viene richiamata l'istruzione per leggere il valore corrente del HSC, nella variabile del DB rimane l'ultimo valore.
A questo punto, se in OB Startup si imposta il valore corrente del HSC, quando questo poi verrà letto sarà uguale al valore che aveva prima dello spegnimento.
Poi, se questa operazione anziché farla in OB Startup si preferisce farla con il flag di prima scansione, è solo una scelta personale. Importante è che venga eseguita prima della lettura del HSC.

Link al commento
Condividi su altri siti

Buongiorno

 

ieri non sono riuscito a provare nulla, nel senso del discorso di leggere un bit prima che la CPU "muoia"

Adesso , per almeno 3 gg , causa una importante visita , non mi lasciano aprire i quadri per dare  l'impressione che ci sia qualche cosa di rotto....

Nel frattempo mi sto muovendo per avere una 1214 da sostituire eventualmente al volo e capire se davvero il problema risiede in questo , rispetto ala 1212 

Impresa pu che mai disperata , visto che in giro è tutto mancante , ho provato in vari canali , e mi sto muovendo in tal senso

 

@max.bocca   il lavoro praticamente identico di 1 anno fa , con una 1214  1AG40  firmware 4.2

il lavoro con tre contatori di un altro macchinario , sempre una 1214 1AG40  sempre 4.2

 

questo lavoro , una CPU 1212   1AE40  firmware 4.2

 

Grazie e buona giornata

Link al commento
Condividi su altri siti

17 minuti fa, luigi69 ha scritto:

nel senso del discorso di leggere un bit prima che la CPU "muoia"

Ma se ad ogni scansione prendi il tuo valore e lo trasferisci nella tua DB a ritenzione sei sempre aggiornato e quando si spegne il plc il tuo valore è già aggiornato, ed è li quando riaccendi il plc.

Link al commento
Condividi su altri siti

1 ora fa, acquaman ha scritto:

se ad ogni scansione prendi il tuo valore e lo trasferisci nella tua DB a ritenzione sei sempre aggiornato e quando si spegne il plc il tuo valore è già aggiornato, ed è li quando riaccendi il plc.

 

Se iltempo di ciclo è piccolo e la frequenza massima da contare è bassa allora si può fare, altrimenti rischi di avere errori non trascurabili

Tanto per fare un esempio.

Encoder 1000 impulsi giro su motore da 3000 rpm, corrisponde una frequenza massima pari a 50000Hx, ovvero 20µs per impulso. Con un tempo di ciclo di 1ms già puoi avere 50 conteggi di errore.

Link al commento
Condividi su altri siti

21 ore fa, Livio Orsini ha scritto:

Se iltempo di ciclo è piccolo e la frequenza massima da contare è bassa allora si può fare, altrimenti rischi di avere errori non trascurabili

Memorizzare il valore di un contatore veloce è concettualmente sbagliato. Tanto per cominciare, si può fare solo se un eventuale errore non causa danni.
In quanto agli eventuali errori, l'unico modo per non averne è che lo spegnimento della cpu avvenga quando il sistema è fermo (spengo il quadro a fine lavoro).
Nel caso di iterruzione dell'alimentazione con il sistema in movimento, non c'è nessun modo per evitare l'errore che deriva dall'inerzia del sistema, che si muove ancora quando il contatore ha smesso di contare (escluso, ovviamente, l'utilizzo di un encoder assoluto).
 

 

23 ore fa, luigi69 ha scritto:

ieri non sono riuscito a provare nulla, nel senso del discorso di leggere un bit prima che la CPU "muoia"

A volte ho l'impressione che tu non abbia letto quello che ho scritto.
Non ti serve un bit "prima che la cpu muoia" perché, come ti ho già detto, e come ha ribadito Acquaman, tu ad ogni ciclo trasferisci il valore del HSC nella variabile ritentiva del DB, quindi anche nell'ultimo ciclo in cui la cpu era ancora attiva.
Devi solo usare questa variabile, alla riaccensione, per impostare il valore corrente del HSC.

 

Poi, io continuo ad essere estremamente scettico sul fatto che con la 1214 ti rimanga il valore del HSC anche dopo lo spegnimento, perché sono sempre convinto che non esistano cpu S7-1200 con HSC ritentivi.

Link al commento
Condividi su altri siti

1 ora fa, batta ha scritto:

Memorizzare il valore di un contatore veloce è concettualmente sbagliato.

-----
Nel caso di iterruzione dell'alimentazione con il sistema in movimento, non c'è nessun modo per evitare l'errore che deriva dall'inerzia del sistema, che si muove ancora quando il contatore ha smesso di contare (escluso, ovviamente, l'utilizzo di un encoder assoluto).

 

Non è sempre così; ci sono casi in cui in assenza di alimentazione il sistema si blocca.

Bisogna sempre valutare caso per caso.

 

Anche memorizzare il conteggio a macchina ferma non sempre da la garanzia di posizione corretta, ci sono casi in cui a macchina spenta la posizione può essere mossa manualmente.

 

Ripeto: bisogna sempre valutare il singolo caso.

Link al commento
Condividi su altri siti

5 ore fa, Livio Orsini ha scritto:

Non è sempre così; ci sono casi in cui in assenza di alimentazione il sistema si blocca.

Qualsiasi arresto non potrà mai essere assolutamente istantaneo, perché richiederebbe un'accelerazione infinita.
Se il sistema ha una bassa inerzia commetterò un errore piccolo, ma un errore ci sarà sempre, a meno che l'alimentazione del PLC non venga garantita fino ad arresto avvenuto.
Se l'arresto avviene in qualche decina di millisecondi, probabilmente i condensatori dell'alimentatore sono in grado di tenere attivi CPU ed encoder per un tempo sufficiente.

 

5 ore fa, Livio Orsini ha scritto:

Anche memorizzare il conteggio a macchina ferma non sempre da la garanzia di posizione corretta, ci sono casi in cui a macchina spenta la posizione può essere mossa manualmente.

Sì, è già stato detto.
La ripartenza del sistema con l'ultimo valore letto senza procedere con un nuovo homing, si può fare solo se un'eventuale posizione errata non comporta danni, ma solo inconvenienti facilmente risolvibili.
E la certezza non si ha nemmeno con encoder assoluti, perché se il meccanico smonta il motore (o qualche altro organo meccanico), o tutto viene rimontato esattamente com'era, oppure si dovrà ripetere l'homing.

Link al commento
Condividi su altri siti

15 minuti fa, batta ha scritto:

Se l'arresto avviene in qualche decina di millisecondi, probabilmente i condensatori dell'alimentatore sono in grado di tenere attivi CPU ed encoder per un tempo sufficiente.

 

Appunto.

 

 

Link al commento
Condividi su altri siti

Buon pomeriggio , scusate il ritardo nella mia risposta , grazie a voi dell'interessamento .

Non sono stato piu sull'impianto , dove spero non vada via corrente , altrimenti... sono fregato

La prossima settimana sarò invece su un impianto dove avevo tre encoder con  una 1214 e avevo i dati "ritentivi "

 

appena ho la possibilità vi aggiornerò sulle due soluzioni : provare con una 1214 o salvare  l'ultimo dato utile .

 

Buon proseguimento

Link al commento
Condividi su altri siti

  • 2 weeks later...

Forse non ho capito bene la domanda o non capisco il problema..

 

-crei una variabile ritentiva

-la tieni aggiornata col valore del contatore

-all'accensione col bit di first-scan copi il valore della tua variabile ritentiva nel contatore

 

Ciao

 

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