# verständniss Probleme VB.NET > S7ONLINE



## Mahon (31 August 2011)

Hi zusammen,

beim Versuch mein USB-S7 Projekt zu kompilieren, passiert folgendes:


> Die DLL "libnodave.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.





Ich habe in meinen Verweisen die libnodave.net v1.1.4322






Muss ich die Original libnodave.dll zusätzlich Declaren, einbinden, gac??

Gruß
Markus


----------



## Jochen Kühner (31 August 2011)

Mahon schrieb:


> Hi zusammen,
> 
> beim Versuch mein USB-S7 Projekt zu kompilieren, passiert folgendes:
> 
> ...



Kopier mal die libnodave.dll in dein bin/debug oder bin/release verzeichnis. Die libnodave.net.dll braucht die libnodave.dll!


----------



## Mahon (1 September 2011)

Hi, das habe ich auch gleich gedacht aber dabei kommt folgender Fehler:


> Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.



Gruß
Markus


----------



## Jochen Kühner (1 September 2011)

*Und...*

Und was für eine S7Online Schnittstelle nutzt du denn? Gehen denn das Beispielprogramm von LibNoDave?


----------



## Mahon (1 September 2011)

Da hängt noch keine Schnittstelle dran, muss auch nicht oder? Jetzt bekomme ich zweifel...!?
Beim Debuggen springt er hier schon mit dem Fehler raus "fds.rfd = libnodave.openS7online("S7ONLINE")"
Zu der Zeit wird noch nicht mit dem Adapter gesprochen, ich denke das ist ein reines dll Problem.

Zum Testen muss dann ein USB-MPI Adapter herhalten, späterer austausch gegen eine Netzwerkvariante...

Gruß
Markus


----------



## Jochen Kühner (1 September 2011)

Mahon schrieb:


> Da hängt noch keine Schnittstelle dran, muss auch nicht oder? Jetzt bekomme ich zweifel...!?
> Beim Debuggen springt er hier schon mit dem Fehler raus "fds.rfd = libnodave.openS7online("S7ONLINE")"
> Zu der Zeit wird noch nicht mit dem Adapter gesprochen, ich denke das ist ein reines dll Problem.
> 
> ...



Ich meine was hast du unter PgPcSchnitstelle konfiguriert? Ob es zu so einem Fehler kommt wenn kein Adapter angeschlossen ist? Keine Ahnung, schließ halt erst mal einen an bevor du weiter testest!

Un probier doch mal die Beispiel programme welche bei libnodave dabei sind, dann siehst du ob dort auch der Fehler kommt!


----------



## Mahon (1 September 2011)

Mist, du hattest recht, es lag am nicht vorhandenen Adapter!?
Ok, vielen Dank das Hilft mir weiter.....

Gruß
Markus


----------



## Jochen Kühner (1 September 2011)

Mahon schrieb:


> Mist, du hattest recht, es lag am nicht vorhandenen Adapter!?
> Ok, vielen Dank das Hilft mir weiter.....
> 
> Gruß
> Markus



Kein Thema...


----------



## Mahon (1 September 2011)

Hi, ich bräuchte noch einmal ein wenig Starthilfe...

Ich bin kein großer SPS'ler, aber ein leidenschaftlicher Coder  deshalb habe ich noch kein richtiges Verständnis für die S7...

Laut libnodave kann ich so ein paar bit/bits abholen...

```
Dim buf() As Byte
dc.readBits(area:=1, DBnumber:=20, start:=1, len:=1, buffer:=buf)
```
Die Startadresse ergibt sich aus „bei der Addresse 9.7 eine 79 (Byteadresse *8 + Bitaddresse)“ soviel habe ich schon mal nachgelesen...

Aber was ist die 9.7? Ausgang/Eingang/Merker?
Was steckt hinter der Area? und der DBNummer?
Gibts ein Anfänger FAQ, vom SPS Dummy zum S7-Gott? 

Danke Markus


----------



## Mahon (1 September 2011)

Ich Glaube ich habe es doch schon einmal zum Teil verstanden...






Wenn ich nen Merker brauche dann ist die Area daveFlags, wenn ich Input/Outputs brauche dann ist die Area daveInputs, daveOutputs...

Dann verstehe ich nur noch nicht was das "DBNummber as Integer" soll?

Gruß
Markus


----------



## MW (1 September 2011)

Mahon schrieb:


> Dann verstehe ich nur noch nicht was das "DBNummber as Integer" soll?



DB steht ja für "Data Block" oder auf Deutsch "Datenbaustein"

Wenn du jetzt Daten aus einem DB lesen oder schreiben willst, musst du dort dessen Nummer angeben. Willst du dagegen Merker, Eingänge oder Ausgänge lesen/schreiben wird diese Nummer nicht benötigt und wird auch nicht weiter verarbeitet, kannst dann also dort eine Null übergeben.


----------



## Mahon (2 September 2011)

AHG, deshalb ūberall die 0, vielen dank das habe ich kapiert....


----------



## Mahon (2 September 2011)

Hi,

nun habe ich diese Baugruppen verbaut...

Wenn ich nun auf Steckplatz 6 die Outputs angucken will... also die Adressierung 8-9 muss ich 8*8=64 bis 8*9=72 +8 = 80


```
dc.readBits(libnodave.daveOutputs, 0, 64, 2, buf))
```
Damit hole ich die 2 Bytes also 16 Bits ab oder??


----------



## Mahon (2 September 2011)

Hi,

ich habe nun gleich einmal auf Bytes umgestellt, das schein mir einfacher und hat bessere Performance....

Die Inputs von 0-4 klappen wunderbar!

Jedoch die Outputs haben alle 0?

Damit sollte ich doch das Ausgangsbyte 8 und 9 erreichen...
dc.readBytes(libnodave.daveOutputs, 0, 8, 2, buf)
Sollte das Ergbniss nun in buf(0-1) liegen oder buf(8-9)
in beiden habe ich überall 0!?

Gruß
Markus


----------

