Davide Nardella - 2019-01-08

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