Ciao a tutti
ho assolutamente bisogno di alcune informazioni sulla memorizzazione di alcune quote sulla base di segnali provenienti da un encoder incrementale installato direttamente sul motore. In poche parole come posso fare con un PLC Siemens, a fare si che i segnali provenienti da un encoder incrementale, vengano memorizzati nel momento in cui determinati sensori, si trovano nel punto desiderato?
Spero che qualcuno abbia la soluzione che fa per me, nel frattempo vi ringrazio e vi saluto tutti.
Ciao ciao
Encoder incrementale e PLC
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
14 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
LUCAP86 ha scritto:Ciao a tutti
ho assolutamente bisogno di alcune informazioni sulla memorizzazione di alcune quote sulla base di segnali provenienti da un encoder incrementale installato direttamente sul motore. In poche parole come posso fare con un PLC Siemens, a fare si che i segnali provenienti da un encoder incrementale, vengano memorizzati nel momento in cui determinati sensori, si trovano nel punto desiderato?
Tipicamente si deve collegare il segnale dell'encoder ad un determinato morsetto del PLC che contiene un contatore ad alta velocita'.
Questo contatore e' svincolato dalla velocita' del processore del PLC per non perdersi nessun impulso proveniente dall'encoder.
Nel programma poi, non conosco la specificita' Siemens, ma comunque ci sara' una funzione di contatore veloce che dovrai attivare.
Dovrai inoltre programmare un segnale proveniente da un finecorsa, che servira' per resettare il contatore (il punto zero).
Ora il contatore e' pronto per funzionare.
Naturalmente dovrai anche inserire delle soglie numeriche, ossia le quote dove vuoi che il motore si vada a posizionare, che dipendono sempre dalla funzione di controllo del contatore veloce.
Marco
Quel che ci dà la vera forza per affrontare con piacere la vita è il sentirsi utile agli altri. z.m.
Quel che ci dà la vera forza per affrontare con piacere la vita è il sentirsi utile agli altri. z.m.
-

m_dalpra
37,5k 6 10 12 - -EY Legend-

- Messaggi: 1155
- Iscritto il: 30 ago 2004, 11:04
- Località: Mestre (Venezia)
0
voti
Grazie mille ragazzi per le vostre risposte.
La procedura che mi descrivi Marco, per l'assegnazione di quote specifiche di posizionamento, deve essere fatta manualmente, nel senso che si devono inserire i parametri direttamente da computer all'interno del programma, oppure c'è la possibilità di fare una sorta di autoapprendimento delle quote?
La procedura che mi descrivi Marco, per l'assegnazione di quote specifiche di posizionamento, deve essere fatta manualmente, nel senso che si devono inserire i parametri direttamente da computer all'interno del programma, oppure c'è la possibilità di fare una sorta di autoapprendimento delle quote?
0
voti
Eh!
Questo sta nella fantasia del programmatore.
Le quote possono arrivare, ad esempio :
1. Da un PC con un software di supervisione
2. Da un Pannello industriale (talvolta touch-screen)
3. Da una pulsantiera con due tasti Avanti-Indietro e con un tasto Memo, che congela nella memoria del PLC quella posizione.
Le soluzioni comunque sono "infinite" !!
Ciao
Questo sta nella fantasia del programmatore.
Le quote possono arrivare, ad esempio :
1. Da un PC con un software di supervisione
2. Da un Pannello industriale (talvolta touch-screen)
3. Da una pulsantiera con due tasti Avanti-Indietro e con un tasto Memo, che congela nella memoria del PLC quella posizione.
Le soluzioni comunque sono "infinite" !!
Ciao
Marco
Quel che ci dà la vera forza per affrontare con piacere la vita è il sentirsi utile agli altri. z.m.
Quel che ci dà la vera forza per affrontare con piacere la vita è il sentirsi utile agli altri. z.m.
-

m_dalpra
37,5k 6 10 12 - -EY Legend-

- Messaggi: 1155
- Iscritto il: 30 ago 2004, 11:04
- Località: Mestre (Venezia)
0
voti
Penso di avere capito cosa vuole LUCAP86,
Acquisire "al volo" un valore di conteggio dell'encoder quando si attiva l'ingresso di un finecorsa.
Cominciamo......
LUCAP86 , Sei esperto di programmazione?
Supponiamo che la tua macchina +(PLC) gia' legga i valori di conteggio, quindi ci sia gia' correttamente configurato ed abilitato un contatore veloce HSC.... la sua routine di interrup ecc. ecc. sei gia' a buon punto.
A questo punto se hai solo bisogno di "catturare" tramite un segnale in ingresso il valore istantaneo devi usare una nuova routine di interrupt.
Prima cosa collega il tuo finecorsa all'ingresso I0.0
Poi nella SBR0 (sub. di inizializzazione) aggiungi questo network
LD SM0.0 // bit Always ON
ATCH INT_70, 0 //scatena evento 70 su fronte salita E0.0 (evento nr.0)
Ora devi creare un sottoprogramma di interrupt che si chiama INT70
Questo sottoprogramma, si attivera' se l'evento 0 e' vero indipendentemente dallo stato di esecuzione del programma (massima precisione di lettura posizione).
Nel nuovo INT70 inserisci questo nuovo network:
LD SM0.0 // bit Always ON
MOVD HC1, VD1000 //trasferisci valore reale istantaneo di HC1
Ho usato come esempio HC1 , cioe' il primo contatore della serie, tu ovviamente userai il tuo reale contatore ai cui ingressi e' collegato l'encoder.
Il valore letto "al volo" viene trasferito come doppia parola nella area di memoria da V1000 a V1003 compresa (risoluzione a 32bit) ed e' un numero intero con segno.
Poi fanne cio' che vuoi........
Ciao
Ivan
Acquisire "al volo" un valore di conteggio dell'encoder quando si attiva l'ingresso di un finecorsa.
Cominciamo......
LUCAP86 , Sei esperto di programmazione?
Supponiamo che la tua macchina +(PLC) gia' legga i valori di conteggio, quindi ci sia gia' correttamente configurato ed abilitato un contatore veloce HSC.... la sua routine di interrup ecc. ecc. sei gia' a buon punto.
A questo punto se hai solo bisogno di "catturare" tramite un segnale in ingresso il valore istantaneo devi usare una nuova routine di interrupt.
Prima cosa collega il tuo finecorsa all'ingresso I0.0
Poi nella SBR0 (sub. di inizializzazione) aggiungi questo network
LD SM0.0 // bit Always ON
ATCH INT_70, 0 //scatena evento 70 su fronte salita E0.0 (evento nr.0)
Ora devi creare un sottoprogramma di interrupt che si chiama INT70
Questo sottoprogramma, si attivera' se l'evento 0 e' vero indipendentemente dallo stato di esecuzione del programma (massima precisione di lettura posizione).
Nel nuovo INT70 inserisci questo nuovo network:
LD SM0.0 // bit Always ON
MOVD HC1, VD1000 //trasferisci valore reale istantaneo di HC1
Ho usato come esempio HC1 , cioe' il primo contatore della serie, tu ovviamente userai il tuo reale contatore ai cui ingressi e' collegato l'encoder.
Il valore letto "al volo" viene trasferito come doppia parola nella area di memoria da V1000 a V1003 compresa (risoluzione a 32bit) ed e' un numero intero con segno.
Poi fanne cio' che vuoi........
Ciao
Ivan
-

