rossiroberto Inserito: 30 aprile 2020 Segnala Share Inserito: 30 aprile 2020 (modificato) 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: 30 aprile 2020 da rossiroberto Link al commento Condividi su altri siti More sharing options...
batta Inserita: 30 aprile 2020 Segnala Share Inserita: 30 aprile 2020 (modificato) 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: 30 aprile 2020 da batta Link al commento Condividi su altri siti More sharing options...
rossiroberto Inserita: 30 aprile 2020 Autore Segnala Share Inserita: 30 aprile 2020 Grazie Batta! Mi studiero il "ricablaggio". Roberto Link al commento Condividi su altri siti More sharing options...
Cialtrone Inserita: 30 aprile 2020 Segnala Share Inserita: 30 aprile 2020 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 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