thtgiaco Inserito: 21 maggio 2010 Segnala Share Inserito: 21 maggio 2010 Buongiorno, avendo una CPU S7, contenente un FB che chiameremo FB100, viene richiamato nell' OB1 attraverso un call, il quale "richiama" due DB diversi, DB101 e DB102. Nel caso in cui io debba aggiungere una VARIABILE DI STATO (che chiameremo KP) all' FB100, come devo comportarmi?!?!? Io ho provato due strade diverse, entrambe non funzionanti, ma le scrivo cosicchè voi possiate escludere queste idee:1. ho inserito il KP nel programma contenuto nell'FB100, lo ho aggiunto alla lista di VARIABILI DI STATO presente nella finestra stessa dell FB100. Salvato e caricato nel PLC. Risultato --> PLC in System Failure2. stesso procedimento di prima, al quale in seguito ho proseguito con l'aggiornamento dei due CALL presenti sull' OB1, passato tutti i valori delle variabili. Caricato il programma nella CPU la macchina non era in grado di funzionare, in quanto i valori che gli passava erano errati e molte funzionalit, se non tutte, erano sbagliate. Se qualcuno potesse illustrarmi il metodo di aggiungere una nuova Variabile di Stato in un FB gli sarei molto grato.Cordiali SalutiGiacomazzi Enrico Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 21 maggio 2010 Segnala Share Inserita: 21 maggio 2010 se cambi i parametri formali di una FB cambi anche la sua DB di istanza, quindi basta cancellare la call della FB e rieditarla. il sistema ti richiede di aggiornare la DB di istanza, ovviamente confermi, quindi ritrasferisci la DB, la FB e il blocco dove fai la call.pigroplc Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 27 maggio 2010 Segnala Share Inserita: 27 maggio 2010 (modificato) Non occore cancellare le chiamate,ma ti basta aggiornare il richiamo una volta modificata la FB, per fare cio se fai tasto detro sulla FB modificata, l'ultima voce riporta una dicitura del tipo "aggiorna richiamo" o qualcosa del genere, a meno di errori di compilazione il sistema ti aggirona il richiamo dell FB modificata e poi ti chiede se vuoi aggiornare anche la DB associata.Finita l'operazione di aggiornamento, che devi fare per ogni richiamo della FB modificata, alla fine salvi il blocco modificato, nel tuo caso, e dalla finestra principale del simatic manager selezioni la FB e le relative DB, nel tuo caso selezioni FB100 DB101 e DB102, una volta selezionata scari il tutto nel PLC ed il gioco è fatto.Questo vale se cambi solo la STAT interna alla FB, se cambi o modifichi ingressi/uscite della tua FB, deve selezionare anche il blocco dove richiami le FB modificate, e scaricare il tutto.Spero di esserti stato abbastanza chiaroSaluti Modificato: 27 maggio 2010 da TravelMen Link al commento Condividi su altri siti More sharing options...
gaserma Inserita: 28 maggio 2010 Segnala Share Inserita: 28 maggio 2010 Quando inserisci una Variabile di stato o anche una Variabile di I/O in una FB devi anche fare attenzione a dove la inserisci e allo spazio di memoria disponibile; mi spiego: le variabili di una DB vengono normalmente assegnate mano a mano che si inseriscono nelle rispettive allocazioni occupando l'indirizzo immediatamente successivo a quello relativo al punto di inserimento, ad esempio nella definizione delle variabili di Input potresti avere:InVar_1 bool 0.0Var_2 bool 0.1Var_3 bool 0.2Var_4 bool 0.4Var_5 bool 0.5Var_6 bool 0.6 Var_7 bool 0.7Var_8 Int 1.0Var_9 Real 3.0 ..L'indirizzamento prosegue poi con l'area di I/O, di Out e di Stato, ma il concetto è lo stesso, nel senso che l'indirizzamento è assoluto e procede di conseguenza.Ora se inserisci anche un solo merker in una situazione del genere succede questo: Var_1 bool 0.0Var_2 bool 0.1Var_3 bool 0.2Var_4 bool 0.4Var_5 bool 0.5Var_6 bool 0.6 Var_7 bool 0.7Var_ins bool 1.0Var_8 Int 2.0Var_9 Real 4.0 ..Il merker va ad occupare il Byte 1.0 e tutte le variabili seguenti shiftano di conseguenza, chiaro che avendo fatto l'esempio sull'area di Input che è la prima, ne risente tutta la struttura della DB e se il tuo processo va a puntare una variabile di In/Out piuttosto che una Variabile Stat non punterà più la variabile che puntava prima dell'inserimento.Quindi prima di inserire una variabile qualsiasi in una FB devi considerare la struttura corrente delle variabili, se hai un byte non completamente utilizzato, ci puoi inserire un merker senza che le tue variabili vengano shiftate, oppure, se si tratta di una variabile stat, come nel tuo caso, puoi metterle in ultima posizione così da non influenzare le altre. Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 31 maggio 2010 Segnala Share Inserita: 31 maggio 2010 Salve quanto detto da gaserma è coretto tranne per un piccolo punto, penso che sia stata una svista, la tabella riportata ha un piccolo eccore, nel senso che siemens, quando inserisci una variabile BOOL con indirizzo DBX0.0 la sucessiva variabile ti tipo INT viene allogata in automatico in DBW2.0.In Var_1 bool 0.0 Var_2 bool 0.1 Var_3 bool 0.2 Var_4 bool 0.4 Var_5 bool 0.5 Var_6 bool 0.6 Var_7 bool 0.7 Var_8 Int 1.0 <== Errore Var_8 int 2.0 Var_9 Real 3.0 <== Errore Var_9 real 4.0 Ovvero viene riservata sempre una word e mai un byte, per tanto Var_1 bool 0.0 Var_2 bool 0.1 Var_3 bool 0.2 Var_4 bool 0.4 Var_5 bool 0.5 Var_6 bool 0.6 Var_7 bool 0.7 Var_ins bool 1.0 Var_8 Int 2.0 Var_9 Real 4.0Non cambia sostanzialmente la locazione di richiamo della Var_8 e Var_9, ma bisogna procedere comunque all'aggiornamento del richiamo. Link al commento Condividi su altri siti More sharing options...
gaserma Inserita: 31 maggio 2010 Segnala Share Inserita: 31 maggio 2010 Grazie della correzione TravelMen, purtroppo il tempo è tiranno e la fretta porta all'imprecisione. 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