Jump to content
PLC Forum


southofsanity

indicizzare Periferica

Recommended Posts

southofsanity

Buongiorno,

Ho svariate periferiche uguali collegate al plc e le gestisco direttamente tramite l'indirizzo configurato nell'hardware.

Per esempio se e indirizzata come 100 nell hardware, la periferica mi restituisce i dati letti in %ID100 poi vedro come gestirli.

Dato che sono tante volevo fare una Fb dove indicizzo l'indirizzo, con step 7 usavo i puntatori

Con Tia devo Usare POKE/PEEK ?

Ci ho dato uno sguardo ma sembra che indicizzi le Db

 

 

Link to post
Share on other sites

batta

Con il 1500, in awl, puoi usare i puntatori come in Simatic Manager.
Indicizzare la periferia, però, non aiuta certo il debug. Sei sicuro che non ci sia un altro sistema? Magari creando dei tipi di dati, e leggere/scrivere da/verso la periferia con un semplice MOVE.

Link to post
Share on other sites
southofsanity

Forse L'ho fatta un po troppo semplice per non entrare nel dettaglio :) %ID100 e il primo valore che leggo in totale ho 32 byte da gestire con varie informazioni. Inoltre devo anche scrivere, in base ad eventi, alcuni Byte nelle Q.

Praticamente vorrei inserire fuori dalla Fb un offset/indirizzo, per esempio 100, e poi dentro all Fb andare a gestire ed estrapolare quanto mi serve.

Ho bisogno del byte 25 allora vado a puntare 25+offset, e così via.

Anche per il futuro , volevo capire se c'era un modo per indicizzare l'indirizzo da usare nella fb senza usare l'awl e i puntatori.

 

Edited by southofsanity
Link to post
Share on other sites
batta
1 ora fa, southofsanity scrisse:

Forse L'ho fatta un po troppo semplice per non entrare nel dettaglio :) %ID100 e il primo valore che leggo in totale ho 32 byte da gestire con varie informazioni. Inoltre devo anche scrivere, in base ad eventi, alcuni Byte nelle Q.

La struttura è sempre uguale?

Potresti creare due "Tipi di dati", uno per gli ingressi (es. IN_DataType), ed uno per le uscite (es. OUT_DataType).
In questi tipi di dati crei la struttura dei dati che scambi col dispositivo.
Nella tabella delle variabili inserisci, per esempio, IN_Device_1. Come tipo di dati, inserisci il nome del tipo di dati (IN_DataType per seguire l'esempio). Come indirizzo, assegni l'indirizzo di inizio dell'area (es. I100.0).
La stessa cosa la fai per le uscite.

Ripeti questi passi per ogni dispositivo.

Nella FB inserisci come IN/OUT una variabile per gli ingressi (come tipo di dati selezioni I_DataType), e una per le uscite (OUT_DataType).

Quando richiami la funzione, ti basta collegare il nome simbolico che avevi assegnato nella tabella delle variabili.
In questo modo con due parametri colleghi alla FB tutti i dati che devi scambiare con la periferia e, a differenza della soluzione con indicizzazione, puoi trovare le variabili nei riferimenti incrociati.
Anche lo sviluppo della FB diventa più comodo, perché usi direttamente i simboli che hai assegnato nei "Tipi di dati", senza dover fare calcoli di offset o altre cose poco intuitive.

Se provi, vedrai che ci vuole più tempo a spiegarlo che a farlo.

Link to post
Share on other sites
southofsanity

Si Si la struttura e' sempre uguale.. ora provo, Grazie

Link to post
Share on other sites
ken

Sempre spunti interessanti Batta, Grazie

sto usando questo sistema per provare a leggere il peso da 3 bilance profinet.

Link to post
Share on other sites
batta
2 ore fa, ken scrisse:

sto usando questo sistema per provare a leggere il peso da 3 bilance profinet.

Vedrai che ti troverai bene. Molto più comodo di DPRD_DAT/DPWR_DAT o altri sistemi per leggere/scrivere dati dalla periferia.

Link to post
Share on other sites
step-80

Senza contare il tempo ,le risorse e le imprecazioni che @batta avrà sudato per arrivare a queste soluzioni che poi con assoluta disinvoltura ci ‘regala’ sul forum. 

 

Un grazie anche da parte mia che non uso Siemens ma che spesso fra i tuoi post ho trovato spunti e soluzioni eleganti e funzionali per i miei progetti.

Link to post
Share on other sites
ken
2 ore fa, batta scrisse:

Vedrai che ti troverai bene. Molto più comodo di DPRD_DAT/DPWR_DAT o altri sistemi per leggere/scrivere dati dalla periferia.

il problema era che la bilancia in questione deve scambiare 30 byte e per ottenerli devi inserire più linee per arrivare a 30. ci sono i classici 2,4,8,16,e 32, quindi più hardware id. con DPRD_DAT non avrei saputo come fare.

chiudo l'ot e aggiungo che spero di sdebitarmi un giorno! (basta aprire una bottiglia buona...)

Edited by ken
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...