Vai al contenuto
PLC Forum


Snellire il tempo ciclo


forna

Messaggi consigliati

Buongiorno a tutti!

 

Per vari problemi di tempo ciclo della cpu mi sono trovato costretto a snellire varie operazioni, richiamare qualche FC solo quando necessario ed altri piccoli accorgimenti, adesso la mia domanda è una sola, ovvero l'utilità dei "salti", nel senso se io ho parte di programma che viene eseguita solo in determinati casi, se la salto velocizzo lo scroll del programma?

 

Faccio un esempio

 

Scrolla più velocemente così (ovvero saltandolo):

 

UN M0.0

SPB ciao

 

U M0.0

[..]

codice

[..]

 

ciao: nop 0

 

o è la stassa cosa di fare così:

 

U M0.0

[codice vincolato alla presenza di M0.0]

 

 

Perché nel secondo caso a vederlo online si calcola il RLO, invece con il salto lo salta a pié pari, però può anche darsi che blocchi il calcolo del RLO al primo valore incongruente

 

Sapete rispondermi? 

 

 

Link al commento
Condividi su altri siti


Non capisco il secondo caso.

Se una certa funzione o parte di codice ha l'esecuzione subordinata allo stato di una variabile è giusto effettuare il test e saltare immediatamente se la condizione non è vera.

Ogni altra operazione appesantirà inutilmente il lavoro di CPU.

Link al commento
Condividi su altri siti

una volta esisteva per step 5 e successivamente step 7 un libricino che conteneva la lista istruzioni e tutti I tempi di esecuzione in micro secondi  o millisecondi (non ricordo).

Il ricalcolo del risultato logico combinatorio non influisce, quello che influisce è la quantità di istruzioni che elabori.

Se effettui dei salti in modo da far ciclare solamente il software che ti serve in quel momento, ottimizzi il tempo ciclo. Tieni conto che all'epoca di step 5 questa modalità di programmazione era obbligatoria visti I tempi di esecuzione delle istruzioni.

In sintesi le condizioni di salto SPB-SPA-SPN sono da utilizzare se vuoi ridurre il tempo ciclo.

 

Link al commento
Condividi su altri siti

Quote

tutti I tempi di esecuzione in micro secondi  o millisecondi

 

S5 era un catorcio lentissimo ma i tempi di istruzione eran dell'ordine dei µs o frazioni, solo forse divisione e moltiplicazione in virgola mobile superavano il ms.:smile:

 

Con gli apparati moderni dove c'è memeoria a josa e velocità da missile, si è persa l'abitudine di centellinare le istruzioni allo stretto necessario. Poi ti capita l'applicazione particolare e allora....

Link al commento
Condividi su altri siti

Quote

S5 era un catorcio lentissimo ma i tempi di istruzione eran dell'ordine dei µs o frazioni

Io ci facevo I magazzini automatici e avevo bisogno di sfruttare le funzioni di sistema tipo LIR-TIR-TNB per una agevole gestione del tracking  e quelle si che facevano sedere la CPU!

Quando confronto le performance con le apparecchiature attuali mi sembra di parlare del paleolitico......

Link al commento
Condividi su altri siti

Con il secondo caso intendevo una cosa del tipo:

 

u m0.0

s m0.1

 

u m0.0

l 360

t mw1

 

ecc... comunque grazie mille avete confermato la mia ipotesi :) non volevo modificare un programma intero per "niente"

Link al commento
Condividi su altri siti

  • 4 months later...

Pur con PLC veloci, ottimizzare il programma dovrebbe rimanere una buona abitudine, perché prima o poi l'applicazione particolare descritta da Livio capita (qualche mese fa, a me). :-)

Link al commento
Condividi su altri siti

A me hanno sempre insegnato che inserire (molti) salti non è una buona tecnica di programmazione.

Almeno così diceva il mio prof. all'università (rende meno leggibile il software).

Poi, secondo me, bisogna sempre valutare caso per caso.

 

Ciao

Link al commento
Condividi su altri siti

se hai una serie di passi da controllare , per cui è attivo solo uno alla volta , oltre al salto puoi anche mettere il BEA , Block End Absolute ed uscire fuori dal blocco senza andare a verificare se gli altri passi sono attivi , perche non lo saranno di sicuro essendone uno solo attivo alla volta.

