Hello.
Very good stuff. THANK YOU very much.
I have CP5611(PCI Card) and CP5612(PCIMCIA Card).
I use S7ONLINE protocol to make connection with S7-300 315-2DP by MPI.
I found example in internet, and little change it for my needs.
When I use CP5612 everything works great, but when I use CP5611 I cannot close connection. It looks like closing instruction didn't work.
Below is my code:
//////////////////////////////////////////////////////////////////////////////
Public Class Form1
    Public Value As Integer = 0
    Dim localMPI As Integer = 0, plcMPI As Integer = 2
    Dim fds As libnodave.daveOSserialType
    Dim di As libnodave.daveInterface
    Dim dc As libnodave.daveConnection

    Private Sub btnAufbau_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnAufbau.Click
        Dim Rack As Integer = 0
        Dim Slot As Integer = 0
        PLCConnect_NEW(2, 0, 2)
    End Sub

    Private Function PLCConnect_NEW(ByVal MPIAddress As String, Optional ByVal PLCRack As Integer = 0, Optional ByVal PLCSlot As Integer = 2) As Boolean
        Dim ConnectionOpened As Boolean
        Dim initSuccess As Integer = 0
        Dim i As Integer
        Try
            ListBox1.Items.Clear()
            dc.disconnectPLC()
            di.disconnectAdapter()
            fds.rfd = libnodave.closeS7online(fds.rfd)

            For i = 0 To 3
                fds.rfd = libnodave.openS7online("S7ONLINE")
                fds.wfd = fds.rfd
                If fds.rfd > 0 Then
                    Exit For
                End If
            Next
            If (fds.rfd > 0) Then
                di = New libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoS7online, libnodave.daveSpeed187k)
                di.setTimeout(10000)
                Dim j As Integer
                For j = 0 To 2
                    If (0 = di.initAdapter) Then
                        initSuccess = 1
                        Exit For
                    Else
                        di.disconnectAdapter()
                    End If
                Next
                ListBox1.Items.Clear()
                If initSuccess <> 1 Then
                    ListBox1.Items.Add("Couldn't connect to Adapter!")
                    Exit Function
                End If
                dc = New libnodave.daveConnection(di, MPIAddress, PLCRack, PLCSlot)
                Dim ErrorCode As Integer = dc.connectPLC()
                If ErrorCode = 0 Then
                    ListBox1.Items.Add("Connection opened.")
                    ConnectionOpened = True
                    Timer2.Enabled = True
                Else
                    ListBox1.Items.Add("Error opening connection. Check rack & slot." & " = " & libnodave.daveStrerror(ErrorCode))
                    ConnectionOpened = False
                End If
            Else
                ListBox1.Items.Add("Error opening access point.")
                ConnectionOpened = False
            End If
            Return ConnectionOpened

        Catch ex As Exception
            ' Error ("Couldn't open connection to " PLC)
            For i = 0 To 3
                fds.rfd = libnodave.openS7online("S7ONLINE")
                fds.wfd = fds.rfd
                If fds.rfd > 0 Then
                    Exit For
                End If
            Next
            If (fds.rfd > 0) Then
                di = New libnodave.daveInterface(fds, "IF1", 0, libnodave.daveProtoS7online, libnodave.daveSpeed187k)
                di.setTimeout(10000)
                Dim j As Integer
                For j = 0 To 2
                    If (0 = di.initAdapter) Then
                        initSuccess = 1
                        Exit For
                    Else
                        di.disconnectAdapter()
                    End If
                Next
                ListBox1.Items.Clear()
                If initSuccess <> 1 Then
                    ListBox1.Items.Add("Couldn't connect to Adapter!")
                    Exit Function
                End If
                dc = New libnodave.daveConnection(di, MPIAddress, PLCRack, PLCSlot)
                Dim ErrorCode As Integer = dc.connectPLC()
                If ErrorCode = 0 Then
                    ListBox1.Items.Add("Connection opened.")
                    ConnectionOpened = True
                    Timer2.Enabled = True
                    'comm = 1
                Else
                    ListBox1.Items.Add("Error opening connection. Check rack & slot." & " = " & libnodave.daveStrerror(ErrorCode))
                    ConnectionOpened = False
                End If
            Else
                ListBox1.Items.Add("Error opening access point.")
                ConnectionOpened = False
            End If
            Return ConnectionOpened
        End Try
    End Function

    Private Sub PLCDisConnect()
        'btnAufbau.Show()
        'Button2.Hide()
        Timer2.Enabled = False
        'comm = 0
        ListBox1.Items.Clear()
        dc.disconnectPLC()
        di.disconnectAdapter()
        fds.rfd = libnodave.closeS7online(fds.rfd)
        ListBox1.Items.Add("Disconnected.")
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim ReadOK As Boolean = True
        Dim ReceivedDataBytes(11) As Byte
        Dim SendDataBites(0) As Byte
        Dim RetVal As Integer
        SendDataBites(0) = 1
        ListBox1.Items.Clear()
        RetVal = dc.readBytes(132, 3, 0, 12, ReceivedDataBytes)
        If RetVal = 0 Then
            Dim i As Integer
            For i = 0 To ReceivedDataBytes.Length - 1
                ListBox1.Items.Add(ReceivedDataBytes(i))
            Next
        Else
            ReadOK = False
            ListBox1.Items.Add("Read error: " & RetVal & " = " & libnodave.daveStrerror(RetVal))
            PLCConnect_NEW(2, 0, 2)
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        PLCDisConnect()
    End Sub
End Class

Thank You very much for any help.