Vai al contenuto
PLC Forum


Multiistanza


setecastronomy

Messaggi consigliati

Un po' di tempo fa lessi il Getting started sulla programmazione in Step 7, ma della parte sul multiistanza non ne ricavai nulla e mi sembrò priva di risvolti pratici, almeno per me.

Seguendo le discussioni su questo forum vedo che ogni tanto viene menzionata e vorrei capire in quali casi può tornare veramente utile.

Grazie

Filippo

Link al commento
Condividi su altri siti


Se con multiistanza intendi le FB con DB di istanza ti potrei dare il seguente esempio:

Immagina di avere un 'automazione composta da varie stazioni o unità simili tra di loro nel funzionamento ma che, ovviamente hanno I/O distinti.

In questo caso una soluzione potrebbe essere quella di sviluppare un "pezzo di software" generico e sbatterlo in una bella FB da richiamare per tutte le unità con le rispettive DB di istanza (strutturate per ricevere gli input e settare gli output necessari). In questo modo scrivi molto meno codice e, in caso di modifiche, le stesse sono automaticamente funzionanti su tutte le unità. Inoltre diminuisci le probabilità di errore e compatti il codice.

Per contro diventa un pò più problematico il debug, ma non si può avere tutto....

Ciao

Link al commento
Condividi su altri siti

CALL FB10, DB10

CALL FB10, DB11

CALL FB10, DB12

In sostanza l' FB è sempre la stessa ( stesso pezzo di codice ) nel caso l'FB10

ma gli associ DB diverse nell'esempio dalla DB11 alla DB12

Questo ti serve quando la logica contenuta nella FB10 deve memorizare lo stato di qualche operazione.

Questo è un utilizzo.

Ciao :)

Link al commento
Condividi su altri siti

Che io sappia per multistanza si intende un richiamo di un FB all'interno di un'altro FB come se fosse una variabile STAT.Tento di spiegarmi meglio:

avendo un blocco FB1 posso mettelo come variabile STAT nelle dichiarazioni di un'altro blocco (esempio FB2). In questo modo richiamando l'FB1 con la riga "call FB1, DB1" mi ritrovo in DB1 le variabili STAT sia di FB1 che di FB2. I questo modo creo una multistanza.

Spero di non aver frainteso il concetto di multistanza..

Ciao.

Link al commento
Condividi su altri siti

Non mi sembra sia cosi':

CALL FB10, DB10

CALL FB10, DB11

CALL FB10, DB12

In sostanza l' FB è sempre la stessa ( stesso pezzo di codice ) nel caso l'FB10

ma gli associ DB diverse nell'esempio dalla DB11 alla DB12

Un FB dichiarato come multiistanza, deve avere associato un DB di istanza che deve essere sempre lo stesso, cio' che cambia sono i dati delle variabili di interfaccia es:

//prima chiamata FB10

CALL FB0,BD10

IN0=E0.0

IN1=E0.1

IN_OUT0=M0.1

OUT0=A9.4

//seconda chiamata FB10

CALL FB0,BD10

IN0=E1.0

IN1=E1.1

INOUT0=M1.1

OUT0=A10.4

In sostanza , le funzioni che svolge FB10 , sono identiche , ma tratta parametri diversi vi via che gli vengono fornite nuove dichiarazioni alle variabili di ingresso.

La DB di istanza , memorizza lo stato delle variabili al rilascio del blocco rendendole disponibili alla seguente rielaborazione.

Ciao

Ivan

Modificato: da kamikaze
Link al commento
Condividi su altri siti

La multiistanza è spiegata nel manuale con codice 6ES7810-4CA08-8EW0 edizione "03/2006 A5E00706947-01" al capitolo 10.3 pagina 10-9. O almeno è il manuale più recente che ho io.

Ciao.

Link al commento
Condividi su altri siti

Io per multiistanza intendo quello che ha detto gianmario qui

Quello che dite voi sono istanze normali, cioè chiamate multiple dello stesso blocco (potrebbe essere anche un FC).

Link al commento
Condividi su altri siti

mi scuso ...effettivamente ho risposto senza guardare il manuale :blush:

mi sembrava che suonasse bene il nome :whistling:

comunque sono in buona compagnia

ognuno ha dato una spiegazione diversa ....:D

Modificato: da salto
Link al commento
Condividi su altri siti

Io per multiistanza intendo quello che ha detto gianmario qui

Quello che dite voi sono istanze normali, cioè chiamate multiple dello stesso blocco (potrebbe essere anche un FC).

Che è la stessa cosa che ho detto io e che c'è scritto sul manuale che ho segnalato.

