ricki Inserito: 21 gennaio 2005 Segnala Inserito: 21 gennaio 2005 (modificato) Ciao come posso trasformare un numero bcd in intero in SCL ?ciao e grazieRicki Modificato: 21 gennaio 2005 da ricki
Claudio Monti Inserita: 21 gennaio 2005 Segnala Inserita: 21 gennaio 2005 Non so con Siemens, ma con altre marche, usando il linguaggio ST, trovi la funzione BCD_TO_INT.Prova a consultare l'. in linea dell'S7 e vedrai che trovi qualcosa del genere...
ricki Inserita: 21 gennaio 2005 Autore Segnala Inserita: 21 gennaio 2005 Ho cercato nell'. ma posso trasmormare l'impossibile tranne BCD_to_XX o viceversa.Grazie
floppydisco Inserita: 21 gennaio 2005 Segnala Inserita: 21 gennaio 2005 Non so cosa intendi con SCL, ma con siemens puoi:BTI bcd to int 16 bit BTD bcd to int 32 bit, se poi ti serve a virgola mobile, DTRApri un blocco, click su ?--> Guida AWL o Guida KOP--> Sommario--> operazioni di conversione, c'è tutto.ciao,floppydisco
ricki Inserita: 21 gennaio 2005 Autore Segnala Inserita: 21 gennaio 2005 Per Floppy : ok ,se programmi in awl puoi fare bti o btd, ma in S7-SCL, l'unico modo ( che ho scoperto ora ) è quello di richiamare FC81 dalle librerie che ti converte BCD in DUAL e il gioco è fatto.Grazie e ciao
floppydisco Inserita: 21 gennaio 2005 Segnala Inserita: 21 gennaio 2005 purtroppo non conosco S7- SCL !
Savino Inserita: 21 gennaio 2005 Segnala Inserita: 21 gennaio 2005 Salve,Dunque,In C , l'algoritmo per la converzione da BCD a decimale e': Num_Dec=((Num_bcd>>4)*10)+(Num_bcd%16); Spiegazione degli statements: / : divide >> : bitwise right shift % : resto della divisione tra dividendo e divisore essempio: INT Num_Dec; INT Num_Bcd=18; Num_Dec=((18>>4)*10)+(18%16); => 10010 B >> 4 =1; 18/16=1 R=2 Num_Dec=((1*10))+(2); Num_Dec=10+2; Num_Dec=12; Il numero in formato BCD 18 = 12 decimale = 0C Hex. ////////////////////////////////////////////////////////////////////////////////////////////////// l'algoritmo per la converzione da decimale a BCD e': Num_Bcd=((Num_Dec/10)<<4)+(Num_Dec%10); Spiegazione degli statements: / : divide << : bitwise left shift % : resto della divisione tra dividendo e divisore essempio: INT Num_Dec=12; INT Num_Bcd; Num_Bcd=((12/10)<<4)+(12%10); => 12/10=1 R=2 Num_Bcd=((1,2)<<4)+2; => 10000 B + 10 B Num_Bcd=16+2; Num_Bcd=18; 10010 B Il numero in formato decimale 12 = 18 BCD = 0x12 Hex.Implementare questi algoritmo in SCL dovrebbe essere piu' tosto semplice.Saluto.
ricki Inserita: 21 gennaio 2005 Autore Segnala Inserita: 21 gennaio 2005 Ottimo suggerimento , perfettamente riuscito con 1 riga di codice e non con 180 byte di fc81.Ciao e grazie
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