# DotNetSiemensPLCToolBoxLib Verbindungen mit S7-200 über CP243-1



## honkytonk (31 August 2011)

Hallo,

ich versuche grade in Visual Basic 2010 mit der DotNetSiemensPLCToolBoxLib Verbindungen zur S7-200 anzulegen ohne auf den Konfigurator zurückzugreifen. Da das Programm auf mehreren PCs ausgeführt werden soll und die IP-Adressen aus dem selben Subnetz und fortlaufend sind will ich die Verbindungen vorher auch nicht in einer Textdatei oder in der Registry anlegen.

Grundgedanke ist, ich schreibe mit eine Klasse, bastel mir darin meine Verbindung zusammen und kann dann in der Klasse mit den Daten der Verbindung arbeiten. Vielleicht soll diese Klasse dann auch mal später in einem eigenen Thread laufen und davon dann auch mal mehr als einer.

Jedenfalls habe ich Probleme dabei die Verbindung anzulegen / auf die Verbindung zuzugreifen?!? Da beim ausführen des Codes eine NullReferenceException auftritt.

Hier der Code:
Imports DotNetSiemensPLCToolBoxLibrary.Communication
Imports DotNetSiemensPLCToolBoxLibrary.DataTypes
Imports DotNetSiemensPLCToolBoxLibrary

Public Class foo
    Private myConnection As PLCConnection
    Private myConfig As New PLCConnectionConfiguration
    Private ConnectionID As Integer
    Private ConnectionName As String
    Private WithEvents TimerConnect As New Timer

    Public Sub New(ByVal ConnectionID As Integer)
        'Variablen in der Klasse aktualisieren
        MyClass.ConnectionID = ConnectionID
        MyClass.ConnectionName = "Connection" & ConnectionID

        'Verbindungsparameter einstellen
        With myConfig
            .CpuIP = "192.168.23." & ConnectionID
            .Port = 102
            .Timeout = 5000000
            .TimeoutIPConnect = 5000
            .ConnectionName = MyClass.ConnectionName
            .BusSpeed = 2
            .ComPort = ""
            .ComPortParity = 110
            .ComPortSpeed = 38400
            .ConfigurationType = LibNodaveConnectionConfigurationType.RegistrySavedConfiguration
            .ConnectionType = 123
            .CpuMpi = 2
            .CpuRack = 0
            .CpuSlot = 2
            .EntryPoint = "S7ONLINE"
            .LokalMpi = False
            .NetLinkReset = False
            .PLCConnectionType = 1
            .Routing = False
        End With

        'Verbindung anlegen
        myConnection = New PLCConnection(myConfig)
        myConnection.Configuration.SaveConfiguration()

        'Verbindungsaufbau beginnen
        TimerConnect.Interval = 5000
        TimerConnect.Start()
    End Sub

    Private Sub TimerConnect_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TimerConnect.Tick
        sender.Stop()

        If myConnection.Connected Then
            TuWas()
        Else
            Try
                myConnection.Connect()
            Catch ex As Exception
                'Hier dann Fehler "NullReferenceException"
            End Try

            sender.Start()
        End If
    End Sub

    Private Sub TuWas()
        'hier dann Tags anlegen und damit arbeiten
    End Sub
End Class


Nachtrag:
Verwendete DotNetSiemensPLCToolBoxLib Version 83035


----------



## Jochen Kühner (31 August 2011)

2 Dinge:

Ob mit meiner Lib überhaupt S7-200 Verbindungen gehen, kann Ich dir nicht sagen, da Ich das noch nie getestet habe!

2tens: Wenn du es nicht in der Resgistry speichern willst, musst du LibNodaveConnectionConfigurationType.ObjectSavedConfiguration angeben!


----------



## honkytonk (31 August 2011)

Das Protokoll ist dafür auswählbar und in dem Konfigurator bekomme ich auch eine Verbindung, zwar nicht immer und nicht immer beim ersten Versuch, das Problem hätte ich jetzt aber erst mal Siemensseitig vermutet. ;-)

Gibt es ein Beispiel / eine Beschreibung für die ObjectSavedConfiguation?
Bzw. die Möglickeit zu sagen
dim myConnection as new PLCConnection(Protokoll, Adresse, etc.)


----------



## Jochen Kühner (31 August 2011)

honkytonk schrieb:


> Das Protokoll ist dafür auswählbar und in dem Konfigurator bekomme ich auch eine Verbindung, zwar nicht immer und nicht immer beim ersten Versuch, das Problem hätte ich jetzt aber erst mal Siemensseitig vermutet. ;-)
> 
> Gibt es ein Beispiel / eine Beschreibung für die ObjectSavedConfiguation?
> Bzw. die Möglickeit zu sagen
> dim myConnection as new PLCConnection(Protokoll, Adresse, etc.)



Du musst einfach so vorgehen wie du es vorher auch schon gemacht hast, nur einfach statts:
.ConfigurationType = LibNodaveConnectionConfigurationType.RegistrySavedConfiguration
.ConfigurationType = LibNodaveConnectionConfigurationType.ObjectSavedConfiguration
machen, dann sollst gehen.

Aber für die 200er muss bestimmt noch was gemacht werden, da die Read Funktionen für die 300/400er optimiert sind, und Ich weiss nicht ob das mit dem Tags lesen bei der S7 200er genau so funktioniert! Also Ich denke in den ReadValues und WriteValues Funktionen muss man bestimmt was tun!


----------

