LIBNODAVE 64Bit Bitte um Hilfe

Comri

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
Nach längerer Einlesephase hab ich mein erstes Libnodave mini Projekt am Laufen. Jedoch bring ich es unter Win7 64 bit nicht hin.
Ich hab die VB Vorlagen aus dem Paket verwendet und lese zur Zeit ein Bit aus der Steuerung(unter Win XP 32bit). Jetzt wollte ich es mit VB2012 in der Win7 64bit noch einmal versuchen da kommen alle möglichen Fehler!
Ich hab auch schon im Forum bezüglich libnodave_jfkmod64.dll gelesen. Ich finde aber leider keine Vorlage/Beispiel für VB und einem 64bit OS.
Kann mir da vielleicht jemand weiterhelfen. Bin totaler Anfänger.

Besten Dank COMRI
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hy,

lad dir einfach meine ganze Codesammlung von hier: DotNetSiemensPLCToolBoxLibrary - Home Dort ist die libnodave (allerdings eine von mir gemoddete Version) in einer 32Bit und in einer 64Bit Variante enthalten. Wenn du meine ToolBoxLib zur Kommunikation verwendest, wählt diese automatisch die richtige libnodave aus.

Auch ist ein kleines VB Beispiel Programm dabei.

Achtung: die Kommunikation über den Simatic Treiber (s7onlinx.dll) läuft nur in 32Bit da Step 7 auch unter Win7 64Bit ein 32Bit Programm ist! Wobei im Moment gibts glaub auch noch Probleme wenn man als 32 Bit Compiliert, da Siemens die definitionen seiner Zugangspunkte nicht mehr in der registry ablegt (muss Ich mir mal noch anschauen...)
 
Hallo,

lese schon länger im Forum mit. Bin jetzt an einem Punkt wo ich nicht mehr weiter komme, deshalb heut mein erster Beitrag.

Sollte das Thema hir nicht passend sein, dann bitte verschieben.

Kurze Beschreibung der Konstellation:



ISO over TCP:



LibNoDave wird schon länger unter Win XP / Win XP embedded eingesetzt (Delphi 7). Dort gibt es eine 32Bit-Anwendung (D7) die über eine selbst geschriebene DLL (D7) (in ihr wird die Komponente „NoDaveComponent“ verwendet) letztendlich dann die „LibNoDave.dll“ anspricht. Wie gesagt: Läuft so weit.



Aktuell:



Die Anwendung läuft nun unter Delphi 2010 (Unicode, 32Bit). Die eigene DLL gibt es jetzt als Delphi 7 und Delphi 2010 Version. Unter Win XP läuft diese Konstellation (auch D2010 DLL) problemlos.



Unter Win 7 64 Bit läuft diese Konstellation nicht / nicht zuverlässig!



Tests mit „NoDaveDemo.exe“:


Momentan gibt es 2 Versionen (Delphi 7 Original / Delphi 2010)


Getestet wurde mit LibNoDave.dll V0.8.4.4, V0.8.4.6 und der modifizierten libnodave_jfkmod.dll


Die Ergebnisse sind für alle DLLs auf den ersten Blick gleich:


Unter Windows XP läuft quasi alles, D7 und D2010.


Unter Windows 7 64Bit ergibt sich folgendes Bild:
Verhalten von Delphi 7 Testprogramm und Delphi 2010 Testprogramm ist gleich. Debug-Möglichkeit ist unter Win 7 nur innerhalb D2010 vorhanden.


Bei allen Tests ist es so das das Demoprogramm nach entsprechenden Einträgen (DB, Offset, .......) und Aktivierung durch „Start“ mit hoher Wahrscheinlichkeit für ungefähr 20 sec (Windows?) einfriert. Danach besteht entweder keine Verbindung (und alles ist „beim alten“), oder die Verbindung kommt zustande und ein zyklischen Lesen des DBs stottert vor sich hin. Will heißen das das zyklische Lesen immer wieder von teilweise langen Pausen (ca. 20 sec.) unterbrochen wird. Sinnvolle Daten werden dabei aber gelesen.


Kommt die Verbindung nicht zustande wird je nach DLL-Version ein „openSocketw.c: bind Socket error: No error“ gemeldet.


Innerhalb Delphi 2010 wird vor einer fehlgeschlagenen Verbindung innerhalb der „NoDaveComponent.pas“, innerhalb der Procedere „TnoDave.DoConnect“ die Funktion „openSocket „ mit korrekt versorgten Parametern aufgerufen. In der Regel ist der Rückgabewert nach ca. 20 sec (Windows?) „0“, in seltenen Fällen „-1“ (bei funktionierender Verbindung ist der Rückgabewert > 0).


Tests mit 32Bit-Anwendung:


Die Ergebnisse der 32Bit-Anwendung und des Demoprogramms sind vergleichbar.


