Vai al contenuto
PLC Forum


Testo Allarme Sul Plc


drugo66

Messaggi consigliati

Ciao a tutti,

per l'impianto che sto implementando è venuto fuori che il cliente vuole il testo del messaggio dell'allarme attivo in una variabile del PLC, che poi andrà a prendersi, credo, da far visualizzare in un suo display; quando l'ho saputo mi è subito venuto freddo a pensare di dover copiare a mano i testi del pannello nel PLC, ma poi ho scoperto che sul pannello (Panel Plus 1000) è possibile inserire una variabile STRING in cui, al trigger dell'allarme, viene copiato l'intero testo dell'allarme ed anche nella lingua selezionata dal pannello: l'ho provato e funziona anche bene :clap:

Il problema nasce quando si attivano 2 o più allarmi in sequenza, ovviamente il pannello mi copia nella variabile l'ultimo arrivato, e quando proprio l'ultimo arrivato viene azzerato; l'allarme precedente, che si era attivato prima, essendo già attivo, non effettua nessuna copia nella variabile, che quindi rimane con il testo dell'allarme azzerato.

Ho pensato di crearmi una lista, in pratica un array che dovrò shiftare in un senso o nell'altro a seconda di chi entra (è attivo) o chi esce (è stato resettato) e quindi andarmi a copiare il testo corretto (in pratica sempre il primo), ma non credo che esistano istruzioni per shiftare un array di STRING (dovrò scriverla e testarla per benino), quindi mi stavo chiedendo se ne vale veramente la pena di tentare una strada del genere o meglio inserire tutti i testi in un array ( :wacko:).

Che ne dite ?

Qualcuno ha già affrontato una situazione simile ?

Grazie a tutti

Link al commento
Condividi su altri siti


puoi fare degli array di stringhe standard 80 Chr, poi usare l'istruzione FAL oppure la CPS.

Quando hai un array di stringhe puoi fare uno shift considerando un array come un area contigua di memoria.

ti basta puntare il primo elemento di String[0].len e copiare a raffica con CPS verso un array di DINT[0] per una lunghezza di byte corrispondente a tutte i caratteri delle stringhe +len

Ma penso che se usi la FAL risolvi velocemente lo shift tra stringhe.

puoi farti il Linguaggio ST uno shift di stringhe copiando progressivamente in ordine invero l'ultima stringa nella penultima e cosi via.

Usi un ciclo While o ciclo For.

ci sono vari modi.

L'istruzione FAL e' molto polivalente puo' fare un sacco di cose.

Link al commento
Condividi su altri siti

Ieri abbiamo scelto di fare in questo modo (l'idea non è farina del mio sacco, ma devo dire che mi soddisfa): ho scritto una routine che scatena tutti gli allarmi in sequenza, uno per volta, e copia il testo dal pannello (o meglio, dalla variabile che comunica con il pannello) in un array del PLC; ci mette meno di dieci minuti e mentre è in esecuzione inibisco qualsiasi altro funzionamento; ho già il numero dell'ultimo allarme, quindi, in funzionamento normale, devo solo usarlo come indice per l'array che menzionavo prima ed il gioco è fatto.

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