Ivan_Iamoni
5.336 6 10 12 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 2330
- Iscritto il: 22 ott 2006, 18:45
0
voti
Grazie kamikaze, hai capito benissimo qual è il mio problema, l'operazione che mi hai descritto può essere utilizzata per momorizzare anche più di una posizione? sai io non sono un esperto di programmazione però ci devo diventare, purtroppo sono appena entrato nel mondo nel mondo del lavoro, per questi i consigli di una persona preparata come te e come gli altri che mi hanno risposto, sono per me importantissimi.
0
voti
Beh, effettivamente al fine dell'operazione che ti ho descritto sopra, tu hai un valore numerico intero contenuto nell'area VD1000 a tua completa disposizione.
Se poi desideri memorizzarlo devi prima decidere in quale modo.
Ad esempio il piu' semplice che mi viene in mente e' , a fine procedura di memorizzazione, alla fine dell INT70 setta una variabile (posizione letta)che userai per arrestare il motore, facendo in modo che non si verifichino piu' letture del finecorsa.
Poi, in una SBR esterna all'INT70 con questa variabile ed un ulteriore ingresso (ad esempio uno o piu' pulsanti di memorizzazione quota) sposta il contenuto di VD1000 in VD2000, 2004 , 2008 ecc. e resetta immediatamente la variabile di quota letta.
Con questo esempio, uscito dall'INT70 il programma arresta il motore con V100.0 poi con questa condizione vera alla pressione di uno dei tre tasti memorizzi la quota "catturata al volo" in tre aree diverse poi fatto cio' si resetta il V100.0 e diabiliti l'interrupt INT70 legato all'evento 0 , (da riabilitare previo la successiva fase di auto apprendimento).
Ciao
Ivan
Se poi desideri memorizzarlo devi prima decidere in quale modo.
Ad esempio il piu' semplice che mi viene in mente e' , a fine procedura di memorizzazione, alla fine dell INT70 setta una variabile (posizione letta)che userai per arrestare il motore, facendo in modo che non si verifichino piu' letture del finecorsa.
Poi, in una SBR esterna all'INT70 con questa variabile ed un ulteriore ingresso (ad esempio uno o piu' pulsanti di memorizzazione quota) sposta il contenuto di VD1000 in VD2000, 2004 , 2008 ecc. e resetta immediatamente la variabile di quota letta.
- Codice: Seleziona tutto
ESEMPIO:
SBR1:Memorizzazione quote
SEGMENTO 1:
LD V100.0 //memoria di quota letta (il suo set si trovera' a fine INT71)
LPS
A E1.0 //pulsante di memorizzazione quota 1
MOVED VD1000, VD2000 //sposta in zona di memorizzazione 1
AENO
= V100.1 //conferma meorizzazione avvenuta
LRD
A E1.1 //pulsante di memorizzazione quota 2
MOVED VD1000, VD2004 //sposta in zona di memorizzazione 2
AENO
= V100.1 //conferma meorizzazione avvenuta
LRD
A E1.2 //pulsante di memorizzazione quota 3
MOVED VD1000, VD2008 //sposta in zona di memorizzazione 3
AENO
= V100.1 //conferma meorizzazione avvenuta
LPP
A V100.1 //se la memorizzazione e' avvenuta
R V100.0, 1 //resetta memoria di quota letta
DTCH 0 //disabilta interrupt evento 0 (finecorsa memorizz. quote)
Con questo esempio, uscito dall'INT70 il programma arresta il motore con V100.0 poi con questa condizione vera alla pressione di uno dei tre tasti memorizzi la quota "catturata al volo" in tre aree diverse poi fatto cio' si resetta il V100.0 e diabiliti l'interrupt INT70 legato all'evento 0 , (da riabilitare previo la successiva fase di auto apprendimento).
Ciao
Ivan
-

Ivan_Iamoni
5.336 6 10 12 - Utente disattivato per decisione dell'amministrazione proprietaria del sito
- Messaggi: 2330
- Iscritto il: 22 ott 2006, 18:45
14 messaggi
• Pagina 1 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Nessuno e 57 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

