fedesara Inserito: 27 febbraio 2008 Segnala Share Inserito: 27 febbraio 2008 Ciao a tutti,chiedo se qualcuno di voi ha già affrontato il problema. di per se la cosa è semplice, ma con alcune cifre non si comporta come dovrebbe.qualcuno ha esempi? Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 27 febbraio 2008 Segnala Share Inserita: 27 febbraio 2008 Esempio 12456.7Input Valore : Real, 12356.7Variable Segno : Int; FiveDigit : Dint RestDigit : Int; FourDigit : Int; OverFourDigit : Int;Begin 1° Verifica il Segno Segno := Abs(Valore)/Valore; quindi Segno := 1 (Positivo) 2° Tronca in Valore del Numero FiveDigit := Trunc(Valore); quindi FiveDigit := 12356 3° Calcola il resto RestDigit := (Valore - FiveDigit) *10; quindi (12356.7 -12356) = 7 4° nel Ipotesi che la Funzione BCD funziona solo per 4 cifre, isola le cifre oltre la 4^ OverFourDigit := Trunc(FiveDigit/10000); FourDigit := FiveDigit - OverFourDigit*10000; 5° Metti Insieme Segno + BCD(OverFourDigit) + BDC(FourDigit) + BCD(RestDigit); Link al commento Condividi su altri siti More sharing options...
fedesara Inserita: 28 febbraio 2008 Autore Segnala Share Inserita: 28 febbraio 2008 Grazie Beatrice,sempre la prima a rispondere!mi sono dimenticato di specificare una cosa... era SLC500...comunque ho trovato... il mio problema che non avevo sottomano un plc per provare e non miaccorgevo di una cosa.esw. il valore 1035,5 per convertire i decimale lo moltiplicavo per 10 quindi 10355, ma supponevo erroneamente che troncasse la prima cifra convertendo in bcd solo 0355... invece generavo un overflow.ho modificato l'approccio e adesso funziona tuttograzie di nuovo Link al commento Condividi su altri siti More sharing options...
Beatrice_Ru Inserita: 29 febbraio 2008 Segnala Share Inserita: 29 febbraio 2008 Sono felice di esserti stata di aiuto. 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