alan_ford444 Inserito: 20 ottobre 2009 Segnala Share Inserito: 20 ottobre 2009 Ciao a tutti,dovrei confrontare 2 valori in formato DATE_AND_TIME per controllare se uno dei due supera l'altro.Assumendo che uno dei due viene caricato con la data e ora attuali e l'altro con un dato di riferimento, la scelta piu' breve è ricaduta sull'FC18 ("LE_DT") preso dalle librerie standard IEC dell'S7.Il confronto funziona e viene settato il bit #RISULTATO se #DATA_ATTUALE è inferiore a #DATA_RIFERIMENTO (confronto <=). CALL "LE_DT" DT1 :=#DATA_ATTUALE DT2 :=#DATA_RIFERIMENTO RET_VAL:=#RISULTATOHo riscontrato il seguente problema: se il valore #DATA_RIFERIMENTO è superiore di 5 minuti rispetto a #DATA_ATTUALE il confronto dà il risultato corretto (TRUE), mentre se è superiore di "soli" 4 minuti e 59 secondi il confronto è errato (FALSE).Il bit #RISULTATO dovrebbe essere a TRUE anche se i valori sono uguali, mentre dovrebbe andare a FALSE se #DATA_ATTUALE supera #DATA_RIFERIMENTO.Riassumendo:#DATA_ATTUALE minore di oltre 5 minuti rispetto a #DATA_RIFERIMENTO, #RISULTATO= TRUE <----- corretto#DATA_ATTUALE minore di meno di 5 minuti rispetto a #DATA_RIFERIMENTO, #RISULTATO= FALSE<----- ERRATO#DATA_ATTUALE superiore rispetto a #DATA_RIFERIMENTO, #RISULTATO= FALSE <----- correttoE' un baco del blocco IEC? 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