Questo è il mio primo post e vorrei cominciare con il salutare tutti e complimentarmi per questo meraviglioso forum che leggo da qualche giorno, non trovando nessun post per il mio problema ho deciso di scrivere anch'io.
Su una macchina fatta tempo fa dalla ditta per cui lavoro da poco è stato montato un s7200 cpu 226, sull'albero principale c'è un encoder 360 imp/giro con il quale vengono effettuati dei movimenti sincronizzati, c'è poi un tp177 micro sul quale si impostano dei parametri.
Adesso c'è la necessità di visualizzare i giri al minuto che effettua la macchina sul tp 177, ho già provato a contare gli impulsi in un interrupt a tempo ma non ne vengo fuori,potete darmi qualche dritta?
Grazie a tutti.
s7200 e giri minuto
Moderatori:
dimaios,
carlomariamanenti
-
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
[2] Re: s7200 e giri minuto
Gli Interrupt ciclici, o a tempo, da soli non sono ideali per ciò che desideri fare.
Sarebbe molto meglio, dipende poi dal grado di precisione che desideri ottenere e dalla frequenza degli impulsi proventienti dall'encoder, usare in abbinamento all'interrupt ciclico un contatore "veloce" o HSC.
Per quello che riguarda la sua impostazione, agli inizi potrebbe sembrare macchinosa, ti suggerisco di leggere il manuale o l'aiuto in linea.
Esiste anche un "assistente" che ti guida nell'impostazione parametri, permettendoti di creare una routine di impostazione.
L'impostazione è la parte più difficilie all'inizio.
Il contatore HSC, in realtà non ti restituisce un dato che abbia un qualche valenza di "frequenza" per permetterti di convertirla in una velocità, ma è un valore che si incrementa constantemente in base al numero di impulsi che entrano nell'ingresso a cui è collegato l'encoder.
La strategia corretta, sarebbe in un interrupt a tempo definito, ad esempio 100ms leggere il valore di conteggio attuale di HSC, sottrarre il valore precedentemente letto (nella scansione precedente dell'interrupt) e definire così la quantità di impulsi (spostamento angolare) per il tempo che ti dà una velocità.
Sarebbe molto meglio, dipende poi dal grado di precisione che desideri ottenere e dalla frequenza degli impulsi proventienti dall'encoder, usare in abbinamento all'interrupt ciclico un contatore "veloce" o HSC.
Per quello che riguarda la sua impostazione, agli inizi potrebbe sembrare macchinosa, ti suggerisco di leggere il manuale o l'aiuto in linea.
Esiste anche un "assistente" che ti guida nell'impostazione parametri, permettendoti di creare una routine di impostazione.
L'impostazione è la parte più difficilie all'inizio.
Il contatore HSC, in realtà non ti restituisce un dato che abbia un qualche valenza di "frequenza" per permetterti di convertirla in una velocità, ma è un valore che si incrementa constantemente in base al numero di impulsi che entrano nell'ingresso a cui è collegato l'encoder.
La strategia corretta, sarebbe in un interrupt a tempo definito, ad esempio 100ms leggere il valore di conteggio attuale di HSC, sottrarre il valore precedentemente letto (nella scansione precedente dell'interrupt) e definire così la quantità di impulsi (spostamento angolare) per il tempo che ti dà una velocità.
-
Candy
32,5k 7 10 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 10123
- Iscritto il: 14 giu 2010, 22:54
0
voti
[3] Re: s7200 e giri minuto
Conoscendo poco il 200, oltre a quanto ti ha detto Ivan, aggiungo:
- 360 impulsi/giro per fare delle camme? Allora il giro completo non è poi tanto veloce.
- Ad ogni giro encoder: o col segnale Z dello stesso (se lo ha), o con un comparatore di valori che verifichi il passaggio per lo 0, od un qualunque valore, puoi inizializzare un timer, ad esempio, a base tempi 10 ms. Ad ogni passaggio per tale valore di encoder (un giro albero), leggerai il valore misurato dal timer, per poi inizializzarlo nuovamente. (Sono certo che sui 200 è possibile in via molto semplice leggere il valore di conteggio di un temporizzatore). Ed ecco fatto: ad ogni giro dell'albero il timer ti indica il tempo passato. Il resto è matematica e capacità/volontà di scrivere il programma.
- Se poi ti viene difficile fare il programma che controlli il passaggio per lo zero dell'encoder, come dicevi, è una macchina con camme virtuali: basta che misuri il tempo tra ogni fronte di salita di una delle camme già esistenti.
- 360 impulsi/giro per fare delle camme? Allora il giro completo non è poi tanto veloce.
- Ad ogni giro encoder: o col segnale Z dello stesso (se lo ha), o con un comparatore di valori che verifichi il passaggio per lo 0, od un qualunque valore, puoi inizializzare un timer, ad esempio, a base tempi 10 ms. Ad ogni passaggio per tale valore di encoder (un giro albero), leggerai il valore misurato dal timer, per poi inizializzarlo nuovamente. (Sono certo che sui 200 è possibile in via molto semplice leggere il valore di conteggio di un temporizzatore). Ed ecco fatto: ad ogni giro dell'albero il timer ti indica il tempo passato. Il resto è matematica e capacità/volontà di scrivere il programma.
- Se poi ti viene difficile fare il programma che controlli il passaggio per lo zero dell'encoder, come dicevi, è una macchina con camme virtuali: basta che misuri il tempo tra ogni fronte di salita di una delle camme già esistenti.

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)

