# Paralleler Zugriff mit libnodave !!



## moojoe (28 März 2007)

Hallo,

habe folgendes Problem:

Habe ein Tool (Visual Basic .NET) entwickelt mit dem ich mit mehreren Threads auf eine SPS zugreifen will. Dabei greifen 2-3 Threads parallel auf die SPS zu (Auslesen von Daten aus einem Datenbaustein). Über Ethernet funktioniert das ganze problemlos. Nun versuche ich das ganze für die Profibusschnittstelle bzw. MPI zu realisieren. 
Deswegen meine Frage: Wie kann ich einen parallelen Mehrfachzugriff über die S7Online-Schnittstelle das libnodave-Treibers realisieren? Brauche ich da mehrere Verbindungen und kann ich das auch mit einer Verbindung realisieren.

Bin für jeden Vorschlag dankbar!

Gruß
moojoe


----------



## afk (28 März 2007)

moojoe schrieb:


> Brauche ich da mehrere Verbindungen und kann ich das auch mit einer Verbindung realisieren.


Es reicht eine Verbindung. Die Threads dürfen aber nicht gleichzeitig auf die Funktionen von libnodave zugreifen, speziell die daveReadBytes darf immer nur von einem Thread zur gleichen Zeit aufgerufen werden. Das solltest Du über Semaphore oder Ähnliches verriegeln.

Das gilt übrigens auch für ISver_TCP, denn manche SPSen können nur 2 gleichzeitige TCP-Verbindungen.


Gruß Axel


----------



## Question_mark (28 März 2007)

*Frage dazu ...*

Hallo,



> denn manche SPSen können nur 2 gleichzeitige TCP-Verbindungen.



Das hängt doch eigentlich vom CP343/443 ab...
Oder meintest Du da die S7 mit eingebauter Ethernet-Schnittstelle wie z.B. CPU 319 ???

Gruss

Question_mark


----------



## afk (28 März 2007)

Question_mark schrieb:


> Das hängt doch eigentlich vom CP343/443 ab...
> Oder meintest Du da die S7 mit eingebauter Ethernet-Schnittstelle wie z.B. CPU 319 ???


Genau, ziemlich sicher bin ich mir bei der "kleinen" Variante der VIPA 315 SB.
MooJoe hat leider nicht geschrieben, welche SPS er hat.

Gruß Axel


----------



## moojoe (1 April 2007)

Hab das mal mit den Semaphoren ausprobiert und es klappt auch mit nur einer Verbindung.

Ich möchte später möglichst viele SPS  ansprechen, eigentlich so ziemlich alle der 300er und 400er Baureihe von Siemens die von libnodave unterstützt werden.

gruß Daniel


----------



## eloboy (22 Januar 2009)

afk schrieb:


> Es reicht eine Verbindung. Die Threads dürfen aber nicht gleichzeitig auf die Funktionen von libnodave zugreifen, speziell die daveReadBytes darf immer nur von einem Thread zur gleichen Zeit aufgerufen werden.




Darf ich Lesen und Schreiben  gleichzeitig (in 2 Threads ) ?


----------

