Annalisa Frasso Inserito: 7 ottobre 2015 Segnala Inserito: 7 ottobre 2015 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: 8 ottobre 2015 Autore Segnala Inserita: 8 ottobre 2015 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: 9 ottobre 2015 Autore Segnala Inserita: 9 ottobre 2015 (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? Modificato: 9 ottobre 2015 da Annalisa Frasso
Annalisa Frasso Inserita: 10 ottobre 2015 Autore Segnala Inserita: 10 ottobre 2015 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 constantsGenerating function block CTUGenerating function block BLINKGenerating program PROGenerating unresolvedGenerating dynamic linksaborted.PRO(2$CL:8) - error G0008: ST => Invalid access to variable0 warnings, 1 errors.Come mai?
Annalisa Frasso Inserita: 12 ottobre 2015 Autore Segnala Inserita: 12 ottobre 2015 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: 14 ottobre 2015 Autore Segnala Inserita: 14 ottobre 2015 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!!
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