Filippo Molteni Inserito: 15 novembre 2021 Segnala Share Inserito: 15 novembre 2021 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 15 novembre 2021 Segnala Share Inserita: 15 novembre 2021 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. Link al commento Condividi su altri siti More sharing options...
Filippo Molteni Inserita: 17 novembre 2021 Autore Segnala Share Inserita: 17 novembre 2021 Questo modo lo conosco, cercavo solo un modo più rapido di copiare un db di istanza in un' altra DB. Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 17 novembre 2021 Segnala Share Inserita: 17 novembre 2021 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. Link al commento Condividi su altri siti More sharing options...
Filippo Molteni Inserita: 19 novembre 2021 Autore Segnala Share Inserita: 19 novembre 2021 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 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 19 novembre 2021 Segnala Share Inserita: 19 novembre 2021 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. 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