Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Simulazione UNION usando indirizzi assoluti


Messaggi consigliati

Inserito:

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?


Inserita:

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.

Inserita:

Poi ci sono anche le "Variant".

Roberto Gioachin
Inserita:

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.

Inserita:

C'è anche la "sovrapposizione con AT".

 

Inserita:

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.

Inserita:

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

 

Inserita:

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.

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