Vai al contenuto
PLC Forum


indicizzare Periferica


southofsanity

Messaggi consigliati

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 al commento
Condividi su altri siti


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 al commento
Condividi su altri siti

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.

 

Modificato: da southofsanity
Link al commento
Condividi su altri siti

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 al commento
Condividi su altri siti

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 al commento
Condividi su altri siti

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 al commento
Condividi su altri siti

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

Modificato: da ken
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...