Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: LibNodave 64 Bit.

  1. #11
    Registriert seit
    19.05.2008
    Beiträge
    17
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    habe mit Umstellung auf VS2013 erstmals versucht ne 64er App zu schreiben ... krieg jetzt aber beim Erstellen eines Verweises im Projekt die Fehlermeldung, dass die libnodave_jfkmods (32er und 64er) keine gültige COMs oder Assemblies Komponenten sind.
    Danke für Eure Anschubhilfe.

  2. #12
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.655
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard

    Zitat Zitat von eugenhuber Beitrag anzeigen
    Hallo,
    habe mit Umstellung auf VS2013 erstmals versucht ne 64er App zu schreiben ... krieg jetzt aber beim Erstellen eines Verweises im Projekt die Fehlermeldung, dass die libnodave_jfkmods (32er und 64er) keine gültige COMs oder Assemblies Komponenten sind.
    Danke für Eure Anschubhilfe.
    Dieses Problem hast du aber auch bei einem 32 Bit Projekt, da dies C Dlls und keine DotNet Dlls sind!
    Probiers am besten mal damit: http://www.sps-forum.de/hochsprachen...oolboxlib.html
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  3. #13
    Registriert seit
    19.05.2008
    Beiträge
    17
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Jochen,
    erstmal Danke für Deine coole Toolbox samt Unterstützung.
    Steh auf dem Schlauch: Unter WinXP funktioniert die S7DLL Verbindung, Auswahl der PG/PC Schnittstelle funktioniert.
    Gleiches PG mit Win7/64 funktioniert nicht.
    Hast Du nen Tip?
    Danke und GrussPLCConLibWin7.jpgPLCConLibWinXP.jpg
    Eugen

  4. #14
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.655
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard

    Zitat Zitat von eugenhuber Beitrag anzeigen
    Hallo Jochen,
    erstmal Danke für Deine coole Toolbox samt Unterstützung.
    Steh auf dem Schlauch: Unter WinXP funktioniert die S7DLL Verbindung, Auswahl der PG/PC Schnittstelle funktioniert.
    Gleiches PG mit Win7/64 funktioniert nicht.
    Hast Du nen Tip?
    Danke und GrussPLCConLibWin7.jpgPLCConLibWinXP.jpg
    Eugen
    Unterm Step7 für 64 Bit Windows stehen die S7Online Schnitstellen nicht mehr in der Registry sondern woanderst, glaub in nem Config File auf der festplatte! Hab Ich aber noch nicht angepasst! Und auch ob die S7Onlinx Dll mit 64 Bit geht... Kein Plan...
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  5. #15
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.556
    Danke
    825
    Erhielt 2.825 Danke für 2.274 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    So, falls jemand libnodave als 64 Bit Version braucht, in meiner ConnectionLibrary ist nun eine funktionierende Version mit drin (http://siemensplctoolboxlib.codeplex.com/)
    Ich habe mir die libnodave_jfkmod64.dll von hier heruntergeladen und versuche nun, unter Windows 7 Professional 64-Bit mit Excel 14.0 (64-Bit) Daten aus S7-300 via Ethernet auszulesen.
    Meine Excel-Anwendung funktioniert unter Windows 7 64-Bit mit Excel 32-Bit mit original libnodave.dll einwandfrei.
    Ich habe die für Excel-64-Bit-VBA nötigen Programmanpassungen vorgenommen, so sieht mein VBA-Code auszugsweise aus:
    Code:
    #If Win64 Then  '*** Declarations for Excel 64-Bit with Libnodave 64-Bit
      Private Declare PtrSafe Function openSocket Lib "libnodave_jfkmod64.dll" (ByVal port As Long, ByVal peer As String) As LongPtr
      Private Declare PtrSafe Function daveNewInterface Lib "libnodave_jfkmod64.dll" (ByVal fd1 As LongPtr, ByVal fd2 As LongPtr, ByVal name As String, ByVal localMPI As Long, ByVal protocol As Long, ByVal speed As Long) As LongPtr
      Private Declare PtrSafe Function daveInitAdapter Lib "libnodave_jfkmod64.dll" (ByVal di As LongPtr) As Long
      Private Declare PtrSafe Function daveNewConnection Lib "libnodave_jfkmod64.dll" (ByVal di As LongPtr, ByVal mpi As Long, ByVal Rack As Long, ByVal slot As Long) As LongPtr
      Private Declare PtrSafe Function daveConnectPLC Lib "libnodave_jfkmod64.dll" (ByVal dc As LongPtr) As Long
    '...
    #Else  'Not Win64 *** Declarations for Excel 32-Bit with Libnodave 32-Bit
    '...
    #End If
    
    Sub readFromFAFM()
    Dim ph As LongPtr, di As LongPtr, dc As LongPtr
    '...
    
    Call daveSetDebug(daveDebugAll)
    
    Peer$ = "192.168.196.196"
    ph = openSocket(102, Peer$)
    If (ph > 0) Then
        IFname$ = "IF1"
        di = daveNewInterface(ph, ph, IFname$, 0, daveProtoISOTCP, daveSpeed187k)
        res = daveInitAdapter(di)
        If res = 0 Then
            dc = daveNewConnection(di, MpiPpi, Rack, Slot)
            res = daveConnectPLC(dc)
    Die DLL-Funktionen openSocket(..), closePort(..) und closeSocket(..) funktionieren einwandfrei, doch bei daveNewInterface(..) schmiert mir das Excel immer ab (auch wenn ich statt IFname$ direkt "IF1" in den Aufruf schreibe):
    Code:
    Microsoft Excel funktioniert nicht mehr
    
    Problemsignatur:
      Problemereignisname:     APPCRASH
      Anwendungsname:          EXCEL.EXE
      Anwendungsversion:       14.0.7160.5000
      Anwendungszeitstempel:   55fc2723
      Fehlermodulname:         libnodave_jfkmod64.dll
      Fehlermodulversion:      0.0.0.0
      Fehlermodulzeitstempel:  5318b692
      Ausnahmecode:            c0000005
      Ausnahmeoffset:          000000000001aeb0
      Betriebsystemversion:    6.1.7601.2.1.0.256.48
      Gebietsschema-ID:        1031
    1) Was läuft da verkehrt? Wie kann ich ohne C-Compiler und Debugger rauskriegen, wo das Problem liegt?
    2) Gibt es schon irgendwo fertig die VBA-Deklarationen der DLL-Funktionen für 64-Bit? Kann man die Deklarationen vielleicht sogar irgendwie direkt aus der DLL importieren?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #16
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.655
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard

    Warum gibts den ersten Parameter "ph" 2 mal???

    https://github.com/jogibear9988/libn.../nodave.c#L142
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  7. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    PN/DP (10.11.2015)

  8. #17
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.556
    Danke
    825
    Erhielt 2.825 Danke für 2.274 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Warum gibts den ersten Parameter "ph" 2 mal???
    Hallo Jochen,

    das ist im original Libnodave im VBA-Beispiel "Excel And VB/Modul12.bas" so deklariert und funktioniert bei mir auch einwandfrei mit Excel 32-Bit. Ich habe nur die Deklaration der HANDLE- und Pointer-Parameter für Excel-64-Bit angepasst.

    Siehe auch hier https://github.com/netdata/libnodave/blob/master/Excel And VB/Modul12.bas
    Zeile 164
    Code:
    Private Declare Function daveNewInterface Lib "libnodave.dll" (ByVal fd1 As Long, ByVal fd2 As Long, ByVal name As String, ByVal localMPI As Long, ByVal protocol As Long, ByVal speed As Long) As Long
    Ich weiß nicht, vielleicht kann man mit VBA keine Struktur an eine externe DLL übergeben und die beiden Port-HANDLE der Struktur _daveOSserialType werden deshalb einzeln übergeben?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #18
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.655
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard

    hast du es mal versucht mit nur einmal dem Parameter?
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  10. #19
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.655
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard

    Ok, kann schon sein das du den Parameter 2 mal übergibst, da der Interne Typ in LibNoDave ja ein Struct mit 2 Handels ist!

    Kann es sein, das longs in VBA 64 Bit trotzdem nur 32 Bit groß sind? ABer alle Handles in libnodave 64 sind nun 64 Bit groß? Du solltest die bas Datei so anpassen das statts "long" für einen zeiger "LongPtr" verwendet wird! Dieser Typ hat in 32 und 64 Bit die richtige größe! (https://msdn.microsoft.com/de-de/lib.../gg264421.aspx)
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

  11. #20
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.655
    Danke
    208
    Erhielt 409 Danke für 328 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Sorry, hab ganz übersehen das du diese anpassungen gemacht hast...

    Was Ich mir noch vorstellen könnte, das z.B. auch ein int 64bit groß ist, d.h. du müsstest da auch LongLong für die Typen verwenden!
    http://stackoverflow.com/questions/1...tes-or-4-bytes
    ---------------------------------------------
    Jochen Kühner
    http://jfk-solutions.de/ - Softwareentwicklung, Programmierung, ...
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    IPhoneS7 - Inbetriebnahme Tool fürs IPhone (VarTab, Baustein-, PLC-Status)

Ähnliche Themen

  1. libnodave und ACControl auf Win7 64 Bit Prof
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 15
    Letzter Beitrag: 29.10.2013, 19:18
  2. libnodave Bit setzen
    Von foreach im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 17.01.2013, 20:05
  3. Set Bit While Button IsPressed. Libnodave c#
    Von mrludvig im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.11.2012, 14:01
  4. libnodave 64 bit
    Von tflueckiger im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 18.08.2010, 09:39
  5. Libnodave + Excel einzelnes Bit (setzen bzw. abfragen)
    Von Otto im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 21.12.2006, 17:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •