Liuk78 Inserito: 27 giugno 2011 Segnala Inserito: 27 giugno 2011 Salve a tutti, sono un super dilettante che prova a farsi un self training come programmatore. Ho creato tanto per cominciare, un piccolo programmino, probabilmente una banalità per voi esperti, che gestisce un semaforo di un incrocio.Per il semaforo 1 (strada principale) nessun problema. Ora ho iniziato a creare la gestione del semaforo 2 (strada d'immissione):Semaforo 1:Verde---> gestito da timer variabile dall'utente (DB)Rosso---> gestito da timer variabile dall'utente (DB)Arancio---> gestito da timer con costante 5 secondiEntrambe le DB sono dichiarate come S5Time.Per il secondo semaforo vorrei fare una sottrazione:Il tempo di rosso del semaforo 1 deve essere il tempo di verde + arancio del semaforo 2. Quindi vorrei sottrarre alla db del semaforo rosso 5 secondi per ricavare il tempo di verde.Ho provato così: L "Tempi semaforo".Temp_sem1_rosso L S5T#5S -I T #time2 Dove #time2 è una variabile temporanea sempre dichiarata in S5time.Simulando con plc sim, quando immetto nel timer la variabile #time2 mi va in SF il plc, e il tempo caricato è comunque errato.Mi potete dare una dritta? Grazie Luca
amed Inserita: 28 giugno 2011 Segnala Inserita: 28 giugno 2011 Probabilmente il numero che tu scrivi non è codificato bene.vedi questo link:http://www.plcforum.it/forums/Impostazione...ens-t79996.htmlciao
batta Inserita: 28 giugno 2011 Segnala Inserita: 28 giugno 2011 Nel formato S5Time i bit da 0 a 12 contengono il valore di preset in BCD (3 digit, da 0 a 999), i bit 13 e 14 definiscono la base tempi (10-100-1000-10000 ms), i bit 14 e 15 sono riservati.Non puoi quindi fare operazioni matematiche tra variabili in questo formato.Per risolvere il tuo problema ti conviene impostare i tempi in variabili di tipo INT, fare i calcoli, e solo alla fine convertire i risultati in formato S5Time da dare in pasto ai timerOppure utilizzi altri tipi di timer (SFB4 "TON" e SFB5 "TOFF" che trovi nelle librerie Siemens installate con Step7), che lavorano con il formato TIME, che non è altro che una variabile DINT con valore del tempo in millisecondi.
Liuk78 Inserita: 28 giugno 2011 Autore Segnala Inserita: 28 giugno 2011 Grazie mille ad entrambi delle precisazioni!!!Ho verificato un'altra cosa però, che comandando la db del semaforo rosso fino a 9 sec e 990 ms funziona anche col mio metodo... ma se metto oltre va tutto fuoriscala e va in SF il plc. I miei 2 errori sono stati nel comandare le 2 db da tabella variabili in tempo simatic; e non avere dichiarato la base tempi.Ora le comando in decimale e ho aggiunto i seguenti controlli: L "Tempi semaforo".Temp_sem1_verde ITB L W#16#2000 OW T #Timever1 L "Tempi semaforo".Temp_sem1_rosso ITB L W#16#2000 OW T #Timeros1 Con questo metto la base tempi in secondi. L "Tempi semaforo".Temp_sem1_rosso L 5 -I ITB L W#16#2000 OW T #Timesemver2Con questo invece faccio la mia sottrazione e converto in s5time.Se avete ulteriori precisazioni, sono sempre più che ben accette, dato che sto cercando di imparare il più possibile Grazie ancora Luca
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