mirkoconsoli Inserito: 24 dicembre 2023 Segnala Share Inserito: 24 dicembre 2023 Ciao a tutti, su un CJ1M CPU23 tramite un modulo SCU ricevo valori di temperature interi e decimali separati su DM diverse, purtroppo sono un pò(parecchio) arruginito con la programmazione e per non fare inutili o superflue conversioni vi chiedo aiuto per unire tutto in un unica DM per poter fare confronti con altri valori impostati. esempi: temp letta: -5.85 , sul plc ricevo DM1 = -5 DM2 = 85 su DM3 vorrei in BCD -5.85 temp letta: 10.25 , sul plc ricevo DM1 = 10 DM2 = 25 su DM3 vorrei in BCD 10.25 temp letta: 60.03 , sul plc ricevo DM1 = 60 DM2 = 03 su DM3 vorrei in BCD 60.03 Grazie Link al commento Condividi su altri siti More sharing options...
mirkoconsoli Inserita: 25 dicembre 2023 Autore Segnala Share Inserita: 25 dicembre 2023 Sto arrotondando ad una cifra decimale per fare stare tutto su una DM in hex, per range da -99.9 a 999.9 Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 27 dicembre 2023 Segnala Share Inserita: 27 dicembre 2023 Se vuoi numeri con decimali, l'unica è usare i REAL (o Floating Point). Basta usare un po' di conversioni. Te hai due valori, l'intero in DM1 e la parte decimale in DM2. Suppongo siano valori interi con segno non BCD, quindi INT. Lascia perdere il risultato in BCD. Pertanto prima li converti in float mediante la FLT, e converti D1 in D10 (ricordo che le float occupano 2 word, quindi D10 e D11), e D2 in D12. A quel punto, dividi per 100 la D12 tramite la /F, e metti il risultato in D14, per esempio. Poi sommi con la +F D10 e D14, e il risultato lo metti nella tua D3 (quindi D3 e D4). Una cosa così: 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