-> Hier kostenlos registrieren
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
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
Zuletzt bearbeitet: