Liuk78 Inserito: 27 giugno 2011 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
amed Inserita: 28 giugno 2011 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 28 giugno 2011 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
Liuk78 Inserita: 28 giugno 2011 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 2 luglio 2011 Segnala Share Inserita: 2 luglio 2011 Va benissimo così. Link al commento Condividi su altri siti More sharing options...
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