Vai al contenuto
PLC Forum


Come Utilizzare Le Subroutine S7-200


alber to

Messaggi consigliati

Ciao a tutti, premetto che programmo sporadicamente e ogni volta devo ricordarmi come si fa...

Domandina molto semplice sulle subroutine.

Faccio un esempio banale: richiamo uno subr in cui viene attivata una uscita, all'uscita dalla subr (per uscita intendo quando viene tolta la condizione che l'ha chiamata) l'uscita riamane attiva. Mi sarei aspettato il contrario sinceramente.

Grazie mille

Link al commento
Condividi su altri siti


Mi sarei aspettato il contrario sinceramente

E perchè mai? L'S7-200 esegue ripetutamente una serie di task. L'esecuzione ciclica dei task viene definita ciclo di scansione.

Inizialmente avviene la lettura degli ingressi: l'S7-200 copia lo stato degli ingressi fisici nel registro di immagine di processo degli ingressi.

Poi c'è l'esecuzione della logica di controllo nel programma: l'S7-200 esegue le operazioni del programma e le memorizza nelle varie

aree di memoria. Per ultimo la scrittura nelle uscite: i valori memorizzati nel registro dell'immagine di processo delle uscite vengono scritti

nelle uscite fisiche.

Se prima di quest'ultimo task non viene dato il comando di spegnimento di un'uscita, il ciclo di scansione non incontrando mai questa istruzione non ha motivo per spegnerla.

Se vuoi essere sicuro di aver spento un'uscita attivata all'interno di una sub, sul main appena dopo il segmento di richiamo alla sub, devi condizionare la sua disattivazione.

Modificato: da busanela
Link al commento
Condividi su altri siti

grazie busanela (trevigiano come me)

me lo aspettavo ragionando a contatti, nel senso che il ramo principale della sub è spento e di conseguenza si spegne anche il segmento contatto+bobina dell'uscita. Invece se utilizzo ad esempio la funzione di set bit allora si mi aspetto che rimanga scritto in memoria anche all'uscita dalla sub, fino a quando un altra istruzione non lo resetta. Credevo che utilizzando le "bobine" avessero implicito l'autoreset se non sono alimentate. Anche con i temporizzatori ho visto che funziona che se non sono resettati ripartono a contare dall'ultimo valore con cui erano usciti dalla sub.

Se funziona cosi mi adeguo.

Grazie

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