bobco Inserito: 17 maggio 2006 Segnala Share Inserito: 17 maggio 2006 Devo pilotare un display a 7 segmenti (4 cifre) con un PLC S5-115. Il numero da visualizzare è un codice di allarme. Tutti gli allarmi sono su delle MW.In pratica devo interrogare i singoli bit di 6 MW (96 allarmi).Volevo utilizzare un indirizzamento indicizzato con una sorta di polling a tempo.Avete qualche suggerimento o esempio da indicarmi?Grazie a tutti. Link al commento Condividi su altri siti More sharing options...
Gne Inserita: 17 maggio 2006 Segnala Share Inserita: 17 maggio 2006 Beh, e' un po' che non utilizzo S5, sono quindi un po' arrugginito, pero' ci provo ugualmente.Premessa.-Allarmi in MW da 100 a 110 quindi da M100.0 a M111.7-Mw10=Puntatore-MW12=contatore -M1.0=Allame attivo individuato-T0 =Tempo di "visualizzazione.Per cominciare prova cosi' e vedi se funziona, BUON LAVORO!!!! Link al commento Condividi su altri siti More sharing options...
Gabriele Corrieri Inserita: 17 maggio 2006 Segnala Share Inserita: 17 maggio 2006 (modificato) Ciaonon capisco tanta complicazione! a prescindere dal metodo di pilotaggio del display potrebbero volerci da 12 a 32 uscite, ma a quel punto basta semplicemente fare una serie di confronti, con un jump d'uscita ... esempio breve breveconfronto con "allarme 1" carica "0001" nel MW dei display jump uscita confronto con "allarme 2" carica "0002" nel MW dei display jump uscita confronto con "allarme 2" carica "0002" nel MW dei display jump uscita uscita:benon te lo scrivo in S5 perchè sono arruginitissimo ... scriverei errori e basta, credo comunque che il principio sia chiaroCiao Modificato: 17 maggio 2006 da Gabriele Corrieri Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 17 maggio 2006 Segnala Share Inserita: 17 maggio 2006 Nello step5 l’indicizzazione si ottiene con l’istruzione B.P.es per leggere la DW102 si può scrivere:L KF102T MW 10 <<<PUNTATOREB MW 10L DW 0 <<<Legge DW indicizzata da MW10 (legge DW102)E’ possibile indicizzare anche la lettura di 1 bit, ma è molto tempo che non lo uso e non mi ricordo esattamente come si costruisce il puntatore, te lo potrà dire qualcuno che ha i manuali sottomano (o che ha installato sulla sua crapa una flash più capiente della mia, io ogni tanto devo formattare qualche zona di memoria per far posto a nuovi dati ).In ogni caso la lettura di 1 bit per ciclo (incremento puntatore ad ogni ciclo plc) la vedo molto lenta, viceversa, la lettura di tutti i 96 bit in 1 solo ciclo (con 96 incrementi di puntatore e istruzioni varie) la vedo troppo pesante, quindi ti consiglierei di costruirti un puntatore ai 12 byte di allarme:Esempio: Se hai gli allarmi da MW0 a MW10 ti fai un contatore (es. su MW100) che cicla da 0 a 11, questa MW (puntatore) la usi per esaminare un intero byte di allarmi (8 allarmi alla volta), se il valore del byte puntato è <>0 blocchi il contatore (puntatore) e inizi a esaminare a 1 a 1 gli 8 bit..... ogni volta che trovi 1 bit a 1 fermi il tutto e visualizzi il nr. corrispondente (che può risultare da un calcolo sul valore dei puntatori oppure dal valore di un “contatore” parallelo). Link al commento Condividi su altri siti More sharing options...
bobco Inserita: 18 maggio 2006 Autore Segnala Share Inserita: 18 maggio 2006 Rispondo a Gabriele Corrieri. E' chiaro che è molto più semplice fare dei confronti, bit per bit, con dei salti, ma se gli allarmi sono un centinaio, conviene risparmiare sull'occupazione della memoria di programma o comunque fare una programmazione più "intelligente", altrimenti perchè avrebbero inventato l'indirizzamento indiretto?Grazie a tutti per i consigli. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 18 maggio 2006 Segnala Share Inserita: 18 maggio 2006 (modificato) E’ possibile indicizzare anche la lettura di 1 bit, ma è molto tempo che non lo uso e non mi ricordo esattamente come si costruisce il puntatore.....Ci provo...DB 5 ......DW 2 KH = 0105DW 3 KH= 0002......FB 1...A DB 5......B DW 2U E 0.0 // E 5.1...B DW 3 SE T 0 // SE T 2...P.S. : Il english indexed statement per proccessing operation e' DO, quindiDO DW2A I 0.0 // input 5.1... P.S. spero non avere sbagliato di tanto Modificato: 18 maggio 2006 da Savino Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 18 maggio 2006 Segnala Share Inserita: 18 maggio 2006 Gabriele, ho paura che il tuo codice restituisca solo il nr. del 1° allarme incontrato, in caso contrario non ho capito bene cosa intendi per “confronto”.Un codice simile io lo uso per i messaggi di “manovra errata” in manuale, che devono restituire 1 solo messaggio alla volta (se l’operatore sbaglia una manovra).DW 2 KH = 0105Allora si potrebbe scrivere anche KY 1,5 Ma siamo sicuri che non sia KH0501 e KY 5,1 ? ... Il bit sta nel byte alto ?... Perché ora ,facendo uno scandisk della flash (sempre quella della mia crapa), mi riaffiora un ricordo che il bit sta nel byte basso!Chi ha i manuali ? Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 18 maggio 2006 Segnala Share Inserita: 18 maggio 2006 (modificato) Ma siamo sicuri che non sia KH0501 e KY 5,1 ?No.Confermo sopra postato, adesso con due manuali (95 e 115 ) in mano.Un'altro esempio.DB 6 DW 12 : KH =0108 DW 13 : KH =0001 FBx A DB 6 .. .. B DW 12 U M 0.0 // U M 8.1 B DW 13 SS T 0 // SS T 1 .. ..Gabriele, ho paura che il tuo codice restituisca solo il nr. del 1° allarme incontrato, in caso contrario non ho capito bene cosa intendi per “confronto”.L' idea di massima strutturata da Gabriele l'ho utilizzata anch'io con successo per il ricavo del numero di messaggio da visualizzare ........ potrebbe diventare lunga da scrivere, a seconda la lunghezza del numero di messaggi da gestire ma molto veloce nella sua esecuzione. Modificato: 18 maggio 2006 da Savino 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