Vai al contenuto
PLC Forum


Delucidazione su Ciclo Plc


step-80

Messaggi consigliati

Leleviola non sono un genio della programmazione ma anch'io ragiono alla tua maniera. Il problema è che messa giù cosi non funziona. Per questo ho cercato metodi alternativi..

Se inserisco un solo fronte e poi in parallelo tutte le verifiche, le condizioni vengono contemplate tutte indistintamente, anche se seguite da un jump( cosa molto strana visto che ció va fuori da ogni logica secondo me). 

Se verifico 'cambio' AND 'passo'=0 e la condizione è vera, carico 5 in 'passo' ed eseguo un jump alla riga seguente. In questo modo mi aspetto che gli altri casi non vengano elaborati ma ció NON ACCADE. 

Se i jump sono sullo stesso rung è come non venissero presi in considerazione.

Poi sono pronto ad essere smentito ma ho provato anche oggi usando bit al posto di un intero. Stessa cosa.

Link al commento
Condividi su altri siti


Roberto Gioachin
il ‎06‎/‎04‎/‎2018 at 20:06 , step-80 scrisse:

Voglio dire, visto che ho usato il fronte, la scansione successiva a quella dello start dovrebbe trovare condizione OFF per cui, secondo i miei calcoli, dovrebbe per lo meno attendere un nuovo trigger..al di la che poi sia sbagliato il ragionamento. Perchè continua a loppare?

Anche qui il motivo è molto semplice, Le tue istruzioni "MOV" non sono condizionate da ENO delle comparazioni, di conseguenza non sono condizionate dal tuo fronte di salita, avresti dovuto utilizzare il "MOV" con "ENO".

 

il ‎06‎/‎04‎/‎2018 at 20:06 , step-80 scrisse:

Lo spreco di risorse deriva dal fatto che uso una word e non semplici bit , oppure non ti piace il sistema in se? 

Io non ho idea per quale motivo hai realizzato questa parte di programma, ma se volevi ottenere un qualche incremento del valore di una variabile potevi semplicemente fare una somma ad ogni fronte di salita, quindi bastava una sola istruzione. Poi eventualmente facevi una comparazione per azzerarla una volta raggiunto (o superato) il valore desiderato.

Se invece volevi creare una vera e propria sequenza, avresti impegnato meno risorse lavorando con dei bit, oppure con il vecchio e sempre valido sistema del registro a scorrimento. Oppure ancora con dei semplici RESET e SET di Bit come proposto più volte ed utilizzato da molti programmatori.

Oppure ancora meglio, visto che usi Mitsubishi, utilizzando SFC con il quale crei complesse sequenze senza fare molti sforzi mentali.

Questo intendevo.

 

 

 

Link al commento
Condividi su altri siti

Roberto Gioachin
16 minuti fa, Roberto Gioachin scrisse:

Anche qui il motivo è molto semplice, Le tue istruzioni "MOV" non sono condizionate da ENO delle comparazioni, di conseguenza non sono condizionate dal tuo fronte di salita, avresti dovuto utilizzare il "MOV" con "ENO".

Mi rendo conto di non aver spiegato bene.

Il "MOV" con "EN" dovrebbe essere condizionato sia dal risultato della comparazione che da "ENO" della comparazione, vuol dire che si deve fare una "AND" delle due informazioni.

Oppure avresti dovuto eseguire la comparazione senza nessuna condizione (senza EN) e all'uscita di questa mettere in serie il tuo fronte di salita prima di entrare su "EN" del "MOV".

 

 

Link al commento
Condividi su altri siti

Buongiorno Roberto

 

3 ore fa, Roberto Gioachin scrisse:

Io non ho idea per quale motivo hai realizzato questa parte di programma

 Puro scopo didattico. E' un quesito di un utente trovato qui sul forum e ho voluto provare a vedere cosa usciva. 

3 ore fa, Roberto Gioachin scrisse:

Anche qui il motivo è molto semplice, Le tue istruzioni "MOV" non sono condizionate da ENO delle comparazioni, di conseguenza non sono condizionate dal tuo fronte di salita, avresti dovuto utilizzare il "MOV" con "ENO".

 

