antstan Inserito: 18 aprile 2005 Segnala Share Inserito: 18 aprile 2005 (modificato) Salve,Sto lavorando con rslogix 5000....Immaginiamo di dover gestire 300 o 400 o 10000 ingressi, tutti con gli stessi parametri tipo un contatore ed un timer per ogni uscita. Ho quindi creato dei tipi definiti:ingresso al quale è associato: un input, un timer, un contatore...un array di questi ingressi la cui dimensione non conta...A questo punto ho scritto una routine per la loro gestione alla quale passo un l'indice dell'array per definire su quale ingresso lavorare....Tutto funziona in simulazione. Un paio di giorni fa mi è arrivato l'hardware, a questo punto devo solo dare gli indirizzi fisici agli input del tag ingresso. Questo si fa attraverso gli alias.Tuttavia non posso associarli!!!!!!!!!!!!!!!!!!!!!!!! Praticamente il programma non mi fa associare a delle strutture dati degli indirizzi fisici attraverso gli alias Come fare? butto tutto il codice e ricomincio daccapo?? ci ho lavorato su 10 gg!!! (anche perchè è la mia prima applicazione in rockwell)Ma non è assurdo questo??? Se ho 50000000 ingressi li devo controllare uno x uno??? Modificato: 18 aprile 2005 da antstan Link al commento Condividi su altri siti More sharing options...
jumpier Inserita: 18 aprile 2005 Segnala Share Inserita: 18 aprile 2005 Scusami ma non ho capito bene il tuo problema Cerca di spiegarti meglio o manda uno spezzone di codice Ad ogni modo garantisco che è possibile interrogare gli ingressi uno per scansione, oppure una word (16 ingressi) per scansione, oppure ancora una dword (slot a 32 punti) per scansione e così via con la "routine giusta". Entrano comunque in gioco numerosi fattori: gli I/O sono sul rack principale o sono su rack collegati in Cnet? Vesione processore? Firmware? RSLogix 5000 e versione emulatore? Li leggi nel task principale o in task schedulati ....Insomma un po ' di domande da rispondere!A presto ..... Link al commento Condividi su altri siti More sharing options...
antstan Inserita: 18 aprile 2005 Autore Segnala Share Inserita: 18 aprile 2005 ti porto un esmpio molto sempliceCrea un array di bool e prova ad assegnare ad ogni bool un alias: il programma non ti permetterà di farlo!!!! E così mi sto rifacendo di nuovo il codice.... Comunque: gli I/O sono sia sul rack principale sia su rack collegati in Cnet. le versioni sono le ultime aggiornate Li leggo nel task principale Link al commento Condividi su altri siti More sharing options...
Henon Inserita: 7 agosto 2005 Segnala Share Inserita: 7 agosto 2005 Devi usare delle Tag di tipo Bool per Associare gli Stati dei Moduli Digitali di Ingresso, cosi pure puoi associare Tag di Tipo Real, con Altre di Tipo Real.Questo vale anche quando crei delle Strutture Dati UDT.per questo Motivo quando vai un programma, puoi usare 2 maniere di affrontare il Problema.1) Creare un Array di Tipo DINT o INT ([ma non assolutamente Array di tipo Bool). ad esempio se tu hai 1600 Input crea un Array Chiamato Inp[50],DINT Poi all' inizio della Scansione della Task Ciclica, Copia con Istruzione COP i tuoi Valori nei vari SubElementi del Array Inp[50],DINT. COP Local:1:I.Data to INP[0], Slot 1 1756-IB32 COP Local:2:I.Data to INP[1], Slot 1 1756-IB32. Chiaramente l'aggiornamento dei tui Valori che utilizzi nel Programma, sono soggetti come nei PLC normali al Giro Logica (Task Ciclica) Inoltre sarebbe come svilire le potenzialita del CLX. Stessa Cosa pui fare per le uscite digitali e per Riferimenti Analogici etc.2) Il Metodo Migliore come cristo comanda. Quando vai il Programma usa una convenzione Standard ti tuo uso. per esempio : Pulsante Pompa1 crea la Tag chiamata son Suffiso But_ Lampada Pompa1 crea la Tag chiamata son Suffiso Lamp_ Sensore Livello crea la Tag chiamata son Suffiso LS_ e cosi Via. Bene ora che hai fatto il programma e lo hai provato in simulazione senza Dispositivi I/O Hardware. Puoi Associarli ai vari Stati degli I/O esempio But_Pump1_Start Allias to Local:1:I.Data.0 But_Pump1_Stop Allias to Local:1:I.Data.1 Ref_Pump1 Allias to Local:2:O.Ch0Data Uscita Analogica 1756-OF4 CH0 In questa maniera pui sfruttare al massimo la Velocità dell' aggiornamento di queste Tag. Nel ControLogix bisogna pensare in maniera diversa da un normale PLC, anche se però volendo ci si può limitare ad usarlo come classico PLC. Chiaramente quando crei Programmi con molti processi, eseguiti con tempistiche diverse (Rapidissime, lente, Normali, Schedulate etc), bisogna pensare in questa maniera. Potresti avere diverse Task Periodiche a tempi di Schedulazione diversa, Oppure Task su Interrupt (e Chiaramente lo Stato degli I/O è Importantissimo e necessitano che vengano aggiornati immediatamente, e non con il giro logica). Ti Consiglio di usare questa maniera di programmare, anche se quanche piccolo problema, lo potresti trovare quando, in modalità on-Line devi Cambiare l'associazione deglio I/O. Infatti per ora Vers 13.03 non è possibile in on-Line Cambiare l' allias delle Tag, se queste sono in Uso nel Programma. Per Cambiare l'associazione devi momentaneamente Cancellare l'uso della TAG nel Programma, poi la Cancelli nel Editor-Tag, e poi la Ricrei nuovamente con lo stesso nome, ma con l'associazione Corretta. Chiaramete questo Sucederà solo in Fase di Debug del tuo Progetto. Spero che ti sia di aiuto. 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