Trasmissione sincrona dei dati
32/64 bit multi-platform Ethernet S7 PLC communication suite
Brought to you by:
davenardella
Ciao Davide Nardella, Snap7 è davvero molto utile.
Volevo chiederti delle informazioni riguardo la libreria:
1. Nel file di documentazione presente nella libreria, sembra che si possa avere sia trasmissione dati sincrona sia asincrona. Come si fa ad impostare quella sincrona?
2. Il dato è effettivamente real time rispetto quello che viene letto dal PLC c'è un ritardo?
Ad esempio quando si fa 'DBRead'.
Grazie per la risposta.
Sara
Ciao,
le funzioni asincrone iniziano con As (Cli_AsDBRead, Cli_ASWriteArea ecc.), trovi la spiegazione di come utilizzarle, con le varie strategie di completion a pag.28 del manuale.
Ci sono anche dei demo nelle cartelle examples che utilizzano sia funzioni sincrone che asincrone.
Non c'è nulla da impostare, se chiami Cli_DBRead la funzione termina quando ha finito di leggere i dati, quindi è sincrona.
Se chiami Cli_AsDBRead la funzione termina subito e lavora in background (in un altro thread), nel frattempo puoi fare altro, per sapere quando ha terminato devi utilizzare uno dei tre metodi di completion specificati a pag.29.
Le funzioni asincrone sono più complicate da utilizzare e per piccoli trasferimenti sono meno efficienti a causa dell'overhead introdotto nella gestione dei completion.
I tempi di trasferimento (funzioni sincrone) sono dell'ordine di 5ms a PDU cioè una funzione che legge o scrive max 222 byte ci impiega 5ms se la CPU ha un PDU di 240 byte (tutta la serie 300) se usi un S71500 ci impiega 5ms per 432 byte se quello che leggi o scrivi è lungo 2 PDU ci impiega 10ms e così via.
Considera che Snap7 usa S7Protokol che non è profinet ma ISO/TCP.
Davide