Gaker Inserito: 23 gennaio 2009 Segnala Share Inserito: 23 gennaio 2009 (modificato) Salve,Avrei il problema di gestire delle funzioni che si attivano una volta al giorno in un ora precisa e leggere e far vedere la data attuale (se non è quella giusta allora modificarla da Pannello). Ulteriore problema è quello che la memoria del PLC è al limite, quindi non posso aggiungere librerie già pronte per far questo, posso usare istruzioni semplici tipo Leggi/imposta data dal PLC , quindi le istruzioni già a disposizione da MicroWin, la cpu che uso è una 226 DC.Il problema che trovo è che quando cerco di andare a leggere solo l'ora per poi fare un confronto con l'ora che voglio attivare l'evento.. non riesco a farlo.. non riesco a fare i confronti, forse per i tipi diversi di formato???Grazie per le vostre risposte.Cordiali Saluti. Modificato: 23 gennaio 2009 da Gaker Link al commento Condividi su altri siti More sharing options...
Water Inserita: 24 gennaio 2009 Segnala Share Inserita: 24 gennaio 2009 l'ora viene letta in formato BCDquindi la dovrai per forza trasformare nel formato a te preferitoci sono blocchi funzione già pronti per questa soluzioneciao Link al commento Condividi su altri siti More sharing options...
Luca11 Inserita: 26 gennaio 2009 Segnala Share Inserita: 26 gennaio 2009 ciao a tutti... volevo sapere se sapete come funziona e si usa l' orologio hardwer nella cpu s7 200...dove si trova la tabella bcd di cui parla la guida in linea???????come faccio a impostare e a leggere l'orario????Grazie ciao. Link al commento Condividi su altri siti More sharing options...
Gaker Inserita: 27 gennaio 2009 Autore Segnala Share Inserita: 27 gennaio 2009 Ciao,Non ho nessun problema nella lettura e trasformazione della data/ora per farmi le mie operazioni.Il problema che trovo è che nell IMPOSTARE la data dell'orologio HW con l'istruzione SET_RTC (facendo un "P") su un evento; io agisco così (e non sò se sia giusto, anche perchè faccio il contrario della lettura che funziona):1) Leggo una VWX da pannello esempio VW640=>ANNO e lo trasformo usando l'istruzione I_BCD (anche perchè da Byte a BCD mi sembra non si possa direttamente) appoggiandola in una VW708 (la trasformazione quindi in BCD è in VW708, giusto?).2) Trasformo usando I_B (trasfomazione da Intero a Byte) la VW708 contenente l'intero BCD, quindi alla fine mi aspetto un Byte in BCD da caricare nel posto giusto, in questo caso nel Byte iniziale da passare all'istruzione "SET_RTC" (che ne prende 8) e io imposto tutti tranne gli ultimi 2 che sono Riservato e giorno della settimana, e mi sembra di aver letto nel Forum che non è neccessario impostarli.. giusto??3) Chiamo l'istruzione SET_RTC passandoli in pasto l'indirizzo iniziale degli 8 byte in BCD (5 dei quali impostati come detto sopra).Questo però non funziona dandomi un messaggio del tipo "Errori di dati in TODW o TODR, non facendo niente di quello desiderato.dove stò sbagliando?? come si potrebbe fare???Grazie. Link al commento Condividi su altri siti More sharing options...
Gaker Inserita: 27 gennaio 2009 Autore Segnala Share Inserita: 27 gennaio 2009 SOLUZIONE COMPLETA PER READ AN SET OROLOGIO HARDWARE CPU 226:Per chi dovesse trovarsi nella mia situazione1) LEGGERE : usare l'istruzione READ_RTC; mettendo in T l'indirizzo iniziale di 8 Byte liberi da usare, esempio: VB660.2) A partire dall'indirizzo VB660 per 8 Byte si troveranno le seguenti informazioni:---> Zero (0) corrisponderà esempio a VB660, UNO (1) a VB661, ecc ecc Byte T Descrizione Dati del byte0 anno (0-99) anno attuale (valore BCD)1 mese (1-12) mese attuale (valore BCD)2 giorno (1-31) giorno attuale (valore BCD)3 ora (0-23) ora attuale (valore BCD)4 minuti (0-59) minuti attuali (valore BCD)5 secondi (0-59) secondi attuali (valore BCD)6 00 riservato – impostato sempre a 007 giorno della settimana (1-7) giorno della settimana attuale, 1=domenica (valore BCD)Per poter usarli come si vuole in formato decimale bisogna trasformarli.. io usato questa soluzione e funziona:a) Prendo la VB660 (corrispondente all'anno) e faccio una trasformazione del tipo B_I mettendola in VW650. Prendo VW650 e faccio una trasformazione del tipo BCD_I per trasformare da BCD in Intero (per poi poter usarlo come al solito)... NB: in VW650 hai già il valore intero alla fine.c) Faccio le stesse cose se mi serve per il mese, giorno, ora, min., sec.... mettendole in variabili simili.ED E' TUTTO PER LA LETTURAPer quanto riguarda l'impostazione del Orologio Hardware... si usa l'istruzione SET_RTC con un fronte di salita a evento.. resettandolo dopo se necessario l'evento.Nel mio caso io prendevo dei valori da un Pannello operatore che non è il TD200, e mettevo dentro delle variabili tipo VWord il valore corrispondente per poi trasformarlo en darlo in pasto al SET_RTC.1) Prendevo la variabile corrispondente esempio all'anno --> VW632 e la trasformavo facendo un I_BCD (non posso usare un byte perchè trasformare a BCD si può solo a partire da un'Intero) mettendola in VW708 (per esempio).2) Prendo la VW708 e faccio una trasformazione del tipo I_B per trasformarla in Byte(BCD) e la metto nel primo Byte degli 8 che deve prendersi l'istruzione SET_RTC.3) faccio questo per tutto il resto.. e NB: in giro si dice che non è neccessario impostare il giorno della settimana.. questo è falso (se non lo facevo mi dava l'errore di sopra).. io ho messo costantemente a uno il Byte 7 (per l'impostazione ).4) Chiamo l'istruzione SET_RTC con un fronte di salita a evento... ed è tutto.Si potrebbe far così come ho fatto io.. quando uno trova una soluzione funzionante ad un problema.. di scrivere per bene la soluzione sotto.. cos' ci evitiamo inutili tempi di ricerche..Saluti a tutti Voi. Link al commento Condividi su altri siti More sharing options...
Gaker Inserita: 27 gennaio 2009 Autore Segnala Share Inserita: 27 gennaio 2009 (modificato) Ho riunito anche la discussione aperta da Luca11Livio Orsini Modificato: 27 gennaio 2009 da Livio Orsini 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