tonymt Inserito: 8 giugno 2009 Segnala Share Inserito: 8 giugno 2009 Salve, devo creare una FB che fra le altre cose deve contenere deve contenere un timer, ritardo all'eccitazione, di 1secondo.Se ci metto un timer s7 (esempio T1) questo sara lo stesso per tutte le varie istanze della FB, e si incasinera tutto.come si risolve questo problema ?Grazie. Link al commento Condividi su altri siti More sharing options...
Oracolo00 Inserita: 8 giugno 2009 Segnala Share Inserita: 8 giugno 2009 Puoi usare SFB4Ciao Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 8 giugno 2009 Segnala Share Inserita: 8 giugno 2009 Puoi passarlo come parametro IN : TIMER poi nel blocco chiamante dichiari ogni volta un timer diverso, oppure usi SFB4 come consigliato da Oracolo, oppure usi una double-word che incrementi col parametro OB1_PREV_CYCLE (questo lo devi passare all'FB come parametro IN) Link al commento Condividi su altri siti More sharing options...
tonymt Inserita: 8 giugno 2009 Autore Segnala Share Inserita: 8 giugno 2009 Si, ma nel caso usi la sfb4 gli devo dare l'ob, diverso per ogni istanza...Come si fa a passare un ob come parametro esterno? ..... Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 9 giugno 2009 Segnala Share Inserita: 9 giugno 2009 Ti basta dichiarare una variabile di tipo STAT all'interno del tuo FB come SFB4, ad esempio:VAR TimerON : SFB4; TimerOFF : SFB4; END_VAR Link al commento Condividi su altri siti More sharing options...
soldo Inserita: 20 luglio 2009 Segnala Share Inserita: 20 luglio 2009 devi usare l'sfb4 all'interno dell'fb, poi con il tasto destro lo trasformi in multiistanzaciao Link al commento Condividi su altri siti More sharing options...
Virgilio_2 Inserita: 22 luglio 2009 Segnala Share Inserita: 22 luglio 2009 Puoi passarlo come parametro IN : TIMER poi nel blocco chiamante dichiari ogni volta un timer diversoAnch'io faccio così e funziona.MA ho un problema: con i contatori non funziona (negli FB si possono passare solo come IN ma non contano una cippa!) come devo fare? Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 22 luglio 2009 Segnala Share Inserita: 22 luglio 2009 con i contatori non funzionama questo funzionaFUNCTION_BLOCK FB 1 TITLE = VERSION : 0.1 VAR_INPUT pippo : COUNTER; Reset : BOOL; Imposta : BOOL; Conta : BOOL; END_VAR VAR_OUTPUT Done : BOOL; END_VAR VAR Conteggio : WORD; END_VAR BEGIN NETWORK TITLE = A #Conta; CU #pippo; A #Imposta; L C#10; S #pippo; A #Reset; R #pippo; L #pippo; T #Conteggio; NETWORK TITLE = END_FUNCTION_BLOCKlo richiamo in OB1 con ingresso il contatore che mi serve ed ad ogni fronte di "#Conta" il contatore conta senza fastidi, se alzo il "#Reset" anche come se alzo "#Imposta" il contatore si imposta a 10.Caso mai posta il tuo di blocco e si vede Link al commento Condividi su altri siti More sharing options...
vebernasconi Inserita: 24 luglio 2009 Segnala Share Inserita: 24 luglio 2009 Se non ti serve precisissimo, ( l'imprecisione è aggiunta dal tempo di ciclo) puoi usare questa tecnica:In OB1, nelle prime istruzioni, prima di chiamare qualunque FB od FC ti crei un merker che genera un FP mediante un timer ( oppure addirittura tramite uno dei bit del il byte di clock interno della CPU).ogni qual volta ti serve, lo passi come parametro in ingresso alla tua FB ( in pratica hai creato un clock).All'interno della tua FB ogni qual volta vedi il bit, incrementi un semplice intero e poi fai un confronto per vedere se hai raggiunto il valore desiderato.In questo modo risparmi timer e tempo di esecuzione.Ciao,Vittorio 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