Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Variabili Stat E In_out - Come dichiarare le variabili?


Messaggi consigliati

Inserito:

C'è qualcuno che ha voglia di spiegarmi in parole semplici quando devo dichiarare una variabile di tipo In_OUT piuttosto che Stat? io non capisco bene la differenza ai fini pratici.

Grazie a chiunque risponderà e buonlavoro.


Inserita:

Per capire bene come utilizzarle devi concentrarti prima sulle FC e poi sulle FB interpretando bene il loro significato e la loro funzione. Manuale e manuale ...

Ciao

Inserita:

Sulle FB la dichiarazione di parametro STAT si riferisce ad un parametro che mantiene il valore anche al di fuori della elaborazione del blocco. La call del blocco sarà corredata dall'informazione aggiuntiva del blocco dati di istanza, cioè un blocco dati che il compilatore crea alla conferma della call:

es CALL FB11, DB11

il DB11 verrà creato con la struttura dati che tu hai indicato nel blocco. Se vuoi leggere la variabile in un' altra

parte dell'applicativo devi scrivere

L DB11.DBW 2

se la variabile ha l'indirizzo 2 (lo vedi a sinistra in alto).

Il parametro IN-OUT si riferisce ad un parametro che compare nella CALL

es

CALL FB11,DB11

ALFA:MW90 // parametro input

BETA:MW92 // parametro input

SOMMA:MW100 // parametro IN-OUT

dove SOMMA è ALFA + BETA

e la FB è

0 in:ALFA WORD

2 in:BETA WORD

4 inout:SOMMA WORD

6 stat: INCR WORD

la dichiarazione serve a vedere rinfrescato il valore sulla MW100 anche dopo il lancio della FB11

L #ALFA

L #BETA

+I

T #SOMMA

L #INCR // contatore delle volte che lanci la somma

L 1 // serve solamente a spiegarti ....

+I

T #INCR

Questo parametro INCR lo potrai leggere fuori dalla FB11 con l'indirizzo DB11.DBW6

Ti consiglio di parametrizzare blocchi di eleborazioni matematiche e di debuggare il blocco con una sola call altrimenti perdi la visualizzazione dello stato. Inoltre ti consiglio di non cadere nel solito errore dei "pivellini"

di parametrizzare routines che effettuano semplici operazioni AND / OR.

Perche????

prova e lo saprai

ciao

Inserita: (modificato)

negli fc trovi variabili:

-in

-in-out

-out

-temp

negli fb trovi invece variabili:

-in

-in-out

-out

-temp

-stat

ai fini pratici della validita non c'e' molta differenza tra in-out e statiche

le statiche stanno su un db di istanza dell'fb in questione

entrambe si aggiornano e rimangono valide tra un ciclo di scansione ed un altro

le statiche hanno il loro indirizzo in un db mentre le in-out le passi come parametri quando richiami il blocco

esempio:

se devo programmare un s7-200 e faccio un blocco parametrizzato dove devo pilotare lo start stop di un motore

e dove non dispongo di statiche creo un blocco parametrizzato dove chiedo sicuramente in in-out un parametro

di tipo bool che mi mantenga il valore dell'autoritenuta .

lo stesso in s7300-400 , se usi un fb puoi usare le statiche ma anche le in-out

in tempo e' chiaro che un fb "consuma" di piu che un fc

ma agli effetti pratici di validita nonho mai notato differenze esistenziali tra i due tipi di variabili

ciao

p.s.: unavariabile in-out la dichari quando devi leggerla e scriverla , cosi come anche una statica la leggi e la scrivi.

Modificato: da walterword
Inserita:

Può essere preferibile usare STAT anzichè IN-OUT quando devi memorizzare grandi quantità di dati o valori che non devi necessariamente passare all'OB/FB/FC richiamante.

L'esempio classico potrebbe essere un FB che memorizza in un grande array della DB d'istanza la durata dei cicli macchina, oppure la quantità di produzione con la data e l'ora ecc. ecc.

I dati memorizzati non servono nel blocco richiamante, ma sono disponibili per essere visualizzati su un pannello operatore, per cui è preferibile usare variabili STAT.

Un'altro esempio potrebbe essere un FB che legge o scrive parametri da più azionamenti collegati in profibus, per ogni azionamento si fa una DB d'istanza nelle cui variabili STAT risiedono i dati da scrivere e quelli letti dall'azionamento. Poi si richiama l'FB tante volte quanti sono gli azionamenti (cambiando DB ogni volta) e si passano all'FB solo i parametri indispensabili (p.es. indirizzo dell'azionamento).

Inserita: (modificato)

concordo pienamente con te

io mi riferivo ad una validita esistenziale piuttosto che applicativa

i tuoi esempi sono piu che validi

ciao

ps nelle comunicazioni poi e' inevitabile l'uso di statiche contenute in fb dedicati

Modificato: da walterword
  • 2 weeks later...
Inserita:

"Inoltre ti consiglio di non cadere nel solito errore dei "pivellini"

di parametrizzare routines che effettuano semplici operazioni AND / OR."

Mi potreste spiegare meglio questa affermazione !! Io ho parametrizzato fc anche per semplici operazioni "and" ed "or" ma non ho trovato niente di anomalo , qual'è il rischio che ho corso ? Grazie.

Inserita:

Ti rispondo io anche se non avevo fatto l'affermazione

ma penso che chi ha detto cio' era perche'

per semplici funzioni non vale la pena fare dei blocchi parametrizzati e indicizzati

poiche' sono molto piu' pesanti ( in tempo di elaborazione )

delle istruzioni stesse

la morale e' " fai le cose difficili solo quando non e' possibile farle facili"

Ciao

Luca

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