Vai al contenuto
PLC Forum


Libnodave Threadsafe?


mimmoz

Messaggi consigliati

Ciao a tutti,

grazie a tutti voi di aver creato questo spazio estremamente utile per il mondo dei plc (è il mio primo post sono un po' emozionato..)

Ho sviluppato una applicazione in C# 2008 che permette di comunicare con diversi plc, utilizzando anche contemporaneamente diverse librerie di comunicazione (prodave5/6 e libnodave al momento).

Siccome non ho trovato risposte in giro, e siccome al momento non ho avuto modo di poter testare più di un plc alla volta con la libreria libnodave, volevo sapere:

- la libreria libnodave è threadsafe? ovvero, una volta inizializzata la comunicazione, avendo la necessità di leggere da più datablock contemporaneamente (su diversi plc) posso chiamare la readBytes() (o readManyBytes()) da diversi thread (1 thread per ogni plc nel caso specifico) senza preoccuparmi più di tanto, oppure devo sincronizzare ogni chiamata alla libreria?

grazie a tutti!

ciao

Luca

Link al commento
Condividi su altri siti

  • 1 month later...

Federico Milan

Non so se sia thread safe, ma sullo stesso PLC io ho provato a leggere delle variabili poste su DB differenti e con due thread e per il tempo che mi serviva nessun problema (il test è durato relativamente poco, circa 3 ore). Stesso discorso però su tre PLC differenti con tre thread.

ciao.

Link al commento
Condividi su altri siti

  • 2 years later...

Salve a tutti,

sto usando libnodave e mi trovo molto bene, vorrei usarla però per accedere da più thread allo stesso PLC in modo da accelerare la lettura dei dati.

Sto usando le librerie Qt con compilatore MingW (C++) su WIN 7 ed avrei alcune domande:

- A quale velocità vengono scambiati i dati utilizzando il protocollo ISOTCP?

- Che differenza c'è fra daveSpeed e il baudrate della porta? Se configuro la porta a 38400 posso comunque configurare daveProtoMPI a daveSpeed187k?

- Usando i comandi di lettura in 3 thread ottengo i seguenti errori:

"MyName" *** no DLE after send(1) 02.

"MyName" *** no DLE after send(1) 02.

"MyName" *** no DLE after send(2) 02.

"MyName" *** no DLE after send(2) 00.

"MyName" *** no DLE before send.

"MyName" *** _daveSendMessageMPI error in _daveSendDialog.

"MyName" *** no DLE after resend(3) 00.

Quale potrebbe essere l'errore?

Grazie mille per il vostro tempo

Michele

Link al commento
Condividi su altri siti

  • 2 years later...

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