Vai al contenuto
PLC Forum


Interrupt - generare un interrupt


roberto8303

Messaggi consigliati

Livio ho risolto per quanto riguarda i contatti per escludere il micro quando viene rilasciato per andare in avanti il motore ma ho trovato una cosa che non va bene:

Quando tolgo tensione al plc e mi trovo a 200 gradi con l albero riaccendo tutto il sistema gira in negativo fino a toccare il micro e poi va a cercare lo zero in avanti ma arriva di nuovo a 200 gradi!!! e cosi se metto a 100 gradi cioe prende in considerazione l ultima posizione dove si è fermato l encoder e quello lo fa come zero!! ma non posso mettere che come tocca il micro azzero il contatore HC0 con un interrupt di reset esterno??

Link al commento
Condividi su altri siti


  • Risposte 91
  • Created
  • Ultima risposta

Top Posters In This Topic

  • roberto8303

    61

  • Livio Orsini

    31

ma non posso mettere che come tocca il micro azzero il contatore HC0 con un interrupt di reset esterno??

Lo puoi fare,ma è meno preciso.

Non capisco perchè debba fare homing sull'ultima posizione raggiunta; sicuramente hai qualche errore nel programma.

Per fare uno zero preciso devi fasare meccanicamente l'encoder con la tacca di zero appena appena dopo il rilascio del micro.

Link al commento
Condividi su altri siti

Ma se riaccendo il tutto e l encoder era a 2000 impulsi mi segna 0!!e da qui parte il problema! quando lo riporto indietro verso il micro va in negativo...fino a che tocca il micro dovunque sia, poi quando ritorna in avanti a cercare lo 0 ritorna nella posizione meccanica di quando la avevo spento cioe a 200gradi!(ma HC0 è =0 )perche evidentemente all inizio prima di cercare il micro in negativo aveva associato quella posizione meccanica del albero encoder a 0 comunque penso che sia logico essendo un encoder incrementale che non mantiene la posizione...oppure ho sbagliato a fare il programma dell homing... :(

Link al commento
Condividi su altri siti

..oppure ho sbagliato a fare il programma dell homing...

Mi sa di si :)

Quando impegni il micro ti fermi, poi dai un piccolo riferimento positivo per far muovere molto lentamente in avanti fino ad incontrare la tacca di zero dell'encoder. Questo genera il famoso impulso di zero (hai 3 canali: A, B e Z o C) sul canle Z (o C). COn questo impulso azzeri HSC0. Se lo colleghi all'ingresso giusto e selezioni il modo corretto ti azzera automaticamente HSC0. Oppure lo colleghi ad un ingresso interruopt e sull'interrupt fermi e azzeri HSC0. In questo modo, se non dai tu un riferimento di posizione, il sistema non si muove.

Link al commento
Condividi su altri siti

Livio hai ragione, io non ho configurato l encoder come dici tu!l avevo configurato senza avvio e senza reset! ecco perche non riuscivo a capire come faceva ad azzerarsi! una domanda forse banale ma perche hai detto che il micro non è molto preciso per fare lo zero, se poi viene utilizzato lo stesso? in quanto a seguito all impegno del micro si azzera l Hc0...

Link al commento
Condividi su altri siti

Domani mattina riprovo a configurare l encoder con un altro modo, avevo usato il 9... quindi mi stavo scervellando perche quando lasciavo il micro il motore tornava indietro per ritoccarlo! :) quindi se ho capito bene ora devo attivare l interrupt del reset con il micro?cioe entro nel interrupt quando tocco il micro e poi andando avanti appena cè il segnale della Z o C si azzera Hc0? è anche vero che sono stato impegnato con altre cose e solo ora so che l errore era un altro... :lol:

Link al commento
Condividi su altri siti

cioe entro nel interrupt quando tocco il micro e poi andando avanti appena cè il segnale della Z o C si azzera Hc0?

Puoi fare così oppure più semplicemente:

