Vai al contenuto

Attivazione in sequenza di outputs (Elsist)


Messaggi consigliati

Annalisa Frasso
Inserito:

Salve, premetto che è da poco che mi sono avvicinata al mondo del plc e la mia formazione mi ha dato solo informazioni base di C++.

Ho acquistato un plc Slimline Elsist ed utilizzo come tool di programmazione LogicLab. Sto incontrando delle difficoltà nel dover scrivere un programma che, con un unico input, azioni in sequenza 10 outputs che devono attivarsi in maniera impulsiva ad una distanza di 5 secondi l'uno dall'altro. Per fare ciò con un unico output ho realizzato un programmino in LD utilizzando la FB ONOFFCYCLE impostando i tempi opportuni. Vorrei sapere se esistono FB più adatte per ciò che devo fare io e delle indicazioni su come fare. Vi ringrazio anticipatamente per la disponibilità.

Annalisa Frasso
Inserita:

Grazie per il consiglio,  la FB blink fa proprio al caso mio! Approfitto della sua disponibilità per avere chiarimenti sulla FB counter up da abbinare alla blink. In particolare:

come converto il valore in CV negli outputs corrispondenti?

come si collegano l'uscita Q, un merker (che non ho capito benissimo cosa sia) e il reset per far ricominciare il ciclo?

Mi scuso se i passaggi che chiedo sono alquanto banali, ma prendetele come domande fatte da una neofita che ha tanta voglia di imparare!!

Grazie della disponibilità!!

Annalisa Frasso
Inserita: (modificato)

Ho seguito tutte le indicazioni ricevute, ma purtroppo in simulazione non mi funziona...credo sia un problema di definizione di qualche variabile che non riesco ad identificare. Di seguito ci sono gli screen sia del programma che delle variabili globali. Tra le variabili locali vi sono le due FB e la variabile definita appunto "variabile" di tipo UDINT. Inoltre per le altre uscite ho creato dei rami analoghi al primo.Qual'è il problema?

global.thumb.png.f7645f4b57e7ccdba9b8b39

 

LD1.png

Modificato: da Annalisa Frasso
Annalisa Frasso
Inserita:

Bene, ho fatto tutte le modifiche!! Ho creato un primo ramo con BLINK ed in OUT ho messo la variabile clock come COIL POSITIVE. Sul secondo ho eliminato la variabile sempre_vero e messo al suo posto la variabile SysAlwaysOn ed in più nelle variabili locali ho aggiunto a "variabile" il valore iniziale 0. Per quanto riguarda gli indirizzi il data block 255 è riferito agli I/O della CPU. Inoltre avrei un altro dubbio: siccome Q si attiva quando CV e PV coincidono, in PV dovrei mettere il numero degli outputs+1?

Comunque fatto tutto, andando a caricare il programma nel simulatore nella finestra Output di LogicLab mi esce questo errore:

Code generation .. 
Generating constants
Generating function block CTU
Generating function block BLINK
Generating program PRO
Generating unresolved
Generating dynamic links
aborted.
PRO(2$CL:8) - error G0008:  ST => Invalid access to variable

0 warnings, 1 errors.

Come mai?

Annalisa Frasso
Inserita:

Bene ci sono riuscita!!!l'errore era proprio su fine_ciclo, quindi impostandola come auto non mi da più errore. Un'ultima cosa...in questo modo i tempi di on/off degli outputs non coincidono con quelli impostati nel blink. Cioè praticamente io imposto in blink un timelow di 4500 e timehigh di 500 perchè voglio che ogni output sia attivo per 500ms e che per l'attivazione tra l'uno e l'altro passi un tempo di 4500ms, invece così ogni output è attivo fino a quando non si attiva il successivo. C'è un modo per modificare questo aspetto?

Annalisa Frasso
Inserita:

Ho risolto l'ultimo problema, ma diversamente perchè un solo timer non mi dava problemi, ma mettendone altri non mi funzionava più niente..allora ho ragionato un attimo: siccome il contatore mi trasforma l'uscita dalla blink in un segnale che dura complessivamente la somma dei tempi fissati nella blink ho impostato un tempo complessivo di 1000mS (500+500) ed al posto di far attivare ad 1 l'uscita1, a 2 l'uscita2 ecc. faccio andare a vuoto il contatore per 4 conteggi (complessivamente 4 sec) quindi ad 1 si attiva l'uscita1, mentre l'uscita2 si attiva a 5 e così via...forse non è il modo più corretto che ci sia, ma funziona e questo soprattutto grazie al suo prezioso aiuto!!!! Grazie ancora @Lucky67!!

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