sy-tech Inserito: 23 dicembre 2007 Segnala Inserito: 23 dicembre 2007 Salve a tuttiHo un encoder incrementale 500 div/giro che collego ad un plc 224xp DC/DC/DC dove la fase A è collegata su I0.0 e fase B su I0.1Nel programma principale mediante il bit sm0.1 richiamo un sottoprogramma nel quale mediante il bit sm0.0 trasferisco il codice 16#84 nel smb37e sempre con lo stesso bit abilito HDFE come HSC0 nel modo 9,poi abilito HSC.Dopo attivo la tabella stato dove vorrei visualizzare il contenuto del contatore HC0.Ma questo non avviene come mai.Io in questo momento sono solo interessato a visualizzare il valore corrente del contatoreGrazie.
Livio Orsini Inserita: 23 dicembre 2007 Segnala Inserita: 23 dicembre 2007 Leggi il manuale o, anche, l'help in linea relativo ai contatori velocit HSC; segui esattamente le indicazioni e, se lì'encoder è collegato correttamente e non è guasto, devi leggere il contenuto del registro di conteggio.
busanela Inserita: 23 dicembre 2007 Segnala Inserita: 23 dicembre 2007 (modificato) Mmmm....., se non riesci a visualizzare il valore del contatore veloce, così a naso, mi viene il sospetto che non hai scritto le istruzioni di controllo nel sottoprogramma di interrupt (INT0, INT1,...).La strada migliore è quella che ti ha indicato Livio: utilizza l'aiuto contestuale di Microwin. Grazie anche a qualche semplice esempio contenuto, dovrebbe aiutarti. Modificato: 23 dicembre 2007 da busanela
Livio Orsini Inserita: 23 dicembre 2007 Segnala Inserita: 23 dicembre 2007 busanela, per far funzionare e leggere un HSC non serve nessun interrupt. Se lo HSC è stato configurato correttamente ad ogni impulso il suo valore s'incrementa o si decrementa in funzione della qaudratura e della configurazione. Poi basta leggere la Dword del contatore.
kamikaze Inserita: 23 dicembre 2007 Segnala Inserita: 23 dicembre 2007 HDFE come HSC0 nel modo 9,poi abilito HSC.Verifica nelle impostazioni , del canale HSC1/2 le seguenti ipostazioni , se sono tutte corrette.-SMB47=16#F8=2#11111000=Set HCS1 con modalita': vedi note seguenti.... SM47.2=0 conta impulsi , Pulse x 4 (quadratura) SM47.3=1 C. Up, conteggio direzionale positivo SM47.4=1 aggiorna direzione conteggio SM47.5=1 HCS1 , scrivi valore di preset SM47.6=1 HCS1 , scrivi valore corrente SM47.7=1 Enable HCS1 , abilita HSC1 -Set HCS1 to mode operation=9=contetor con cali AB in quadratura e controllo direzione-SMD48 valore corrente-SMD52 valore di presetConfermo come dice Livio, che l'interrupt non serve, salvo specific casi.Buone feste,Ivan
sy-tech Inserita: 24 dicembre 2007 Autore Segnala Inserita: 24 dicembre 2007 Buon Natale a tutti,L'encoder penso che funzioni perchè muovendolo lentamente a mano vedo i led degli input che si accendono in sequenza,proverò a ricontrollare tutto e spero.Ciao e grazie
busanela Inserita: 24 dicembre 2007 Segnala Inserita: 24 dicembre 2007 Ciao a tutti,per rispondere a Livio ed a Ivan: è vero. Nel caso di sy-tech, per visualizzare solamente il valore di conteggio dell'hsc non è indispensabile l'utilizzo dell'interrupt, ma mi pare lo sia (io perlomeno ho sempre agito così) per poter rilevare quando il valore attuale è uguale al valore di preimpostazione (si deve programmare un interrupt assegnando l'evento di interrupt CV = PV, evento 13, ad una routine di interrupt), per poter rilevare i cambiamenti di direzione, (programmare un interrupt assegnando ad una routine di interrupt l'evento interrupt di modifica di direzione, evento 14), per poter rilevare un evento di reset esterno (programmare un interrupt assegnando ad una routine di interrupt l'evento interrupt di reset esterno, evento 15) tramite il comando ATCH.Ribadendo la piena condivisione delle vostre affermazioni nella mera necessità di visualizzare il valore attuale dell'ingresso veloce, riterrei necessaria l'applicazione pratica con i casi suddetti, futuro passo obbligato anche per Sy-Tech, augurando a tutti un felice ed un sereno Natale.
Livio Orsini Inserita: 24 dicembre 2007 Segnala Inserita: 24 dicembre 2007 ....futuro passo obbligato anche per Sy-Tech....Dipende cosa vuol fare. Personalmente non ho mai avuto necessità di usare interrupts sul contatore, neanche per posizionamenti, dipende dal tipom di algoritmo che s'impiega. Comunque la tua precisazione chiarisce correttamente l'applicazione.
Gabriele Corrieri Inserita: 24 dicembre 2007 Segnala Inserita: 24 dicembre 2007 Ciaoho scritto mille volte,ma pochi lo leggono: è inutile e fa perdere tempo inserire un software molto grande da debuggare tutto insieme, ci si perde via dietro ai mille problemi dei singoli moduli e poi le iterazioni fra i moduli stessi. Ho sempre attuato e consigliato di provare funzioni nuove stand-alone per prendere dimestichezza: fai un software vuoto con solo il tuo HSC fatto dall'assistente (wizard) poi da lì inizi le tue prove, quando avrai ottenuto i risultati che volevi allora ci vorrà poco ad integrare il tuo HSC nel restante software preoccupandoti ora solo delle possibili iterazioni con il preesistente codice.Spero sia di aiutoCiao
sy-tech Inserita: 27 dicembre 2007 Autore Segnala Inserita: 27 dicembre 2007 Ciao,in questo momento non è necessario utilizzare un interrupt perchè voglio solo leggere il contenuto del contatore.Ora quello che vorrei sapere è quale parametro devo inserire nella smb37 tenendo presente che non utilizzo nessun valore di preimpostazione ma utilizzo solo come indicatore di eventuale posizione dell'encoder?sm37.0=bit di controllo del livello attivo di reset 0=reset ad attività alta 1= reset attività bassasm37.1=bit non utilizzatosm37.2=Velocità di conteggio 0=velocità contx4 1=velocità contx1sm37.3=Bit controllo direzione 0=conteggio avanti 1=conteggio indietrosm37.4=scrive in Hsc la direzione di conteggio0=nessun aggiornamento 1= aggiornamento della direzionesm37.5=scrive in Hsc il nuovo valore preimpostato 0=nessun aggiornamento 1=aggiornato al valore preimpostatosm37.6=scrive in Hsc il nuovo valore corrente 0=nessun aggiornamento 1=aggiornamento al valore correntesm37.7=abilita Hsc 0=inibisce il conteggio 1=abilita il conteggioIo ho scelto 11010000 16#D0Così ottengo che visualizzo 0 +1 +2 +1 0 in continuo dov'è che sbaglio?Grazie
sy-tech Inserita: 27 dicembre 2007 Autore Segnala Inserita: 27 dicembre 2007 in risposta al signor Corrieriio da quando ho sottoposto il mio problema sto utilizzando nel mio programma solo i dati del contatore e niente altro proprio per evitare altri problemiCiao
kamikaze Inserita: 27 dicembre 2007 Segnala Inserita: 27 dicembre 2007 Dove leggi quel valore , nella tabella di stato interrogando HSC1 o 2 ?Potrebbe darsi che hai fatto l'impostazione con il comando HDEF, ma ti manchi la chiamata al contatore e l'attivazione attraverso il comando HSCQuesta e' un'impostazione tipica che uso per un'encoder in quadratura.LD M31.4 MOVB 16#F8, SMB47 HDEF 1, 9 MOVD +0, SMD48 HSC 1M31.4 e' per me un'AlwaysONCiaoIvan
Livio Orsini Inserita: 28 dicembre 2007 Segnala Inserita: 28 dicembre 2007 M31.4 e' per me un'AlwaysONCuriosità. Perchè non usi il merker di sistema e richiami l'impostazione solo nella SBR0?
sy-tech Inserita: 28 dicembre 2007 Autore Segnala Inserita: 28 dicembre 2007 risposta per KamikazeL'eggevo hscoHo provato il tuo suggerimento mettendo le fasi dell'encoder su i0.6 e i0.7risultato che vedo sempre 0io utilizzo sm0.0 e sm0.1 per richiamare sbro
Rwhite Inserita: 28 dicembre 2007 Segnala Inserita: 28 dicembre 2007 Ciao a tutti, ti consiglio di partire ex novo utilizzando il wizard come detto da Gabriele, altrimenti posta il tuo codice per intero forse sfugge qualcosaCiao rwhite
busanela Inserita: 28 dicembre 2007 Segnala Inserita: 28 dicembre 2007 L'eggevo hscoHo provato il tuo suggerimento mettendo le fasi dell'encoder su i0.6 e i0.7Per HC0 gli ingressi sono SOLO I0.0=Clock A, I0.1=Clock B e I0.2=Reset per un contatore con modo HSC=9, 10 o 11, quindi effettua innanzi tutto questo collegamento dell'encoder al 200.Poi, principio fondamentale, se vuoi indirizzare HC0, devi settare lo special merker byte (SMB) di HSC0, quindi SMB37; se intendi indirizzare HC1, l'SMB dell'HSC1 è il 47; per HC2 l'HSC2 ha SMB 57, e così via. Il comando HDEF definisce (appunto) il numero ed il tipo di contatore veloce.Il valore che hai impostato per SMB37:Io ho scelto 11010000 16#D0può andare bene se, come ho detto, non hai la necessità di impostare valori di setpoint.Altro punto importante da verificare è il formato in cui è indirizzato HC0: per accedere in sola lettura al valore di conteggio di un contatore veloce questo deve essere indirizzato SOLO in formato di doppia parola (MD10, ...).Infine ti allego qualche riga di esempio ricavata da una mia subroutine per chiarire meglio i concetti espressi sopra (non considerare i richiami agli interrupt se non devi impostare SP od inversioni del conteggio).LD SM0.1MOVB 16#F8, SMB37HDEF 0, 9 //Definizione del tipo di contatore veloce HC0, modo 9: contatore con fasi A/B in quadraturaMOVD +0, SMD38 // Inserimento del valore di partenza (0) dell'encoderMOVD HC0, MD1 // Inserimento per visualizzazione del conteggioMOVD SMD42, SMD42 // Abilitazione evento di interrupt: interrupt 0 con evento 12: CV=PV.ATCH INT_0, 12 // Richiama interrupt 0 se CV=PVATCH INT_1, 27 // Richiama interrupt 1 su inversione del conteggio encoderENI // Abilitazione degli interruptHSC 0 // Abilitazione del High Speed Counter 0.Lavorando attorno a questo esempio, non dovresti avere difficoltà a provare il tuo encoder; impara comunque, come ti è già stato consigliato a piu voci, a cercare attraverso i manuali e l'aiuto in linea, a risolvere da solo i tuoi dubbi. Non perchè il forum non possa o non voglia esserti d'aiuto, ma perchè (l'esperienza ci insegna) restano meglio nella memoria i concetti appresi con lo sforzo di chi ha sfogliato qualche pagina piuttosto di chi aspetta l'imbeccata, oltre naturalmente alla soddisfazione d'esserne venuto fuori da solo!
Livio Orsini Inserita: 28 dicembre 2007 Segnala Inserita: 28 dicembre 2007 L'impostazione di HSC0 è corretta, anche se gli interupts sulla comparazione e sull'inversione non sono sempre necessari.Quello che è strano è l'imposibiltà che ha sy-tech nel visualizzare il conteggio. Ripeto il consiglio di Rwhite: posta tutto il codice e descrivi come fai per visualizzare il conteggio, non vorrei che il cntatore conti correttamente ma tu commetti un errore nella sua visualizzazione
sy-tech Inserita: 28 dicembre 2007 Autore Segnala Inserita: 28 dicembre 2007 Ciao Busanellail fatto è che anche con il tuo suggerimento che già avevo provato non sortisce nessun risultatoa questo punto penso ad un problema sull'encoder appena posso lo controllo così partirò con un dato certo.Grazie a tutti
busanela Inserita: 28 dicembre 2007 Segnala Inserita: 28 dicembre 2007 penso ad un problema sull'encoderNon credo sia guasto l'encoder se ciò che hai scritto precedentemente è vero:muovendolo lentamente a mano vedo i led degli input che si accendono in sequenzaIn questo caso è coerente credere che gli impulsi ad onda quadra dei due canali escano correttamente dall'encoder e di conseguenza entrino nell'ingresso plc.E' fondamentale, come ho già detto, che il merker di appoggio del valore in tempo reale di HC0 sia indirizzato in formato di doppia parola: hai verificato anche questo?Tu dici attivo la tabella stato dove vorrei visualizzare il contenuto del contatore HC0.Ma questo non avvienema se invece osservi il valore di HC0 con lo stato del programma anzichè con lo stato della tabella, neppure lì vedi variarne il valore?Potrei essere portato a pensare che non funziona l'ingresso del 200, ma non credo che in questo caso vedresti accendersi i led degli ingressi: potresti provare ad utilizzare altri ingressi veloci della tua 224 XP, che mi pare ne abbia 6.La sfida si fa davvero interessante. Alessandro.
kamikaze Inserita: 29 dicembre 2007 Segnala Inserita: 29 dicembre 2007 Ciao Livio,Curiosità. Perchè non usi il merker di sistema e richiami l'impostazione solo nella SBR0?M31.0 , e' una cosa che risale al lontano 1997 , da allora realizzando programmi sia per 400,300,200, uso sempre lo stesso merker, 31.0 always ON e 31.1 Always OFF , che diventa uno standard su tutti i modelli, forza dell'abitudine ed amore per la standardizzazione (dove posso).Ciao a prestoIvan
Livio Orsini Inserita: 29 dicembre 2007 Segnala Inserita: 29 dicembre 2007 forza dell'abitudine ed amore per la standardizzazione (dove posso).Ti capisco perfettamente. Solo il software provato e riprovato non da (quasi mai) guai
sy-tech Inserita: 31 dicembre 2007 Autore Segnala Inserita: 31 dicembre 2007 Ecco i nuovi sviluppi.Prima di tutto vi scrivo esattamente il programma e cosa succede:programma principale:tramite sm0.1 chiamo sbrosbro:tramite sm0.0 utilizzo movb 16#f8 in smb37,hdfe 0 su hsc e 9 su mode, e poi abilito il contatore 0 su hscdopo mentre gira il programma vado su tabella di stato e visualizzo hc0 se utilizzo la visualizzazione binaria vedo questo risultato0000000000000000 con gli input i0.0 fase a e i0.1 fase b dell'encoderal primo segnale il contatore scatta a:0000000000000001al secondo bit il contatore va a: .1111111111111111dopo continua all'infinito.Buon anno
rimonta Inserita: 31 dicembre 2007 Segnala Inserita: 31 dicembre 2007 l'abilitazione del contatore non la devi fare con un bit alwais on, altrimenti non parte mai il conteggio, ma resti sempre in modalità di preimpostazione del contatore. Lo devi abilitare con un SM 0.1, o con un fronte di salita
kamikaze Inserita: 31 dicembre 2007 Segnala Inserita: 31 dicembre 2007 Ciao Rimonta,Credo che la cosa sia gia fatta cosi' , infatti lui richiama SBRO con SM0.1 (bit ON al primo ciclo).Dentro SBRO deve esserci l'impostazione HDEF e la prima chiamata HSC.al primo segnale il contatore scatta a:0000000000000001al secondo bit il contatore va a: .1111111111111111dopo continua all'infinito.Credo che vi sia un preset del contatore non corretto.Ivan
Livio Orsini Inserita: 31 dicembre 2007 Segnala Inserita: 31 dicembre 2007 Non capisco cosa continua all'infinito: il ciclo 00000001 ==>1111111111, oppure 000000001, 11111111, 11111110, 1111101, etc.
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