1 - Lanci la sub di homing e da li non esci sino a che è finita, cioè il PLC esegue solo quella.

2 - Nella sub leggi continuamente direttamente dalla periferia, lo stato del micro.

3 - Con micro impegnato fermi e dai il riferimento avanti in lentissimo

Se hai configurato HS0 per il reset da esterno leggi in continuazione HSC0, sino a che si azzera, poi togli il riferimento, riprogrammi HSC0 per non sentire più il comando di zero esterno ed esci dalla sub alzando il flag di "pronto alla marcia" (ready to start) [il flag è un bit che mandi a "1" qaundo lo stato è vero e viceversa]

Puoi anche limitarti ad azzerare HSC0 quando intercetti il micro di zero con la procedura che ho descritto pèrima, però è meno preciso e. soprattutto, con la procedura che ti ho descritto annulli i giochi meccanici.

Link al commento
Condividi su altri siti

ah ora si spiega tutto...e sicuramente è meglio come dici tu in quanto un micro con il tempo sposta il suo riferimento quando inizia a cambiare la corsa tra un contatto e l altro, molle starate, eventuali impurita sui contatti ecc ecc, si parla di pochi centesimi ma la differenza cè!quindi ancora una volta seguiro il tuo consiglio solo che ora dovrei rivedere il tutto anche per questa funzione per te cosi semplice e per me complessa perche nuova, non l ho mai fatta e devo mettermi un po di impegno!ti faro sapere appena faccio qualcosa spero oggi!!grazie ;)

Link al commento
Condividi su altri siti

Livio devo fare dei chiarimenti... non ho avuto tempo di provare quello che mi hai detto...pero ci sono ancora dei punti che devo chiarire.. :rolleyes:

1) Quando parli di giochi meccanici si intende solo quelli della trasmissione (ingranaggi del riduttore in questo caso...)il gioco che puo crearsi sulla ripetibilita del contatto meccanico del micro quella non puo essere messa in conto! perche è sempre e comunque il micro che da il riferimento di 0 all encoder incrementale! altrimenti ci voleva un encoder assoluto...

2)Il vantaggio di non programmare che come impegno il micro azzero il contatore HC0 ma mandarlo indietro e poi in avanti sta solo ne fatto di precaricare lo spazio che cè tra gli ingranaggi del riduttore (gioco meccanico) Quindi se il micro fosse starato comunque non avrei il riferimento preciso...

In conclusione devo dire che se sono solo questi i motivi per fare un homing prima indietro e poi in avanti penso non ne valga la pena in quanto la funzione di tale sistema durante il suo funzionamento sara sempre cosi sempre avanti e indietro (per es posizione 100 poi 200 poi 150 in gradi) quindi il gioco meccanico si inserirebbe di nuovo non appena vado indietro e poi avanti! L homing con il micro indietro e poi lo 0 dell encoder è forse migliore se il posizionamento avveniva solo e sempre in avanti quindi con i denti degli ingranggi sempre in presa per non ''prendere'' gioco meccanico...

