Vai al contenuto
PLC Forum


Conversione Valore Reale Formato Xxxx,x In Bcd


fedesara

Messaggi consigliati

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


Esempio 12456.7

Input

Valore : Real, 12356.7

Variable

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

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 tutto

grazie di nuovo

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...