rafanto Inserito: 12 gennaio 2006 Segnala Inserito: 12 gennaio 2006 Ciao a Tutti, è la prima volta che utilizzo la scheda fm350-1 di conseguenza sono poco esperto. Il mio problema è il seguente:impostando un valore da OP7 vorrei che il mio motore si fermi quando l'encoder collegato ad una ruota metrica raggiunga lo stesso valore da me impostato. Inizialmente ho realizzato il mio programma nel seguente modo: L DB1.DBD0 // VALORE IMPOSTATO DA OP7 L DB2.DBD34 // VALORE ATTUALE ENCODER ==d S A0.1 // VALORE RAGGIUNTOpurtroppo non funziona perchè la velocità e cosi' elevata che il PLC non riesce ad impostare la mia uscita a 1. Attualmente per riuscire a fermare il motore ho realizzato la seguente funzione: L DB1.DBD0 // VALORE IMPOSTATO DA OP7 L DB2.DBD34 // VALORE ATTUALE ENCODER >=d S A0.1 // VALORE RAGGIUNTOpurtroppo come potete immaginare il sistema non è preciso.Grazie per la collaborazione.
Luca Bab Inserita: 13 gennaio 2006 Segnala Inserita: 13 gennaio 2006 Non so' bene come lavora la 350 ( pero' penso che tu possa fare degli interupt )comunque se vuoi guadagnare un po' di precisione , quando vuoi fermare il motore devi aggiornare l'immagine delle uscite immediatamente ( se no lo fa siemens a fine programma )ciaoLuca
luigi69 Inserita: 13 gennaio 2006 Segnala Inserita: 13 gennaio 2006 ciao ti spiego come ho fatto io che ho usato la 350 per leggere una riga otticail tuo principio e' giusto pero' devi dargli una certa tolleranza, maggiore e minorequesto perche' tempo che leggi l'encoder, lo elabori, cade il teleruttore o fermi l'azionamento, cade il freno meccanico sul motore......di tempo ne passa !se tu legi le tacche dell'encoder...e che so...nella tua applicazione corrispondono ad un movimento che so...di un carrello...per prima cosa guarda cosa leggi dall'encoder per capire quale e' la tolleranza meccanica ed elettronica del tuo sistemadevi impostare lo spostamento di un asse di 10 mm ed hai una risoluzione del tuo sistema di..che so... 1 decimo...tu imposti la quota a 10 mm sull'op che tramite una semplice moltiplicazione convertirai nel plc in decimi cioe' 10 mm = 100 decimicrei la tolleranza negativa ovvero 100-1 decimo 99crei la tolleranza positiva ovvero 100+1 decimo 101se il valore che tu leggi e' maggiore di 99 e minore di 101 allora la tua quota e' oki confronti li fai con il metodo classico, appoggi in DB e fai maggiore-uguale o minore-ugualenel mio esempio la tolleranza e' un po troppo ristretta...era per fare un esempio
rafanto Inserita: 13 gennaio 2006 Autore Segnala Inserita: 13 gennaio 2006 Grazie per la collaborazione. A presto
walterword Inserita: 14 gennaio 2006 Segnala Inserita: 14 gennaio 2006 piccolo consiglio sulle FM....Io leggo dalla periferia il contatore che si trova 4 bytes dopo il byte iniziale esempio la scheda e` configurata in pew200 , leggi il dint 204 e ti restituisce il contatore , senza usare fc o db o stupidate varie che fanno solo casini e appesantiscono il ciclo per niente .Poi ti crei una funzione alla quale passi il contatore e con 2 registri gestisci la memoria del valore nel ciclo precedente e quello attuale in modo tale da ottenere un delta_pulses che sommerai al tuo contatore finale .In questo modo non dovrai preoccuparti di resettare o stare attento all`overflow o altre stupidate aggiunte dei cugini di casa siemens e vai dritto sparato senza problemi .Quando devi resettare o presettare azzeri la tua variabile finale Con questo metodo io e molti colleghi abbiamo risolto molti problemi all`inizio incalcolabili
rafanto Inserita: 14 gennaio 2006 Autore Segnala Inserita: 14 gennaio 2006 Grazie per la collaborazione.
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