Vai al contenuto
PLC Forum


Blocco Funzione P313


marcy17

Messaggi consigliati

Salve a tutti!

Premetto che nei calcoli matematici con plc panasonic sono un neofita quindi la soluzione potrebbe essere molto molto banale!

Sto utilizzando un FP sigma 32k con FPWIN GR come tool di programmazione e devo gestire un certo numero di analogiche.

Dopo aver letto i vari canali devo fare le operazioni per avere il dato effettivo dei sensori e passarlo a pannello.

Le operazioni sono, per esempio, il dato ricevuto (DT0) meno 800 e diviso 80.

Il dato che ricevo è un dato a 16 bit giusto?

Subito utilizzo la funzione f26 per sottrarre 800 e poi con la funzione f89 trasformo il valore in 32 bit in modo da poterlo gestire con le funzioni con dati reali.

A questo punto utilizzo (o meglio vorrei utilizzare) la funzione p313 (divisione tra due dati in virgola mobile) ma nel momento in cui carico il programma sul plc mi segnale errore nella riga di questa funzione.

Ripeto non ho mai utilizzato operazioni con plc panasonic e sono un po' arruginito anche con altri plc quindi la soluzione potrebbe essere molto banale!

Ringrazio anticipatamente!

Link al commento
Condividi su altri siti


Roberto Gioachin

Per prima cosa è meglio chiarire che per ottenere quello che desideri, (o meglio quello che sembra desideri, interpretando la tua domanda) non c'è bisogno nè di convertire da 16 a 32 bit e nemmeno utilizzare i numeri reali (virgola mobile).

Il valore numerico che ottieno dalla lettura del segnale analogico varia da 0 a 2000 (16 bit), quindi se tu devi leggere un segnale 4-20mA, devi togliere 800.

Per togliere 800 devi usare la funzione F25 (sotrazione a 16 bit) e non F26 (sotrazione a 32 bit).

La funzione F89 esegue l'estensione del dato da 16 a 32 bit, ma in realtà nel tuo caso non serve a nulla, in quanto puoi continuare a trattare il dato a 16 bit senza problemi.

In ogni caso il fatto di estendere un dato da 16 a 32 bit, non vuole dire di averlo anche convertito secondo la codifica del "floating point", ma semplicemente di aver esteso il numero da 16 a 32 bit sempre nello stesso formato, binario puro rappresentabile anche come esadecimale o decimale senza segno.

Prima di eseguire quindi la funzione F313, dovresti convertire il tuo valore da intero a floatin point, usando F325 o 326 a seconda se parti da un valore a 16 o 32 bit.

Sucessivamente puoi fare tutti i tuoi calcoli con le istruzioni "floating point", alla fine se il pannello operatore non è in grado di rappresentare questo tipo di codifica, devi ritrasformare il valore in intero.

Ma perchè invece di fare tutto questo lavoro non utilizzi una istruzione sola che da sola fà tutto quello che ti serve?

Con l'istruzione F282 (SCAL) puoi prendere un valore numerico a 16 bit, linearizzarlo ed ottenere un valore sempre a 16 bit, già sotratto, diviso ecc.

Per numeri a 32 bit, si usa F283, naturalmente il valore deve essere prima esteso con F89.

Ciao

Roberto

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