Vai al contenuto
PLC Forum


comandare un numero intero di un fb su tia portal


DOMENICO22

Messaggi consigliati

Salve a tutti.

io ho un problema con un contatore (ctu) su Tia Portal v13 al momento il contatore è impostato a 5000 conteggi ma ho bisogno che lui ora inizi da 3474 e non da 0 però noto che nella tabella di forzamento non mi permette di variare il valore...cosa posso fare per poter inserire il valore a me interessato? mi serve solo alla partenza poi giustamente quando daro il comando di reset dovrà ripartire da 0.

Grazie a tutti per le risposte.

Link al commento
Condividi su altri siti


Ciao,

hai letto il manuale o la guida in linea ?

Il contatore CTU (conteggio avanti) ha un ingresso R che, quando attivato, imposta il contatore a zero; l'ingresso CU, invece, avvia il conteggio (lo incrementa) sul fronte di salita; quando il conteggio arriva al numero impostato in PV, si attiva l'uscita Q; in CV hai il valore attuale del conteggio.

Se vuoi impostare un valore diverso da zero come partenza del contatore, non puoi utilizzare CTU: dovrai utilizzare CTD (conteggio indietro) o, al limite CTUD (conteggio avanti e indietro); se leggi bene la guida in linea o ti scarichi il manuale da Siemens SIOS, vedrai che non avrai problemi.

 

Link al commento
Condividi su altri siti

Un'idea potrebbe anche essere quella di non usare nessuna funzione esistente e farti la funzione da solo. Ti incrementi un marker e controlli che non abbia superato il valore da te stabilito (5000 in questo caso); quando lo supera lo resetti a 0 e ti abiliti quello che vuoi. Solo la prima volta, nel merker che incrementi, invece che 0 ci carichi il tuo valore (3474 in questo caso).

 

Ciao Claudio.

Link al commento
Condividi su altri siti

Non mi sono mai piaciuti i contatori di libreria, anche perchè farsi la funzione richiede pochissimo tempo e poi sarà molto piu flessibile da usare. 

 

Se ho capito bene il problema di @DOMENICO22si tratta solo di usare un paio di istruzioni MOVE ed una di addizione. 

Con il Merker di First Scan potresti inizializzare una variabile intera a 3474 , variabile che poi andrai ad incrementare col Trigger che vuoi. Una volta raggiunto il conteggio voluto, fai quello che devi fare e porti a 0 la variabile. 

 

@Cip77 attenzione che non sono i Merker ad incrementare, ma una variabile intera , doppia o ciò che è. Per merker solitamente si intende una variabile booleana e che quindi puo assumere solo gli stati 0 e 1. Se si vuole mettere piede in questo mondo, meglio partire con quello giusto, usando la terminologia appropriata😉.

