Vai al contenuto
PLC Forum


Fm350-1


Messaggi consigliati

Inserito:

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 RAGGIUNTO

purtroppo 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 RAGGIUNTO

purtroppo come potete immaginare il sistema non è preciso.

Grazie per la collaborazione.


Inserita:

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 )

ciao

Luca

Inserita:

ciao ti spiego come ho fatto io che ho usato la 350 per leggere una riga ottica

il tuo principio e' giusto pero' devi dargli una certa tolleranza, maggiore e minore

questo 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 sistema

devi 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 decimi

crei la tolleranza negativa ovvero 100-1 decimo 99

crei la tolleranza positiva ovvero 100+1 decimo 101

se il valore che tu leggi e' maggiore di 99 e minore di 101 allora la tua quota e' ok

i confronti li fai con il metodo classico, appoggi in DB e fai maggiore-uguale o minore-uguale

nel mio esempio la tolleranza e' un po troppo ristretta...era per fare un esempio

Inserita:

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

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