Vai al contenuto
PLC Forum


S7300-Domanda Su Richiamo Db Di Istanza


Andrea_unipd

Messaggi consigliati

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


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

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: da Andrea_unipd
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...