Vai al contenuto
PLC Forum


Simulazione UNION usando indirizzi assoluti


Ctec

Messaggi consigliati

Anche in TIA non è ancora disponibile il tipo UNION (male comune, lo trovo disponibile solo in Sysmac Studio tra i PLC che uso). Peccato perché è davvero utile, soprattutto se hai fatto qualcosa in C.

Ora, per aggirare l'ostacolo, in altri sistemi si utilizzano gli indirizzi assoluti e quindi si può accedere ai dati in maniera multipla.

Faccio un esempio. Ho una serie di bit che fanno riferimento a degli stati, e io ho bisogno di poter accedere sia ai singoli bit, che alla loro totalità, generalmente in formato Word.

Quindi definisco i bit in area M (memorie, non Merker), partendo da un bit che sia l'inizio anche della memoria a word da accedere. In IEC sarebbe:

bit 0 => %MX10.0

bit 1 => %MX10.1... Ciascuno con il suo nome e descrizione.

E anche

stato => %MW10  (il 10 indica l'inizio della stessa area).

 

Come è possibile farlo in TIA? Ho definito un UDT mio, ma non riesco ad associarci un indirizzo. Sennò devo probabilmente definire tutti i bit singolarmente senza UDT?

Link al commento
Condividi su altri siti


Non so cosa sia UNION in Omron ma, per convertire strutture o array di bit in word (e altro) e viceversa, guarda le istruzioni Gather e Scatter.
In quanto all'accesso al singolo bit di una variabile con nomevariabile.xnn, si fa anche in Siemens.

Link al commento
Condividi su altri siti

Roberto Gioachin

Credo che Ctec voglia poter dare un nome alla variabile WORD e poi altri 16 nomi ai singoli bit della stessa WORD.

In genere questa cosa è fattibile andando a dichiarare i nomi nelle DUT (credo UDT per Siemens), fattibile più o meno tutti i PLC non Siemens, per cui credo sia fattibile anche su Siemens.

Link al commento
Condividi su altri siti

Le Union sono variabili di tipo diverso che condividono la stessa memoria. Roberto ha azzeccato la cosa. E' molto usato in C. 

I Gather e Scatter fanno un'operazione diversa.

Su altri PLC (Mitsubishi, LS, CJ2 Omron..) si fa proprio definendo delle UDT e assegnandole poi a indirizzi fisici sovrapposti.

Batta, avevo visto la Sovrapposizione, ma da quel che capisco vale solo per i parametri di passaggio per funzioni, altrimenti la AT non c'è. O non ho capito bene come si usa.

 

Il punto è che il TIA non mi fa assegnare una variabile di tipo UDT a una locazione M (lo fa solo con le I e le Q). Quindi mi frega... Ah, sto lavorando per un S7-1200.

Per il momento, ho definito delle variabili bool in area M, e una variabile word sempre in area M, e in simulazione pare andare. Con gli UDT non riesco a farlo.

Link al commento
Condividi su altri siti

Mattia Spoldi

Purtroppo le union intese come dici tu(stile sysmac o codesys o C) su siemens non ci sono ancora, notizie non ufficiali dicono che arriveranno con una prossima versione del TIA.

La cosa più simile, è la sovrapposizione AT, ma per usarla come chiedi c'è da fare un giro un po' strano,

1 - dovresti dichiarare un FB/FC, modificare le proprietà e togliere la spunta al "Non ottimizzato",

2 - dichiari la tua variabile di tipo <udt1> nelle statiche/temporanee

3 - subito sotto dichiari la variabile di tipo <udt2> e come tipo di dati scegli AT

4 - in automatico il tia ti "aggancia" la seconda variabile alla prima

5 - modifichi il tipo di dato della seconda variabile nel tipo che effettivamente ti serve<udt2>(il TIA in automatico ti mette bool)

6 - se ti servono altre union riparti da 1, se ti servono più variabili in union riparti da 3

 

in questo modo crei una sorta di union, da dentro l'FB/FC puoi accederci con la variabile che preferisci e i dati saranno "letti/scritti" nella stessa locazione di memoria, purtroppo, nel caso di FB, dall'esterno potrai accedere solo alla variabile principale.

 

se ti dovesse servire un esempio chiedi pure

 

Link al commento
Condividi su altri siti

Grazie, provato e funziona, ma come giustamente detto, fuori FB non funziona, quindi come globale non ha molto senso.

Non avevo proprio capito il funzionamento della sovrapposizione, è comunque bene a sapersi.

Va bene, speriamo allora nel TIA 20... Per ora ho fatto (poco elegante) lavorando direttamente su variabili in assoluto. Brutto ma funziona.

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