Vai al contenuto
PLC Forum


Forzatura Ingressi s7_300 e Step7_v5.5


rossiroberto

Messaggi consigliati

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

 

Modificato: da rossiroberto
Link al commento
Condividi su altri siti


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.

Modificato: da batta
Link al commento
Condividi su altri siti

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.

 

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