Vai al contenuto
PLC Forum


Awl Getting Started


Messaggi consigliati

Inserito:

Sto tentando di imparare a usare un PLC siemens S7-300 in qualità di studente. E non ho pratica di linguaggi di basso livello. Voglio generare una tensione su un'uscita analogica di un modulo con risoluzione 12 bit e rappresentazione in complemento a due. Dopo aver scalato un numero in floating point 32 bit per adattarlo al campo di misura, dovrei convertirlo in un intero a 16 bit in complemento a due. quali sono le giuste istruzioni? Grazie e scusate per le stupidaggini che devo aver scritto.


Inserita:

Ciao,

se ho capito bene il tuo problema si risolve con:

L Numero_reale // carica il floating point nell'accumulatore 1

RTD // mette il reale convertito nell'accu 1 e sposta numero_reale nell'accu 2

DTI // converte il doppio intero di accu 1 in un intero a 16 bit, mette il risultato in accu 1 e sposta il long integer in accu 2

T Numero_intero // copia il valore di accu 1 nella variabile Numero_intero

Spero di essere stato chiaro

SA

Inserita:

Il mio compilatore non accetta le istruzioni RTD e DTI, e non ci sono nemmeno nel manuale. Esistono DTR e ITD che sono le inverse.

Inserita:

Con RND converto il real in intero32bit, poi caricando in una variabile a 16 bit ottengo quello che volevo. I dubbi nascevano dal fatto che l'utility di test (gli occhiali) mi dava due numeri diversi. Ma mi sono accorto che l'utility di test legge il valore convertito in int32 bit considerando la rappresentazione in compl a 2 mentre il valore trasferito in variabile a 16 bit viene letto non tenendo conto del complemento a 2. Cosi quando il numero è negativo, per esempio -27645, lui legge 37891. In hex: FFFF9403 -> 9403 (carico la parte a dx) che in compl2 è sempre -27645 mentre se lo converto normalmente ottengo 37891.

Il mio modulo di uscita interpreta il valore in compl. a 2 e tutto funziona. Nel manuale non c'è scritto come si converte da 32 a 16 bit e per me non era cosi ovvio!

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