Jump to content
PLC Forum


Sign in to follow this  
step-80

Dubbi Su Gestione Interrupt Su Somachine

Recommended Posts

step-80

Salve ragazzi,scrivo per chiedere un chiarimento su un problema che ho trovato nella stesura di un programma.

Sto per usare per la prima volta una cpu m258 per comandare 6 azionamenti lexium 32,un inverter a32 e una ventina di cilindri pneumatici. Funzionamento molto banale,ma per la prima volta mi trovo a fare i conti con un ingresso ad interrupt.

Premetto che so bene cos'è un interrupt,e so anche come configuarare un evento interrupt con soMachine,il problema è che non so cosa scrivere nella task che viene richiamata dall'evento.Mi spiego meglio.

Io vorrei che alla chiusura di un contatto del plc(al quale andrà collegato un sensore laser,probabilmente,o comunque di precisione)uno dei brushless si fermasse nel più breve tempo possibile,e soprattutto nello stesso tempo(non voglio cioè che la fermata sia influenzata dal tempo di scansione)

Per questo ho pensato ad un interrupt.

Dunque il motore frulla a circa 700 rpm...come potrei fare?supponiamo che io usi il blocco'move velocity' o 'move jog'. Nella mia mente perversa pensavo che se in un normale task setto il bit che chiamo "cmd_move",il quale fa muovere il motore,potrei resettare tale bit nella task richiamata dall'interrupt.

Non so perchè ma non ne sono del tutto convinto... :toobad:

Inoltre,se resetto tale bit nella task richiamata dall'interrupt,lo stato si 'congela'e quindi non lo posso ri-settare?

Chiedo umilmente vostro aiuto :worthy:

Grazie in anticipo

Matteo

Share this post


Link to post
Share on other sites

Water

usa il blocco stop

certo che fermare una macchina con un tempo più breve del tempo di scansione la vedo dura,

stiamo parlando di millesimi di secondo e se consideriamo le inerzie meccaniche .. boh ...

ciao

Share this post


Link to post
Share on other sites
step-80

Ciao, non ho detto di voler fermarla in un tempo piu breve del ciclo di scansione, ma di voler fermarla senza che il tempo di ciclo influisca sul tempo di fermata.

Se uso il blocco stop, non credo che sia richiamato diversamente da altri blocchi.. Sbaglio?

Share this post


Link to post
Share on other sites
Water

il tempo di scansione dipende dalla pesantezza del programma è questo dato lo puoi sapere solo tu,

comunque non vedo il problema, solitamente il ciclo è talmente veloce che difficilmente influirà sul tempo di fermata,

poi come dicevo questo lo puoi valutare solo tu in base all'applicazione

il blocco stop è il blocco stop!

come fa ad essere richiamato diversamente? .. può solo fermare l'inverter

oppure non ho capito cosa stai chiedendo

ciao

Share this post


Link to post
Share on other sites
Livio Orsini
Premetto che so bene cos'è un interrupt,e so anche come configuarare un evento interrupt con soMachine,il problema è che non so cosa scrivere nella task che viene richiamata dall'evento.

Dipende da come comandi il drive. In tutti i drive, degni di questo nome, c'è un comando che porta a zero istantaneamente il riferimento di velocità, escludendo l'eventuale rampa.

Nella routine di servizio all'interrupt devi solamente attivare questo comando. Se, ad esempio, questo comando corrisponde ad un ingresso dignitale del drive, devi connettere l'ingresso ad un'uscita del del PLC, uscita che dovrai comandare direttamente, ovvero senza passare dai registriimmagnine. In questo modo il camando si attiva con un minimo ritardo, quello di latenza dell'interrupt e quello necessario ad eleaborare l'istruzione di scrittura, più il ritardo tipico dell'uscita fisica.

Share this post


Link to post
Share on other sites
step-80

comunque non vedo il problema, solitamente il ciclo è talmente veloce che difficilmente influirà sul tempo di fermata,

Qui non sono totalmente d'accordo, o meglio, credo che la cosa sia relativa. Se hai un motore che gira a 30-40 rpm qualche ms di ritardo non fa gran differenza, ma se sta frullando a 5000 rpm credo la differenza si veda, eccome..

Share this post


Link to post
Share on other sites
step-80

uscita che dovrai comandare direttamente, ovvero senza passare dai registri immagnine.

Buongiorno sig.Livio e grazie della risposta

mi corregga se sbaglio:scrivere direttamente un uscita significa attivarla immediatamente(come fosse un bit interno) invece di aspettare la fine del ciclo di scansione. Questo metodo va usato con le dovute cautele in quanto l'uscita,se scritta piu volte,cambierà stato piu volte rendendo imprevedibile il comportamento della macchina. Sbaglio?

Quello che volevo dire nel primo post era appunto questo:tra usare un interrupt ,scrivendo direttamente l'uscita senza passare dai registri immagine,e gestire tutto con i tempi del plc(che sono senz'altro brevi ma a mio parere non trascurabili) credo che passi una gran differenza,che aumenta in maniera esponenziale con la velocità del motore.

Questo almeno nella mia testa,perchè non sono ancora riuscito a fare nessuna prova pratica.

Un altro dubbio è il seguente:una volta richiamata correttamente la task ad evento(immagino nel mio caso evento esterno,in quanto la condizione richiamante è l'attivazione di un sensore)

dentro cosa sarebbe meglio mettere? un bit semprevero,che setta l'uscita fisica che comanda lo stop(naturalmente scrivendola direttamente)?

In questo caso,supponendo che il sensore sia rimasto attivo,significa che richiama continuamente quella task impedendomi di fatto di poter resettare quella uscita,o la richiama una sola volta e poi torna alla normale scansione?

Grazie anticipatamente

Matteo

Share this post


Link to post
Share on other sites
Livio Orsini

Un programma medio, con una CPU decente, oggi gira in qualche ms (1ms - 5ms). Se questi tempi e questo jitter è compatibile con la tua applicazione, non usare interrupt.

Se non è compatibile usa l'interrupt come ho descritto. Scrivere direttamente l'uscita non è un problema, basta fare in modo che venga scritta solo e soltanto dove e come si vuole. Con un poco di organizzazione e attenzione non è difficile.

Nella routine di servizio dell'interrupt si scrive, in questo caso, solo la'ttivazione dello stop rapido e la sua memoria. Nel resto del programama, prima di agire sui comandi di quel drive si verivicherà lo stato di quella memoria.

Anche la rimozione del comando di stop rapido, ed il reset della memoria, potranno avvenire nel ciclo normale, verificando che occorrano le opportune condizioni.

Share this post


Link to post
Share on other sites
step-80

Grazie infinite delle informazioni.

Vedró di sviluppare l'applicazione secondo quanto imparato

Matteo

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...