Qui fatico a seguirti. Ma sicuramente è un mio limite. 

Le mie istruzioni MOV non sono condizionate da ENO delle comparazioni, ma solo dal risultato delle comparazioni. Ma questo che differenza fa? Voglio dire, la comparazione mi da il risultato solo nel momento in cui ho il fronte di salita e in quel momento(solo in quel momento), se la comparazione è vera , l'uscita effettua il MOV. Dov'è che sbaglio?

 

Non ti nascondo che non mi è mai stato limpido il motivo per cui esista il MOV e anche il MOVE_E. 

 

3 ore fa, Roberto Gioachin scrisse:

ma se volevi ottenere un qualche incremento del valore di una variabile potevi semplicemente fare una somma ad ogni fronte di salita, quindi bastava una sola istruzione. Poi eventualmente facevi una comparazione per azzerarla una volta raggiunto (o superato) il valore desiderato.

Già fatto, è il metodo che funziona meglio. Ripeto: la sequenza ha puro scopo didattico e direi che sta funzionando visto che sono usciti 'limiti' che non mi immaginavo(parlo di miei limiti ovviamente). 

Link al commento
Condividi su altri siti

Roberto Gioachin
14 minuti fa, step-80 scrisse:

Le mie istruzioni MOV non sono condizionate da ENO delle comparazioni, ma solo dal risultato delle comparazioni. Ma questo che differenza fa? Voglio dire, la comparazione mi da il risultato solo nel momento in cui ho il fronte di salita e in quel momento(solo in quel momento), se la comparazione è vera , l'uscita effettua il MOV. Dov'è che sbaglio?

Lo sbaglio è proprio questo!

La comparazione viene eseguita solamente sul fronte di salita, nelle scansioni successive la comparazione non viene più eseguita e tu credi che il risultato vada a zero, invece il risultato si mantiene sul valore che aveva con l'ultima esecuzione, quindi sul valore che aveva durante il fronte di salita.

Per fare una prova fai così: esegui sempre di continuo la comparazione (senza EN oppure con una condizione TRUE), appoggia il risultato su una variabile BOOL, poi usa il fronte di salita in serie a questa variabile per eseguire il MOV, vedrai che il risultato sarà come te lo aspetteresti.

Fai attenzione al comportamento delle istruzione con EN, se questo è a OFF l'istruzione non viene eseguita ed il valore in uscita si mantiene come era prima di essere messo ad OFF. 

Link al commento
Condividi su altri siti

42 minuti fa, Roberto Gioachin scrisse:

La comparazione viene eseguita solamente sul fronte di salita, nelle scansioni successive la comparazione non viene più eseguita e tu credi che il risultato vada a zero, invece il risultato si mantiene sul valore che aveva con l'ultima esecuzione, quindi sul valore che aveva durante il fronte di salita.

 Ah beh...questo spiega tutto...

 

Roberto(mi permetto di darti del tu) , ti ringrazio davvero per la spiegazione esauriente.Nessun corso o libro avrebbe saputo fare di meglio. Grazie ancora!

Link al commento
Condividi su altri siti

Ho provato come mi hai suggerito ( Comparazioni eseguite incondizionatamente e appoggio risultato su variabili bool) ed il ciclo funziona perfettamente. 

Immagine1.png.c69a3e2c106beca8a4148fe9fb3b8bed.png

Anche se era a scopo didattico, in realtà mi è molto utile in quanto ho qualche macchina che a volte fa le bizze, credo che indagando maggiormente sull'uso di EN-ENO troverò le cause...grazie ancora!

Link al commento
Condividi su altri siti

21 ore fa, Roberto Gioachin scrisse:

Il forum serve a questo no? 

 

E' vero, ma non do mai per scontato che qualcuno perda anche solo 5 minuti del suo tempo per rispondere a me ed aiutarmi a risolvere un mio problema anche banale.

In fondo, non ci si guadagna nulla, a parte la soddisfazione di aver aiutato qualcuno. 

 

Grazie ancora!

Link al commento
Condividi su altri siti

16 minuti fa, step-80 scrisse:

In fondo, non ci si guadagna nulla, a parte la soddisfazione di aver aiutato qualcuno. 

 

