Vai al contenuto
PLC Forum


Interrupt - generare un interrupt


roberto8303

Messaggi consigliati

Ah!!!e me lo dici ora!!!Vabbe che non ho ancora fatto i collegamenti quindi provo subito a provare questa funzione di completamento!!Io saro testardo :) ma tu ne sai una piu del diavolo! :lol:

Link al commento
Condividi su altri siti


  • Risposte 91
  • Created
  • Ultima risposta

Top Posters In This Topic

  • roberto8303

    61

  • Livio Orsini

    31

Caro Maestro :) ho fatto l operazione di complemento!!va benissimo ho provato con il motore a banco senza riduttore pero, Livio il sistema si comporta cosi se imposto una quota di 2500 l inverter mi si ferma a 2945 perche nel modulo analogico ci sono ancora 50ma ma l inverter non li legge e ferma il motore...come posso fare ? aumento un po il guadagno l avevamo messo a 6 oppure devo vedere se dall inverter posso aumentare il guadagno di tensione all ingresso?Funziona tutto benissimo domani mattina aggiungo l homing e monto l encoder all albero! GRazie ancora una volta

Link al commento
Condividi su altri siti

una quota di 2500 l inverter mi si ferma a 2945

forse volevi scrivere 2495? Perchè se va così oltre c'è qualche cosa che non va.

Se il posizionatore si ferma prima puoi fare 2 cose.

1 - Aumenta il guadagno. Lo puoi aumentare sino a che lo vedi diventare "nervoso"

2 - Metti una soglia minima di riferimento, per esempio l'equivalente di 100 mV. Però devi avere una banda morta di errore. Per esempio se l'errore <=5 metti a zero il riferimento e blocchi l'inverter.

Puoi anche fare tutte e due le cose, anzi io di solito le faccio tutte e due.

Link al commento
Condividi su altri siti

si ho sbagliato mi si ferma a 2450 oppure 2550 perche ha ancora da azzerare 50mv e resta acceso anche l uscita RW od FW sull inverter non posso dirti ancora quanto diventa ''nervoso'' perche non ho ancora collegato il pannello per dare l escursione massima cioe da posizione 0 a 3600 per ora la mia banda morta di errore è di 50 impulsi ma perche l inverter mi si ferma prima..voglio provare ad aumentare prima il guadagno in modo che sente ancora quei 50mv ma per oggi non riesco piu a metterci mano se ne parla domani mattina ;)

Link al commento
Condividi su altri siti

Buongiorno Livio sto provando a fare il nostro famoso Homing... :) sono molto veloce eh... comunque, ho pensato di fare cosi vado indietro fino a toccare il micro letto come ingresso i0.x quando lo impegno carico nel contatore -50 e mando in avanti il motore fino ad un confronto hc0=0 cosi si ferma il motore e lascio la sub...ora pero non riesco a caricare -50 nel Hc0 ho provato a scrivere -50 nell SMD38 ma niente il valore non si aggiorna, leggendo il manuale mi dice che posso scrivere solo dove è configurato hc0 altrimenti posso solo leggere i valori...ora chiedo devo configurare un altro hc0??e come lo chiamo?il programma mi da errore perche dice che hc0 gia è stato configurato!non posso farne un altro...da dove comincio??

Link al commento
Condividi su altri siti

sono riuscito a configurare un altro hco chiamato in una altra subroutine
?????

Perchè mai? Se devi cambiare configurazione lo puoi fare al volo.

Link al commento
Condividi su altri siti

Ciao Livio scusa il ritardo oggi ho fatto delle prove e non va bene succede questo...

Ho configurato un solo hco ed ho capito come azzerarlo fin qui tutto ok...

Nel Main ho messo un semplice contatto I0.6 senza SM0.1 dove se i0.6 è a zero entro nella sub routine 3 ! qui ho iniziato a scrivere l homing :leggo il micro e mando indietro il motore come lo tocco azzero hsco (box nella MAIN) e fermo il motore, Lo mando in avanti fino ad un confronto HC0=120 fermo il motore e riazzero HSco a questo punto esco dalla sub3 premendo i0.6 start ed entro nella sub del posizionatore(dove ogni segmento ho messo I0.6 on=1)..Ho fatto questo e quando sono andato a provare l homing quindi la subroutine3 le due bobine Q0.0 e Q0.1 avanti e dietro motore mi si accendevano quasi insieme si alternavano velocemente che ho messo subito in stop per non danneggiare i rele...ovviamente le avevo interbloccate tra loro con i contatti negati!!è il tempo di ciclo che li fa cadere e attivare velocemente?? Ho problemi a capire come si creano le sub routine come si passa da una alla altra !! Se uso SM0.1 quando passo all altra subroutine non mi legge quella dopo svolge solo la prima!! l Homing devo scriverlo nella sub o devo creare un interrupt?e come faccio a richiamarlo dal MAIN?

