wwwFede Inserito: 10 luglio 2006 Segnala Share Inserito: 10 luglio 2006 SalveQualcuno ha idea di come richiamare un Sfb con il Db d’istanza indicizzato?Grazie Link al commento Condividi su altri siti More sharing options...
Mauyblade Inserita: 10 luglio 2006 Segnala Share Inserita: 10 luglio 2006 ciao!in realtà è molto semplice:CALL SFB 46, DB46 // se la DB non esiste la crea automaticamentea questo punto se ci sono dei parametri da inserire, ti verrannoproposti in sequenza. Link al commento Condividi su altri siti More sharing options...
wwwFede Inserita: 10 luglio 2006 Autore Segnala Share Inserita: 10 luglio 2006 GrazieMA io ho la necessita di far:Call SFB46, [nrDb]Ma ovviamente non ci riesco. Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 11 luglio 2006 Segnala Share Inserita: 11 luglio 2006 E se lo chiami sempre con la stessa DBma prima di richiamarlo copi la DB che ti interessa sopra a quella che richiami ???CiaoLuca Link al commento Condividi su altri siti More sharing options...
wwwFede Inserita: 11 luglio 2006 Autore Segnala Share Inserita: 11 luglio 2006 Non ci avevo pensato, è la soluzione piu semplice e veloce.Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 11 luglio 2006 Segnala Share Inserita: 11 luglio 2006 Attenzione, se usi questo sistema (copia da DB di processo a DB di appoggio) devi avere anche l'accortezza di fare l'operazione inversa (copia da DB di appoggio a DB di processo). Inoltre devi anche tener presente che una SFB (dipende ovviamente da quale SFB) potrebbe richiedere più cicli di programma per la completa esecuzione.Questo implica che dovresti creare un semaforo per la lettura/scrittura del DB di appoggio. Link al commento Condividi su altri siti More sharing options...
wwwFede Inserita: 11 luglio 2006 Autore Segnala Share Inserita: 11 luglio 2006 Tanto per essere chiari si tratta del Sfb47 per la gestione dei contatori delle 31xC, se funzionano come le Fm350 richiede più cicli.Il problema è che devo usare tutti i counter contemporaneamente.Domanda: Se faccio un richiamo incondizionato del Sfb con il comando UC è possibile in qualche modo assegnarli il blocco dati (tipo auf [nrDb])?Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 11 luglio 2006 Segnala Share Inserita: 11 luglio 2006 Bene, allora NON devi richiamare la SFB47 una sola volta cambiando di volta in volta il DB associato, ma devi richiamare la SFB47 n volte (quanti sono i contatori) ed ogni volta associando il DB di istanza corretto, senza nessun bisogno di indicizzare.Se proprio vuoi indicizzare il DB di istanza (sconsigliato) puoi fare nel seguente modo:- creare FB con parametro in ingresso di tipo "Block_DB"- creare DB di istanza (se non ci sono altri parametri il DB sarà costituito da un'unica variabile di tipo "Block_DB" che occupa 2 byte- richiamare all'interno della FB così creata la tua SFB. Per l'associazione del DB di istanza anziché scrivere "DBnn" scrivi il nome della variabile di tipo "Block_DB"- richiamare la FB lasciando in bianco il parametro richiesto- prima del richiamo della FB trasferire nella variabile di tipo "Block_DB" del DB di istanza il numero del DB che dovrai associare alla SFBIo ho fatto alcune prove e sembra funzionare, ma continuo a sconsigliarti di utilizzare questo metodo. Link al commento Condividi su altri siti More sharing options...
wwwFede Inserita: 11 luglio 2006 Autore Segnala Share Inserita: 11 luglio 2006 Tutto questo perché devo inserire la gestione di questi counter in una mia logica multiplexata esistente per la gestione di assi AC fatta con le Fm350.1/2.Provo con il tuo metodo, Ti ringrazio comunque vada Link al commento Condividi su altri siti More sharing options...
emanuele.croci Inserita: 11 luglio 2006 Segnala Share Inserita: 11 luglio 2006 Nota: per questa applicazione, se non hai bisogno di operazioni particolari puoi anche leggere direttamente il valore di conteggio sulla PED corrispondente, tipo L PED768 o simili, senza usare la SFB47.Se può servirti...Ciao, Emanuele Link al commento Condividi su altri siti More sharing options...
batta Inserita: 11 luglio 2006 Segnala Share Inserita: 11 luglio 2006 Tutto questo perché devo inserire la gestione di questi counter in una mia logica multiplexata esistente per la gestione di assi AC fatta con le Fm350.1/2.Non puoi, nella tua logica multiplex, indicizzare solo il DB dove andare a leggere e scrivere i dati che ti servono, ma continuare a richiamare SFB47 n volte, al limite saltando l'esecuzione di quelle non richieste?Voglio dire: se eseguo un ciclo che legge in sequenza il valore corrente di Z0, Z1, Z2 e Z3, posso sempre richiamare le SFB47 per tutti i contatori, salvo andar a leggere il valore corrente da DB[Z0], DB[Z1], DB[Z2], DB[Z3] a seconda del ciclo multiplex in atto. Per alleggerire il programma puoi eventualmente saltare l'esecuzione delle SFB47 non utili in quel momento.Se ci fosse bisogno di richiamare la SFB47 un centinaio di volte potrei capire l'utilità di indicizzare, ma per 3 o 4 richiami...Poi c'è la possibilità di agire come suggerito da Emanuele. Dipende ovviamente da cosa devi fare. Link al commento Condividi su altri siti More sharing options...
wwwFede Inserita: 11 luglio 2006 Autore Segnala Share Inserita: 11 luglio 2006 Hai perfettamente ragione non vale la pena spaccarsi la testa per quattro contatori, ma volevo ricondurre il tutto alla gestione esistente, dove il numero di assi, il tipo di fm o di cpu non comporta alcuna modica se non nell Ob100 dove dichiaro HW. Link al commento Condividi su altri siti More sharing options...
314C Inserita: 11 luglio 2006 Segnala Share Inserita: 11 luglio 2006 Forse quello che ti interessa e' creare una FC al cui interno richiamare l'SFB47. L'FC deve poi essere richiamata n volte per gestire n assi?Se la situazione e' questa, allora puoi inserire come parametro di ingresso dell' FC un dato (es pippo) di tipo 'blocco DB'.All'interno dell'FC puoi richiamare la tua sfb comecall sfb47, #pipporichiamando l'FC puoi passare a pippo differenti DB (uno per ogni SFB) precedentemente creati come blocchi di istanza dell'SFB47.Se invece di una FC hai una FB il discorso si semplifica perche' non serve creare un dato di ingresso ma basta creare un parametro STAT di tipo SFB47 (es pippo). All'interno dell'FB potrai poi richiamare call #pippoche si presentera' come una SFB47 il cui DB di istanza e' annegato nel DB di istanza della tua FB (che sara' diverso per ogni richiamo della stessa)Questo metodo e' detto "programmazione in multi-istanza"CiaoSpero di aver fatto abbastanza confusione Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora