nonsferatum Inserito: 22 novembre 2012 Segnala Share Inserito: 22 novembre 2012 Salve a tutti con il mio s5 dovrei comandare un motore che si accende 3 secondi fa una pausa di 7 secondi e riparte continuando così all'infinito fino a che io non gli dia un comando di stop. Il comando di start stop alla sequenza la posso fare tranquillamente con un interruttore posizionato in E 0.X solo che non trovo proprio il modo di fare la sequenza ciclica. Attualmente lavoro solo in OB1, è forse il caso di estendere la programmazione e creare FB e DB? Grazie a tutti Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 24 novembre 2012 Segnala Share Inserita: 24 novembre 2012 (modificato) Abituati subito a strutturare il programma in vari PB/FB (per mantenere un certo ordine) e metti già i dati in una DB (in futuro potrai leggerli/scriverli con un pannello operatore). In S5 i PB sono più stupidi degli FB, nel senso che non puoi passargli dei parametri nella riga di lancio e non puoi usare certe istruzioni complesse all'interno, per questo sono da usarsi solo per logica booleana. Poi devi scegliere un linguaggio di programmazione che ti è più congeniale, io di solito facevo i PB in KOP e gli OB/FB in AWL, ma se hai più dimestichezza con le porte logiche puoi usare anche il FUP. Il programma che vuoi fare tu è molto semplice, ci sono vari modi per farlo, te ne descrivo uno (non guadare troppo la sintassi che vado a memoria): DB100: DW0 = KT 30.1 DW2 = KT 70.1 OB1: SPA PB1 PB1: ADB 100 *** (interruzione di segmento) U E0.X UN M100.1 L DW0 SE T1 NOP 0 NOP 0 NOP 0 U T1 = M100.0 *** U M 100.0 L DW2 SE T2 NOP 0 NOP 0 NOP 0 U T2 = M100.1 *** U E0.X UN M 100.0 = A 1.x Modificato: 24 novembre 2012 da JumpMan Link al commento Condividi su altri siti More sharing options...
nonsferatum Inserita: 25 novembre 2012 Autore Segnala Share Inserita: 25 novembre 2012 Ciao JumpMan grazie per la risposta. Allora agendo da autentico profano e prendendo in esempio un progetto su simulatore ha fatto nel seguente modo e funziona. Vedete voi se ci sono imperfezioni o come migliorare: OB1: SPA PB1 PB1: : U E0.1 : UN T1 : L KT 20.1 : SV T0 : UN T0 : L KT 30.1 : SV T1 : U T0 : ZR Z5 : UN Z5 : L KZ 4 : S Z5 : L Z5 : T MW100 : U T0 : = A2.2 : BE Ora volevo creare il db100 inserendo i timer ma se poi modifico in PB1 come da tua guida ottengo un errore. Il comando ADB100 cosa fa? Grazie ciao Link al commento Condividi su altri siti More sharing options...
nonsferatum Inserita: 25 novembre 2012 Autore Segnala Share Inserita: 25 novembre 2012 Provando è molto più semplice fare questa operazione usando un generatore di onda quadra e riportando gli stessi valori delle prove precedenti ho fatto così: : UN T2 : L KT 20.1 : SA T1 : U T1 : U E0.1 : L KT 30.1 : SA T2 : UN T1 : = A2.3 : BE Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 26 novembre 2012 Segnala Share Inserita: 26 novembre 2012 come ho detto prima, ci sono molti modi per farlo, si possono usare timers SE, SV o SA, funziona comunque. nel messaggio #3 le seguenti istruzioni sono superflue, quel contatore probabilmente serviva a qualcos'altro.... U T0 : ZR Z5 : UN Z5 : L KZ 4 : S Z5 : L Z5 : T MW100 ADB forse il tuo simulatore non lo accetta, prova a scrivere A DB (con lo spazio), questo comando serve per aprire una DB, questa DB rimane aperta finchè non ne apri un altra, dopo di questo comando tutte le operazioni L e T (DW, DL, DR) leggono/scrivono dati da/verso quella DB. p.s. vedo che prediligi l'AWL, nel mio esempio avevo messo le istruzioni NOP 0 e *** per far si che premendo l'apposito tasto il segmento fosse visualizzato anche negli altri linguaggi (KOP/FUP). Link al commento Condividi su altri siti More sharing options...
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