il problema pero resta lo stesso per la parte del programma perche se devo impegnare il micro indietro ,appena vado avanti devo fare in modo di incontrare lo 0 encoder prima di rilasciare il micro ,altrimenti il motore ritorna indietro perche gli ho comandato di andare a impegnare il micro e fermarsi solo quando lo tocca!!è come il cane che si morde la coda...e io che forse ci ho capito troppo poco.. :) Spero di non farti perdere la pazienza! :(

Link al commento
Condividi su altri siti

ops... Scusa Livio ho preso una sbandata forte rimangio tutto!!!!l encoder l ho messo sul albero non sul motore!!!ho scritto senza riflettere!!Meglio che vado a fare il programma invece di pensare troppo che mi fa male... :lol: Scusa ancora!!

Link al commento
Condividi su altri siti

Allora rieccomi...Ho finito di fare il programma dell homing sono in tutto 8 segmenti domani cerchero di scriverli qui in awl per vedere se va bene...Ho provato senza collegare l inverter perche non ce l ho disponibile ancora, e devo dire che funziona bene, l homing l ho fatto cosi: quando attivo un bit ad 1 entro nella sub dell homing e lascio quella del posizionatore, mando indietro a -5000 AQW0 e tocco il micro quindi vado subito in avanti a +3000 AQW0 e inibisco il segnale negativo perche ancora non sono arrivato nel confronto Hc0 = 0 il quale non appena verificato fermo anche il segnale positivo e il motore si ferma...Spero solo che si fermi subito ma dato la risoluzione dell encoder di 3600imp/giro credo che prendera qualche impulso in positivo...Livio non ho capito questa tua frase

Se hai configurato HS0 per il reset da esterno leggi in continuazione HSC0, sino a che si azzera, poi togli il riferimento, riprogrammi HSC0 per non sentire più il comando di zero esterno ed esci dalla sub alzando il flag di "pronto alla marcia" (ready to start) [il flag è un bit che mandi a "1" qaundo lo stato è vero e viceversa]

io ho provato a configurare con il reset esterno e si azzera solo dopo aver fatto un giro completo o in avanti o indietro quindi quando tocco il micro dovrei aspettare un giro completo??

che intendi per riprogrammi Hsco?

Link al commento
Condividi su altri siti

Il terzo canale dell'encoder da un solo impulso al giro. Quell'impulso deve resettare HSC0. Verifica che quando arriva quell'impulso HSC0 si resetta. Ovviamente dovrai poi fasare meccanicamente l'encoder in modo che quest'impulso venga generato ad una frazione di grado avanti il micro

Link al commento
Condividi su altri siti

Buongiorno, Livio continuo a non capire!!mi sono accertato che lo zero avviene ogni giro completo ma quando stacco la alimentazione e mi trovo a meta giro dal micro e poi riaccendo l encoder mi segna zero, quando la stacco a un quarto di giro dal micro alla riaccensione mi segna 0 quindi non arrivo mai sul micro con lo stesso valore!cè un comando esterno dove posso io scrivere 0 nel Hc0 dopo che lo ho toccato e sono andato avanti?Scusami se sono cosi duro da capire!! Comunque ora posto quello che ho fatto io sicuramente sbagliato ma sembra che funziona... :)

Network 1

LDN I0.6 contatto di start ma off bit=0 appena accendo il plc quindi entra subito in questa sub lasciando quella del posiz.

DTI HC0, VW120

LDN I0.6

AW> VW120, 0

= M0.1

Network 3

LD I0.7 contatto del micro...

AN M0.3

AN M0.4

= M0.2

Network 4

LDW< VW120, 0

= M0.4

Network 5

LDN I0.7

AN M0.2

= M0.3

Network 6

LD M0.2

AN M0.1

MOVW -5000, AQW0

Network 7

LD M0.3

AN M0.1

MOVW 5000, AQW0

Network 8

LD M0.1

MOVW 0, AQW0

Link al commento
Condividi su altri siti

Livio mi sa che ho ancora un altro problemino...chiamando il mio fornitore di inverter mi ha detto che non hanno inverter monofase 220v con il controllo -/+ 10volt!!ora devo comprare un trifase??o conosci qualche marca che li fa 220v con questo tipo di controllo che abbiamo utilizzato??

Link al commento
Condividi su altri siti

Dunque ti rispiego.

Dimentica per ora l'impulso di reset.

Chiami la sub di homing.

Nella sub di homing dai un riferimento indietro, p.e., di -1500 (circa -0.4v), e leggi direttamente l'ingresso micro, non il registro immagine come si fa di solito.

Quando leggi che il micro è stato impegnato, carichi zero nello HSC0 e metti in stop l'azionamento.

Anche considerando una leggera variazione del ritardo di riconoscimento, si fermarà solo con qaulche impulsi di differenza (4-5).

Comincia a fare questa prova.