In alcuni controlli se non ci sono le condizioni per continuare un flusso puoi anche usare il BEB cioe uscita condizionata dal blocco 

Per esempio se non sei un automatico esci fuori e non va a generare le logiche , con i dovuti controlli per evitare che ti rimanga qualcosa attivo anche in manuale.

Li uso anche io ma poco , non ho mai avuto problemi di memoria o di tempo di scansione nonostante faccio solo impianti medio -grandi 

Link al commento
Condividi su altri siti

Quote

se hai una serie di passi da controllare , per cui è attivo solo uno alla volta , oltre al salto puoi anche mettere il BEA , Block End Absolute ed uscire fuori dal blocco senza andare a verificare se gli altri passi sono attivi , perché non lo saranno di sicuro essendone uno solo attivo alla volta.


Questo è proprio un tipico esempio. Io uso abitualmente liste di salti per gestire le sequenze di funzionamento di una macchina o di una sua parte (in AWL è l'istruzione SPL) e in ogni passo c'è un BEA. La leggibilità rimane perché di quello che c'è dopo il BEA te ne freghi allegramente. Inoltre, direi soprattutto, la leggibilità la si ottiene con un software pulito, ordinato e commentato. Ad esempio, sempre tornando alle liste di salti, ogni passo è un segmento, col suo titolo ed il suo commento. Ah, il commento, questo sconosciuto...  (perdonatemi  lo sfogo, ma non ne posso più di dover mettere le mani su software senza commenti o con commenti buttati lì a caso, magari vecchi e non aggiornati, perduti in un mare di istruzioni). :-(

Link al commento
Condividi su altri siti

con il BEA l'ottimizzazione diminuisce quando si avvicina l'ultimo passo in quanto l'interrogazione su quale passo è attivo bisogna farlo per tutti quelli prima di quello attivo , è logaritmico. Con SPL invece l'interrogazione viene fatta una volta sola all'inizio del blocco per cui è piu ottimizzata.Personalmente uso creare molte sotto sequenze piuttosto che una sequenza lunga e complessa; una volta stabiliti gli interblocchi tra esse e le condizioni di avvio risulta tutot più semplice da gestire

Link al commento
Condividi su altri siti

Quote

Personalmente uso creare molte sotto sequenze piuttosto che una sequenza lunga e complessa; una volta stabiliti gli interblocchi tra esse e le condizioni di avvio risulta tutot più semplice da gestire

Esatto. Se il numero di passi, che stabilisco arbitrariamente a seconda della situazione, è eccessivo, allora creo ulteriori sequenze.

Link al commento
Condividi su altri siti

Che bello i salti di programma per diminuire i tempi di scansione,

se non ci fossero difficilmente avrei realizzato varie applicazioni con Plc compatti ovviamente meno prestazionali di unità a rack

Link al commento
Condividi su altri siti

Moltissime applicazioni le ho scritte in ladder a passi senza salti .

Bisogna considerare che il software deve essere letto da altri colleghi , interni o esterni , e soprattutto dai manutentori almeno per quanto riguarda andare a vedere un allarme oppure una condizione di avvio che non si verifica o un comando manuale .

Per cui nemmeno a me piace fare tutti in awl ed usare salti che in fase di debug ti fanno diventare matto , però va detto che in awl si possono fare molte operazioni e scriverle  in modo  veloce.Purtroppo il ladder di siemens è ancora troppo arcaico .Dovrebbero implementare un blocco dentro il quale poter scrivere qualsiasi espressione come fanno Rockwell e Schneider da una vita 

Link al commento
Condividi su altri siti

Non mi sembra di ricordare di aver mai avuto un 300 che andava oltre i 10ms.

Dubito che la logica ladder booleana faccia alzare molto il tempo di ciclo, per quanto complesso sia il ciclo macchina.

Forse hai una marea di calcoli in virgola mobile elaborati ciclicamente dove non serve? in questo caso potresti elaborarli su fronte solo quando necessario.

 

 

Link al commento
Condividi su altri siti

Quote

per non parlare di altri di Mitsubishi che lo fa da vent'anni


Bene, visto che sto per imparare Mitsubishi, a minuti arriverà il tecnico per iniziare il corso. :-)

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