Und nun?


Nach vielen Tests bin ich jetzt an dem Punkt wo ich erst einmal nicht mehr weiter weiß. Hat eventuell jemand eine Idee?


Viele Grüße
Stephan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hat keiner eine Idee / einen Gedanken der das Thema weiter bringen könnte?

Was könnte noch getestet werden um mehr Klarheit zu bekommen?

Viele Grüße
Stephan
 
So Entschuldigung daß ich mich so lange nicht gemeldet habe.
Hatte es in der Schule etwas stressig aber jetzt habe Ich Ferien und wieder Zeit.

Nun bei meinem Problem mit den 64 Bit bin ich leider nicht weiter gekommen.

Ich hab einige Tutorials durchstudiert wie man eine DLL in einem VB Projekt verwendet bei mir will es scheinbar nicht funktionieren.
Bei meinem 32Bit Projekt habe ich auf ein Beispiel Projekt aufgesetzt.
Ich hab den Verbindungsaufbau und Abfrage gleich gelassen.
Wenn ich dann ein Bit lesen will kann ich das mit zb.
res = dc.readBits(libnodave.daveFlags, 0, MBG1, 1, buf)

Wie kann ich das dann mit der DotNetSiemensPLCToolBoxLibrary von Jochen machen?

Wenn ich das Projekt mit VB2012 öffne sind alle C# und das VB Projekte in einem Ordner.
Ich habe dann das VB Projekt mit der rechten Maustaste als Startprojekt festgelegt. Es Startet dann auch.

Gibt es eine Beschreibung wie man mit einem neuen Projekt beginnent die DLLs einfügen und ein laufendes Programm hin bekommt. Ich habe versucht das VB Projekt aus DotNetSiemensPLCToolBoxLibrary heraus zu kopieren aber dann bekomme ich 37 verschidene Fehler.
Ich hab immer wieder das Problem das ich nicht den ganzen zusammen Hang verstehe wie ich zu einem lauffähigen Programm komme wenn ich ein Musterprogramm verwende wo jeder Ersteller individuell Programmiert.
Entschuldig die Fragestellung ich bin Anfänger in VB und libnodave.

Besten Dank für die Antwort Comri
 
Super jetzt hat es bei mir auch mit einem komplett neuen Projekt funktioniert. Danke erst mal.

Eine Frage für mein Verständnis habe ich noch. Die zwei DLLs libnodave_jfkmod.dll und libnodave_jfkmod.dll füge ich über Hinzufügen und Vorhandenes Element hinzu. Dann erscheinen sie auch in der Projektmappe.
Die DotNetSiemensPLCToolBoxLibrary.dll füge ich jedoch wie im Musterprojekt als Verweis ein und Importiere dann folgendes:
Imports DotNetSiemensPLCToolBoxLibrary.DataTypes
Imports DotNetSiemensPLCToolBoxLibrary.Communication

Imports DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks

Imports DotNetSiemensPLCToolBoxLibrary
Imports DotNetSiemensPLCToolBoxLibrary.Projectfiles
Imports DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5
Imports DotNetSiemensPLCToolBoxLibrary.DataTypes.Projectfolders.Step5
Imports DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step5

Was importiere ich denn da alles? Und warum wird die eine DLL als Verweis und die Anderen direkt importiert?


Imports DotNetSiemensPLCToolBoxLibrary.DataTypes und Imports DotNetSiemensPLCToolBoxLibrary.Communication Verstehe ich ja noch. Aber die anderen?

Entschuldigt die Dumme Frage aber ich möchte es von Grund auf verstehen und das geht für mich leider nicht mit einem Hallo Welt Progrämmchen. Ich würde später auch gerne andere DLLs für andere Steuerungen testen bzw. mal ein Musterprogramm erstellen
Danke für eure Hilfe.
 
Hallo zusammen,

möchte mich nach längerer Zeit zu Beitrag #5 + #6 noch einmal melden.

Nachdem das Thema erst einmal auf Eis gelegt werden musste bin ich es Anfang Dezember noch einmal angegangen.

Das Erstaunliche: Alles funktionierte unter Windows 7 sofort und in allen nötigen Konstellationen ohne eine Änderung vorgenommen zu haben !!!

Es wurde reichlich getestet, das positive Ergebnis blieb. Etwas irritiert habe ich im Internet nach möglichen Antworten gesucht. Es gibt Stellen die beschreiben das es zum Zeitpunkt der anfänglichen Tests Patches für Win 7 gegeben hat die zu Problemen im Bereich "sockets", etc. geführt haben !? Die Windows 7 Rechner sind weiter mit Updates gepflegt worden. Gehen wir davon aus das ein Zusammenhang besteht .........................

Vielen Dank

Stephan
 
Zurück
Oben