Questa è la motivazione delle persone migliori: mettere a disposizione degli altri la propria esperienza senza chiedere nulla.

 

Però chi sono anche persone che usano i forums per autoreferenziarsi: Questi li riconosci abbastanza velocemente perchè considerano un obiezione come un reato di lesa maestà.:)

Fotunatamente sono un'esigua minoranza e spariscono presto, quando si accorgono di avere poco seguito.;)

Link al commento
Condividi su altri siti

Personalmente Livio, non sopporto chi si iscrive puramente perchè ha un problema e poi, una volta ottenuta la soluzione, si eclissa. Spessissimo senza nemmeno dare un feedback o un ringraziamento.

Questo lo trovo veramente poco educato. Non c'è nulla di peggio che passare magari 45 minuti per rispondere a qualcuno, magari impietosito dalla sua richiesta che sembra veramente disperata(non prendo nemmeno in considerazione di aiutare qualcuno che , nella sua richiesta, infili anche un minimo di arroganza) , magari mettere in piedi un codice per poi postarlo e poi vedere che dopo settimane nessuno si è degnato di rispondere. Non si sa se la tua soluzione andava bene, male...se andava bene , almeno la soddisfazione di saperlo!

 

Per fortuna le persone cosi sono in minoranza.

 

Io faccio parte di quella cerchia di persone somigliante in parte a quella descritta poc'anzi. Mi sono iscritto perchè ero disperato, avevo un problema e non sapevo come venirne a capo. Mi ero affacciato da poco al mondo dei plc e dell'automazione in generale e, come ben sapete, da neofiti una lieve pendenza sembra l'Everest. 

Una persona si prodigò subito per aiutarmi mentre io ancora mi chiedevo cosa volesse poi in cambio...non mi sembrava possibile ricevere aiuto disinteressato.

Questa persona spese un sacco del suo tempo libero cercando di capire dove stesse il problema (sul forum ma anche messaggi sul telefono e skype) , si collegò più volte al mio pc con Teamviewer e, alla fine, risolvemmo il problema.

Nel frattempo si può dire che mi trasmise la passione per questo mondo(sino ad allora per me era solo l'inizio di un nuovo lavoro)spiegandomi vari concetti e dandomi i fondamenti sugli stepper motor e azionamenti vari dai quali ero stranamente attratto ...Con questa persona in seguito è nata una bellissima amicizia tuttora attivissima e costui è ..Giuseppe Signorella.

Una delle persone più oneste, gentili e pazienti del mondo, oltre ad essere un professionista molto affermato nel suo settore.Spero questo elogio non venga preso come una marchetta.. non sono mai riuscito a spiegargli che ,molto probabilmente, se non era per lui questa scintilla non sarebbe mai scoccata. 

 

Passato da Siemens a Schneider, l'utente 'Valvolina' mi tirò fuori dalla melma non poche volte, passando anche con lui parecchio tempo al telefono. Mi ha aiutato a risolvere problemi che l'assistenza Schneider avrebbe si risolto ma con tempi magari notevolmente più lunghi.

 

Passato invece da Schneider a Mitsubishi ho trovato anche questa volta un angelo custode( di lui non faccio il nome perchè so essere molto riservato). Non conto più le sere passate su Skype con lui mentre mi faceva videocorsi, spiegava le differenze tra questo e quel prodotto, questa o quella funzione. Non so nemmeno dove abbia trovato tutta quella pazienza ma è anche grazie a lui che ora sono dove sono. Tuttora è sempre presente e disponibile se qualche dubbio mi assale..sembra una stupidata ma non lo è affatto. 

 

Naturalmente non cito persone come Livio, Batta, Mirko Ceronti o altri...anche solo leggendo tra le righe dei loro post si possono imparare un sacco di cose...

Spero di poter ricambiare un giorno!

Link al commento
Condividi su altri siti

1 ora fa, step-80 scrisse:

Spero di poter ricambiare un giorno!

Lo stai già facendo, stimolare discussioni interessanti (che seguo ma a cui non partecipo perchè non ne ho le competenze) va a favore di tutti quelli che seguono il forum, anche senza intervenire.

 

Ciao, Ale.

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