biondo Inserito: 17 settembre 2010 Segnala Share Inserito: 17 settembre 2010 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 scartiquindi (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 decimaliper esempio scarti = 54 tot.pezzi = 127 % (54*100)/127 = 42,51 io riesco solo a visualizzare 42 con resto 66 !!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 !!!!!!!!! Link al commento Condividi su altri siti More sharing options...
amed Inserita: 17 settembre 2010 Segnala Share Inserita: 17 settembre 2010 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 More sharing options...
biondo Inserita: 17 settembre 2010 Autore Segnala Share Inserita: 17 settembre 2010 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 More sharing options...
amed Inserita: 17 settembre 2010 Segnala Share Inserita: 17 settembre 2010 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 More sharing options...
amed Inserita: 17 settembre 2010 Segnala Share Inserita: 17 settembre 2010 Dimenticavo. Prima che il contenuto di DM0-1 e DM10-11 diventi proppo alto bisogna azzerarne il contenuto. Ciao Link al commento Condividi su altri siti More sharing options...
biondo Inserita: 17 settembre 2010 Autore Segnala Share Inserita: 17 settembre 2010 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 ? Link al commento Condividi su altri siti More sharing options...
amed Inserita: 19 settembre 2010 Segnala Share Inserita: 19 settembre 2010 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 More sharing options...
biondo Inserita: 20 settembre 2010 Autore Segnala Share Inserita: 20 settembre 2010 Hai ragione....... non usavo i DM come la funzione vuole, non accetta costanti, prima devi caricarle in DM e poi usarli nella funzione.Grazie 10000Ciao 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