Linguaggio SFC, variabile temporale di step e domanda su azioni
Home › Forum › Programmazione IEC 61131 (LogicLab) › Linguaggio SFC, variabile temporale di step e domanda su azioni
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 4 anni, 3 mesi fa da
Sergio Bertana.
-
AutorePost
-
Luglio 8, 2021 alle 3:14 pm #60499
alpic84
PartecipantePer impratichirmi con logicLab 5 ho provato a scrivere un banale programma SFC: da uno stato Spento passo dopo 3 secondi ad uno di Acceso in cui ho un motore acceso, seguito poi, dopo 1 secondo a quello in cui ho due motori accesi. Dopo 5 secondi torno a OFF.
L’intenzione era quella di inserire un’espressione nelle transizioni sfruttando la variabile timer dello step usando la sintassi, per esempio, Spento.T>=T#5s, come farei scrivendo su carta o sul software che ho usato per un certo periodo.
Alla compilazione però ricevo questo messaggio di errore:
error A4097: Spento=> Object not found
che si ripete per ogni transizione. Ho guardato sul manuale e sul forum, ma non sono riuscito a trovare una soluzione.
Ho anche due domande a cui non ho trovato risposta
Per ogni stato è possibile inserire una sola azione di un certo tipo?
Sono supportati solo i tipi N e P nei diagrammi SFC di logiclab?
Luglio 8, 2021 alle 3:18 pm #60525Sergio Bertana
Amministratore del forumNon utilizzo mai i linguaggi grafici, se guardi tutti gli esempi che abbiamo sia nelle knowledge che nel forum sono in ST.
Il linguaggio testuale ha il grosso vantaggio di poter essere facilmente manipolato, copiato in parti da un programma ed incollato in un altro. Inoltre con semplici passaggi ssi può passare da LogicLab a CODESYS.
Un esempio di programma in SFC lo puoi trovare in questo topic.
Per aiutarti ho girato la domanda ad Axel che sono gli sviluppatori dell’ambiente di sviluppo LogicLab ed ecco la loro risposta.
Ovviamente Spento deve essere dichiarato.
Dentro le azioni puoi chiamare ciò che ti pare, es. funzione ma è possibile associare solo un azione per N (finché lo step è attivo) oppure P (pulse, quando lo step viene attivato).
Dopodiché assegni le condizioni di uscita dalle transazioni, possono essere del codice o delle variabili booleane.
Luglio 9, 2021 alle 10:19 am #60529alpic84
PartecipantePrima di tutto grazie per aver risposto e aver chiesto approfondimenti alla AXEL.
Scrivi che “Spento deve ovviamente essere dichiarato”. Spento però è uno stato e sarà pure una variabile strutturata.. ma di quale tipo?
Per quanto riguarda le azioni set/reset o latch/unlatch che dir si vogliano, o le time limited o le delayed si può fare qualcosa o è necessario scrivere codice in testo strutturato per implementarle? Nell’interfaccia non vedo opzioni, perciò immagino che debba essere così.
Luglio 9, 2021 alle 11:31 am #60531Sergio Bertana
Amministratore del forumNon ho ben chiaro quello che stai realizzando, non sono un esperto di SFC quindi scusa il mio programma banale, ho realizzato il programma SFCExample (Download).
Step 0: Attiva l’uscita 0 del modulo CPU SlimLine ed attende 2 secondi.
Step 1: Disattiva l’uscita 0 del modulo CPU SlimLine ed attende 2 secondi.Come vedi dallo screenshot ho definito la variabile TDelay di tipo timer eTON, e nello step 0 eseguo l’azione SetDo00 che esegue il timer e sulla transizione ne controllo l’uscita Q. Nello step 1 eseguo l’azione ResetDo00 che esegue il timer e sulla transizione ne controllo l’uscita Q.
Nota importante, come vedi nelle due azioni l’ingresso IN del timer è gestito con lo stato dell’uscita, questo perchè occorre che il FB veda disattivarsi IN per poi sulla attivazione gestire una nuova temporizzazione.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.