Ianion Inserito: 21 marzo 2011 Segnala Share Inserito: 21 marzo 2011 Ciao tutti.Al questo forum sono nuovo. Vorei chiedere una domandina.Ho un PLC S7-200. Sto programmando in KOP. Faccio un esempio.Dal programma MAIN chiamo una subroutin SBR0.Poi dal SBR0 chiamo un altra subroutin SBR1.Nel questa subroutin SBR1 attivo con assegna (=) uscita Q0.1Questa subroutin SBR1 e chiamata quando I1.0 e attivo nel SBR0.Tutto funziona la bobina si accende...Ma quando la SBR1 non vienne piu chiamata la uscita rimane sempre attivata.Come e posibile che la uscita e sempre attivata anche se la corrente non arriva mai a questa bobina nel SBR1.Aiuto! Link al commento Condividi su altri siti More sharing options...
mazzinga Inserita: 21 marzo 2011 Segnala Share Inserita: 21 marzo 2011 Come e posibile che la uscita e sempre attivata anche se la corrente non arriva mai a questa bobina nel SBR1.Quando non viene richiamata la SBR1 il suo contenuto non viene azzerato,ma viene semplicemente congelato per poi tornare al suo normale funzionamento una volta che richiami la SBR1 Link al commento Condividi su altri siti More sharing options...
Ianion Inserita: 5 aprile 2011 Autore Segnala Share Inserita: 5 aprile 2011 Non lo sapevo che si congelano anche le uscite. Comunque grazie per la risposta. Esiste un modo per comandare effetivamente le uscite dal sottoprogramma? Link al commento Condividi su altri siti More sharing options...
amed Inserita: 5 aprile 2011 Segnala Share Inserita: 5 aprile 2011 Quando una subroutine non è eseguita, non sono lette ed eseguti le istruzioni che essa contine. Non sono quindi più eseguite le istruzioni di comando di Q0.1 che mantiene così l'ultimo stato logico che vi è stato scritto. Con un fronte di discesa su I1.0 (QUANDO APRE E QUINDI SBR1 non è più eseguita) puoi resettare l'uscita (R Q0.1). Puoi anche fare in modo che la cessazione dell'esecuzione di una subroutine sia possibile aprendo I1.0 solo se tutte le uscite comandate nella subroutine sono spente. In questo caso devi mettere le uscite in Or con I1.0.E' un problema quello di fare sì che quando una subroutine non è più eseguita non ci siano uscite che sono rimaste accese. Questo problema si pone anche quando ci sono pezzi di programma sotto istruzioni di Salto.Ciao Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 5 aprile 2011 Segnala Share Inserita: 5 aprile 2011 La tecnologia dei processori logici programmabili Siemens (ma quasi certamente anche quella di altre case), all'interno del proprio tempo ciclico di elaborazione, prevedono 3 fasi pricipali in sequenza: l'elaborazione della PAA (immagine di processo degli ingressi), l'esecuzione dei comandi logici e l'elaborazione della PAE (immagine di processo delle uscite). In maniera semplicizzata, la cpu elabora lo stato dei segnali d'ingresso, tramite i comandi del programma esegue le sue direttive e, solo alla fine, elabora ed attribuisce lo stato alle uscite. Queste tre fasi pricipali, ovviamente, non avvengono in "tempo zero", ma si susseguono all'interno del tempo ciclo della cpu: più la cpu è lenta o più il programma da elaborare è appesantito da istruzioni, maggiore è il ritardo con cui un determinato ingresso causa l'accensione o lo spegnimento di un uscita. Se poi, tramite il caso in oggetto, una determinata subroutine non aggiorna la PAE dell'uscita richiamata in quella specifica subroutine, questa non può essere più "rinfrescata" e rimane congelata all'ultimo stato utile elaborato dalla fase di esecuzione dei comandi logici. Una possibile soluzione al problema esposto potrebbe essere quella di attribuire lo spegnimento dell'uscita sul Main, quando cioè si esce dal controllo del sottoprogramma: contrariamente a quanto si potrebbe essere portati a pensare, l'uscita si spegne davvero solo se durante l'aggiornamento dell'immagine di processo delle uscite non ci sono comandi contrastanti. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora