tonynos Report Share Posted May 5, 2015 Buongiorno, sto sviluppando il mio primo programma con SoMachine Basic. Dovrei creare una sequenza di accensione di circa 15 teleruttori intervallati 5 sec l'uno dall'altro. esiste un sistema per creare un "ciclo if" (come in "C++") che se il teleruttore 1 è accesso allora accende il 2 etc... oppure devo creare 15 righe separate ognuna della quali attiva un teleruttore e da il consenso al teleruttore successivo. saluti Tony! Quote Link to post Share on other sites
step-80 Report Share Posted May 5, 2015 (edited) Ciao per soli 15 teleruttori secondo me ti conviene usare il linguaggio strutturato, ed usare il CASE per creare il tuo ciclo Esempio Dichiarazione variabili: VAR variabile_step: INT; pls_start : bool; Tempo_intervallo: TON; END_VAR LOOP CASE 'variabile_step' OF 0: IF 'pulsante_start' THEN 'Teleruttore_1' :=TRUE; Tempo_intervallo.IN:=TRUE;'variabile_step:=5; END_IF; 5: IF Tempo_intervallo.Q THEN 'Teleruttore_2':=TRUE; Tempo_intervallo.IN:=FALSE; 'variabile_step':=10; END_IF; 10: Tempo_intervallo.IN:=TRUE; 'variabile_step':=15; 15: // Da qui in poi copi-incolli i vari passaggi cambiando il valore di variabile step e controllando lo scadere del timer oltre ovviamente il numero di teleruttore che vuoi accendere/spegnere In questo modo usi un solo temporizzatore Ciao Matteo Edited May 5, 2015 by step-80 Quote Link to post Share on other sites
bigalex Report Share Posted May 5, 2015 (edited) SoMachine Basic non include il testo strutturato ma solo ladder , IL (lista istruzioni) e SFC (Grafcet) . E' una pseudo evoluzione di TwidoSuite e visto che è gratuito e rivolto al solo prodotto M221 (che dovrebbe sostituire in futuro Twido) non contempla tutti i linguaggi IEC come invece SoMachine (Full) include (è CodeSys) . bigalex Edited May 5, 2015 by bigalex Quote Link to post Share on other sites
step-80 Report Share Posted May 5, 2015 Allora come non detto.. Ti tocca fartelo di ladder ma 15 teleruttori non sono gran cosa. Se proprio volessi fare qualcosa di particolare potresti inventarti un blocco funzione da istanziare diversamente per i 15 teleruttori Quote Link to post Share on other sites
bigalex Report Share Posted May 5, 2015 SoMachine Basic non credo consenta la creazione di User Function Blocks. bigalex Quote Link to post Share on other sites
Giuseppe Signorella Report Share Posted May 5, 2015 Se devi semplicemente far partire in sequenza 15 teleruttori, (uscite) ti basta un registro di scorrimento che richiami ogni 5 secondi con un fronte di salita e farti delle autoritenute. Quote Link to post Share on other sites
step-80 Report Share Posted May 5, 2015 Se devi semplicemente far partire in sequenza 15 teleruttori, (uscite) ti basta un registro di scorrimento che richiami ogni 5 secondi con un fronte di salita e farti delle autoritenute. A questo punto non so se SoMachine Basic permetta l'uso del registro di scorrimento :superlol: :superlol: Quote Link to post Share on other sites
tonynos Author Report Share Posted May 11, 2015 ho deciso di farlo in Ladder, inserendo i vari controlli per ogni passaggio (consenso dal teleruttore precedente, non ci sono allarmi etc..) qual'è la funzione per impostare l'eccitamento di una bobina? es: se premo il tasto start vorrei che lo stato della bobina venga impostato su NC a prescindere se prima era NO oppure era già NC grazie!! Quote Link to post Share on other sites
Ezio67 Report Share Posted March 22, 2016 tonynos, se ho capito, l'istruzione che cerchi è "S" che sta per SET. Graficamente è rappresentata con una bobinetta e la S all'interno. Se la usi su un'uscita, quando premi il pulsante si avvia il teleruttore. Attenzione che dovrai poi spegnerla con l'istruzione "R" RESET. Spero di essere stato utile. Quote Link to post Share on other sites