Vai al contenuto
PLC Forum


Routine Calcolo Anticipo Cammes


biros66

Messaggi consigliati

Ciao Livio!

Sono stato assente un paio di giorni...

Non penso proprio che tu abbia da imparare qualcosa da me, casomai è il contrario...

Comunque tanto per chiarire quello che intendevo dire metto 2 codici di esempio, ma non conoscendo il plc in questione li scrivo in AWL per s7-300, tralasciando le istruzioni per il controllo dello sforamento del campo 0...360°.

In grassetto le istruzioni aggiuntive per la gestione dell'anticipo:

Esempio con anticipo sulle quote della camma:

U(

L "CammaMin_01" // Quota minima camma 01

L "K_Anticipo" // costante anticipo

-I // quota minima camma - anticipo

L "QuotaAttuale"

<=I

)

U(

L "CammaMax_01" // Quota massima camma 01

L "K_Anticipo" // costante anticipo

-I // quota massima camma - anticipo

L "QuotaAttuale"

>=I

)

= "Camma_01"

Esempio con pseudo-encoder:

L "QuotaAttuale" // questa istruzione potrebbe essere omessa

L "K_Anticipo"

+I

T "QuotaAttuale_01" // Pseudo-encoder per camma 01

U(

L "CammaMin_01" // Quota minima camma 01

L "QuotaAttuale_01"

<=I

)

U(

L "CammaMax_01" // Quota massima camma 01

L "QuotaAttuale_01"

>=I

)

= "Camma_01"

Link al commento
Condividi su altri siti


Io son rimasto senza PC per qualche giorno (alimentatore del portatile morto) e poi ero in viaggio per tornare dalle vacanze (ahimè son finite :( )

Non penso proprio che tu abbia da imparare qualcosa da me, casomai è il contrario...

Perchè? Io son convinto che si può sempre imparare qualche cosa da chiunque; alle volte c'è qualche cosa che sfugge o qualche cosa che non si considera, oppure c'è l'idea veramente originale, indipendentemente dall'esperienza e dalla cultura di chi al propone. Questa è sempre stata la mia filosofia di vita: coscienza dei propi mezzi, ma assoluta umiltà nei confronti delle proposte altrui.

Tornando all'oggetto del nostro confronto ci sono due cose da osservare, non per amor di polemica che sarebbe inutile, ma per confronto di idee che è sempre costruttivo.

Primo tu bari un poco. :)

Come hai scritto, dovresti fare il confronto se superi 360o o altro valore massimo del'encoder. Se inserisci quelle istruzioni i due blocchi hanno la medesma lunghezza ed il medesimo tempo di esecuzione.

Secondo non consideri che la strategia che propongo è differente, per concetto, dalla tua ed è più veloce. Perchè? Per la semplice ragione che i calcoli e le verifiche si eseguono una tantum, al cambio o alla introduzione dei parametri e si effetuano in una parte di programma "lento". Nella parte veloce, o sotto interrupt, si esegue solo il confronto tra il conteggio degli impulsi ed il valore di camma.

Che sia la quota minima o la quota massima, non ha alcuna importanza. Tutti i valori di camma, corretti dagli opportuni anticipi, anticipi che possono essere tutti differenti, sono iseriti in un vettore indicizzato una ed una sola volta all'avvio del programma. Prima di inserirli si effettuano anche i controlli di congruenza. Durante la fase di lavoro si effettua solo il confronto con il valore puntato dall'indice del vettore; quando il confronto è vero, cioè se il conteggio è >= al valore, l'indice s'incrementa e si effettua il confronto con il valore successivo. Se l'operatore deve variare un valore o una costante di anticipo tutti i conti e le verifiche si effettuano nel programma "lento" e solo a regime i nuovi valori saranno operativi.

Questa strategia si può applicare con dispsoitivi, come quello oggetto della discussione, in cui si hanno solo due possibilità: task lento e task veloce. Si può applicare altresì, come nel caso personale che ho citato, quando hai la possibilità di interrupt diretto sul confronto.

In entrambi i casi è la strategia che impiega il minor tempo macchina di risoluzione. Almeno io, sino ad oggi, non ne ho scoperte altre, indipendentemente dal dispositivo usato: PLC o controllo embedded.

Per questa ragione ero curioso di conoscere i dettagli del tuo approccio, magari potevo conoscere una strategia che mi consentiva maggior velocità.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Allora, prendendo un poco di qua ed un poco di là, sono riuscito a realizzare 'sto generatore di camme elettroniche. Stò iniziando a testare in questi giorni la macchina. Appena possibile, a lavoro terminato, vi posto la mia soluzione scritta in ST Schneider (XTEL - Vi rammento che il sistema è vecchio). A settembre avrò l'opportunità di testare la stessa soluzione su HW Berger & Lahr programmato con Codesys.

Buone ferie a tutti

Modificato: da biros66
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...