Jump to content
PLC Forum


rossiroberto

Forzatura Ingressi s7_300 e Step7_v5.5

Recommended Posts

rossiroberto

Buongiorno a tutti!

su un attuatore pneumatico sono montati i due finecorsa delle due posizioni che può assumere, uno di questi finecorsa (E10.0) si è guastato e non avendo il ricambio, per finire la produzione l'ho "sostituito" in OB1  con un timer che sia avvia sull'uscita della elettovalvola (che comanda l'attuatore in questione) e che dopo 2 secondi setta un bit in una DB (DB10.DBX0.0) .

L'ingresso del finecorsa guasto è usato direttamente circa 40 volte  all'interno di una decina di funzioni (chi ha scritto il programma non ha usato una tabella I/O in cui appoggiare su variabili interne gli ingressi!).

Visto il poco tempo a disposizione e la provvisorietà della cosa , per non modificare in tutti i 40 punti il programma ho risolto inserendo all'inizio di ogni funzione in cui era utilizzato l'ingresso:

U DB10.DBX0.0

= E10.0

 

Penso che anche se  funzionante la soluzione sia poco ortodossa e volevo chiedere, per cultura personale, se ne esiste un altra oppure se questa può essere migliorata (velocizzata) eseguendo magari la forzatura in un solo punto del programma anzichè in ogni funzione in cui l'ingresso è utilizzato.

 

Grazie

Roberto

 

Edited by rossiroberto

Share this post


Link to post
Share on other sites

batta

Ti basta mettere quell'istruzione all'inizio di OB1.
Oppure, in Simatic Manager, puoi fare il "ricablaggio", e sostituire in automatico, in tutto il programma, l'ingresso con un merker.

Edited by batta

Share this post


Link to post
Share on other sites
rossiroberto

Grazie Batta!

Mi studiero il "ricablaggio".

Roberto

Share this post


Link to post
Share on other sites
Cialtrone

Tanto per approfondire:

Prima della scansione di OB1, lo stato degli ingressi viene letto e trasferito su una tabella (IPI=immagine processo ingressi).

Durante la scansione del programma, salvo istruzioni specifiche, viene interrogata questa tabella. Per questo motivo un ingresso non avrà mai due stati differenti in diversi punti del programma. Se era zero quando è cominciata l'elaborazione di OB1, sarà zero fino alla fine.

La tabella IPI può venire modificata con le istruzioni solite di scrittura, e da quel punto avrà lo stato assegnato.

Per questo basta mettere all'inizio dell'OB1 l'istruzione che scrive E10.0 (nel tuo caso) per avere quello stato durante tutta l'elaborazione del programma.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...