pilota60 Inserito: 8 gennaio 2020 Segnala Inserito: 8 gennaio 2020 Buongiorno a tutti e buon anno nuovo. Prendo spunto da una discussione recente per una domanda. Chiedevo se fosse possibile da pannello, con Tia, impostare i valori a più variabili tramite però solo un richiamo da pannello stesso. Mi spiego meglio. Ho 100 strumenti in campo e voglio impostare il range (nel caso avvenga una sostituzione) da HMI. Quindi ogni strumento ha 2 valori di range (min-max) da impostare. Per evitare di fare 200 caselle specifiche (2 per ogni strumento), con tutto ciò che comporta chiedevo se fosse possibile, utilizzando il TAG dello strumento come indice, assegnare i valori delle variabili allo strumento giusto. Esempio : una casella con il TAG strumento e due per le variabili per il range da assegnare. Avevo pensato a creare un DB con degli array (uno per strumento) con i relativi valori, ma mi sono bloccato su come puntare da HMI all'array che voglio. Spero di essermi spiegato bene. Grazie per l'attenzione.
pigroplc Inserita: 8 gennaio 2020 Segnala Inserita: 8 gennaio 2020 crei 3 array; 1 per il valore e 2 per il controllo di range, quindi generi una variabile multiplexata interna che va a puntare il tag array dove il puntatore è un tag interno che può variare da 0 al massimo valore che tu hai indicato.
pilota60 Inserita: 8 gennaio 2020 Autore Segnala Inserita: 8 gennaio 2020 Ciao Pigroplc e grazie per la risposta. Solo che il termine "variabile multiplexata interna" non mi è particolarmente chiaro. (eufemismo) Ed il problema è proprio quello : come puntare all'array.
Cesare Nicola Inserita: 8 gennaio 2020 Segnala Inserita: 8 gennaio 2020 (modificato) Io lo farei nel PLC, in SCL. Crei un blocco in SCL e ci scrivi dentro: Quote IF "Avvia_scrittura" THEN "Avvia_scrittura" := false; FOR #i := 1 TO 200 DO "DB_Dati".Arr_dato_1[#i] := "DB_Dati".Dato_1_HMI; "DB_Dati".Arr_dato_2[#i] := "DB_Dati".Dato_2_HMI; END_FOR; END_IF; Dove "avvia_scrittura" è un bit che lancia la scrittura, DB_dati è una DB che contiene due array di dati, da 200 elementi, come da immagine, e i è una variabile INT nell'area Temp del blocco. Dato_1_HMI e Dato_2_HMI sono i due dati da scrivere dal pannello agli array. Lo puoi fare anche nel pannello, con uno script, con lo stesso principio. Modificato: 8 gennaio 2020 da Cesare Nicola
Cesare Nicola Inserita: 8 gennaio 2020 Segnala Inserita: 8 gennaio 2020 Ops, vedo ora che avevo capito male: il mio esempio è per scrivere lo stesso valore in tutti e duecento i campi.
pilota60 Inserita: 8 gennaio 2020 Autore Segnala Inserita: 8 gennaio 2020 Ciao Cesare Nicola e grazie anche a te per il contributo. Se non ho capito male nel metodo da te esposto l'inserimento avverrebbe sequenzialmente ( da 1 a 100). Io volevo invece puntare specificatamente ad un valore array(strumento). Dallo script da te inviato non ho capito come posso, inserendolo da pannello, fare il puntamento allo strumento , per es. n°55
Cesare Nicola Inserita: 8 gennaio 2020 Segnala Inserita: 8 gennaio 2020 5 minuti fa, pilota60 ha scritto: Dallo script da te inviato non ho capito come posso, inserendolo da pannello, fare il puntamento allo strumento , per es. n°5 Infatti, non si può. Come dicevo, avevo interpretato male la tua domanda. Questo è ciò che chiedevi, se non ho sbagliato anche stavolta. 🙂
pilota60 Inserita: 8 gennaio 2020 Autore Segnala Inserita: 8 gennaio 2020 Si, credo che così sia corretto. Ci provo. Grazie ancora.
pilota60 Inserita: 8 gennaio 2020 Autore Segnala Inserita: 8 gennaio 2020 35 minuti fa, pigroplc ha scritto: Grazie anche a te, PigroPLC Mi studierò la soluzione più adatta.
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