Vai al contenuto
PLC Forum


Impostazione Tempo Variabile - Impostazione tempo variabile


Messaggi consigliati

tecnologyassistence
Inserito:

Salve a tutti mi scuso in anticipo se chiedo informazioni su di un argomento trattato altre volte ma non ci sono riuscito lo stesso a capire dove sto sbagliando.

In pratica non mi sono trovato mai a dover impostare ad un temporizzatore minuti e secondi da pannello opertore.

Ho letto i manuali e ho dedotto che dovrei fare una conversione timer s5# in formato BCD.

Dovrei riuscire a scrivere da pannello utilizando un campo di introduzione nel seguente modo:

esempio:

1=minuto,50=secondi

Adesso se provo a dichiarare una variabile di tipo timer e dichiarando nella db es: db1.dbw0 di tipo timer, scrivendo cosi sul temporizzatore mi viene fuori=

1=secondo,50=500ms .

Non so dove sto sbagliando ma non riesco a scrivere i minuti e i secondi sulla stessa variabile.

Posso fare in modo di scrivere come descritto sopra? Cioè 1=minuto , 50 =secondi

grazie Domenico


FattoreDiPotenza
Inserita:

Usi un pannello operatore Siemens?

tecnologyassistence
Inserita:

ciao uso un op177b ma non ci riesco ho provato a fare di tutto non so piu cosa tentare

Inserita:

Se sei tutto con mamma siemens usa i tempi in s5t così non devi fare alcuna conversione.

Puoi usare un'area di memoria oppure una DB basta che dichiari che quel dato è un valore s5t.

Sul pannello fai la stessa cosa. Ricordati che il tempo s5t è espresso in ms quindi per esempio se devi scrivere 1s, sul pannellino dovrai scrivere 10. Per ovviare a questo puoi scalare la memoria per fare in modo che tu scrivi il tempo in secondi e il pannellino lo moltiplica per 10 e lo trasferisce al PLC in ms.

FattoreDiPotenza
Inserita:

Per loro natura i temporizzatori , che risiedono nellla area di memoria di sistema della CPU , accettano solo valori di impostazione BCD in una word.

Questo limite vedo che già lo conosci.

La seconda cosa importante è il formato , vale a dire il formato TIME disponibile nelle operazioni o con cui puoi dichiarare i tags utilizzandoli per i temporizzatori.

Nel formato TIME (vedi "aiuto in linea" di SImatic Manager) , hanno una struttura predefinita , vale a dire , i primi 12 bit della word raprsentano un valore numerico di caricamento , compreso tra 0 e 999 (massimo valore rappresentabile in word formato time).

I seguenti due bit , rappresentano la base dei tempi , vale a dire :

Base di tempo Codice binario per la base di tempo

10 ms 00

100 ms 01

1 s 10

10 s 11

Quando tu crei una variabile a pannello , o TAG , con il formato TIME , in funzione del numero di decimali che assegni al campo di introduzione , il pannello invia valore + base dei tempi in modo automatico.

Quando tu desideri caricare un "tempo" usando una word in formato BCD , cosa fattibilissima, se non viene specificato nulla per il temporizzatore che usa il valore immesso la base dei tempi arbitrariamente è la più piccola , 10ms (avendo valore zero sui due bit determinanti).

Per optare con basi dei tempi diverse , devi attuare una mascheratura binaria della word contenente il valore di caricamento per modificarne a posteriori i due bit che la determinano.

Quel formato a cui ti riferisci , sembra la dizione usata nel programma per la dichiarazione del valore di caricamento del timer.

Quella è una formalità di editazione.

E' sempre fattibile fare ciò che chiedi , ma non senza , a mio avviso , una funzione ad Och che ti permetta di assemblare i due dati che vuoi inserire e restituirli su di una word in BCD con il valore di caricamento e base tempi "digeribile" per il PLC.

tecnologyassistence
Inserita:

Fattore posso chiederti se puoi farmi un piccolo esempio?

io provo a fare come dici speriamo bene.

grazie domenico

tecnologyassistence
Inserita:

niente da fare ho provato cosi ma non va:

L DB10.DBW 0

ITB

L W#16#6000

OW

SE T 20

non so piu che cosa provare

Inserita:

non devi convertire il valore in bcd ma come dice fattoredipotenza devi alzare il 13e14 bit sarebbero la base dei timer nel modo che più ritieni consono al tuo utilizzo e il valore scrivi normalmente senza conversione

FattoreDiPotenza
Inserita:

Domenico ,

Devi spiegare bene cosa intendi fare , perchè da quanto ho capito io ( ma per sicurezza ne chiedo conferma) dovrai ottenere un campo introduzione su pannello in cui potere scrivere:

Tempo = xxxMinuti,yySecondi .

Indipendentemente dal modo di introduzione tu andrai a caricare nel timer il tempo esatto , quindi 1minuto,10secondi =70 secondi.

Se ti viene imposto un dato siffatto su una sola variabile , devi spiegare perchè , lo vedo oltre che irrealizzabile anche molto inutile ai fini pratici.

Se si limita solo a ciò che vede l'operatore mentre inserisce i dati , mi sembra una cosa più sensata.

Per semplificare la trattazione dei dati , useri al posto tuo non un temporizzatore ma un contatore , con un clock in secondi (clock che potrebbe essere generato dalle impostazioni Hw CPU).

Il tempo sarà il valore di caricamento del contatore.

L'evento entrante da temporizzare sarà l'ENABLE del contatore.

Il contatore ti dà anche la possibilità di "memorizzare" il tempo trascorso molto semplicemente se fosse necessario interrompere il processo a tempo e riprenderlo a posteriori.

Per il dato crei due campi di introduzione a 3 digit ciascuno , adiacenti tipo: Campo 1 --> xxx , yy <-- Campo 2.

Il campo 1 sarà associato ad un tag (word , di tipo INT) con una scala lineare del tipo che ti consenta la moltiplicazione per 60 nel controllore per ciascuna unità inserita a pannello.

Se si può far fare i calcoli al pannello , facciamolo, risparmiamo risorse nel PLC.

Il campo nr.2 avrà solo due digit , ed associato ad un tag (word , di tipo INT) senza una scala lineare.

A questo punto nel tuo controllore prendi le due word le sommi tra loro ed usi il risultato dell'operazione come valore per il contatore.

Ti piace come soluzione?

Sperando di aver capito cosa cerchi......

tecnologyassistence
Inserita:

Salve a tutti sono riuscito a risolvere il problema anche se non del tutto legendomi diversi manuali ho fatto cosi:

-dichiaro la variabile DB100.DBW0 s5t#

-su proprieta della variabile

-cambio di scala lineare

-attiva

controllore = valore superiore 6000 / valore inferiore 0

HMI=valore superiore 10 / valore inferiore 0

campo di introduzione cinque cifre e la virgola cosi? 00,00

dopo aver impostato la variabile al mio temporizzatore (T0)

se dal pannelo scrivo 1,50 sul timer leggo 1m50s

se scrivo 1,20 sul timer leggo 1m12s

se scrivo 10,70 sul timer leggo 10m42s

come mai succede questo? posso risolvere questo problema?

Inserita:

Sul pannello operatore, non devi fare nessun cambio di scala lineare. Devi soltanto spostare i decimali di 3 posizioni, in modo da avere una visualizzazione del valore in secondi.

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