Vai al contenuto
PLC Forum


Calcolo Percentuale Cpm2a - trucchi con operazioni in BCD ??


biondo

Messaggi consigliati

Salve a tutti, sono alle prese con un semplice calcolo (semplice....sembra una parola grossa !!!) di percentuale su un vecchio plc CPM2A.

Ho un numero totale di pezzi DM0 e DM01 (2wd BCD)

Ho un DM10 pezzi scarto totali (1 wd BCD)

devo eseguire un calcolo BCD per avere la percentuale di scarti

quindi (scarti*100)/tot.pezzi.

Il problema è che in BCD sia con moltiplicazione che divisione ottengo solo un numero intero e invece il cliente vorrebbe visualizzare anche i decimali

per esempio scarti = 54 tot.pezzi = 127 % (54*100)/127 = 42,51 io riesco solo a visualizzare 42 con resto 66 :angry: !!

che istruzioni devo usare ? e se i pezzi tot superano #9999 come viene gestito ?

Avete qualche suggerimento dall'alto della Vs. esperienza con il BCD ??

Grazie infinite !!!!!!!!! :thumb_yello:

Link al commento
Condividi su altri siti


Il tuo plc non prevede l'utilizzo dei numeri in virgola mobile, quindi mi sembra che ci sia solo una soluzione (potresti anche far fare le operazioni al videoterminale se c'è).

Se vuoi anche i centesimi moltiplichi per 100 il contenuto della doppia word DM0-DM1 e della word Dm10, fai i calcoli e il risultato è in centesimi. In questo caso in valore massimo che puoi scrivere nella DM0 e DM1 da 99999999 diventa 999999.

Se vuoi solo i decimi moltiplichi per 10 il contenuto della doppia word DM0-DM1 e della word Dm10, fai i calcoli e il risultato è in decimi. In questo caso in valore massimo che puoi scrivere nella DM0 e DM1 da 99999999 diventa 9999999.

Ciao

Link al commento
Condividi su altri siti

il mio problema è che moltiplicando con numeri alti, mi trovo come risultato ,per esempio con in DM20 #5 e e nel sucessivo DM21 #4000 ......

per via della moltiplicazione BCD , come faccio poi a dividere questo risultato per i pezzi totali ?

come istruzione ho solamente DIV .......

come devo giostrarmi con quoziente e resto ??

Grazie

Link al commento
Condividi su altri siti

devi usare MULL (moltiplicazione tra doppi canali:32 bit) e DIVL (divisione tra doppi canali: 32 bit). Negli operandi si mette solo la prima DM (M=, DM10,..)

Nel doppio canale DM0-1 hai i pezzi prodotti), In DM10-11 i pezzi scartati.

Con un bit di 1°ciclo e 2 MOW metti #100 in DM2 e #0000 in Dm03. Nel doppio canale DM2-3 hai la costante #100 da moltiplicare per DM0-1 DM10-1.

Dopo con MULL e DIVL calcola i valore percentuale che è espresso in centesimi. Non ti serve altro. Ciao

.

Link al commento
Condividi su altri siti

Grazie Amed ma purtroppo il CPM2A non supporta le operazioni in doppia word ha solo il MUL (moltiplicazione 1 wd 16 bit in BCD) e il DIV divisione

1 wd 16 bit in BCD....... quindi devo trovare un qualche trucco per moltiplicare 2 mie 2 wd dove ho una parte piu' significativa e una meno significativa.....

Qualche suggerimento ? :senzasperanza:

Link al commento
Condividi su altri siti

Secondo ti stai sbagliando di grosso. Davatia a mec'è un CPM2A che mi conferma che ti sbagli. Uso un CX-Programmer abbastanza recente (Ver 7.2). Ho fatto un programma di prova e funziona. Per trovare le operazioni matematiche "lunghe" in BDC devi fare: trova istruzioni > istruzioni matematiche > Matematica BCD.

Ciao

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