Vai al contenuto
PLC Forum


DB ottimizzato, accesso con snap7


Phoedus

Messaggi consigliati

Buongiorno,

sono un programmatore python, ho un sistema composto da un microprocessore, connesso attraverso cavo ethernet ad una PLC Siemens S7-1500.

 

Non sono riuscito a trovare un modo per poter scambiare informazioni con il DB ottimizzato del PLC, attraverso protocollo Snap7.

 

Mi è chiaro che se ottimizzato, il DB non esponga in modo evidente le allocazioni di memoria occupate dalle variabili.

Ma sono a chiedervi: Questa mappa è possibile ottenerla?

O più in generale: è possibile in qualche modo, anche molto articolato, leggere e scrivere un DB ottimizzato?

 

Tendenzialmente mi aspetto risposte negative, ma se anche esistesse un barlume di speranza, sarà pronto ad accoglierlo.

Grazie a tutti.

 

Link al commento
Condividi su altri siti


dina_supertramp

Al programmatore PLC grava rendere i DB alla vecchia maniera? 
Cioè non ottimizzati ma con indirizzi assoluti. Se siete ancora in fase di sviluppo togliete l'ottimizzazione ai DB usati per parlare con te.

Oppure parlarsi tramite OPC-UA?

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

dina_supertramp
43 minuti fa, Phoedus ha scritto:

Mi è chiaro che se ottimizzato, il DB non esponga in modo evidente le allocazioni di memoria occupate dalle variabili.

Ma sono a chiedervi: Questa mappa è possibile ottenerla?

No, perchè non viene usato un indirizzo assoluto di allocazione, ma viene solo gestito il "simbolo" e allocato nella memoria del DB dove trova "il primo spazio libero" passami il termine molto alla buona...

Qui trovi la spiegazione esaustiva con link alle guide Siemens
Optimized and Non Optimized Data Blocks and CPU Cycle Time - 155671 - Industry Support Siemens
 

Link al commento
Condividi su altri siti

32 minuti fa, dina_supertramp ha scritto:

Al programmatore PLC grava rendere i DB alla vecchia maniera? 
Cioè non ottimizzati ma con indirizzi assoluti. Se siete ancora in fase di sviluppo togliete l'ottimizzazione ai DB usati per parlare con te.

Oppure parlarsi tramite OPC-UA?

Mi piace la tua domanda, me lo sono chiesto anche io, probabilmente l'ottimizzazione da loro il grande vantaggio di immagazzinare più informazioni.

Grazie per il consiglio, purtroppo il sistema cui mi sto interfacciando è già completamente definito e non sono consentite modifiche.

 

Grazie ad OPC-UA il problema si risolve quindi?

Medesimo DB, diverso protocollo, potrebbe funzionare? Questo sarebbe fantastico!

 

 

9 minuti fa, dina_supertramp ha scritto:

No, perchè non viene usato un indirizzo assoluto di allocazione, ma viene solo gestito il "simbolo" e allocato nella memoria del DB dove trova "il primo spazio libero" passami il termine molto alla buona...

Qui trovi la spiegazione esaustiva con link alle guide Siemens
Optimized and Non Optimized Data Blocks and CPU Cycle Time - 155671 - Industry Support Siemens
 

 

Grazie molte Dina,

ora è molto più chiaro.

 

Che voi sappiate l'allocazione rimane stabile una volta definite tutte le variabili del DB? Ragionevolmente ipotizzerei di sì, giusto?

Lo chiedo perchè in tal caso, mi sarebbe forse possibile ricostruire la disposizione in memoria delle variabili, conoscendo i valori in esse inseriti.

 

Prevedete controindicazioni o problemi in questo?

Grazie molte

 

 

 

 

Link al commento
Condividi su altri siti

dina_supertramp
1 ora fa, Phoedus ha scritto:

Grazie ad OPC-UA il problema si risolve quindi?

Medesimo DB, diverso protocollo, potrebbe funzionare? Questo sarebbe fantastico!

Si, ma dovresti comunque agire lato PLC per abilitare l'OPC-UA (server) e pubblicare i dati, insomma ti serve comunque il programmatore PLC.

Guida introduttiva OPC UA (siemens.com)

 

1 ora fa, Phoedus ha scritto:

Che voi sappiate l'allocazione rimane stabile una volta definite tutte le variabili del DB? Ragionevolmente ipotizzerei di sì, giusto?

A questo non so risponderti, non mi sono mai addentrato cosi profondamente nel discorso, magari qualcuno qui sul forum può risponderti, oppure Siemens direttamente.

 


Le mie DB interne sulle serie 1200-1500 sono solo ad accesso ottimizzato perché gestiscono meglio lo spazio di memoria e i dati sono gestibili più efficientemente nel programma.
Con le serie 1200-1500 (attuali) a meno di scambi dati che richiedono accessi assoluti è inutile usare DB "vecchio stile".


 

Link al commento
Condividi su altri siti

Area_Federico

E' meglio creare una DB non ottimizzata dedicata allo scambio informazioni con il sistema esterno(MES o simili)

In questo modo le logiche di programma non cambiano e nella nuova DB si andranno ad inserire solo i dati strettamente necessari.

 

Link al commento
Condividi su altri siti

dina_supertramp
17 minuti fa, Area_Federico ha scritto:

E' meglio creare una DB non ottimizzata dedicata allo scambio informazioni con il sistema esterno(MES o simili)

In questo modo le logiche di programma non cambiano e nella nuova DB si andranno ad inserire solo i dati strettamente necessari.

 

Si, pure io faccio così...
DB non ottimizzate popolate solo dai dati da scambiare con l'esterno, che vengono scritte/lette da DB ottimizzate interne.

DB mia (ottimizzata) <---> DB scambio con cliente (non ottimizzata)

Link al commento
Condividi su altri siti

4 ore fa, Area_Federico ha scritto:

E' meglio creare una DB non ottimizzata dedicata allo scambio informazioni con il sistema esterno(MES o simili)

In questo modo le logiche di programma non cambiano e nella nuova DB si andranno ad inserire solo i dati strettamente necessari.

Facile se il sistema esterno deve solo leggere, meno facile se deve anche scrivere su variabili che anche altri (es. HMI) devono scrivere.

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