Link al commento
Condividi su altri siti

ho appena riletto le tue spiegazioni nei post precedenti e cè questa tua frase:

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.

io sono a questo livello quando impegno il micro carico 0 nel box HSCO...oppure un valore negativo...in modo che mando il motore in avanti fino a che arriva a 0 e fermo il motore...

ora pero non so come uscire da questa sub!!e non ho capito come connettere l impulso di zero all ingresso di reset! oltre al problema delle bobine che si attivano quasi insieme attacano e staccano con intermittenza velocissima!! speriamo bene.. :(

Link al commento
Condividi su altri siti

Ho problemi a capire come si creano le sub routine come si passa da una alla altra !!

Scusa Roberto, ma tu l'Help in linea ed il amnuale non li leggi proprio? L'albero della lista istruzioni, quello che sta asinistra della finestra dell'editor non loconsulti?

Puntatore su "blocco di codice", tasto dx del mouse, ==> inserisci===> sottoprogramma/interrupt. A secondo della scelta ti apparirà in fondo all'albero, alla voce "richiama i sottoprogrammi" la nuvoa sum o il nuovo int.

Nella sbrx, quando scrivi il codice, devi mettere come ultima istruzione (ret), mentre negli int devi mettere (reti). Queste istruzioni le trovi nei blocchi "controllo di programma" e "interrupt"

Le sub di interrupt non le devi chiamare, le chiama l'evento legato all'interrupt.

Le sub le richiami dal main o da altra sub, dando delle condizioni, se necessario. Per scrivere le istruzioni di richiamo, vai all'ultima voce: Richiama sottoprogramma, doppio click sulla sbr che vuoi richiamare ed inserisci l'istruzione call (in AWL) o il blocco KOP.

Se i due comandi avanti/indietro continano ad attivarsi in sequenza devi verificarne le condizioni di attivazione; probabilmente, anzi certamente, hai sbagliato le condizioni di attivazione.

Link al commento
Condividi su altri siti

Veramente non mettevo ret perche il manule dice che lo mette il programma in automatico...comunque provero anche questo, la sbr dell homing l ho creata con il box richiama sottoprogrammi nel MAIN e ho usato la condizione del interruttore ON -off (i0.6) se è ad off quindi appena accendo entra nella sub del homing...e poi ad on esce... forse mancava propio ret nella sub dell homing che mi fa impazzire i due rele di uscita...Mettendo Sm0.1 legge solo per la prima volta del ciclo... quindi non posso usare un contatto in serie ad SM0.1 perche se lo attivo dopo il primo ciclo comunque non entra piu nella sub... ora vado a provare ti aggiornero appena posso!

Link al commento
Condividi su altri siti

Veramente non mettevo ret perche il manule dice che lo mette il programma in automatico...

Dovresti vederlo nell'editor della sbr, se non c'è vuol dire che hai qualche problema.

Comunque prova ad andare on line in step (c'è l'apposita funzione di debug) così vedi dove si foerma o looppa :)

La chiamata alla sub di homing puoi farla nella sbr0, come ultima istruzione prima uscire. Così inizializzi tutto, fai homing e sei pronto per la partenza.

Link al commento
Condividi su altri siti

