DotNetSiemensPLCToolBoxLib Verbindungen mit S7-200 über CP243-1

honkytonk

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> 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
 
Zuletzt bearbeitet:
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!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.)
 
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!
 
Zurück
Oben