...chiamando il mio fornitore di inverter mi ha detto che non hanno inverter monofase 220v con il controllo -/+ 10volt!

Ma che inverter usi?

Come fa ad impostare il riferiemnto di velocità?

Che razza di comandi ci sono?

Va bene che è qaulche tempo che non smanetto direttamente un inverter, ma il riferimento da potenziometro è comune a tutti gli inverter

Link al commento
Condividi su altri siti

Ah e qui che avevo il dubbio! quindi metto il micro con l ingresso es I0.5 e quando lo tocco diventa 1 e azzero Hc0? quindi scrivo nel SMD.. il valore zero?pero abbiamo detto che deve andare poi un po in avanti devo usare un temporizzatore in modo da azzerare Hc0 quando mando in avanti il motore?(questo per eliminare eventuali giochi)

Si l inverter che uso è un hitachi e ha il controllo solo 0-10volt la classe 220v monofase e dice nel manuale non invertire la polarita del segnale! mentre quelli trifase hanno questo controllo +/-10v con un altro morsetto specifico

Ho contatto la mitsubischi e mi hanno consigliato di comprare un trifase classe 200v e alimentarlo solo con L1 ed L2 in mofase ma devo comprare un inverter quasi il doppio della taglia del motore!!ora provo a sentire anche l omron...Scusa il fastidio Livio :(

Link al commento
Condividi su altri siti

pero abbiamo detto che deve andare poi un po in avanti devo usare un temporizzatore in modo da azzerare Hc0 quando mando in avanti il motore?(questo per eliminare eventuali giochi)

No, niete temporizzatore!

Adesso provalo così. Quando vedi che funziona, programmi HSC0 per il reset da segnale esterno. Con reset da segnale esterno, connetti l'impulso di zero all'ingresso di reset. Fai tutto come prima, ma senza resettare HSC0, fai il comando avanti sino all'avenuto reset.

...inverter che uso è un hitachi e ha il controllo solo 0-10volt

Ma avrai anche un contatto per far girare il motore in un senso ed un altro per invertire il senso di marcia. A questo punto basta che senta il segno dell'errore se è positivo dai il coamdo avanti, se negativo quello indietro e butti fuori il segnale analogico sempre posoitivo.

Link al commento
Condividi su altri siti

L impulso di reset esterno sarebbe l ingresso sul morsetto del plc cioe I0.2 dove è collegata la fase C? quando I0.2 è a 1 scrivo 0 nell SMD.. che azzera Hc0?poi esco dalla sub?

Teoricamente per il comando inverter ho capito ma praticamente ho due morsetti dove 0= - e 10v=+ e qui collego i due fili che escono dal modulo plc 0-10v dove mi si inverte il segno su solo due fili!!il comando FW ed RW ci sono ma come faccio a chiudere prima uno e poi un altro! secondo me ho sbagliato il programma...dovrei dare sempre un riferimento in positivo in AQW0 ma abilitare FW od Rw nel caso avanti o dietro!ma cosi cambia tutto il programma oddioo!!

Link al commento
Condividi su altri siti

Niente da fare anche l omron mi ha detto di comprare un inverter trifase 200v perche ha il controllo +/- 10v con due fili, io ho un inverter 220 v monofase con il controllo 0-10volt quindi caro Livio non mi resta che riadattare il programma...speriamo bene... :(

Link al commento
Condividi su altri siti

L impulso di reset esterno sarebbe l ingresso sul morsetto del plc cioe I0.2 dove è collegata la fase C? quando I0.2 è a 1 scrivo 0 nell SMD.. che azzera Hc0?

Si ma devi leggerlo direttamente.

poi esco dalla sub?
Metti a zero il riferimento, alzi il flag di homing eseguito e ritorni dalla sub

dovrei dare sempre un riferimento in positivo in AQW0 ma abilitare FW od Rw nel caso avanti o dietro!ma cosi cambia tutto il programma oddioo!!

Ma dai saranno si e no 10 righe di programma, ma esagerando :)

Link al commento
Condividi su altri siti

Ciao Livio be questa applicazione mi serve molto per farmi ragionare e per farmi le ''ossa'' ho ripreso il programma senza homing per gestirlo solo con un segnale 0-10v come riferimento e usero due uscite (ho quelle a rele..) Q0.0 = FW Q0.1=RW, ho gia provato cosi:

L uscita della word che buttavo nel AQW0 che è positiva/negativa l ho messa in due confronti >0 e >0 quindi una volta si attiva FW in positivo e una altra volta RW in negativo!fin qui tutto bene tranne che devo stare a 0 preciso per disattivarle tutte 2! ma comunque non credo sia un problema in quanto il riferimento se sto ad es a+20 Fw è attivato ma il segnale 0-10 è cosi basso che il motore non gira...

Ora mi devi solo dire una cosa la chiave di tutto il rebus! Il segnale che devo mandare in AQW0 deve essere sempre positivo ora mi si inverte il segno come posso buttarlo in AQW0 sempre positivo??? cè una funzione nel plc che leggo un segnale negativo/positivo e in uscita lo voglio solo con il segno +??Per favore dimmi di si!! :(

Link al commento
Condividi su altri siti

Rieccoci ancora qua...quindi non posso avere in uscita un segnale sempre positivo era troppo facile avevo fatto con 3 segmenti...modificando tutto devo togliere il box della sottrazione di 6 al contatore virtuale?

Link al commento
Condividi su altri siti

Ho ancora una altra soluzione '' pazza'' abbiamo detto che ho l uscita AQW0 che inverte la polarita +/- su due fili quando passa per lo 0! quindi mi è venuta in mente una cosa...senza modificare il programma ma aggiungendo solo due righe potrei fare un commutatore con i rele del plc ne ho ancora 4 liberi in uscita...in modo da avere sempre lo stesso verso della corrente ai morsetti del plc 0-10v!!quindi il programma gira sempre come l abbiamo pensato va in negativo e in positivo invertendo la polarita a secondo del caso ma io attivo opportunamente le uscite del plc in modo da commutare i due fili e avere sempre lo stesso verso per entrare nel inverter morsetto - e + 0-10v!!ho detto una cosa cosi sbagliata??ora provo e vediamo... Livio ho capito che quando non rispondi sto dicendo delle cavolate ma provare non succede nulla sbagliando si impara ;)

Link al commento
Condividi su altri siti

Finalmente la mia testardaggine mi ha portato a qualcosa...Ho Fatto cosi:

Ho usato un rele 24vdc bipolare quindi con due contatti di scambio... quando vado in negativo (segnale AQW0 -10) attivo il rele con l uscita Q0.2 e scambio la polarita! quando sono in positivo il rele si diseccita e riporta i contatti Nc con la stessa polarita!!! L uscita del modulo analogico va quindi al centro dei contatti del rele che a riposo e per tutta l escursione del segnale in positivo danno 0- e 10+ quando sono in negativo si eccita il rele e ho incrociato i due fili in modo da avere sugli altri due contatti separati sempre 0- e 10+!!con una riga di confronto e un rele di 4 euro ho risolto :) Grazie Livio per la tua pazienza e per avermi insegnato questo posizionatore applicabile cosi facendo sia ad un inverter controllo 0-10v che ad uno -/+ 10v!! ;)

Link al commento
Condividi su altri siti

Ho usato un rele 24vdc bipolare quindi con due contatti di scambio...

Roberto non ti si può lasciare solo che ne combini subito una delle tue :) Facendo così mi sembri uno che per grattarsi l'orecchio muove la testa invece delle dita :D

Va bhe, non te la prendere, si scherza.

Su questo PC non ho microwin ma se non ricordo male, basta moltiplicare per -1 e sommarci 1.

In questo modo esegui l'operazione di complemento a 2, che trasforma un numero intero negativo in un numero intero positivo e viceversa.

Link al commento
Condividi su altri siti

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