Vai al contenuto
PLC Forum


Tipi Definiti E Tag Alias - come associarli??


antstan

Messaggi consigliati

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 :angry:

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??? :unsure:

Modificato: da antstan
Link al commento
Condividi su altri siti


Scusami ma non ho capito bene il tuo problema <_<

Cerca di spiegarti meglio o manda uno spezzone di codice :P:D

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". :lol:

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 ..... B)

Link al commento
Condividi su altri siti

ti porto un esmpio molto semplice

Crea 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

  • 3 months later...

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...