Vai al contenuto
PLC Forum


Estrarre dati dal buffer di diagnostica su un PC


MaxT1978

Messaggi consigliati

Buongiorno a tutti,

 

ho provato a cercare nel forum se fosse riportato in merito qualcosa di simile, ma non mi sembra ci sia nulla.

Quindi vi chiedo se secondo voi esista la possibilità di leggere da PC tramite un programma (fatto p.e. in VS) , il buffer di diagnostica di un PLC (serie 300, per la precisione CPU 317 DP con una scheda 343-1).

Vi ringrazio comunque per l'attenzione.

Massimo

Link al commento
Condividi su altri siti


Si è possibile.

 

Lato PLC il buffer di diagnostica lo puoi leggere con SFC 51 passando W#16#00A0 al parametro SSL-ID  (INDEX=0).

Le stesse informazioni, lato PC, puoi ottenerle con la funzione Cli_ReadSZL() di Snap7 che puoi utilizzare con VS.

 

Nel manuale  "System Software for S7-300/400System and Standard Fuctions" trovi informazioni su SFC 51.

Quì trovi informazioni su Snap7.

 

Il problema è che la parola "Info" di ogni Item è codificata e sul manuale non c'è assolutamente nulla a riguardo.

Risolvono elegantemente così :  "You obtain more information about the events in the diagnostic buffer using STEP 7".

 

Se vuoi una "preview" senza impegnarti troppo, scarica Snap7 e manda in esecuzione il demo \rich-demos\i386-win32\bin\clientdemo.exe

Ti connetti al PLC e vai nella pagina "Read SZL", inserisci ID $00A0 e premi Read SZL. Avrai il dump del buffer diagnostico.

 

 

Link al commento
Condividi su altri siti

Intanto grazie mille dan64100.

La funzione Cli_ReadSZL() di Snap7  non va a leggere quanto estratto usando la SFC51, ma è una specie di SFC51 però eseguita da PC, corretto?

Nel dump del buffer diagnostico, seguendo quanto hai indicato nell'ultima frase, avrei comunque le info codificate, da cui dopo devo risalire al significato leggendo il buffer direttamente dalla CPU, corretto?

 

Grazie ancora per la risposta.

 

Massimo

 

 

Link al commento
Condividi su altri siti

Tutto giusto.

Ogni telegramma diagnostico (sono tanti e la loro lista la puoi ottenere con Cli_ReadSZLList() ) ritorna un buffer strutturato il cui formato è descritto nel manuale Siemens.

La cosa più conveniente è passare alla funzione l'indirizzo di una struct adeguata.

Alcune funzioni di Snap7 utilizzano internamente SZL (ad esempio Cli_GetCpuInfo() ), se conosci un po' di C puoi dare un'occhiata direttamente ai sorgenti, il meccanismo è molto semplice ;)

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ciao dan64100,

 

ho un problema nell'eseguire un primo programma di prova per la connessione al PLC. Precisamente, quando creo la referenza a S7Client, il runtime di VS mi torna che :"Unable to load DLL 'snap7.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)". E' perchè bisogna registrare la dll? Dove la trovo? Sotto Build/Windows/Sys64bit?

Ti ringrazio in anticipo.

 

Max

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