Vai al contenuto
PLC Forum


Simulazione E Realtà - Perché differiscono?


dcr

Messaggi consigliati

Ciao a tutti.

Non ho molta esperienza nella programmazione di PLC ma qualcosa comincio a capire. Ogni tanto approfitto della vostra pazienza perche non sempre mi è tutto chiaro. Questa è una di quelle volte...

Ho scritto un programma che gestisce automaticamente delle uscite (con dei timer e un'entrata analogica) che io posso variare anche tramite un pulsante. Funziona tutto tranne la gestionde dell'entrata analogica. In pratica, il Logo dovrebbe leggere un sensore di temperatura e, a seconda del suo valore, attivare o disattivare un riscaldatore. Ho aggiunto un ritardo nell'accensione e spegnimento per evitare che il relè si attivi e disattivi decine di volte quando la temperatura oscilla tra i valori di attivazione e disattivazione.

Provo il tutto con la simulazione e funziona perfettamente. Carico il programma nel logo e... niente!!! L'uscita non si attiva mai! Come è possibile che la simulazione e la realtà si comportino in maniera cosi diversa? E soprattutto come posso riuscire a capire dove ho sbagliato?

Se qualcuno vuole, posso inviare il programma via mail...

Grazie

Link al commento
Condividi su altri siti


Si, certo. A parte il fatto che mi pare che tutti i logo abbiano 2 ingressi analogici, sul display visualizzo il valore della temperatura ed è corretto...

Link al commento
Condividi su altri siti

... mi pare che tutti i logo abbiano 2 ingressi analogici ...

Non credo, solo quelli alimentati in continua possono avere ingressi analogici, se non ho interpretato male il manuale.

Comunque tu rilevi e visualizzi una temperatura, quindi l'ingresso sembra arrivare al logo. Hai usato un'uscita fisica esistente nel Logo o per caso hai usato un'uscita che esiste nell'immagine di processo ma non corrisponde a nessuna uscita fisica? (es usare Q20, quando tu hai solo 12 uscite fisiche). La temperatura visualizzata rientra nel rango in cui l'uscita dovrebbe essere attiva? Hai provato con lo strumento Test Online a vedere cosa succede dentro a Logo?

Link al commento
Condividi su altri siti

Ah, non sapevo della mancanza di entrate analogiche nei logo a CA...

Per rispondere alle tue domande, l'entrata e l'uscita funzionano. Come dicevo, Logo legge e visualizza sia la temperatura, sia lo stato dell'uscita. L'uscita è anche attivabile da pulsante e funziona. Quindi le connessioni "fisiche" funzionano. Mi piacerebbe capire perchè invece la logica funzioni solo nella simulazione.

Inoltre ho provato il funzionamento con temperature in cui l'uscita dovrebbe essere attiva e con quelle in cui dovrebbe essere disattiva. Ma l'uscita è sempre spenta (a meno che non la attivi io con il pulsante).

Invece non avevo idea dell'esistenza dello strumento "test online"... Ora che ho visto nella guida in linea come funziona, lo proverò. Io programmo in LAD, dovrò convertire il programma in FBD. Inoltre devo capire come limitare il test ai parametri di 30 blocchi...

Modificato: da dcr
Link al commento
Condividi su altri siti

Rieccomi! Grazie ai tuoi suggerimenti, qualcosa in più ho capito. Ho eseguito il test online e ho capito il motivo per cui l'uscita non viene mai attivata. Ho inserito un ritardo di 1 min nell'accensione e spegnimento, in modo da non attivare e disattivare continuamente l'uscita quando questa balla tra intorno al limiti di attivazione/disattivazione. Nella simulazione, questo timer viene resettato tutte le volte che il valore analogico entra e esce dal limitre di arrivazione/disattivazione, mentre non viene modificato quando la temperatura balla tra 2 valori dello stesso stato (attivato o disattivato). Nella realtà, invece, il conteggio viene resettato tutte le volte che la temperatura varia.

Mi rimangono 2 quesiti:

1- perchè nella simulazione e nella realtà ci sono 2 comportamenti diversi?

2- mi pare davvero difficile credere che la temperatura non sia mai rimasta invariata per almeno 1 minuto (che è il tempo di ritardo impostato), dal momento che in un giorno è scesa in maniera costante da 28 a 21. Considerando che la discesa è stata costante, possibile che non ci sia stato un minuto in cui la temperatura è rimasta costante (non leggo i decimali)? Proprio per verificare il funzionamento, ho inserito un contatore che contava quante volte l'uscita è stata attivata ed è rimasto sempre a 0.

Link al commento
Condividi su altri siti

Anch'io come te ho programmato poche volte i PLC (per fortuna sempre con successo.. :thumb_yello: )ed ho capito una cosa: quando mi avventuro su cose che non ho mai provato, prima realizzo dei test con dei programmi il più semplice possibile e poi via via li complico aggiungendo quello che ho intenzione di mettere nel programma definitivo. Se tutto va bene realizzo il programma.

Visto che però, ora, hai capito il problema, non riesci ad aggirarlo? Tipo aggiungendo qualche memoria sulla lettura della temperatura?

Purtroppo ho programmato solo i Siemens S7-200 e mai i Logo!..

Link al commento
Condividi su altri siti

Non sono un guru della programmazione di PLC, mi sono avvicinato a questo mondo solo da alcuni mesi, perciò potrei fare delle affermazioni non del tutto corrette: cosa hai usato per attivare e disattivare l'uscita? Usando un commutatore analogico di valore di soglia (scusa la traduzione maccheronica) c'è la possibilità di settare un valore di attivazione diverso da quello di disattivazione, senza la necessità di usare un temporizzatore per creare una isteresi. Che soluzione hai adottato tu?

Link al commento
Condividi su altri siti

Ecco, finalmente sono riuscito a caricare un'immagine della parte di programma incriminata. Il problema è che il sensore non legge i decimali e io vorrei che l'uscita fosse attivata quando la temperatura scende sotto i 23, e disattivata dai 23 in su. Senza il ritardo nell'attivazione, quando la temperatura era compresa tra 22 e 23 e la lettura ballava tra questi 2 valori, il relè continuava a scattare.

Modificato: da dcr
Link al commento
Condividi su altri siti

Mi sembra una soluzione un po' complicata. Hai provato, ad esempio un interruttore a valore di soglia analogico, con un gain di 10, puoi accenderlo a 225 (che sarebbero i 22.5 gradi) e spegnerlo a 235 (che sarebbero 23.5 gradi).

Come suggerito da Ulisse, prova a fare un piccolo programmino solo per questa funzione, e poi lo implementi in ciò che stai facendo.

Link al commento
Condividi su altri siti

Nella simulazione tutto funziona perchè la tua lettura sull'ingresso analogico è perfettamente COSTANTE, cosa che non lo è nella realtà.

L'ingresso analogico del logo è a 10 bit, (1024 step) pertanto non riuscirai a leggere una temperatura perfettamente costante, ma essa sarà sempre un po’ ballerina. Questo argomento è stato già trattato diverse volte, veri questa discussione di pochi giorni fa:

http://www.plcforum.it/forums/index.php?showtopic=59085

Pertanto se vuoi un setpoint molto ristretto (attivazione a 23 gradi e disattivazione a 22,9) o qualcosa di simile non credo che sia possibile. Ti consiglio di verificare di quanti gradi o decimi oscilla la lettura, e darti un setpoin leggermente superiore. In tal modo con i giusti ritardi di attivazione e disattivazione dovresti riuscire a stabilizzare la tua uscita.

Ovviamente molto dipende anche dalla sonda da te utilizzata che fino ad ora non è stata mai menzionata.

Ciao

Modificato: da baltimora
Link al commento
Condividi su altri siti

Io sto usando un LM35 come sensore di temperatura. Come dicevo, non leggo i decimali e il valore può quindi ballare di 1°C.

Come ho scritto sopra, il problema non sta nella lettura, ma nel diverso funzionamento di logo e simulazione. Nella simulazione il ritardo che ho dato per attivazioe e disattivazione parte soltanto quando si ha un passaggio dalla soglia (nel mio caso 23°C). Quindi, per fare un esempio, il timer parte a conteggiare quando la temperatura passa da 22 a 23 o da 23 a 22, mentre non parte quando passo da 22 a 21 o da 10 a 11, ecc...

Nel funzionamento del logo, invece, il timer parte per qualunque variazione e quindi la temperatura deve rimanere costante per tutto il tempo del timer.

Se il logo funzionasse come la simulazione, sarebbe tutto a posto.

Poi, come dicevo, probabilmente c'è anche un secondo problema che non ho ancora identificato, dato che dubito che il sensore non sia rimasto fermo per neppure un minuto in un giorno (in cui ho avuto un calo di soli 7°C).

Link al commento
Condividi su altri siti

Allora come ti hanno già detto i logo con ingressi analogici oviamente sono solo i modelli in DC,ma solo dalla versione 0BA5 che ne ha 2, AI1 che è l'ingresso 7 e AI2 che è l'ingresso 8,mentre la versione 0BA6 ne ha 4 di ingressi analogici,AI1=IN1 AI2=IN2 AI3=IN7 AI4=IN8,poi se vuoi usare sonde di temperatura senza usare il modulo suo del logo è un pò più dificile ma possibilissimo,solo che ti conviene programmare in FBD,è più comprensibile,sopratutto per le varie proprietà dei blocchi che userai,nel tuo esempio non hai specificato che tipo di sensore hai scelto ne che tipo di misura,queste cose le trovi nelle proprietà dei blocchi ,poi ti consiglio di usare anche un blocco amplificatore segnale analogico , e quando fai la simulazione è meglio ancora,casomai ti invio un esempio,BYE.

Modificato: da rfabri
Link al commento
Condividi su altri siti

Utilizzo il logo con gli ingressi analogici (e non solo) da anni, come del resto anche quasi tutte le persone che ti hanno risposto. L' utilizzo spesso con sensori di pressione analogici in uno ad inverter (gestiti dall'uscita analogica del logo per la regolazione della pressione di liquidi in tubazioni, ma è la prima volta che sento dire che la "simulazione rispetto alla realtà è differente". In genere le uniche cose differeti che ho riscontrato tra la simulazione e la realtà sono stati quelle cose che nella simulazione rispetto la realtà non possone essere simulate se non manualmente come il fluttuare dell'ingresso analogico o "l'antirinbalzo". A questo punto sarei curioso di sapere se qualche altro utente ha mai riscontrato qualcosa del genere. Ti consiglio di postare integralmente il tuo progetto in modo che qualcuno possa dargli un'occhiata e dirti dove sia l'errore, oppura accetta l'aiuto di rfabri.

Ciao

Modificato: da noviltec
Link al commento
Condividi su altri siti

salvi il tuo progetto del logo poi lo zippi è lo carichi su un host tipo Rapidshare o 2shared,poi metti il link qui sul forum (come con le immagini con ImageShack) per poi andarlo a visionare o scaricare,BYE.

Link al commento
Condividi su altri siti

Abbi pazienza perche ieri ho avuto dei problemi,il tuo l'ho scaricato e ho dato un occhio,è un pò troppo machinoso ma poi con pazienza lo snellirai,per il controllo temperatura non va bene proprio,non c'è un bel sistema per settare la temperatura e poi non c'è un controllo ideale,e mancano degli allarmi,BYE.

Link al commento
Condividi su altri siti

Ciao. grazie per i suggerimenti.

Per il settaggio della temperatura, non importa perchè è costante e quindi non richiede interventi. Lo sesso dicasi per gli allarmi che non credo siano necessari... Se invece hai delle proposte per il controllo dell'uscita (che ora non funziona), te ne sono grato. Ciao

Link al commento
Condividi su altri siti

Ciao a tutti. Sono ancora esterrefatto per la simulazione non attinente alla realtà e, forse, per il mio derivante pessimo umore, non sono molto lucido.

Sto provando a modificare il mio programmino e non capisco cosa stia succedendo. Ho scritto un programma semplicissimo:

1 entrata analogica

1 amplificatore analogico

1 testo di segnalazione.

Da quel che dice la guida, l'amplificatore analogico dà un'uscita pari a: (Ax*gain)+offset.

Quindi mi aspetto che se impongo offset=0 e gain=2 otterrò un valore in uscita doppio di quello letto dall'entrata analogica. Con gain=10, avrò un valore 10 volte quello letto. Invece NO!!! Per esempio con gain=2 ho:

0=0

1=2

2=2

3=4

4=4

5=6

...

Con gain=10 ho:

0=0

1=0

2=0

3=0

4=0

5=10

6=10

7=10

8=10

9=10

10=10

11=10

12=10

13=10

14=10

15=20

16=20

....

Che cavolo sta succedendo?? Qualcuno sa darmi una qualche spiegazione prima che lanci tutto sul muro? Grazie mille a tutti

Link al commento
Condividi su altri siti

E' normale,non devi fare questo tipo di conftonto , non è semplice da spiegare,se lasci il gain a uno vedi che il tuo ingresso 0:10V viene diviso in mille parti ,se metti il gain a 2 ti trovi che il fondo scala è diventato 2000,la simulazione che hai fatto tu con gain a 10 in pratica è impossibile averla e quindi hai un un valora interpretato dal logo ,pensa come si possa dividere 10V in 100000 parti e poi mostrartele in simulazione,per la mia esperienza con il logo sugli ingressi analogici il gain lo devi usare solo per adattare il valore letto in ingresso ai risultati che ti servono,so di non essere stato chiarissimo,ma se provi a giocare con una PT100 ti accorgerai che leggendo la temperatura con un buon termometro di precisione dovrai ritoccare i valori letti dalla PT100 del logo per poi avere una visualizazione e temperature di lavoro reali,quindi giocherai con gain, offset, virgole dei decimali e matematica analogica,BYE.

Link al commento
Condividi su altri siti

Ciao, Rfabri.

A dir la verità, non ho capito proprio niente. Ti spiego qual'era il mio scopo così, se vuoi, puoi dirmi se sia fattibile. Io sto usando un sensore di temperatura LM35, il quale dà in uscita 10mV/°C con 0mV a 0°C. Quindi l'uscita del Logo (nella sua scala originale) mi dà già i gradi centigradi, senza bisogno di alcuna linearizzazione. Io pensavo ora di moltiplicare per 10 l'uscita e spostare la virgola di un posto per vedere se riuscivo a leggere anche i decimi di grado. E' fattibile in qualche modo?

Link al commento
Condividi su altri siti

  • 2 weeks later...

TI è già stata data una risposta in merito. Il problema è la risoluzione dell'ingresso analogico. Sotto una certa sensibilità non lo puoi fare.

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