Se devi incrementare una variabile, meglio crearla dentro ad un Db (nel quale metterai anche altre variabili relative a quella funzione, tipo bit di reset e quant'altro). I Db sono un po ostici da capire all'inizio ma ti assicuro che sono di una comodità assurda una volta che se ne comprendono le potenzialità. 

 

 

Modificato: da step-80
Link al commento
Condividi su altri siti

16 minuti fa, step-80 scrisse:

@Cip77 attenzione che non sono i Merker ad incrementare, ma una variabile intera , doppia o ciò che è. Per merker solitamente si intende una variabile booleana e che quindi puo assumere solo gli stati 0 e 1. Se si vuole mettere piede in questo mondo, meglio partire con quello giusto, usando la terminologia appropriata😉.

Se devi incrementare una variabile, meglio crearla dentro ad un Db (nel quale metterai anche altre variabili relative a quella funzione, tipo bit di reset e quant'altro). I Db sono un po ostici da capire all'inizio ma ti assicuro che sono di una comodità assurda una volta che se ne comprendono le potenzialità. 

 

 

Ok grazie. Quindi se ho capito bene, M7.0 è un merker, perché accedo al bit 0, ma MB7, anche se è un byte che comprende tutti i bit di M7 (quindi i merker), non è più un merker ma diventa una variabile? 

Ultima cosa: se ho bisogno di usare un word, senza doverlo memorizzare, che vantaggi ci sono ad usare un word istanziato su un DB al posto di un MW?

Grazie e ciao,

Claudio.

Link al commento
Condividi su altri siti

@Cip77 

 

Quote

se ho capito bene, M7.0 è un merker...

Esatto.

%M7.0 significa il bit 0 del Byte 7 di memoria. La memoria nel 1200 è organizzata a Byte. 

%MB7 invece sta a significare tutto il Byte 7 , il quale naturalmente comprende il bit 0 di prima più tutti gli altri sino al nr 7..quindi l'ultimo sarà %M7.7.

Il Byte cosi preso diventa una variabile dentro la quale puoi memorizzare un numero da 0 a 255 se senza segno oppure da -128 a +127 se con segno. 

 

Quote

se ho bisogno di usare un word, senza doverlo memorizzare, che vantaggi ci sono ad usare un word istanziato su un DB al posto di un MW?

Cosa intendi per "senza doverlo memorizzare"? 

Usare un Data Block ti da parecchi vantaggi, primo fra tutti forse l'organizzazione dei dati e del programma in generale. Se hai 3 variabili di numero, non ti cambierà la vita organizzarle in Db oppure nella tabella delle variabili..anche se una volta abituato userai i Db comunque. Un Db fra gli altri ti da l'enorme vantaggio di poter accedere alle variabili al suo interno con la sintassi  Nome Db. Nome variabile. Ti assicuro che se devi interrogare lo stato di uno switch molto meglio cercarlo fra Dati_Silos1 . PB_Svuotamento che in mezzo a centinaia di variabili nella tabella perchè sapendo che il pulsante in questione è relativo a quella parte di impianto, quando andrai a digitare Dati_Silos_1 ti uscirà la tendina con tutte le variabili all'interno. 

Poi non vorrei dire una castroneria e qui gli esperti Siemens mi correggeranno nel caso..ma mi sembra di ricordare che ci sia anche il vantaggio delle risorse di sistema. Accedere ai dati di un Db se ottimizzato dovrebbe essere molto meno dispendioso per la cpu rispetto ai tag. Ma non ne sono sicuro di questo..

Link al commento
Condividi su altri siti

1 ora fa, step-80 scrisse:

@Cip77 

 

Usare un Data Block ti da parecchi vantaggi, primo fra tutti forse l'organizzazione dei dati e del programma in generale. Se hai 3 variabili di numero, non ti cambierà la vita organizzarle in Db oppure nella tabella delle variabili..anche se una volta abituato userai i Db comunque. Un Db fra gli altri ti da l'enorme vantaggio di poter accedere alle variabili al suo interno con la sintassi  Nome Db. Nome variabile. Ti assicuro che se devi interrogare lo stato di uno switch molto meglio cercarlo fra Dati_Silos1 . PB_Svuotamento che in mezzo a centinaia di variabili nella tabella perchè sapendo che il pulsante in questione è relativo a quella parte di impianto, quando andrai a digitare Dati_Silos_1 ti uscirà la tendina con tutte le variabili all'interno. 

Poi non vorrei dire una castroneria e qui gli esperti Siemens mi correggeranno nel caso..ma mi sembra di ricordare che ci sia anche il vantaggio delle risorse di sistema. Accedere ai dati di un Db se ottimizzato dovrebbe essere molto meno dispendioso per la cpu rispetto ai tag. Ma non ne sono sicuro di questo..

Grazie per le info. Figurati che io credevo fosse esattamente la cosa contraria: pensavo che usare troppi DB gravasse sul PLC, di conseguenza, ad esempio, se dovessi fare un contatore, fino a stamani avrei usato una variabile MW. I DB li utilizzavo più per i dati da memorizzare anche allo spegnimento del PLC. Grazie e buona giornata,

Claudio.

Link al commento
Condividi su altri siti

L'accesso ai DB è lento con i DB "non ottimizzati".
Da qualche parte si trovano anche le tabelle dei tempi delle diverse istruzioni, compreso l'accesso in lettura e scrittura ai vari tipi di variabili.

Ora vado a memoria, quindi potrei anche sbagliare, ma mi pare che l'accesso ai DB ottimizzati sia più rapido dell'accesso all'area dei merker.

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