Verbindung zwischen CP und PLC mit VB testen

eugen

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen!
Ich habe da eine Frage. Und Zwar verbinde ich einen Rechner auf dem ein SPS-Programm (Twincat PLC) läuft mit einem Rechner wo nu Twincat CP installiert ist mit hile von .NET über ADS. Ziel ist es Variable der SPS zu beobachten. Die Verbindung funktioniert und die Variablen kann ich auch beobachten.
Um die Verbindung zu Testen, möchte ich eine Methode entwickeln, die Irgendwie Testet ob die SPS läuft und ob die Verbindung noch besteht.
Es gibt ein ähnliches Beispiel von Beckhoff:
http://infosys.beckhoff.com/content/1031/tcsample_net/html/TwinCAT.Ads.Sample08.htm

Hier wird aber nur eine Änderung des Statuses detektiert. Ziehe ich z.B. das Netzwerkkabel raus so passiert nichts mehr.

Also bin ich auf Ideensuche, wie man die Verbindung testen könnte.
Wie gesagt Programmiere mit VisualBasic 9 (2008), C# Beispiele nehme ich auch gerne an :)
 
Ich versuch sowas immer über ein zyklisches aufrufen der ReadState-Methode zu erreichen. Einfach im 500ms Takt aufrufen und prüfen ob alles in Ordnung ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe dies auch schon mal versucht. Wird aber die Verbindung getrennt bekomme ich eine Exception und es wird aus dem Programm rausgesprungen.
Muss dazu noch sagen, dass ich mich mit VB erst seid 2 Wochen befasse
 
Habs jetzt hinbekommen.

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim State As Boolean
Try
If tcClient.ReadState.AdsState = AdsState.Run Then
State = True
Else
State = False
End If
Catch
State = False
End Try

If State Then
lbVerbidung.BackColor = Color.Green
Else
lbVerbidung.BackColor = Color.Red

End If
End Sub

Das Problemm ist nun folgendes: Es ist sehr träge. Gibt es andere Möglichkeite dieses schneller zu gestalten?
 
Habe den Fehler Gefunden!
Ich musste die Timeout von TCAdsClient begrenzen, da hier sond der default wert steht.

Also:
AdsClient= New TcAdsClient()
AdsClient.Connect("Adresse",Port)
AdsClient.Timeout = 10

Kann mir einer Erklären was ich mit:
AdsClient.Synchronize = True (bzw False) bewirken würde?
 
Zurück
Oben