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

Ergebnis 1 bis 6 von 6

Thema: Libnodave - S7ONLINE - Traeger-USB

  1. #1
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe eine kleine VB.NET-Anwendung geschrieben, die ein paar Daten per Libnodave aus einer S7-315-2DP lesen soll.

    Per RS232 funktioniert das gut. Nun sollen die Daten mit einem Traeger-USB Adapter über S7ONLINE gelesen werden.

    Verbindung soll wie folgt aufgebaut werden:

    Code:
    fds(Connection).rfd = libnodave.PlcCommLib.openS7online("S7ONLINE")
    fds(Connection).wfd = fds(Connection).rfd
    
    If fds(Connection).rfd > 0 Then
        di(Connection) = New libnodave.PlcCommLib.daveInterface(fds(Connection), "IF1", 0, libnodave.PlcCommLib.daveProtoS7online, libnodave.PlcCommLib.daveSpeed187k)
        res = di(Connection).initAdapter
    
         If res = 0 Then
            di(Connection).setTimeout(500000)
            dc(Connection) = New libnodave.PlcCommLib.daveConnection(di(Connection), 2, 0, 0)
            res = dc(Connection).connectPLC
            If res = 0 Then
                Return True
            Else
                Call Disconnect(Connection)
                Return False
            End If
        Else
            libnodave.PlcCommLib.closePort(fds(Connection).rfd)
            Return False
        End If
    Else
        Return False
    End If
    In dieser Zeile:
    Code:
    fds(Connection).rfd = libnodave.PlcCommLib.openS7online("S7ONLINE")
    kommt folgende Fehlermeldung:

    Code:
    Ein Aufruf an die PInvoke-Funktion "libnodave
    libnodave.PlcCommLib::openS7online" 
    hat das Gleichgewicht des Stapels gestört. 
    Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der 
    nicht verwalteten Zielsignatur überein. 
    Überprüfen Sie, ob die Aufrufkonvention und die Parameter 
    der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.
    Ich habe keine Ahnung was ich damit anfangen kann...

    Gruß
    Stefan


    Zitieren Zitieren Libnodave - S7ONLINE - Traeger-USB  

  2. #2
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Zitat Zitat von StefanK Beitrag anzeigen
    Hallo,
    ich habe eine kleine VB.NET-Anwendung geschrieben, die ein paar Daten per Libnodave aus einer S7-315-2DP lesen soll.

    Per RS232 funktioniert das gut. Nun sollen die Daten mit einem Traeger-USB Adapter über S7ONLINE gelesen werden.

    Verbindung soll wie folgt aufgebaut werden:

    Code:
    fds(Connection).rfd = libnodave.PlcCommLib.openS7online("S7ONLINE")
    fds(Connection).wfd = fds(Connection).rfd
    
    If fds(Connection).rfd > 0 Then
        di(Connection) = New libnodave.PlcCommLib.daveInterface(fds(Connection), "IF1", 0, libnodave.PlcCommLib.daveProtoS7online, libnodave.PlcCommLib.daveSpeed187k)
        res = di(Connection).initAdapter
    
         If res = 0 Then
            di(Connection).setTimeout(500000)
            dc(Connection) = New libnodave.PlcCommLib.daveConnection(di(Connection), 2, 0, 0)
            res = dc(Connection).connectPLC
            If res = 0 Then
                Return True
            Else
                Call Disconnect(Connection)
                Return False
            End If
        Else
            libnodave.PlcCommLib.closePort(fds(Connection).rfd)
            Return False
        End If
    Else
        Return False
    End If
    In dieser Zeile:
    Code:
    fds(Connection).rfd = libnodave.PlcCommLib.openS7online("S7ONLINE")
    kommt folgende Fehlermeldung:

    Code:
    Ein Aufruf an die PInvoke-Funktion "libnodave
    libnodave.PlcCommLib::openS7online" 
    hat das Gleichgewicht des Stapels gestört. 
    Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der 
    nicht verwalteten Zielsignatur überein. 
    Überprüfen Sie, ob die Aufrufkonvention und die Parameter 
    der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.
    Ich habe keine Ahnung was ich damit anfangen kann...

    Gruß
    Stefan
    Opens7online hat 2 parameter! Der zweite erwartet die hwnd deines febsters, kannst aber auch 0 übergeben!
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

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

    StefanK (27.09.2011)

  4. #3
    Avatar von StefanK
    StefanK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Opens7online hat 2 parameter! Der zweite erwartet die hwnd deines febsters, kannst aber auch 0 übergeben!
    Hi und Danke für deine Antwort. Ich hatte in früheren Beiträgen auch gesehen, das 'OpenS7online' 2 Parameter hat. Seltsamerweise hat's bei mir nur einen:
    Code:
    Aus dem Objektkatalog:
    Public Shared Function openS7online(ByVal portName As String) As Integer


    Zitieren Zitieren 2 Parameter..!?  

  5. #4
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo Stefan,

    der nachfolgende Code ermöglicht einen Verbindungsaufbau zwischen einem PC mit VB.Net und einer S7-CPU über einen USB-Adapter mit dem s7online-Protokoll von libnodave.
    Die öffentlich deklarierten Funktionen habe ich aus dem Libnodave-Modul für VB6.0 bzw. Excel entnommen. Ich habe den Modul lediglich auf VB.Net "umgestellt".
    Code:
    Public Declare Function openS7online Lib "libnodave.dll" (ByVal peer As String, ByVal handle As Integer) As Integer
    Public Declare Function daveNewInterface Lib "libnodave.dll" (ByVal fd1 As Integer, ByVal fd2 As Integer, ByVal name As String, ByVal localMPI As Integer, ByVal protocol As Integer, ByVal speed As Integer) As Integer
    Public Declare Function daveInitAdapter Lib "libnodave.dll" (ByVal di As Integer) As Integer
    Public Declare Function daveNewConnection Lib "libnodave.dll" (ByVal di As Integer, ByVal mpi As Integer, ByVal Rack As Integer, ByVal Slot As Integer) As Integer
    Public Declare Function daveConnectPLC Lib "libnodave.dll" (ByVal dc As Integer) As Integer
    
    Private Sub btnAufbau_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnAufbau.Click
    Dim MPIAdressLocal As Integer = 0, MPIAdressPLC As Integer = 2
    Dim Slot As Integer = 0, Rack As Integer = 2
    ph = openS7online("S7online", Me.Handle)
    di = daveNewInterface(ph, ph, "IF1", MPIAdressLocal, daveProtoS7online, daveSpeed187k)
    res = daveInitAdapter(di)
    dc = daveNewConnection(di, MPIAdressPLC, Rack, Slot)
    res = daveConnectPLC(dc)
    End Sub
    
    Gruß
    Earny

  6. Folgender Benutzer sagt Danke zu Earny für den nützlichen Beitrag:

    StefanK (27.09.2011)

  7. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von StefanK Beitrag anzeigen
    Hi und Danke für deine Antwort. Ich hatte in früheren Beiträgen auch gesehen, das 'OpenS7online' 2 Parameter hat. Seltsamerweise hat's bei mir nur einen:
    Code:
    Aus dem Objektkatalog:
    Public Shared Function openS7online(ByVal portName As String) As Integer
    Das war früher so, vielleicht hast du eine ältere Version von libnodave.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    StefanK (27.09.2011)

  9. #6
    Avatar von StefanK
    StefanK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo und Danke an alle!

    Ich habe mir (damals) eine Wrapper-DLL aus dem VB6 Modul gemacht und nie wieder angepasst.
    Nachdem ich die Funktion "openS7online" angepasst habe (jetzt C#), läuft's.

    Obwohl der Verbindungsaufbau nicht immer beim ersten Versuch klappt, kann aber auch am Adapter liegen. Aber egal, das Programm ist nur für den internen Gebrauch, um Fehlermeldungen auszulesen { immer wenn der Programmierer weg ist, läuft die Anlage nicht mehr }.

    Nochmal danke, Gruß
    Stefan


    Zitieren Zitieren D a n k e  

Ähnliche Themen

  1. libnodave S7Online mir .Net
    Von eloboy im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 31.08.2011, 01:57
  2. Libnodave und S7online
    Von adi im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 05.01.2011, 16:31
  3. LibNoDave + S7Online
    Von Lazarus™ im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 05.05.2009, 19:56
  4. LibNoDave - S7Online - TCP/IP
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 09.03.2009, 12:33
  5. Libnodave und S7Online
    Von Ralle im Forum Hochsprachen - OPC
    Antworten: 14
    Letzter Beitrag: 02.02.2007, 13:49

Lesezeichen

Berechtigungen

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