Vai al contenuto
PLC Forum


Snap7 E Lettura Parametri Inverter


Messaggi consigliati

Snap7 non ha a disposizione i simboli del programma, per cui può accedere solo a DB1.DBD0.

Buongiorno a tutti,

prima di tutto, Dan ho avuto modo in questi giorni di apprezzare l'incredibile lavoro che hai fatto con snap7, veramente complimenti!!

Approfitto dell'argomento per chiederti qualche informazione.

Sto lavorando con una S7 connessa a degli inverter Sinvert della Siemens. Sarei interessato ad ottenere i valori di produzione e so che in fase di programmazione della plc tali valori sono stati dichiarati con simboli come "DB401.DBX0.0", "DB401.DBX14.0", ed altri.

è possibile attraverso Snap7 ricavare tali valori attraverso il loro "nome simbolico"? Ci sono delle librerie che posso utilizzare?

Grazie mille anticipatamente!!

Max

Modificato: da jlancelot82
Link al commento
Condividi su altri siti


Ciao Max.

No, Snap7 attualmente lavora solo con parametri numerici, ho avuto molte richieste per poter accedere alla memoria by literal, non è escluso che la implemento nella prossima major release.

Per ora hai due strade.

Se tutte le variabili sono predeterminate ti converti a mano l'indirizzo, cioè da DB401.DBX0.0 ottieni:

DBNumber=401

Start=0

Amount=1 (ogni bit occupa un byte)

WordLen=S7WLBit

da DB401.DBX14.0 hai Start=14 e così via.

Oppure, se hai un numero elevato di variabili magari in un file e che possono anche cambiare puoi scrivere un mini parser, cioè una funzione che accetta in input una stringa e produce in output i parametri che servono per chiamare DBRead/Write o Read/WriteArea.

Ricorda infine che, se hai molti bit da leggere/scrivere e hai problemi di performances puoi usare Read/WriteMultivars che ti permettono di accedere a 20 variabili diverse contemporaneamente (con lo stesso telegramma).

Davide

Link al commento
Condividi su altri siti

Grandioso!! Ho risolto con la prima soluzione, convertendo gli indirizzi a partire dal valore "letterale".

Quello che mi mancava era proprio il riferimento sullo "start".

Grazie mille Davide! :thumb_yello:

Link al commento
Condividi su altri siti

Un po' meno grandioso il secondo esempio che ti ho fatto :thumbdown:

Quando lavori con i bit il parametro Start (l'offset) è espresso in bit, in questo modo puoi "spazzolare" tutti i bit di tutta la DB.

Per cui DB401.DBX14.0 ha Start = 14*8+0 = 112

Link al commento
Condividi su altri siti

Per fortuna non ho la necessità di leggere molti parametri, mi occorrono solo i byte in corrispondenza di valori ben precisi di cui ho il valore simbolico. Per altro li devo leggere con un periodo di qualche secondo quindi è andato benissimo il primo esempio. Ho utilizzato il metodo Cli_DBRead, con i parametri giusti c'è voluto veramente un attimo!! :lol:

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