Vai al contenuto
PLC Forum


Impostare valori da HMI a variabili diverse


pilota60

Messaggi consigliati

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.

 

 

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

Cesare Nicola

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.
DB_Dati.png.8f66b2d330f736057fe86521fc3b2669.png

 

Lo puoi fare anche nel pannello, con uno script, con lo stesso principio.

Modificato: da Cesare Nicola
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

Cesare Nicola
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. 🙂

 

DB_Dati.png.0c4d7a2ce980dd8b08d880658c76e2f2.png

 

KOP.thumb.png.9e1eb3b6443a025556bb9bc7dbc781b1.png

 

 

DB_Dati.png

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