Livio mi parli cosi facile :( evidentemente lo è!!Comunque sto provando ora, richiamo la sub homing dal MAIN ho provato ad inserire in serie al box SM0.1 ma non la esegue i segmenti non sono accesi...se la metto con SM0.0 mi si impazziscono i rele che ho controllato nella tabella di stato e fanno un andamento ad onda quadra!!uno attacca e l altro stacca...ora provo ad inserire il box sub homing nella sub0 dove cè il box Atch al utlimo segmento ma devo richiamarlo sempre con SM0.1?? e ret nell sub di homing lo devo scrivere all ultimo segmento?seguito da cosa all inizio del segmento? facendo la chiamata dalla sbro entro nell homing ma devo escludere la sbr0!perche poi mi si attivano le uscite e legge anche la tensione di riferimento 0-10, io voglio separare le due sub mettendole una nell altra come faccio a dire di eseguire o una o l altra? La cosa piu semplice mi sta diventado cosi difficile uffff :(

Link al commento
Condividi su altri siti

La chiamata alla sub di homing puoi farla nella sbr0, come ultima istruzione prima uscire. Così inizializzi tutto, fai homing e sei pronto per la partenza! Parole Sante...fosse facile...! Ho cancellato tutto il programma dell homing voglio rifare daccapo sto facendo troppa confusione!!Ora cè solo il posizionatore che va bene!

Ti faccio delle domandine...

1) Posso richiamare la nuova sub2 Homing con un Ingresso I0.6 =1? (collegato nel MAIN in serie al box sbr2)?

2)é normale che quando entro nella sub2 perche ho attivato i0.6 mi resta nel modulo analogico la tensione del posizionatore?

3)Perche non trovo la funzione CALL nella cartella controllo del programma

Mi passi il programma che non ci sto capendo piu niente!!auhauha comunque oggi giuro che faccio di tutto deve funzionare e basta!! ;)

Link al commento
Condividi su altri siti

..se la metto con SM0.0

Ho l'impressione che tu esegua la routine di homing sempre

Prova a far così.

Nella sbr0 metti a 0 un merker (scegli tu un bit )

Nel main se il merker è a 0 chiami la sub di homing.

Nella sub di homig come ultima istruzione, prima del ret, metti a 1 il merker.

In questo modo il main cicla continuamente, ma esegue homing solo quando il merker è a 0, cioè una volta. Se vuoi ripetere la funzione di homing basta forzare a 0 il merker con un comando, per esempio da pannello operatore.

Link al commento
Condividi su altri siti

si provero subito dopo pranzo quello che mi hai detto!!volevo solo postare quello che facevo: infatti girava sempre nella sub di homing!

LD SM01

A I0.6

CALL SBR_0 (posizionatore)

segmento 2

LD SM0.1

AN I0.6

CALL SBR_2 (homing)

I0.6 è il mio tasto di on off sistema e sia ad on che off il programma non andava ne nell posizionatore e ne nell homing!(ho usato anche disi ed eni per escludere il posizionatore..)

Dopo provo l ultimo messaggio che mi hai scritto e ti faccio sapere subito! in un modo o nell altro ci riusciro...Buon pranzo e grazie ancora ;)

Link al commento
Condividi su altri siti

Livio FUNZIONA!!altro che manuale... :lol: Ho fatto come hai detto tu ho chiamto la sbr homing con il contatto negato di M0.1 ed entra nella sub homing solo una volta la prima volta se il merker mo.1 (attivato dall ingresso I0.6) è a 0! poi passando ad 1 i0.6, lascia la sub homing e va nel posizionatore se riporto a 0 I0.6 non esce dal posizionatore fino a quando spengo e riaccendo la cpu e trova a 0 i0.6 che poi passero solo come merker dal pannello!! (I0.6 l ho usato per provare senza pannello per ora..) quindi ora vado a rifare l' homing! ;)

Link al commento
Condividi su altri siti

altro che manuale...

Non confondere le cose. Il manuale va letto e consultato per capire come funziona il sistema.

Ci sono altre conoscenze che non dipendono dal sistema, ma sono comuni a tutti i sistemi programmabili.

Purtroppo tu devi imparare tutte e due le cose. Ti aspetta un duro lavoro. Persevera! Step by step supererai il gap :D

Link al commento
Condividi su altri siti