Link al commento
Condividi su altri siti

Beh, quì le idee sono un pò confuse.

Lanciare una FB con la rispettiva db di istanza non significa fare una multiistanza.

Una multiistanza consiste nel lanciare all'interno di una FB creata con supporto di multiistanza (vedi le proprietà all'atto della creazione) ulteriori FB che invece di utilizzare ugnuna una distinta DB, utilizzano una porzione della db istanza dell'FB ospite.

E' più complicato a dirsi che a farsi.

Crea alcune FB fittizie

Crea una FB con flag di multiistanza

aprila

crea nei dati statici un tag (non importa il nome) con tipo FBxxx ove xxx è il numero di una delle fb fittizie create in precedenza

creane un'altro ed un'altro ancora

ora nel codice della FB ospite, scrivi call nomedeltagcreato

aggiungi tutti quelli che hai creato

ebbene le fb chiamate con il call non richiedono db perchè i rispettivi dati verranno collocati nelle posizioni dei tag creati.

Salva il tutto, istanzia la fb ospite aggiungendogli la necessaria db

apri ora la db di istanza e guardala, è molto interessante per capire cos'è successo.

Lavorare con le fb in multiistanza è estremamente comodo e permette di incapsulare il codice in modo molto elegante.

ATTENZIONE. Ricorda che l'accesso ai dati statici delle fb chiamate in multiistanza tramite puntatore AR1 richiede tassativamente la somma del registro AR2 all'indirizzo (AR2 contiene l'offset della tua multiistanza, in pratica da dove partono i tuoi dati) altrimenti il puntatore punta a partire dall'inizio della DB dell'FB ospite.

Spero di aver chiarito qualche dubbio (o forse ne ho aperti altri mah...)

Link al commento
Condividi su altri siti

kamikaze... scherzi, spero! :-) quello che hai scritto, oltre a non essere ne un'istanza ne' una multi istanza... non funziona proprio! occhio...

per riassumerla in un concetto breve e chiaro, una multiistanza non è altro che una serie di richiami di Fb associati alle una relative aree di memoria:tale memoria, però anziché essere sparsa magari in decine di Db, è tutta nello stesso Db.

Esemplare è la spiegazione di RAMSON, io da parte mia riporto un esempio tratto da qualcosa che spesso uso, cioè i temporizzatori TON e TOF, ovvero SFB4 e 5. Una volta dichiarati nelle stat di un Fb più volte magari con nomi del tipo Timer1, Timer2, ecc, è sufficiente richiamarli con

CALL #TIMER1

in quanto la loro area di memoria STAT sarà una porzione del DB di istanza dell'FB nel quale si stava scrivendo dichiarazione e richiamo.

Link al commento
Condividi su altri siti

  • 1 year later...
gabriele.winter

Ciao a tutti, dovrei illuminare con un faretto una doccia. Pensavo di controsoffittarla in cartongesso (di quello adatto) e installare un faretto 12V.

Ci sono controindicazioni (per l'umidità o il vapore), o soluzioni migliori??

E il trasformatore potrebbe essere riposto sopra il cartongesso come un normale controsoffitto o sarebbe meglio posizionarlo altrove???

Grazie a tutti per i consigli.

Link al commento
Condividi su altri siti

Benny Pascucci

Non ho capito....spiegati meglio.... :rolleyes:

Vuoi installare un faretto nel controsoffitto al di sopra del box doccia o vuoi chiudere con cartongesso il soffitto della cabina.

Nel primo caso se dal piatto doccia stai ad un'altezza superiore a 225 cm non vi è alcuna controindicazione di sorta....puoi intallare ciò che vuoi, anche u faretto a 230 V.

Link al commento
Condividi su altri siti

gabriele.winter

Grazie per la risposta ma mi spiego meglio:

La mia doccia è chiusa su tre lati da muratura a tutta altezza (2,70m).

Davanti mettero una porta a vetro che difficilmente arriverà a soffitto (sarà circa 2 metri!!!)

Sopra vorrei mettere il controsoffitto, solamente per inserirci l'illuminazione.

Penso che sa pericoloso installare luci a 220V (un getto d'acqua potrbbe inavvertitamente arrivarci!!!)

Link al commento
Condividi su altri siti

Benny Pascucci

Se è questa la situazione concordo con la pericolosità dell'installazione, ma non mi preoccuperei degli schizzi d'acqua, ma del vapore.

Concordo per un faretto a 12 V, meglio se stagno IP55 e purchè il trafo di alimentazione sia di sicurezza.

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