Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




S7300-Domanda Su Richiamo Db Di Istanza


Messaggi consigliati

Inserito:

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


Inserita:

Per caso si fa così?


...

		  U	  DIX [AR2,P#0.0]

		  =	  DIX [AR1,P#0.0]

...

Inserita:

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.

Inserita: (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: da Andrea_unipd

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...