southofsanity Inserito: 24 aprile 2012 Segnala Inserito: 24 aprile 2012 Sul nuovo step7 v11 per mia gioia c'è l'scl derivato dal pascal.... una cosa volevo chiedere..... nel programma in pascal perciò penso anche scl, decido io quando avviare il programma e quando terminarlo con i vari loop. Essendo il plc in loop di suo, il programma scritto da me in SCL, verra eseguito ciclicamente o no ? esempio banale: faccio il classico IF "pippo" = 100 THEN add "x" ; ELSE sub "y" ; END_IF normalmente se non è all'interno di un loop viene eseguito una sola volta, nello step 7 v11 dato che il programma plc è ciclico ?
batta Inserita: 25 aprile 2012 Segnala Inserita: 25 aprile 2012 Viene eseguito una sola volta, fino al richiamo successivo. Voglio dire, tu crei un blocco di programma (FC o FB). Il fatto però che tu abbia generato questo blocco non è condizione sufficiente per l'esecuzione del blocco stesso, ma dovrai programmarne il richiamo da qualche parte. Se il richiamo è ciclico (ad esempio in OB1), ad ogni scansione verrà eseguito una volta. Il fatto che il blocco sia creato utilizzando l'SCL piuttosto che il KOP, non modifica minimamente la modalità di esecuzione.
enrico89 Inserita: 26 aprile 2012 Segnala Inserita: 26 aprile 2012 e se viene scritto direttamente nel OB1?
batta Inserita: 26 aprile 2012 Segnala Inserita: 26 aprile 2012 Cioè vorresti scrivere direttamente l'OB1 in SCL? In quel caso, le istruzioni verrebbero eseguite ciclicamente. Questa soluzione però non mi farebbe solo storcere il naso, ma addirittura inorridire. E' buona norma programmare in OB1 solo i richiami ai vari blocchi di programma, ed eventualmente solo poche e semplici istruzioni. Quindi, anche se utilizzi l'SCL per l'OB1, utilizza lo stesso l'OB1 solo per i richiami. Anche ipotizzando un programma molto semplice, che richiede una sola FC, scrivi il programma in questa FC e in OB1 limitati a richiamare l'FC.
enrico89 Inserita: 26 aprile 2012 Segnala Inserita: 26 aprile 2012 perchè dici che non è buona norma scrovere piccoli programmi direttamente nel ob1? io non l'ho mai fatto ma non mi sono mai chiesto perchè
Livio Orsini Inserita: 26 aprile 2012 Segnala Inserita: 26 aprile 2012 (modificato) OB1 è l'equivalente della funzione main di un programma scritto in "C". In questo blocco dovrebbero essere effettuati solo test e richiamo ad funzioni e/o blocchi di programma. Modificato: 26 aprile 2012 da Livio Orsini
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora