Andrea_unipd Inserito: 27 luglio 2012 Segnala Share Inserito: 27 luglio 2012 salve ho una FB con un suo DB di istanza che gestisce il funzionamento di una serie di valvole. Ora devo modificare il codice in modo tale che gestisca ulteriori 2 gruppi di valvole, che devono funzionare allo stesso identico modo del gruppo esistente. L'idea è quindi di creare altri 2 db di istanza e usare la stessa FB. Ora, nella FB che ho ci sono istruzioni del tipo ... AUF "Steam Valves Data" U DBX [AR2,P#0.0] = DBX [AR1,P#0.0] ... Dove "Steam Valves Data" è il DB di istanza già presente. Per cui al momento non posso usare la stessa FB appoggiandomi a DB di istanza diversi a seconda che stia maneggiando il gruppo di valvole 1, 2 o 3. Come posso modificare quelle istruzioni della FB? Grazie Link al commento Condividi su altri siti More sharing options...
Andrea_unipd Inserita: 27 luglio 2012 Autore Segnala Share Inserita: 27 luglio 2012 Per caso si fa così? ... U DIX [AR2,P#0.0] = DIX [AR1,P#0.0] ... Link al commento Condividi su altri siti More sharing options...
batta Inserita: 27 luglio 2012 Segnala Share Inserita: 27 luglio 2012 In linea di massima direi di sì. Dipende da cosa hai caricato nel registro indirizzi. Potrebbe essere sufficiente anche: U [AR2,P#0.0] = [AR1,P#0.0] Attenzione poi all'utilizzo di AR2, specialmente all'interno di FB, perché è utilizzato dal sistema. Se vuoi utilizzare AR2, devi salvare il valore prima di modificarlo e ripristinarlo dopo l'uso per le tue funzioni. Dal manuale Siemens: Il registro DI ed il registro indirizzi AR2 vengono utilizzati dal sistema per il CALL FB e CALL multi-istanza e non devono quindi essere modificati all'interno degli FB. Sempre dal manuale Siemens: - Al richiamo di un FB (singolo o multiinstanza) vengono registrati dati nel registro degli indirizzi AR2 - Se nell'ambito di un FB viene modificato il registro degli indirizzi AR2, p. es. con le operazioni UC, CC o CALL (richiamo di FC/SFC senza parametro), non è più garantito che l'elaborazione di tale FB avvenga correttamente Non capisco però perché tu abbia bisogno di ricorrere a puntatori per l'accesso a variabili che fanno parte della FB. Link al commento Condividi su altri siti More sharing options...
Andrea_unipd Inserita: 28 luglio 2012 Autore Segnala Share Inserita: 28 luglio 2012 (modificato) I frammenti di codici che ho scritto sono all'interno di un ciclo. Il DB di istanza è costituito da un gruppo di dati (Stato valvola, tempo di apertura, condizioni di apertura, ecc), ripetuto n volte dove n è il numero delle valvole. Per cui con i puntatori vado a scansionare il DB per verificare determinate condizioni su ciascuna valvola. comunque non sapevo che AR2 fosse riservato al sistema... vedrò di salvare i dati contenuti e poi ripristinarli al termine della FB. Altra cosa, cos'è il registro DI? Modificato: 28 luglio 2012 da Andrea_unipd 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