GiancarloPirolo Inserito: 2 luglio 2013 Segnala Share Inserito: 2 luglio 2013 Buongiorno a tutti sto usando il TIA portal V12 con un S7-1200, ho un array di 1000 bit e ho la nesessità di leggere porzioni di questo array e analizzare se sono tutti a 0. Non trovo una istruzione utile qualche idea. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 2 luglio 2013 Segnala Share Inserita: 2 luglio 2013 Sono allocati tutti in sequenza senza soluzione di continuità? Link al commento Condividi su altri siti More sharing options...
GiancarloPirolo Inserita: 2 luglio 2013 Autore Segnala Share Inserita: 2 luglio 2013 Si Livio, ho un encoder collegato ad uno dei ingressi della cpu 1215, questo su fronte richiamo l'OB40, tramite l'istruzione MOVE_BLK sposto il bit[0] su bit[1] sul count metto la lunghezza dell'array unico questo funge da shr a questo punto se voglio sapere se tra il bit[100] e il bit[110] ho un 1 devo andare a leggerli in parallelo e dare un'uscita o c'è qualche istruzione che non conosco? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 2 luglio 2013 Segnala Share Inserita: 2 luglio 2013 E' un encoder incrementale? Se si mi sembra un modo ....ehm inusuale di lettura. Modo che francamente non comprendo. Link al commento Condividi su altri siti More sharing options...
Giuseppe Signorella Inserita: 2 luglio 2013 Segnala Share Inserita: 2 luglio 2013 (modificato) Non ho ben compreso cosa tu voglia fare realmente, ma potresti crearti un costrutto " un ciclo" for to next dove l'indice del tuo array è anche l'indice del costrutto. Nel ciclo fai un confronto del bit. Se ne viene trovato uno nella condizione true, ti memorizzi la posizione dell'indice o fai ciò che vuoi. Attenzione però con i cicli in quanti rischi di "impallare" la CPU. Modificato: 2 luglio 2013 da Giuseppe Signorella Link al commento Condividi su altri siti More sharing options...
GiancarloPirolo Inserita: 3 luglio 2013 Autore Segnala Share Inserita: 3 luglio 2013 (modificato) E' un encoder incrementale? si Se si mi sembra un modo ....ehm inusuale di lettura. Modo che francamente non comprendo Ma è direi che è una soluzione molto comune sulle macchine rotative, l'encoder messo su una posizione un giro un passo mi da la risoluzione per lavorare il prodotto sapendo dov'è all'interno della macchina. Questo poca importa, la mia domanda nello specifico era sapere se c'è una istruzione per interrogare parte di un array per sapere se un bit è alto Modificato: 3 luglio 2013 da Fulvio Persano Aggiunto "quote" Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 3 luglio 2013 Segnala Share Inserita: 3 luglio 2013 1) Rotative ne ho automatizzate parecchie (non ti scrivo i nomi delle aziende ma sono, o sono stati, i maggiori produttori di rotative e amcchine da stampa italiani): Gli encoders li ho sempre interfacciati con un contatore e non ho mai avuto problemi per fare trecking e controlli di posizione-registro. 2) Per verificare se un bit è a 1 o a 0 l'istruzione classica è XOR con 0 (o con 1). Link al commento Condividi su altri siti More sharing options...
Runtime Inserita: 3 luglio 2013 Segnala Share Inserita: 3 luglio 2013 Ciao In AWL potresti lavorare un pò con il registro degli indirizzi. Magari ti crei un Fc parametrizzato dove gli passi l'indice di partenza dell'array che vuoi valutare ed il numero di bit che vuoi valutare. Ciao. Link al commento Condividi su altri siti More sharing options...
GiancarloPirolo Inserita: 3 luglio 2013 Autore Segnala Share Inserita: 3 luglio 2013 Ciao In AWL potresti lavorare un pò con il registro degli indirizzi. Magari ti crei un Fc parametrizzato dove gli passi l'indice di partenza dell'array che vuoi valutare ed il numero di bit che vuoi valutare. Ciao. s7-1200 non ha awl... e il problema che ho è che avendo sviluppato il programma con il simbolico non trovo il codo di fare un banale compare come avrei fatto con il 300 Link al commento Condividi su altri siti More sharing options...
Runtime Inserita: 3 luglio 2013 Segnala Share Inserita: 3 luglio 2013 s7-1200 non ha awl... Questo mi era sfuggito ..... però dovresti avere SCL .... o sbaglio anche questa volta ? Basterebbe un banalissimo #BECCATO:=FALSE; FOR #I := 1 TO 200 DO IF #TUOARRAY[#I]=TRUE THEN #BECCATO:=TRUE; END_IF; END_FOR; Ciao 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