Vai al contenuto
PLC Forum


Moltiplicazioni Con Costante In Virgola Mobile. - Vorrei moltiplicare un numero per una costante con la virgola


Zeussss

Messaggi consigliati

Praticamente voglio realizzare un asse elettrico con un Cj1m-cpu21.

Con l'istruzione PRV(881) leggo la frequenza di un encoder, poi la voglio moltiplicare per una costante in virgola mobile (tipo 12,3677) che tiene conto dei rapporti meccanici, e spararla con l'uscita a treno d'impulsi sull'inverter tramite l'istruzione SPED(885).

Il problema è che non so quali istruzioni usare per fare la moltiplicazione o meglio per farla non una costante che dovrò inserire manualmente nel software.

Per esempio la funzione *D(847) esegue la moltiplicazione, ma il 12,3677 come glielo passo?

Modificato: da Zeussss
Link al commento
Condividi su altri siti


Allora, la PRV ti restituisce una doppia word. Supponiamo che il risultato sia in D10 (e D11).

A quel punto, devi trasformare il risultato in virgola mobile e metterlo per esempio in D20 (e D22, i virgola mobile sono a 32bit) con la seguente

FLTL D10 D20

Poi puoi effettuare la moltiplicazione in virgola mobile, mettendo per esempio il risultato in D30 (e D31, sempre virgola mobile) scrivendo

*F D20 +12,3677 d30

Ora puoi riconvertire il risultato (arrotondato all'intero) e metterlo in una doppia word D40 (e D41) che invierai alla SPED, scrivendo

FIXL D30 D40

Quindi, come parametro di impulsi, nella SPED metterai D40

Occhio però che tu leggi la frequenza degli IMPULSI dell'encoder, quindi attenzione ai fattori moltiplicativi del numero di impulsi al giro e del moltiplicatore x4 spesso usato per gli ingressi di encoder incrementali. Se viaggi a 100rpm e hai un encoder da 1000 imp/giro, e moltiplichi per 4, leggerai una frequenza di 6667 Hz. La moltiplichi per la tua costante e ottieni 82455. Questo valore, se lo emetti come treno di impulsi, come lo leghi alla frequenza dell'inverter? E poi considera per esempio che molti modelli di inverte hanno una limitazione di frequenza di ingresso di 32kHz o 64kHz, per cui saresti già di fuori con più di 82kHz.

Vedi bene cosa devi fare.

Link al commento
Condividi su altri siti

Grazie mille! non potevi essere più chiaro!

unica cosa, come faccio a sapere se devo fare la moltiplicazione x4?

il plc è un cj1m-cpu21... acquisisco da un encoder line driver.

Link al commento
Condividi su altri siti

La serie CJ1M-CPU2x ha i contatori a fasi differenziali sempre con moltiplicatore 4x, per cui se hai un encoder 100imp/giro, lo vedi come se fossero 400imp/giro.

La specifica la trovi al par. 6.1.4 del manuale W395-IT2-03.

Sui moduli esterni è possibile scegliere se avere il moltiplicatore oppure no

Link al commento
Condividi su altri siti

Ho ancora un dubbio da chiarire...

Se uso l'istruzione *F D20 +12,3677 d30 quando scrivo la costante +12,3677 Cx-Programmer mi visualizza il seguente commento:

+-0˜̃2047,IRx,--IRx,IRx++,DRx,IRx

mentre se scrivo +12 il commento è:

IEEE floating point

se invece inserisco +12.3677 dice:

IEEE floating point e nella barra in basso ci viene scritto Formato virgola mobile IEEE non valido

Sembrerebbe che Cx-Programmer interpreti il numero che io inserisco un REAL solo nel caso +12 senza decimali.

Commenti?

Link al commento
Condividi su altri siti

Attento a usare la virgola anzichè il punto. La versione italiana usa la virgola, siamo l'unico paese al mondo... Il punto non va bene e viene visto come errore.

Infatti se te apri un software scritto su sistema operativo in italiano su un PC con sistema operativo straniero (sia inglese, ma anche tedesco o ebraico, lo so per esperienza), e provi a compilare avrai degli errori proprio per il fatto che in quei sistemi, invece, il separatore decimale è il punto.

Link al commento
Condividi su altri siti

Resta il fatto che se metto la virgola mi da i seguenti commenti:

+-0˜̃2047,IRx,--IRx,IRx++,DRx,IRx

sembrerebbe interpreti il numero come un indirizzamento indiretto...

Link al commento
Condividi su altri siti

no, solo che PUOI mettere un indirizzamento indiretto. Fidati.

Io non immetto mai i valori andando nei dettagli, e soprattutto non mi fido troppo di quei messaggi.

Se noti, infatti, cambia da prima a dopo che metti la virgola...

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