Vai al contenuto
PLC Forum


Unione dati


mirkoconsoli

Messaggi consigliati

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


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ì:

image.png.aeb3aa5f77d178433f8a63857fd8087a.png

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...