Eccomi qui...sono un po stanco..ho finito l homing...c erano delle cose che non andavano come volevo io e alla fine ci sono riuscito ad esempio c èra il famoso tasto di start che usciva dall homing e andava nel posizionatore...nelle prove ho visto che se durante il funzionamento nel posizionatore veniva portato a 0 di nuovo il posizionatore perdeva la quota dell hc0 che si portava a 0 quindi ho usato set per attivare la bobina eni...per abilitare l interrupt del posizionatore e da li anche se riporto a 0 il tasto start non esce fino a quando non si spegne tutto!all inizio entro subito nell homing perche lo start si trova a 0 ho usato anche SM0.1 sulla bobina DISI nel MAIn perche disattivo il posizionatore solo nel primo ciclo...per andare a fare l homing...insomma ne ho provate parecchie comunque grazie al merito tuo che sono arrivato a farlo andare!! è vero che il manuale è importante ma tu hai fatto il 90%! a pensare che è uno dei primi progetti che faccio con il plc per me è gia molto! fin dall inizio ho voluto seguire il tuo consiglio di fare questa applicazione con il tuo metodo propio per imparare da un grande esperto come te!potevo anche fare il semplice homing a 0 sul tocco del micro, invece ora l ho fatto con una quota in avanti che decido io a secondo del gioco meccanico che cè da recuperare!!e non è una cosa da poco!sicuramente il programma sara con qualche errore o qualche segmento di troppo o scritto in forma sbagliata per non semplificare la scansione della cpu..ma questo lo imparero solo facendo esperienza ,leggendo il manuale ma soprattutto chiedendo consigli ad esperti che sono in questo forum!!Ancora Grazie per le tue dritte caro Livio ;)

Link al commento
Condividi su altri siti

Invece della quota in avanti, che non sarà mai precisa perchè dipende da quando incontri il micro e dal ritardo d'inversione, usa la tacca di zero dell'encoder.

Se non vuoi usarlo per resettare direttamente HSC0, puoi collegare quelsto canale ad uno degli ingressi veloci e legarlo ad un interrupt. Se non ricordo male lo stesso ingresso usato per il reset del contatore può essere legato ad un interrupt.

In questo modo hai la certezza dell'azzeramento sempre nella medesima posizione.

Link al commento
Condividi su altri siti

Ho capito e hai ragione questa è un ulteriore finezza...per questo sistema forse è un po troppo calcolare anche questo tanto non mi serve una precisione cosi accurata...magari la prossima applicazione faro come dici tu sicuramente chiedero il tuo parere!! ora sto facendo il programma sul pannello tp177a cosi dopo la provo questa famosa antenna..!!finalmente! devo solo aumentare il guadagno per recuperare quei 50 impulsi...

Link al commento
Condividi su altri siti

Livio l ho provato va benissimo !! funziona una meraviglia!! rimane il problema del guadagno!!!l ho portato a 9!!la tensione massima da 1° a 260° arriva max a 4 volt!!il motore è in rampa da 0,5 hz a 50hz...ma sul modulo analogico ci sono ancora 90mv!!e sono fuori di circa 5 gradi a occhio...non ho visto la quota sul plc perche ora cè il pannello collegato...e non ho messo la word di riferimento hco sul pannello (posizione attuale...) posso aumentare ancora il guadagno???pero spiegami una cosa perche è una rampa che parte un po lenta e al centro della corsa cresce molto accelera parecchio..e poi si rallenta molto dopo la meta.. Forse perche l accelerazione del inverter in rampa l ho messa a 3 secondi??devo portarlo a 1 secondo??perche mi pare propio che passati i 3 secondi il motore acceleri un po di piu...come se il ritardo di 3 secondi all inizio nell inverter lol fa perdere tempo rispetto al posizionatore...come regolo il problema dei 90mV che non legge l inverter??

Link al commento
Condividi su altri siti

Ti riporto un tuo recente messaggio...

Se il posizionatore si ferma prima puoi fare 2 cose.

1 - Aumenta il guadagno. Lo puoi aumentare sino a che lo vedi diventare "nervoso"

2 - Metti una soglia minima di riferimento, per esempio l'equivalente di 100 mV. Però devi avere una banda morta di errore. Per esempio se l'errore <=5 metti a zero il riferimento e blocchi l'inverter.

Puoi anche fare tutte e due le cose, anzi io di solito le faccio tutte e due.

Come faccio a mettere una soglia minima di riferimento?? in serie al box dove carico in AQW0 metto il confronto dell errore <=5 ?

io pensavo di addizionare un valore di 100mV a AQW0 ... propio il valore che rimane inserito 96mV in modo da far scalare solo quello...senza aumentare piu di 9 il guadagno..

Cioe ,il posizionatore dice che ci sono ancora 96mV? l inverter legge fino a 100 e poi si ferma ?allora io porto il valore a 196mV cosi anche se poi rimarra il valore di 96mV io ne ho scalati altri 100 perche li sommo solo in uscita, cioe su AQW0, in modo che anche quando il posizionatore butta giu il massimo riferimento ad esempio 4 volt saranno 4,1 volt... che ne pensi?

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