Vai al contenuto
PLC Forum


Processo Ciclico Con Contatore Con Cp1E-N20Dr-D


pallacanestro

Messaggi consigliati

Salve sono da poco alle prese con un PLC della OMRON precisamente il CP1E-N20DR-D della OMRON e devo realizzare un programma che mi consenta di fare l'invecchiamento di maniglioni antipanico impostando da pannello il numero di cicli.

Premetto che è la prima volta che uso il LADDER, anche se ne ho sempre sentito parlare.

Fino adesso sono riuscito ad attivare gli attuatori che mi consentono l'apertura e la chiusura del portone in funzione del loro posizionamento rilevato da cellule fotoelettriche. Quello che non riesco a fare e far ricominciare il ciclo e continuare fino a un determinato numero.

La logica da programmatore dice di far partire una subroutine ogni volta che il contatore decresce. Ma come creo una subroutine e come faccio a richiamarla ogni volta?

Gentilmente mi potrreste dare qualche consiglio o farmi avere un esempio?

Attendo e ringrazio

Claudio

Link al commento
Condividi su altri siti


Ciao, premetto che non conosco i plc omron, ma io procederei nel metodo classico: ogni volta che inizi un ciclo allo stesso tempo incrementi un contatore.

Con un blocco di confronto (uguale a) ripeti il tuo ciclo finchè il numero di cicli è uguale al numero di cicli impostati; a questo punto resetti il bit che dava luogo al ciclo, resetti il contatore ed attendi nuovi comandi.

Questo in linea generale, poi non conosco il problema nello specifico

Matteo

Link al commento
Condividi su altri siti

Ciao pallacanestro,

se hai necessità di usare le subroutine ti spiego io cosa sono:

una subroutine è praticamente una parte di programma che può essere richiamata più volte.

Per Omron esistono sue tipologie di subroutine: locali e globali.

Quelle locali devono essere definite e richiamate sempre e soltanto nello stesso task.

Chiamata della subroutine utilizzando l’istruzione SBS (anche in più punti del programma all’interno del task) e istruzioni SBN che determina l'inizio del "corpo" della subroutine e infine RET che determina la fine del "corpo" della subroutine.

Mentre quelle globali possono essere richiamate da più task differenti tramite l'istruzione GSBS. In questo caso tutte le subroutine globali devono essere definite all'interno del task ad interrupt 00 tramite le istruzioni GSBN e GRET.

ATTENTO a non associare ad una subroutine locale lo stesso numero già assegnato ad una subroutine globale e viceversa.

Spero di esserti stato d'aiuto.

CIAO!!! :thumb_yello:

Link al commento
Condividi su altri siti

se magari fai un piccolo schema del ciclo aiuterebbe, ma rimango dell'idea di fare un ciclo dando un on ciclo ed un off ciclo, e di ripeterlo le volte che vuoi con un incremento che raggiunto il valore voluto ferma il tutto

Link al commento
Condividi su altri siti

Se definisci un poco meglio il ciclo che devi eseguire potremmo aiutarti di più, in linea di massima se il processo è sempre uguale e cambiano solamente il numero di ripetizioni penso anch'io che la via più breve sia quella di un incremento o un contatore appoggiato ad una DM

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