Function Block definiti dall'utente

Per i Function Block creati dall'utente nel progetto o nella libreria utente, viene creato un sottoprogramma nel programma compilato. Ogni volta che viene caricato, vengono trasferiti per primi i parametri di ingresso delle classi VAR_INPUT and VAR_IN_OUT. Poi avviene un salto nel sottoprogramma corrispondente. Infine sono letti nuovamente i parametri di uscita delle classi VAR_OUTPUT e VAR_IN_OUT. Il numero di sottoprogrammi o Function Block che potete definire dipende dal tipo di controllore.

I Function Block sono dotati di una "memoria", questo significa che ad ogni entità di tale Function Block sono allocati un'area dati e un sottoprogramma quando viene chiamata. Tutte le entità di un Function Block usano allora lo stesso sottoprogramma. Tramite registri indice avviene l'accesso all'area dati valida per la rispettiva entità.

In tal modo si può risparmiare molto spazio nella memoria programma, soprattutto se si usano frequentemente gli stessi Function Block definiti da utente. Gli accessi all'area dati tramite registri indice possono prolungare tuttavia il tempo di scan.

Indicizzazione FB

Utilizzando alcuni controllori è possibile attivare l’opzione Istanze function block indicizzate in Altro > Opzioni > Opzioni di compilazione > Generazione codice.

NOTA

Alcuni comandi FB non funzionano correttamente se vengono richiamati più volte all'interno di una trasmissione. In tal caso si riceve un messaggio di errore con i seguenti comandi:

  • Contatori: F118_UDC, F166_HighSpeedCounter_Set, F167_HighSpeedCounter_Reset, F168_PulseOutput_Home

  • Istruzioni di scorrimento: F119_LRSR

Argomenti correlati

L'ultima revisione: 2021-09-27Feedback su questa paginaPanasonic hotline