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




DB ottimizzate, comunicazione s7-1500 - winCC 7.4


Messaggi consigliati

Filippo Molteni
Inserito:

Buongiorno,

 

sto realizzando un progetto con plc 1516 e scada wincc7.4, ho utilizzato dei PID del tipo CONT_C e vorrei riportare alcuni parametri all' interno dello scada in appositi popup.

Non riesco a modificare la db di istanza ottimizzata in una normale in modo tale da poter puntare i singoli indirizzi.

Come posso fare per poter scrivere e visualizzare i dati della db a scada?

Grazie


Inserita:

I dati da scambiare con lo SCADA li metti in un altro DB.
I dati di impostazione li copi dal DB per lo SCADA nel DB di lavoro, e fai esattamente il contrario per i dati in lettura.

 

Anche senza questo problema, io considero sempre preferibile organizzare i dati di scambio con HMI/SCADA in strutture dedicate.

Filippo Molteni
Inserita:

Questo modo lo conosco, cercavo solo un modo più rapido di copiare un db di istanza in un' altra DB.

Grazie

Inserita:
36 minuti fa, Filippo Molteni ha scritto:

Questo modo lo conosco, cercavo solo un modo più rapido di copiare un db di istanza in un' altra DB.

Personalmente non condivido questo modo di operare.
Per la funzione PID i parametri da scambiare sono pochi. Volendo esagerare, oltre ai canonici Gain, TI e TD, ci puoi mettere i limiti del set point, i parametri di scalatura, i limiti dell'uscita, e qualche altro parametro di funzionamento.
Copiare tutto il DB di istanza, piuttosto massiccio, solo per i pochi dati che devono essere accessibili dallo SCADA, non mi pare una buona mossa.
Io, normalmente, per operare con i PID, uso una funzione alla quale passo come IN/OUT una struttura con i dati di setup ed una struttura con i dati di sola lettura. All'interno della funzione, oltre alla gestione del cambio modo di funzionamento, mi occupo dello scambio con il DB di istanza del PID di quelle poche variabili che veramente servono.
Il quale DB di istanza del PID viene anch'esso passato alla funzione come parametro IN/OUT.

Filippo Molteni
Inserita:
Il 17/11/2021 alle 12:55 , batta ha scritto:

Personalmente non condivido questo modo di operare.
Per la funzione PID i parametri da scambiare sono pochi. Volendo esagerare, oltre ai canonici Gain, TI e TD, ci puoi mettere i limiti del set point, i parametri di scalatura, i limiti dell'uscita, e qualche altro parametro di funzionamento.
Copiare tutto il DB di istanza, piuttosto massiccio, solo per i pochi dati che devono essere accessibili dallo SCADA, non mi pare una buona mossa.
Io, normalmente, per operare con i PID, uso una funzione alla quale passo come IN/OUT una struttura con i dati di setup ed una struttura con i dati di sola lettura. All'interno della funzione, oltre alla gestione del cambio modo di funzionamento, mi occupo dello scambio con il DB di istanza del PID di quelle poche variabili che veramente servono.
Il quale DB di istanza del PID viene anch'esso passato alla funzione come parametro IN/OUT.

Si certo, io dovrei leggere PV,SP, Gain, TI, TD, MAN, selezioni ON/OFF di P,I,D e le uscite quindi è circa una DB di 60 Byte.

Cercavo un metodo più veloce avendo circa 20/30 PID e dovendo creare una db importante e uno scambio segnali.

 

Grazie

 

 

Inserita:
5 ore fa, Filippo Molteni ha scritto:

Cercavo un metodo più veloce avendo circa 20/30 PID

Crei un "Tipo di dati" con i dati del PID che ti servono sullo SCADA.
Crei un DB dedicato allo SCADA dove dichiari, utilizzando il Tipo di dati, le strutture dei vari PID (potresti anche fare un array).
Fai una funzione alla quale passi, come IN/OUT, l'intero DB di istanza del PID e la struttura dei soli dati che ti servono per lo SCADA.

 

Esempio:

FUNCTION "ScambioDati_PID_SCADA" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_IN_OUT 
      DatiScada : "StructDatiPidScada";
      DatiPid {InstructionName := 'PID_Compact'; LibVersion := '2.3'} : PID_Compact;
   END_VAR


BEGIN
	
	#DatiPid.Setpoint := #DatiScada.SP;
	#DatiPid.Retain.CtrlParams.Gain := #DatiScada.Gain;
	#DatiPid.Retain.CtrlParams.Ti := #DatiScada.Ti;
	#DatiPid.Retain.CtrlParams.Td := #DatiScada.Td;
	
	#DatiScada.PV := #DatiPid.ScaledInput;
	
END_FUNCTION

 

Credo sia una soluzione più razionale rispetto la copia dell'intero DB di istanza.

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