Vai al contenuto
PLC Forum


Fronte Di Salita Fb - linguaggio ST


biondo

Messaggi consigliati

Salve a tutti, sto sperimentando con successo il linguaggio ST dei blocchi funzione, ora pero' avrei bisogno di creare una sorta di inizializzazione del blocco ogni volta che riceve l'abilitazione EN=true.

Utilizzando una versione un po' vecchiotta di CXONE (ver.1.1) non sono riuscito a trovare nel linguaggio St l'istruzione EDGE_POS che in altri plc esiste......

Come posso crearmi un semplice programmino che ogni volta che l'FB riceve l'abilitazione (cioè EN passa da basso a alto) io all'interno del FB eseguo un reset di tutte le variabili interne per partire con una situazione "pulita".

Qualcuno ha avuto modo di sperimentare qualcosa di simile ??

Grazie per la collaborazione e l'aiuto :thumb_yello:

Link al commento
Condividi su altri siti


Qualcosa del genere dovrebbe funzionare (non ho CX-Programmer su questo computer, quindi mi scuso per eventuali errori di sintassi):

IF EN == FALSE THEN

tsEN := false;

END IF

IF (EN == TRUE) AND (tsEN == FALSE) THEN

codice di reset

....

tsEN := TRUE;

END IF

Ciao.

Link al commento
Condividi su altri siti

Purtroppo non funziona per il semplice fatto che quando togli l'alimentazione al blocco funzione (EN=false) in realtà il blocco stesso non viene piu' eseguito, è come se fosse un Jump, e quindi la parte

IF EN == FALSE THEN

tsEN := false;

END IF

non viene eseguita........

Forse potrei lasciare sempre alimentato il mio FB e poi con un ingresso ausiliario eseguire l'inizializzazione .....

provo poi vi faccio sapere !!!! <_<

Link al commento
Condividi su altri siti

Facendo così....funziona ...ho inserito negli ingressi un Input di tipo bool che quando va true mi resetta tutte le mie variabili e contatori vari....poi lascio sempre a On l'ingresso del mio FB e quando mi serve riinizializzarlo ,metto a true l'ingresso di reset ....e il gioco è fatto !!!

Così facendo ho trovato si una scappatoia, ma il tempo ciclo ne soffre un po' in quando il mio FB è sempre "alimentato".......

ci sarà pure un sistema......

Qualche altra idea ?? :o

Link al commento
Condividi su altri siti

  • 2 weeks later...

Provo A Buttartela Lì....

Se Inserisci Una Variabile BOOL Con Valore Iniziale FALSE Non MANTENUTA, Quando Abiliti Il Blocco Funzione Questa Variabile E' Sempre 0;

Le Prime Righe Del Programma Devono Essere I Tuoi RESET Condizionati Da Un IF Con Variabile := FALSE;

Dopo I Reset Metti La Variabile A TRUE, Questa Dovrebbe Rimanere Tale Fino Alla Disabilitazione Dell' EN.

E' Da Provare Ma Per Me Funziona.

Es:

VARIABILI:

1_Ciclo BOOL Non Mantenuta Valore_Iniziale FALSE

Var_1

Var_2

Codice:

(* Reset *)

IF 1_Ciclo = FALSE THEN

Var_1 := FALSE;

Var_2 := FALSE;

END_IF;

1_Ciclo := TRUE;

(*Codice Programma FB Da Qui In Poi*)

Sono Quasi Convinto Che Funzioni

Ciao

Link al commento
Condividi su altri siti

  • 3 weeks later...

Non funziona...... forse il mio Cxone...è troppo vecchio ?? :senzasperanza:

Ho inserito una variabile di tipo bool che all'inizio vale false, poi all'inizio del mio blocco ho inserito le seguenti righe :

init BOOL 0 FALSE varaibile di inizializzazione INTERNAL 0

(* inizializzazione *)

if init= false then

tempo := 0,0;

y := 0,0;

val_analog := 0,0;

init := true;

end_if;

da qui in poi se init = true.......e altre condizioni - inizio il mio ciclo...

Ho notato che mettendo a true l'ingresso EN del blocco e poi rimettendolo a false la variabile init rimane sempre a true........ :angry:

L'unico modo per "azzerare" la variabile è di andare in Programm con il CXONE e poi in monitor o run.....

qualche altro suggerimento.......??? :blink: :blink:

Link al commento
Condividi su altri siti

Per essere elaborato il blocco deve sempre essere attivo l'ingresso EN quindi puoi metti il bit di sempre, se viene disattivato il blocco resta in uno stato di "congelamento".

Se ti serve avere in ingresso da elaborare, basta che ti crei nel blocco un altro ingresso al quale vai a connettere il tuo fronte di salita o altro.

Saluti.

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