niky Inserito: 31 gennaio 2008 Segnala Share Inserito: 31 gennaio 2008 ragazzi una domanda:devo realizzare un blocco FB in step5 , ma non uso lo step 5 da tempo.ho 6 sensori collegati rispettivamente a 6 ingressi digitali. (E1.0 - E1.1 - E1.2 - E1.3 - E1.4 - E1.5)tali ingressi controllano la presenza o meno di alcuni elementi in un prodotto.ho a che fare con 6 tipologie di prodotto quindi per ogni prodotto cambiano i particolari da controllare,di conseguenza cambiano gli ingressi.ho un selettore a 6 posizioni dove indico al programma la tipologia di prodotto che la macchina sta producendo. ingressi: (E0.0 - E0.1 - E0.2 - E0.3 - E0.4 - E0.5)Per il prodotto 1 : controllo presenza ingressi (E1.0 )Per il prodotto 2 : controllo presenza ingressi (E1.0 - E1.1)Per il prodotto 3 : controllo presenza ingressi (E1.0 - E1.1 - E1.2)Per il prodotto 4 : controllo presenza ingressi (E1.0 - E1.1 - E1.2 - E1.3)Per il prodotto 5 : controllo presenza ingressi (E1.0 - E1.1 - E1.2 - E1.3 - E1.4)Per il prodotto 6 : controllo presenza ingressi (E1.0 - E1.1 - E1.2 - E1.3 - E1.4 - E1.5)se il prodotto controllato presenta una mancanza di almeno un ingresso deve andare alto il merker (M0.0 = memoria di scarto)io stavo pensando di realizzare un programma che mi effettua dei salti in funzione del prodotto che devo controllare: ESEMPIOU E0.0 SPB M001U E0.1 SPB M002U E0.2 SPB M003U E0.3 SPB M004U E0.4 SPB M005U E0.5 SPB M006M001: UN E0.0= M0.0M002:UN(U E0.0U E0.1 )= M0.0........BEho pensato a questa soluzione, se potrebbe essere giusta la sintassi corretta quale potrebbe essere?oppure se pensate ad un'altra soluzione mi aiutereste a realizzarla? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 31 gennaio 2008 Segnala Share Inserita: 31 gennaio 2008 Il concetto potrebbe andare bene, ma devi sistemare un po' il programma.Per esempio, prima di tutte le etichette M001, M002....M006, devi mettere un salto non condizionato (SPA) che ti mandi alla fine di tutti i controlli, altrimenti esegui le istruzioni anche quando non dovresti.Il controllo che fai dopo M001 praticamente non ha senso: a quell'etichetta ci vai solo se E0.0 è alto, quindi controllare che non sia basso non serve.Per i controlli successivi vale quanto appena detto per l'ingresso che ti manda a quel controllo, mentre devi controllare lo stato di tutti gli ingressi che precedono, usando però degli OR e non degli AND. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 31 gennaio 2008 Segnala Share Inserita: 31 gennaio 2008 A parte le inesattezze del tuo listato, mi sembri un po confuso, per esempio con U E0.0 SPB M001 salti a M001 quando E0.0=TRUE, ma in M001 cosa fai? ti aspetti che E0.0 possa essere FALSE ? E poi i salti casomai dovrebbero essere indicizzati dalla tipologia di prodotto e non dagli ingressi dei selettori.Cos'è che ti identifica la tipologia del prodotto ? un byte con valori da 1 a 6 ? oppure 6 bit di cui uno solo è true ?Se p.es. identifichi il prodotto con 6 bit (da M10.0 a M10.5) puoi fare così:U M10.0 UN E1.0 O U M10.1 UN E1.0 UN E1.1 O U M10.2 UN E1.0 UN E1.1 UN E1.2 O U M10.3 UN E1.0 UN E1.1 UN E1.2 UN E1.3 O U M10.4 UN E1.0 UN E1.1 UN E1.2 UN E1.3 UN E1.4 O U M10.5 UN E1.0 UN E1.1 UN E1.2 UN E1.3 UN E1.4 UN E1.5 = M0.0 Se identifichi il prodotto con un byte (MB10) puoi fare così: L MB10 L KF+6 !=F SPB L6 DEC 1 !=F SPB L5 DEC 1 !=F SPB L4 DEC 1 !=F SPB L3 DEC 1 !=F SPB L2 DEC 1 !=F SPB L1 SPA L0 L6: ON E1.0 L5: ON E1.1 L4: ON E1.2 L3: ON E1.3 L2: ON E1.4 L1: ON E1.5 = M0.0 L0: ....Quest'ultimo codice non sono sicuro al 100% che funzioni Link al commento Condividi su altri siti More sharing options...
niky Inserita: 31 gennaio 2008 Autore Segnala Share Inserita: 31 gennaio 2008 scusami ma ho sbagliato il messaggio,volevo modificarlo ma non ho trovato come fare,comunque il senso del mio discorso è quello ,anche perchè lo hai centrato pienamente e solo che non ho capito il secondo esempio:DEC 1!=FSPB L5DEC 1!=FSPB L4DEC 1!=FSPB L3DEC 1!=FSPB L2DEC 1!=FSPB L1SPA L0mi sfugge questa sintassi, "DEC 1" Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 31 gennaio 2008 Segnala Share Inserita: 31 gennaio 2008 Hai ragione a non capire, è che ormai mi sono "convertito" allo step 7, devi scrivre D 1 al posto di DEC 1.In pratica decremento ACCU1 (KF6) di 1 lasciando inalterato ACCU2 (MB10) e rifaccio il confronto.E' un bel modo per risparmiare un mucchio di istruzioni p.s. in step7 c'è anche il salto indicizzato alle etichette ma non ricordo più se nel dinosauro s5 c'è questa istruzione. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 1 febbraio 2008 Segnala Share Inserita: 1 febbraio 2008 ho un selettore a 6 posizioni dove indico al programma la tipologia di prodotto che la macchina sta producendo. ingressi: (E0.0 - E0.1 - E0.2 - E0.3 - E0.4 - E0.5)Semplice, utilizza una struttura come questa: UN E 0.0 // se E 0.0 = 1, eseguo il blocchetto e termina. SPB M001 .. .. . BEB M001:UN E 0.1 SPB M002 .. .. . BEB M002:UN E 0.2 SPB M003 .. .. . BEB M003:UN E 0.3 SPB M004 .. .. . BEB M004:UN E 0.4 SPB M005 .. .. . BEB M005:UN E 0.5 SPB M006 .. .. . BEB M006:UN E 0.6 SPB M007 .. .. . BEB M007:BE Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 20 febbraio 2008 Segnala Share Inserita: 20 febbraio 2008 (modificato) Mi autoquoto:in step7 c'è anche il salto indicizzato alle etichette ma non ricordo più se nel dinosauro s5 c'è questa istruzioneRisposta:Lo puoi fare anche con S5 il salto indicizzato... mi è passato davanti al naso giusto oggi mentre stavo modificando un programma.Supponiamo di identificare la tipologia di prodotto con una Word (MW10) che vale da 1 a 6B MW10 SPA =L0 SPA =L1 SPA =L2 SPA =L3 SPA =L4 SPA =L5 SPA =L6 L6: ON E1.0 L5: ON E1.1 L4: ON E1.2 L3: ON E1.3 L2: ON E1.4 L1: ON E1.5 = M0.0 L0: ...Questo codice mi sembra molto simpatico E come dice Batta... W L'AWL ! Modificato: 20 febbraio 2008 da JumpMan 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