Vai al contenuto
PLC Forum


Impostazione Tempo In Un Pannello Non Siemens - Problemi di conversione


davide83

Messaggi consigliati

Ciao a tutti,

devo impostare dei tempi in un pannello operatore non Siemens, che non ha la funzione integrata di conversione in questo formato.

Ho impostato le variabili come word a 16 bit esempio T1: DB1.DBWT1

sul SW:

L DB1.DBWT1

ITB

T DB1.DBWT1conv

...

...

L DB1.DBWT1conv

SE Tx

U TX

ecc....

con questa fuzione mi trovo però i tempi espressi in decimi di secondo, nel pannello devo impostare 10 per fare 1 secondo.

Allora ho provato a moltiplicare per 10 così:

L DB1.DBWT1

*10

ITB

T DB1.DBWT1conv

...

...

però se sul pannello imposto più di 9 la CPU mi da un errore di conversione BCD

Qualè il metodo più corretto per impostare un tempo su un pannello che non ha la conversione intergrata in S5_TIME ?

Grazie ciao

Link al commento
Condividi su altri siti


il terzultimo e il quart'ultimo bit a sinistra della tua word determinano l'unità di misura.

0000 1001 1001 1001 centesimi di secondo

0001 1001 1001 1001 decimi di secondo

0010 1001 1001 1001 secondi

0011 1001 1001 1001 decine di di secondo

prima di caricare nel timer il contenuto della tua word devi fare la operazione OR tra la tua word e la costante decimale

8192 che corrispone al numero binario 0010 0000 0000 0000

Ciao

Link al commento
Condividi su altri siti

il terzultimo e il quart'ultimo bit a sinistra della tua word determinano l'unità di misura.

0000 1001 1001 1001 centesimi di secondo

0001 1001 1001 1001 decimi di secondo

0010 1001 1001 1001 secondi

0011 1001 1001 1001 decine di di secondo

prima di caricare nel timer il contenuto della tua word devi fare la operazione OR tra la tua word e la costante decimale

8192 che corrispone al numero binario 0010 0000 0000 0000

Ciao

e cioè?

...in termini pratici (AWL) ?

Link al commento
Condividi su altri siti

Così funziona. Ho provato. Ciao

L DB1.DWT1 | CONVERSIONE

L 8192 |

OW |

T DB1.DWT1 |

U E0.0 |TIMER

L DB1.DWT1 |

SE Tx |

U Tx | USCITA COMANDATA DAL TIMER

= A0.0 |

Link al commento
Condividi su altri siti

E si può anche semplificare.

Non ha senso utilizzare variabili in più solo per appoggiare i passaggi della conversione.

Il codice diventa:

L DB1.DBWT1

ITB

L 8192

OW

SE Tx

.....

Meglio poi sarebbe scrivere quel 8192 in formato esadecimale:

L W#16#0000 //base tempi in centesimi di secondo

L W#16#1000 //base tempi in decimi di secondo

L W#16#2000 //base tempi in secondi

L W#16#3000 //base tempi in decine di secondi

Link al commento
Condividi su altri siti

E si può anche semplificare.

Non ha senso utilizzare variabili in più solo per appoggiare i passaggi della conversione.

Il codice diventa:

L DB1.DBWT1

ITB

L 8192

OW

SE Tx

.....

Meglio poi sarebbe scrivere quel 8192 in formato esadecimale:

L W#16#0000 //base tempi in centesimi di secondo

L W#16#1000 //base tempi in decimi di secondo

L W#16#2000 //base tempi in secondi

L W#16#3000 //base tempi in decine di secondi

Ok

tutto più chiaro, grazie 1000!!

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